Итак, самый надежный и быстрый VPN, по мнению многих, но и самый трудоемкий по установке.
Один пакет для сервера и клиента:
apt-get install openvpn easy-rsa
Затем пишем это:
cp -R /usr/share/easy-rsa /etc/openvpn cd /etc/openvpn/easy-rsa
Далее делаем символьную ссылку конфига ssl:
ln -s openssl-1.0.0.cnf openssl.cnf
Загружаем переменные следующей строкой:
source vars
Далее папку keys нужно очистить от старых сертификатов и ключей, а также создать серийный и индексные файлы для новых ключей:
./clean-all
Дальше создаем сертификат:
./build-ca
Создаем ключи сервера и клиента:
./build-key-server server ./build-key client
Генерируем ключ Диффи Хельмана:
./build-dh
Далее нужно скопировать сертификаты и ключи сервера в директорию OpenVPN:
cd keys cp ca.crt ca.key dh2048.pem server.crt server.key /etc/openvpn
Далее необходимо скопировать и распаковать пример конфига в директорию OpenVPN:
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ cd /etc/openvpn gunzip -d /etc/openvpn/server.conf.gz
Редактируем конфиг файл сервера nano /etc/openvpn/server.conf
Надо найти строчку с «dh dh1024.pem» и сменить её на:
dh dh2048.pem
В конце допишем или расскоментируем:
push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 10.8.0.1" + apt-get install dnsmasq service openvpn start
Сетевые настройки
В /etc/sysctl.conf добавляем:
net.ipv4.ip_forward=1 sysctl -p iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
или
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source IP_ВАШЕГО_сервера
На VPS на базе OpenVZ вместо первой команды надо выполнить:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source IP_ВАШЕГО_сервера
Это правило iptables стоит добавить в /etc/rc.local, иначе оно слетит после перезагрузки сервера. Также файлу /etc/rc.local надо присвоить бит исполнения, иначе при загрузке система не сможет выполнить содержащиеся в нём команды.
chmod +x /etc/rc.local
Настройки для клиента
client remote IP VPN сервера 1194 proto udp ca ca.crt cert client1.crt key client1.key dev tun dev-type tun resolv-retry infinite nobind persist-key persist-tun comp-lzo verb 4 mute 20