Показать статистику
0 голосов
от (2.4тыс. баллов)
Кто поделится мануалом по быстрой настройке OpenVPN? Задача, которую я пробую решить: есть два сервера, нужно синхронизировать данные между ними. Один сервер имеет активную копию веб сайта, нужно сделать зеркало. Что бы не гонять репликацию MySQL, rsync и прочее через интернет, хочу завернуть все через OpenVPN. Надеюсь, идея понятно. Кто делал подобное? Спасибо
1.1тыс. просмотров 1 ответов

1 Ответ

0 голосов
от (17.4тыс. баллов)

Предположим, что первый компьютер будет у нас Сервер, а второй будет Клиент. IP Cервера будет 10.8.0.1, а IP клиента будет 10.8.0.2. В своей конфигурации можете использовать другие удобные вам адресса из серой подсети. В данном примере клиент будет подключаться к серверу на 1194 порту, поэтому в случае если у вас уже используется OpenVPN для других нужд, то необходимо будет дополнительно указывать порты для подключений.

Первым делом, что бы постоянно не ставить sudo перед каждой командой, передем в рута:

sudo -i

На Сервере проверяем, загружен ли модуль tun:

lsmod | grep tun 

Если вывод предыдущей команды пустой, выполняем загрузку модуля tun:

modprobe tun

На Сервере генерируем ключ, который нужно будет также перелить на Клиента:

openvpn --genkey --secret static.key

Создаём openvpn.conf на Сервере и записываем в него:

dev tun
ifconfig 10.8.0.1 10.8.0.2
secret /path_to/static.key

Конфигурация Клиента client.ovpn:

mydomain server_real_ip
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret static.key

Для подключения на Клиенте выполняем:

openvpn client.ovpn

На этом все. Вроде все быстро, как вы и хотели :-)

от (2.4тыс. баллов)
редактировать от
+1

Пытался настроить по вашей инструкции, но openpn не стартует. Единственное что я поменял - использую интерфейс tap вместо tun. Почему то на моей VPS tun просто не заводится.

Еще заранее пришлось создать этот tap0 интерфейс, сам он не поднимался. Делал так:

ifconfig tap0 10.8.0.1/29 up

Далее пытался стартовать сервер, но толку не было: 

root@ubuntu-8gb-hel1-1:~# /etc/init.d/openvpn start
[ ok ] Starting openvpn (via systemctl): openvpn.service.

Однако в процессах ничего нет:

root@ubuntu-8gb-hel1-1:~# ps auxww | grep -i vpn
root      8352  0.0  0.0  13136  1004 pts/1    S+   19:08   0:00 grep --color=auto -i vpn

В логах тоже ничего не появляется, если стартовать сервис через стартовый скрипт.

Решил запустить напрямую, что бы в логах хотя бы что то было:

root@ubuntu-8gb-hel1-1:~# /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/server.pid

Получил такое из /var/log/syslog:

Feb  8 19:05:41 ubuntu-8gb-hel1-1 ovpn-server[8328]: disabling NCP mode (--ncp-disable) because not in P2MP client or server mode
Feb  8 19:05:41 ubuntu-8gb-hel1-1 ovpn-server[8328]: OpenVPN 2.4.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Sep  5 2018
Feb  8 19:05:41 ubuntu-8gb-hel1-1 ovpn-server[8328]: library versions: OpenSSL 1.1.0g  2 Nov 2017, LZO 2.08
Feb  8 19:05:41 ubuntu-8gb-hel1-1 ovpn-server[8329]: Outgoing Static Key Encryption: Cipher 'BF-CBC' initialized with 128 bit key
Feb  8 19:05:41 ubuntu-8gb-hel1-1 ovpn-server[8329]: WARNING: INSECURE cipher with block size less than 128 bit (64 bit).  This allows attacks like SWEET32.  Mitigate by using a --cipher with a larger block size (e.g. AES-256-CBC).
Feb  8 19:05:41 ubuntu-8gb-hel1-1 ovpn-server[8329]: Outgoing Static Key Encryption: Using 160 bit message hash 'SHA1' for HMAC authentication
Feb  8 19:05:41 ubuntu-8gb-hel1-1 ovpn-server[8329]: Incoming Static Key Encryption: Cipher 'BF-CBC' initialized with 128 bit key
Feb  8 19:05:41 ubuntu-8gb-hel1-1 ovpn-server[8329]: WARNING: INSECURE cipher with block size less than 128 bit (64 bit).  This allows attacks like SWEET32.  Mitigate by using a --cipher with a larger block size (e.g. AES-256-CBC).
Feb  8 19:05:41 ubuntu-8gb-hel1-1 ovpn-server[8329]: Incoming Static Key Encryption: Using 160 bit message hash 'SHA1' for HMAC authentication
Feb  8 19:05:41 ubuntu-8gb-hel1-1 ovpn-server[8329]: WARNING: Since you are using --dev tap, the second argument to --ifconfig must be a netmask, for example something like 255.255.255.0. (silence this warning with --ifconfig-nowarn)
Feb  8 19:05:41 ubuntu-8gb-hel1-1 ovpn-server[8329]: TUN/TAP device tap0 opened
Feb  8 19:05:41 ubuntu-8gb-hel1-1 ovpn-server[8329]: TUN/TAP TX queue length set to 100
Feb  8 19:05:41 ubuntu-8gb-hel1-1 ovpn-server[8329]: do_ifconfig, tt->did_ifconfig_ipv6_setup=0
Feb  8 19:05:41 ubuntu-8gb-hel1-1 ovpn-server[8329]: /sbin/ip link set dev tap0 up mtu 1500
Feb  8 19:05:41 ubuntu-8gb-hel1-1 ovpn-server[8329]: /sbin/ip addr add dev tap0 10.8.0.1/-1 broadcast 255.255.255.253
Feb  8 19:05:41 ubuntu-8gb-hel1-1 ovpn-server[8329]: Linux ip addr add failed: external program exited with error status: 1
Feb  8 19:05:41 ubuntu-8gb-hel1-1 ovpn-server[8329]: Exiting due to fatal error

