Устанавливаем OpenVPN
aptitude install openvpn udev
Генерируем корневой сертификат
cd /usr/share/doc/openvpn/examples/easy-rsa/2.0
. /usr/share/doc/openvpn/examples/easy-rsa/2.0/vars
. /usr/share/doc/openvpn/examples/easy-rsa/2.0/clean-all
. /usr/share/doc/openvpn/examples/easy-rsa/2.0/build-ca
Генерируем сертификаты сервера и клиента(вместо client1)
. /usr/share/doc/openvpn/examples/easy-rsa/2.0/build-key-server server
. /usr/share/doc/openvpn/examples/easy-rsa/2.0/build-key client1
. /usr/share/doc/openvpn/examples/easy-rsa/2.0/build-key client2
. /usr/share/doc/openvpn/examples/easy-rsa/2.0/build-key client3
. /usr/share/doc/openvpn/examples/easy-rsa/2.0/build-key client4
. /usr/share/doc/openvpn/examples/easy-rsa/2.0/build-key client5
Если новый клиент создаётся спустя некоторое время, процедура будет выглядеть следующим образом
cd /usr/share/doc/openvpn/examples/easy-rsa/2.0
source ./vars
./build-key client6
Генерируем параметры Диффи-Хеллмана
. /usr/share/doc/openvpn/examples/easy-rsa/2.0/build-dh
Создаем симлинк с ключами
ln -s /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys /etc/openvpn/keys
Генерируем последний ключ
openvpn --genkey --secret /etc/openvpn/keys/ta.key
Разрешаем форвардинг
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
Обеспечиваем прохождение пакетов
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to 123.123.123.123
mkdir /etc/firewall
iptables-save > /etc/firewall/iptables-save
echo "/sbin/iptables-restore < /etc/firewall/iptables-save" >> /etc/rc.local
Создаем конфиг сервера
cat /dev/null > /etc/openvpn/server.conf
nano /etc/openvpn/server.conf
port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key # This file should be kept secret
dh keys/dh1024.pem
local 123.123.123.123
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
keepalive 10 120
tls-auth keys/ta.key 0 # This file is secret
tls-server
persist-key
persist-tun
comp-lzo
status openvpn-status.log
verb 4
mute 20
Запускаем OpenVPN сервера
service openvpn start
Настраиваем клиент (на Linux):
Устанавливаем OpenVPN и dnsmasq
sudo apt-get install openvpn udev dnsmasq
Создаем директорию с ключами (на клиенте):
sudo mkdir /etc/openvpn/keys
<
И копируем из сервера туда следующие ключи: ca.crt client1.crt client1.key dh1024.pem ta.key
Создаем конфиг клиента:
sudo nano /etc/openvpn/client.conf
nobind
client
# Remote server here
remote 123.123.123.123
# Path to certificates here
ca keys/ca.crt
cert keys/client1.crt
key keys/client1.key
dh keys/dh1024.pem
tls-client
tls-auth keys/ta.key 1
# Uncomment this is you are not on Windows
fast-io
dev tun
proto udp
resolv-retry infinite
persist-key
persist-tun
explicit-exit-notify
comp-lzo
Запускаем клиент
sudo service openvpn start
Проверяем:
ifconfig
route -n
ping -c3 10.8.0.1
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.6 P-t-P:10.8.0.5 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:33604 errors:0 dropped:0 overruns:0 frame:0
TX packets:34484 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:10580875 (10.5 MB) TX bytes:12076617 (12.0 MB)
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
10.8.0.1 10.8.0.5 255.255.255.255 UGH 0 0 0 tun0
10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
123.123.123.123 192.168.1.1 255.255.255.255 UGH 0 0 0 eth0
128.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0
192.168.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
ping будет тольтко если на сервере он разрешен.