LINUX.ORG.RU

Openvpn-client в схеме DoubleVPN

 


0

1

Здравствуйте, новичек в администрировании Linux, пытаюсь разобраться, освоить настройку DoubleVPN связав два сервера. Почему-то, на первом сервере не запускается конфиг для клиента.

Делаю команду: systemctl enable openvpn-client@client2 Ответ: Failed to execute operation: No such file or directory

Конфиг первого сервера
----------------------------------
port 11194
proto tcp
dev tun0
ca ca.crt
cert server1.crt
key server1.key
dh dh2048.pem
tls-auth ta.key 0
remote-cert-tls client
cipher AES-256-CBC
server 10.0.0.0 255.255.255.0
keepalive 10 120
persist-key
persist-tun
status server1.log
verb 3
log /var/log/server1.log
status /var/log/server1.log
sndbuf 0
rcvbuf 0
comp-lzo
push «redirect-gateway def1»
push «dhcp-option DNS 8.8.8.8»
push «dhcp-option DNS 8.8.4.4»
push «route 10.0.0.0 255.255.255.0»
script-security 2
up /etc/openvpn/server1_up.sh
down /etc/openvpn/server1_down.sh
----------------------------------
Конфигурирую rt_tables:
nano /etc/iproute2/rt_tables
150 vpn_net
----------------------------------
файлы up и down

nano server1_up.sh
----------------------------------
#!/bin/bash
/sbin/ip rule add from 10.0.0.0/24 table vpn_net
/sbin/ip route add default dev tun1 table vpn_net
/sbin/iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o tun1 -j MASQUERADE
----------------------------------

nano server1_down.sh
----------------------------------
#!/bin/bash
/sbin/ip rule del from 10.0.0.0/24 table vpn_net
/sbin/ip route del default dev tun1 table vpn_net
/sbin/iptables -t nat -D POSTROUTING -s 10.0.0.0/24 -o tun1 -j MASQUERADE
----------------------------------
даю права на выполнение файлам server1_up.sh server1_down.sh
chmod 775 server1_up.sh
chmod 775 server1_down.sh

----------------------------------
Разрешаю форвардинг
nano /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.conf.tun0.rp_filter=0
net.ipv4.conf.tun1.rp_filter=0
echo 1 > /proc/sys/net/ipv4/ip_forward
----------------------------------

Конфиг для клиента, для основной машины
----------------------------------
client
dev tun
proto tcp
remote ip_server1 11194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key 1
cipher AES-256-CBC
comp-lzo
log client1.log
verb 3
sndbuf 0
rcvbuf 0
auth-nocache
remote-cert-tls server
----------------------------------

----------------------------------
ВТОРОЙ СЕРВЕР
----------------------------------
nano /etc/sysctl.conf
net.ipv4.ip_forward=1

Конфиг сервера
----------------------------------
port 1194
proto tcp
dev tun
ca ca.crt
cert server2.crt
key server2.key
dh dh2048.pem
tls-auth ta.key 0
remote-cert-tls client
cipher AES-256-CBC
server 10.0.1.0 255.255.255.0
keepalive 10 120
persist-key
persist-tun
verb 3
status /var/log/server2.log
log /var/log/server2.log
sndbuf 0
rcvbuf 0
comp-lzo
push «route 10.0.1.0 255.255.255.0»
----------------------------------
рестарт сервера: service openvpn restart

Конфигурирую iptables
----------------------------------
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o eth0 -j MASQUERADE
iptables-save > /root/iptables-rules
nano /etc/rc.local
вот эту строчку
iptables-restore < /root/iptables-rules
----------------------------------

Перекидываю ключи пользователя с сервера2 на сервер1:
ca.crt client2.crt client2.key ta.key в папку /etc/openvpn/client

на первом сервере
cd /etc/openvpn/client
nano client2.conf