Вот что в конфиге openvpn:

root@ubuntu-8gb-hel1-1:~# cat /etc/openvpn/server.conf 
dev tap0
ifconfig 10.8.0.1 10.8.0.2
secret /root/static.key
verb 3
daemon

Идеи?

UPDATE 1

После экспериментов с интерфейсами случайно положил свою впс-ку. Пришлось перезагрузиться резетом. Что интересно, после перезагрузки теперь стало писать в сислог и выдает такое:

Feb  8 19:39:18 ubuntu-8gb-hel1-1 systemd[1]: Starting OpenVPN service...
Feb  8 19:39:18 ubuntu-8gb-hel1-1 systemd[1]: Starting OpenVPN connection to server...
Feb  8 19:39:18 ubuntu-8gb-hel1-1 systemd[1]: Started OpenVPN service.
Feb  8 19:39:19 ubuntu-8gb-hel1-1 ovpn-server[2299]: disabling NCP mode (--ncp-disable) because not in P2MP client or server mode
Feb  8 19:39:19 ubuntu-8gb-hel1-1 ovpn-server[2299]: OpenVPN 2.4.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Sep  5 2018
Feb  8 19:39:19 ubuntu-8gb-hel1-1 ovpn-server[2299]: library versions: OpenSSL 1.1.0g  2 Nov 2017, LZO 2.08
Feb  8 19:39:19 ubuntu-8gb-hel1-1 ovpn-server[2299]: Outgoing Static Key Encryption: Cipher 'BF-CBC' initialized with 128 bit key
Feb  8 19:39:19 ubuntu-8gb-hel1-1 ovpn-server[2299]: WARNING: INSECURE cipher with block size less than 128 bit (64 bit).  This allows attacks like SWEET32.  Mitigate by using a --ciph
er with a larger block size (e.g. AES-256-CBC).
Feb  8 19:39:19 ubuntu-8gb-hel1-1 ovpn-server[2299]: Outgoing Static Key Encryption: Using 160 bit message hash 'SHA1' for HMAC authentication
Feb  8 19:39:19 ubuntu-8gb-hel1-1 ovpn-server[2299]: Incoming Static Key Encryption: Cipher 'BF-CBC' initialized with 128 bit key
Feb  8 19:39:19 ubuntu-8gb-hel1-1 ovpn-server[2299]: WARNING: INSECURE cipher with block size less than 128 bit (64 bit).  This allows attacks like SWEET32.  Mitigate by using a --ciph
er with a larger block size (e.g. AES-256-CBC).
Feb  8 19:39:19 ubuntu-8gb-hel1-1 ovpn-server[2299]: Incoming Static Key Encryption: Using 160 bit message hash 'SHA1' for HMAC authentication
Feb  8 19:39:19 ubuntu-8gb-hel1-1 ovpn-server[2299]: WARNING: Since you are using --dev tap, the second argument to --ifconfig must be a netmask, for example something like 255.255.255
.0. (silence this warning with --ifconfig-nowarn)
Feb  8 19:39:19 ubuntu-8gb-hel1-1 systemd[1]: Started OpenVPN connection to server.
Feb  8 19:39:19 ubuntu-8gb-hel1-1 ovpn-server[2299]: TUN/TAP device tap0 opened
Feb  8 19:39:19 ubuntu-8gb-hel1-1 ovpn-server[2299]: TUN/TAP TX queue length set to 100
Feb  8 19:39:19 ubuntu-8gb-hel1-1 ovpn-server[2299]: do_ifconfig, tt->did_ifconfig_ipv6_setup=0
Feb  8 19:39:19 ubuntu-8gb-hel1-1 ovpn-server[2299]: /sbin/ip link set dev tap0 up mtu 1500
Feb  8 19:39:19 ubuntu-8gb-hel1-1 systemd-udevd[2322]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
Feb  8 19:39:19 ubuntu-8gb-hel1-1 systemd-udevd[2322]: Could not generate persistent MAC address for tap0: No such file or directory
Feb  8 19:39:19 ubuntu-8gb-hel1-1 ovpn-server[2299]: /sbin/ip addr add dev tap0 10.8.0.1/-1 broadcast 255.255.255.253
Feb  8 19:39:19 ubuntu-8gb-hel1-1 openvpn[2299]: Error: any valid prefix is expected rather than "10.8.0.1/-1".
Feb  8 19:39:19 ubuntu-8gb-hel1-1 ovpn-server[2299]: Linux ip addr add failed: external program exited with error status: 1
Feb  8 19:39:19 ubuntu-8gb-hel1-1 ovpn-server[2299]: Exiting due to fatal error
Feb  8 19:39:19 ubuntu-8gb-hel1-1 systemd[1]: openvpn@server.service: Main process exited, code=exited, status=1/FAILURE
Feb  8 19:39:19 ubuntu-8gb-hel1-1 systemd[1]: openvpn@server.service: Failed with result 'exit-code'.
Feb  8 19:39:20 ubuntu-8gb-hel1-1 systemd[1]: Stopped OpenVPN connection to server.

