Имеются две сети, территориально отдалённые друг от друга. Первая сеть ходит в интернет через белый статический IP, другая - через мопед Yota, соответственно NAT без возможности прокинуть порт, динамический IP и прочие «радости жизни». Настраиваю в первой сети OpenVPN сервер, во второй - клиент.
Первая подсеть: 192.168.1.0/24, шлюз 192.168.1.242 Вторая подсеть: 192.168.3.0/24, шлюз 192.168.3.3
Сеть для VPN 172.16.0.0/16
Сервер:
port 2000
proto tcp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/gw.crt
key /etc/openvpn/keys/gw.key
dh /etc/openvpn/keys/dh1024.pem
server 172.16.130.0 255.255.255.0
route 192.168.3.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt
push "route 192.168.1.0 255.255.255.0" # home subnet
push "dhcp-option DNS 192.168.1.242" #DNS
push "dhcp-option DOMAIN localnet.antora" #DNS suffix
push "dhcp-option WINS 192.168.1.242" #WINS
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
verb 9
mute 20
client-to-client
client-config-dir /etc/openvpn/ccd
Клиент:
client
dev tun
proto tcp
remote <внешний IP адрес первой подсети> 2000
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/msk-client.crt
key /etc/openvpn/keys/msk-client.key
comp-lzo
verb 3
В общем, сам по себе прогресс есть. Идут пинги шлюз > шлюз, шлюз -> клиент и даже клиент->vpn_адрес_не_своего_шлюза. Но никак не проходят пинги клиент <-> клиент и клиент -> не_свой_шлюз.
В iptables клиента вписана всего лиш одна скупая строка:
iptables -t nat -A POSTROUTING ! -d 192.168.3.0/24 -j MASQUERADE
На первом шлюзе iptables побольше ввиду того, что несколько сетевых карт, несколько дополнительных подсетей внутри офиса и прямой проброс извне в локалку. Но для VPN суть та же, что и на втором шлюзе.
Роутинг прописан. На сервере первой подсети:
# ip route
192.168.3.0/24 via 172.16.130.2 dev tun0
Аналогчный и на сервере второй подсети:
# ip route
192.168.1.0/24 via 172.16.130.29 dev tun0
В общем, не понятно, почему не видят друг друга клиенты подсетей, если пинги со шлюзов идут куда угодно.
Проверял вывод tcpdump-а на втором шлюзе, так как там лёгкая таблица iptables. Выяснилось, что пакеты от клиентов даже не доходят до интерфейса tun0. Почему сервер их отшвыривает?