----------------------------------
client
dev tun1
proto tcp
remote ip_server2 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client2.crt
key client2.key
tls-auth ta.key 1
cipher AES-256-CBC
comp-lzo
log client2.log
verb 3
sndbuf 0
rcvbuf 0
auth-nocache
remote-cert-tls server
----------------------------------

Дальше запускаю конфиг клиента на первом сервере:
systemctl enable openvpn-client@client2
Ответ: Failed to execute operation: No such file or directory

Почему не запускается?

Почему-то, на первом сервере не запускается конфиг для клиента.

Делаю команду: systemctl enable openvpn-client@client2 Ответ: Failed to execute operation: No such file or directory

Читать что-то по настройке пробовали?
https://community.openvpn.net/openvpn/wiki/Systemd
https://wiki.archlinux.org/index.php/OpenVPN_(Русский)

Он вам пишет No such file or directory, посмотрите есть ли файл /etc/openvpn/client/client2.conf и какие у него права доступа.

anonymous ()
Ответ на: комментарий от anonymous

Вручную запускается. Не воспринимает systemctl enable openvpn-client@.

Но схема не хочет работать.Интерфейсы tun0 tun1 поднимаются.
----------------------------------
ifconfig server1:
----------------------------------
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:54 errors:0 dropped:0 overruns:0 frame:0
TX packets:54 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4536 (4.5 KB) TX bytes:4536 (4.5 KB)

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.0.0.1 P-t-P:10.0.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:46872 errors:0 dropped:0 overruns:0 frame:0
TX packets:66882 errors:0 dropped:114 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:4339394 (4.3 MB) TX bytes:75021715 (75.0 MB)

tun1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.0.1.6 P-t-P:10.0.1.5 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100
RX bytes:504 (504.0 B) TX bytes:738 (738.0 B)

venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.2 P-t-P:127.0.0.2 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500
Metric:1 RX packets:1231219 errors:0 dropped:0 overruns:0 frame:0
TX packets:1333552 errors:0 dropped:3551 overruns:0 carrier:0 collisions:0 txqueuelen:0
RX bytes:1047955853 (1.0 GB) TX bytes:1071042962 (1.0 GB)

venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:185.XXX.XXX.XXX P-t-P:185.212.129.49 Bcast:185.XXX.XXX.XXX Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1

