Доброго времени суток. Есть с виду простая задача — Поднять DoubleVPN. Информации в сети для новичков с контекстом «How TO», нет. Весь корень проблем заключается в правильной настройке роутинга с первого VPN (входного) на выходной. Идею по роутингу взял отсюда https://habrahabr.ru/sandbox/78897/
Если кто сталкивался, подскажите пожалуйста по настройке, чего не хватает?
Схема подключения: Клиент (Windows)<-->VPN1(1.1.1.1)<-->VPN2(2.2.2.2)<-->Internet
Конфиг клиента на Windows
client
dev tun
proto tcp
remote 1.1.1.1 443
resolv-retry infinite
nobind
ns-cert-type server
persist-key
persist-tun
cipher AES-256-CBC
comp-lzo
verb 3
<ca>
.....
</ca>
<cert>
.....
</cert>
<key>
.....
</key>
<tls-auth>
.....
</tls-auth>
key-direction 1
server.conf на VPN1
port 443
proto tcp
dev tun0
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "route 10.8.0.0 255.255.255.0"
client-to-client
duplicate-cn
keepalive 10 120
tls-auth ta.key 0
ifconfig-pool-persist ipp.txt
cipher AES-256-CBC
comp-lzo
max-clients 1
user nobody
group nogroup
persist-key
persist-tun
log /var/log/openvpn.log
verb 3
sndbuf 393216
rcvbuf 393216
push "sndbuf 393216"
push "rcvbuf 393216"
up /etc/openvpn/up
down /etc/openvpn/down
Права на скрипт выставлены, в /etc/default/openvpn выставлено OPTARGS="--script-security 2", на VPN1 форвардинг включен
echo 1 > /proc/sys/net/ipv4/ip_forward
В файле /etc/sysctl.conf тоже раскомменчен этот параметр.
443 порт открыт на INPUT и OUTPUT на VPN1 и на VPN2.
Содержимое up и down скриптов
#!/bin/bash
/sbin/ip rule add from 10.8.0.0/8 table vpn.out
/sbin/ip route add default dev tun1 table vpn.out
/sbin/iptables -t nat -A POSTROUTING -s 10.8.0.0/8 -o tun1 -j SNAT --to-source 10.9.0.1
#!/bin/bash
/sbin/ip rule del from 10.8.0.0/8 table vpn.out
/sbin/ip route del default dev tun1 table vpn.out
/sbin/iptables -t nat -D POSTROUTING -s 10.8.0.0/8 -o tun1 -j SNAT --to-source 10.9.0.1
Табличка для vpn трафика создана
echo '150 vpn.out' >> /etc/iproute2/rt_tables
client.conf На VPN1 для подключения к VPN2
client
remote 2.2.2.2
port 443
proto tcp
dev tun1
resolv-retry infinite
nobind
comp-lzo
persist-key
persist-tun
ca /etc/openvpn/client/ca.crt
cert /etc/openvpn/client/client.crt
key /etc/openvpn/client/client.key
tls-auth /etc/openvpn/client/ta.key 1
log /var/log/openvpn-client.log
verb 3
cipher AES-256-CBC
ns-cert-type server
ifconfig после запуска openvpn на VPN1
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:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
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.1 P-t-P:10.8.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
tun1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.9.0.6 P-t-P:10.9.0.5 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.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:2859 errors:0 dropped:0 overruns:0 frame:0
TX packets:2732 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:188912 (188.9 KB) TX bytes:186461 (186.4 KB)
venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:1.1.1.1 P-t-P:1.1.1.1 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
Вывод команды route -n после поднятия интерфейсов
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.9.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun1
10.8.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0
10.9.0.0 10.9.0.5 255.255.255.0 UG 0 0 0 tun1
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
server.conf на VPN2
port 443
proto tcp
dev tun
ca ca.crt
cert server2.crt
key server2.key
dh dh2048.pem
server 10.9.0.0 255.255.255.0
push "route 10.9.0.0 255.255.255.0"
client-to-client
duplicate-cn
keepalive 10 120
tls-auth ta.key 0
cipher AES-256-CBC
comp-lzo
max-clients 1
user nobody
group nogroup
persist-key
persist-tun
log /var/log/openvpn.log
verb 3
sndbuf 393216
rcvbuf 393216
push "sndbuf 393216"
push "rcvbuf 393216"
iptables на VPN2
# Generated by iptables-save v1.4.21 on Tue Oct 18 04:45:20 2016
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -s 10.9.0.0/8 -o venet0 -j SNAT --to-source 2.2.2.2
COMMIT
# Completed on Tue Oct 18 04:45:20 2016
# Generated by iptables-save v1.4.21 on Tue Oct 18 04:45:20 2016
*filter
:INPUT ACCEPT [10:772]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [7:856]
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT
COMMIT
# Completed on Tue Oct 18 04:45:20 2016
# Generated by iptables-save v1.4.21 on Tue Oct 18 04:45:20 2016
*mangle
:PREROUTING ACCEPT [35368:44232625]
:INPUT ACCEPT [35367:44232581]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [23529:1984196]
:POSTROUTING ACCEPT [23529:1984196]
COMMIT
# Completed on Tue Oct 18 04:45:20 2016
На VPN2 форвардинг включен.
VPN1 пингует VPN2 по ip 10.9.0.1
VPN2 НЕ пингует VPN1 по ip 10.8.0.1
Интернета на клиенте (Windows) тоже нет.
Клиент из Windows пингует 10.8.0.1 но не пингует 10.9.0.1
Пробовал вместо SNAT (в скриптах) прописывать MASQUERADE. То же самое. Подскажите в какую сторону копать?