OpenVPN — Site-to-Site

Цель:

Свя­зать 2 уда­лен­ных ноды в меж­ду собой, что­бы обще­ние меж­ду ними для них было "про­зрач­но". Так же важ­на ста­биль­ность кана­ла, ско­рость и конеч­но же безопасность.

Пред­ста­вим, что есть 2 ноды:

  • Server - IP 1.1.1.1
  • Client - IP 2.2.2.2

Уста­но­вим на них OpenVPN

CentOS:

yum install -y epel-release
yum install -y openvpn easy-rsa

Ubuntu:

apt install -y openvpn

На ноде Server созда­дим дирек­то­рию для хра­не­ния ключей:

mkdir -p /etc/openvpn/keys/ && cd /etc/openvpn/keys/

Сге­не­ри­ру­ем ключ:

openvpn --genkey --secret vpn.key

Созда­дим файл конфигурации:

vim /etc/openvpn/server.conf

Со сле­ду­ю­щим содержимым:

dev tun
proto tcp-server
local 1.1.1.1
lport 1194
remote 2.2.2.2
rport 1194
secret /etc/openvpn/keys/vpn.key 0
ifconfig 192.168.1.1 192.168.1.2
route 192.168.1.2 255.255.255.255
user nobody
group nobody
persist-tun
persist-key
keepalive 10 60
ping-timer-rem
verb 0
daemon
tun-mtu 48000
fragment 0
mssfix 0
comp-lzo
cipher aes-256-cbc
tcp-nodelay
sndbuf 0
rcvbuf 0
push "sndbuf 524288"
push "rcvbuf 524288"

Доба­вим в авто­за­груз­ку и запускаем:

systemctl enable openvpn@server
systemctl start openvpn@server

Про­верь­те, что у вас есть доступ к ноде по пор­ту 1194 TCP. Так же учти­те, что для OpenVPN необ­хо­ди­ма под­держ­ка TUN/TAP тун­не­лей, если у вас вир­ту­аль­ная маши­на openVZ, то уточ­ни­те у хосте­ра, вклю­чил ли он под­держ­ку или нет, часто на низ­ких тари­фах не предо­став­ля­ют под­держ­ку TUN/TAP.

Пере­хо­дим к ноде Client

Созда­дим дирек­то­рию для хра­не­ния ключей:

mkdir -p /etc/openvpn/keys/ && cd /etc/openvpn/keys/
vim /etc/openvpn/keys/vpn.key

Сюда вста­вим содер­жи­мое клю­ча, кото­рый гене­ри­ро­ва­ли на ноде Server

Изме­ним пра­ва на ключ:

chmod 600 /etc/openvpn/keys/vpn.key

Созда­дим файл конфигурации:

vim /etc/openvpn/client.conf

Со сле­ду­ю­щим содержимым:

dev tun
proto tcp-client
local 2.2.2.2
lport 1194
remote 1.1.1.1
rport 1194
secret /etc/openvpn/keys/vpn.key 1
ifconfig 192.168.1.2 192.168.1.1
route 192.168.1.1 255.255.255.255
user nobody
group nobody
persist-tun
persist-key
keepalive 10 60
ping-timer-rem
verb 0
daemon
tun-mtu 48000
fragment 0
mssfix 0
comp-lzo
cipher aes-256-cbc

Доба­вим в авто­за­груз­ку и запускаем:

systemctl enable openvpn@client
systemctl start openvpn@client

Все, связь Site-to-Site настро­е­на, проверяйте.

Не забы­вай­те про фаервол.