UPDATE 2 

Вообщем, после длительных мучений удалось настроить OpenVPN между двумя впс-ками по инструкции отсюда: https://help.ubuntu.com/lts/serverguide/openvpn.html

UPDATE 3

Для тех кто столкнется с подобными проблемами в будущем, вот перевод этой статьи (только самое главное, без воды)

Настройка OpenVPN - перевод официальной документации

Настройка сервера

Заходим по SSH на сервер (та машина, к которой будет подключаться клиент). Создаем Ceritficate Authority, он же CA:

mkdir /etc/openvpn/easy-rsa/
cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/

Далее редактируем /etc/openvpn/easy-rsa/vars:

export KEY_COUNTRY="RU"
export KEY_PROVINCE="Moskovskaya oblast"
export KEY_CITY="Moscow"
export KEY_ORG="Example Company"
export KEY_EMAIL="admin@example.com"
export KEY_CN=MyVPN
export KEY_ALTNAMES=MoiVPN
export KEY_NAME=MyVPN
export KEY_OU=MyVPN

Далее сгенерируем сертификат и ключ:

cd /etc/openvpn/easy-rsa/
source vars
./clean-all
./build-ca

Далее генерируем сертификат и ключ для сервера. В качестве имени сервере использовал дефолтный hostname, который был выдан провайдером моей vps-ки

./build-key-server myservername

Будет спрашивать "согласны - не согласны", говорим на все йес :-)

Sign the certificate? [y/n] y
1 out of 1 certificate requests certified, commit? [y/n] y

Далее запускам скрипт что бы сгенерировать параметры шифрования для OpenVPN (параметры Диффи-Хэлмана):

./build-dh

Далее копируем ключи в правильное место:

cd keys/
cp myservername.crt myservername.key ca.crt dh2048.pem /etc/openvpn/

Сгенерируем клиентские сертификаты:

cd /etc/openvpn/easy-rsa/
source vars
./build-key client1

Далее по scp перекинем эти сертфикаты и ключи на сервер-клиент (та машина, которая будет подключаться по OpenVPN). Файлы расположить на клиенте как показано ниже:

/etc/openvpn/ca.crt
/etc/openvpn/easy-rsa/keys/client1.crt
/etc/openvpn/easy-rsa/keys/client1.key

Далее на сервере делаем настройку OpenVPN сервера:

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
sudo gzip -d /etc/openvpn/server.conf.gz

Редактируем /etc/openvpn/server.conf:

ca ca.crt
cert myservername.crt
key myservername.key
dh dh2048.pem

Далее - включаем роутинг пакетов, редактируем  /etc/sysctl.conf:

net.ipv4.ip_forward=1

И применяем параметры sysctl:

sudo sysctl -p /etc/sysctl.conf

Настройка клиента

sudo apt install openvpn
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/

Редактируем /etc/openvpn/client.conf:

ca ca.crt
cert client1.crt
key client1.key

И теперь остается только запустить OpenVPN на обоих машинах (и на сервере, и на клиенте). На сервере запускаем первым, на клиенте вторым:

sudo /etc/init.d/openvpn start

Убедитесь на что на клиенте и на сервере поднялись tun интерфейсы:

ifconfig -a | grep tun

На этом все. Должно работать. 

...