----------------------------------
ifconfig server2:
----------------------------------
eth0 Link encap:Ethernet HWaddr 02:00:00:8f:e8:00
inet addr:51.ххх.ххх.ххх Bcast:51.38.147.255 Mask:255.255.255.0
inet6 addr: fe80::ff:fe8f:e800/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3008843 errors:0 dropped:0 overruns:0 frame:0
TX packets:558396 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:414396997 (414.3 MB) TX bytes:73229540 (73.2 MB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:216 errors:0 dropped:0 overruns:0 frame:0
TX packets:216 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1
RX bytes:16789 (16.7 KB) TX bytes:16789 (16.7 KB)

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.0.1.1 P-t-P:10.0.1.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500
Metric:1
RX packets:13 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100
RX bytes:1092 (1.0 KB) TX bytes:1344 (1.3 KB)
----------------------------------
Т.К. на первом сервере виртуализация OpenVZ поменял маскардинг на SNAT в bash-файлах, добавляющих/удаляющих маршрутизацию, при запуске конфига server1.conf:
Файл server1_up.sh

#!/bin/bash
/sbin/ip rule add from 10.0.0.0/24 table vpn_net
/sbin/ip route add default dev tun1 table vpn_net
/sbin/iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o tun1 -j SNAT --to-source 185.ХХХ.ХХХ.ХХХ

Файл server1_down.sh

#!/bin/bash
/sbin/ip rule del from 10.0.0.0/24 table vpn_net
/sbin/ip route del default dev tun1 table vpn_net
/sbin/iptables -t nat -D POSTROUTING -s 10.0.0.0/24 -o tun1 -j SNAT --to-source 185.XXX.XXX.XXX

----------------------------------

Пингую исходя из схемы: host--->server1--->server2
Host
Гугл пингуется
ping 10.0.1.6 - пингуется
При трассировке по гуглу видно, что не идет на второй сервер, выходит с server1.

В тоже время серверы друг друга видят:
server1: ping 10.0.1.1 - ok!
server2: ping 10.0.1.6 - ok!

Почему через первый сервер не перебрасывает пакеты на второй сервак ума не приложу.
Возможно, что-то не то с маршрутами. Какие могут быть ошибки в моих действиях?

AlexTwin ()
Ответ на: комментарий от AlexTwin

Наискосок что вижу я. Server1

dev tun0
up /etc/openvpn/server1_up.sh
в server1_up.sh
/sbin/ip route add default dev tun1 table vpn_net
tun1 ! Который у вас клиент к server2. Этот роутинг надо поднимать при старте клиента к server2. При старте же сервера tun1 может быть, может не быть, может потом упасть когда упадет клиент. Вобчем местом ошиблись.

ЗЫ И еще про ip rule. Надо быть понимать что они прописываться «раз и до ребута». Вот прописали вы один раз
ip rule add from 10.0.0.0/24 table vpn_net
Уронили ovpn по kill -9 или сам упал, правило останется. На этапе тестов меняя правила в up/down может получиться что реально правил больше чем вам кажется. Да и не мешает указывать priority что бы точно быть уверенным что сработает как нужно.

anc ★★★★★ ()
Ответ на: комментарий от anc

Кажется логичным, что после старта конфига первого сервера поднимаются маршруты для запускаемого на первом сервере клиента (если правильно понимаю процесс). Делалось по мануалу, единственные различия у меня с мануалом - это отсутствия старта клиента через systemctl и использование SNAT вместо MASQUERADE в исполняемых файлах server1_up.sh (down).

Не пойму, в чем критичная ошибка

AlexTwin ()
Ответ на: комментарий от AlexTwin

Кажется не логичным, что после старта конфига первого сервера поднимаются маршруты для запускаемого на первом сервере клиента

Поправил.
Выше уже написал почему. tun1 поднимает клиент, клиент Карл! Сервер к нему не имеет отношения. В сферическом варианте когда точно точно сервер стартует после клиента, клиент никогда не падает/не перезапускается, работать будет. Но нафехуа такие сложности, ставить зависимость старта сервера от старта клиента?

anc ★★★★★ ()
Ответ на: комментарий от AlexTwin

И вот здесь
/sbin/iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o tun1 -j SNAT --to-source 185.ХХХ.ХХХ.ХХХ
185.ХХХ.ХХХ.ХХХ - заменить на IP получаемый клиентом ovpn от сервер2 10.0.1.X. Лучше раздавать его статиком от сервер2

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от anc

И вот здесь

/sbin/iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o tun1 -j SNAT --to-source 185.ХХХ.ХХХ.ХХХ

185.ХХХ.ХХХ.ХХХ - заменить на IP получаемый клиентом ovpn от сервер2 10.0.1.X. Лучше раздавать его статиком от сервер2

ок. спасибо

Клиент запускается, но на второй сервак пакеты не идут, но пинги проходят.tun0, tun1 есть...
Может ответ route что-то скажет?
server1:

Destination.....Gateway.....Genmask..............Flags.Metric.Ref......Use..Iface
10.0.0.2..........*.................255.255.255.255...UH.....0..........0........0......tun0
10.0.1.5..........*.................255.255.255.255...UH.....0..........0........0......tun1
10.0.1.1..........10.0.1.5.....255.255.255.255...UGH...0..........0.......0.......tun1
10.0.0.0..........10.0.0.2.....255.255.255.0.......UG......0.........0........0.......tun0
10.0.1.0..........10.0.1.5.....255.255.255.0.......UG......0.........0........0.......tun1
default............*.................0.0.0.0...................U.........0.........0........0.......venet0


server2:

Kernel IP routing table
Destination.....Gateway.....Genmask..............Flags.Metric.Ref......Use..Iface
default............ip254..........0.0.0.0...................UG....0.........0..........0......eth0
10.0.1.0.........10.0.1.2.......255.255.255.0.......UG...0.........0..........0......tun0
10.0.1.2.........*...................255.255.255.255...UH...0.........0..........0......tun0
localnet..........*...................255.255.255.0.......U.....0.........0..........0......eth0

чтднтк?

AlexTwin ()
Ответ на: комментарий от anc

1. ping 10.0.1.2 идет:

с сервер1 ?

с клиента сервера 1 ?

Пинг с сервера 2 на 10.0.1.2 не идет (ping -l 10.0.1.1 10.0.1.2 ).
Аналогично не идет на сервере 1.( ping -l 10.0.1.6 10.0.1.2)

2. Покажите с сервер1

ip r s

10.0.0.2 dev tun0 proto kernel scope link src 10.0.0.1
10.0.1.5 dev tun1 proto kernel scope link src 10.0.1.6
10.0.1.1 via 10.0.1.5 dev tun1
10.0.0.0/24 via 10.0.0.2 dev tun0
10.0.1.0/24 via 10.0.1.5 dev tun1
default dev venet0 scope link


ip r s table vpn_net
ничего не выдает

ip ru s

0: from all lookup local
32765: from 10.0.0.0/24 lookup vpn_net
32766: from all lookup main
32767: from all lookup default

iptables-save

# Generated by iptables-save v1.6.0 on
*nat
:PREROUTING ACCEPT [986:78711]
:POSTROUTING ACCEPT [8:712]
:OUTPUT ACCEPT [16:1336]
-A POSTROUTING -s 10.0.0.0/24 -o tun1 -j SNAT --to-source 51.***.***.***
-A POSTROUTING -s 10.0.0.0/24 ! -d 10.0.0.0/24 -j SNAT --to-source 185.***.***.***
-A POSTROUTING -o venet0 -j SNAT --to-source 185.***.***.***
COMMIT
# Completed on
# Generated by iptables-save v1.6.0 on
*filter
:INPUT ACCEPT [5145:885012]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [5586:1680244]
-A FORWARD -i venet0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i tun0 -o venet0 -j ACCEPT
COMMIT
# Completed on
# Generated by iptables-save v1.6.0 on
*mangle
:PREROUTING ACCEPT [11552:2411569]
:INPUT ACCEPT [5145:885012]
:FORWARD ACCEPT [6342:1520625]
:OUTPUT ACCEPT [5586:1680244]
:POSTROUTING ACCEPT [11928:3200869]
COMMIT
# Completed on
# Generated by iptables-save v1.6.0 on Thu Mar 28 16:06:50 2019
*raw
:PREROUTING ACCEPT [11552:2411569]
:OUTPUT ACCEPT [5586:1680244]
COMMIT
# Completed

AlexTwin ()
Ответ на: комментарий от AlexTwin

Пинг с сервера 2 на 10.0.1.2 не идет (ping -l 10.0.1.1 10.0.1.2 ).
Аналогично не идет на сервере 1.( ping -l 10.0.1.6 10.0.1.2)

Упс, тут я ошибся адресом 10.0.1.1 надо, а не 10.0.1.2

ip r s table vpn_net
ничего не выдает

Вот! Я вам что писал про:
/sbin/ip route add default dev tun1 table vpn_net ?
Пока для текста можно при поднятых серверах/клиентах выполнить вручную.

-A POSTROUTING -s 10.0.0.0/24 -o tun1 -j SNAT --to-source 51.***.***.***

Это нафиг убрать.

А вот это выполнить
Openvpn-client в схеме DoubleVPN (комментарий)

anc ★★★★★ ()