Имеем конфигурацию:
1. VDS-виртуалка в Интернете, на которой запущен сервер OpenVPN. Для vpn-сети задано адресное пространство 192.168.2.0/24. В этой vpn-cети данная виртуалка имеет IP 192.168.2.1.
2. Домашний роутер с прошивкой DD-WRT, на котором запущен openvpn-клиент. После соединения с сервером, роутер получает в vpn-сети IP 192.168.2.50. Его IP в локальной домашней сети 192.168.1.1.
3. Домашняя рабочая станция. Ее IP, к примеру 192.168.1.5. Маршрут по-умолчанию на ней установлен, естественно, на гейтвей 192.168.1.1.
Vpn-соединение между виртуалкой и роутером нормальное, работает в двух направлениях. Из консоли роутера пинги ходят до виртуалки. В консоле виртуалки пинги ходят до роутера.
Для начала задача простая: достучаться до виртуалки 192.168.2.1 с рабочей станции 192.168.1.5.
Для этого я на роутере сначала смотрю роутинг:
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.214.221.83. 0.0.0.0 UG 0 0 0 ppp0
83.221.214.192 * 255.255.255.255 UH 0 0 0 ppp0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
169.254.0.0 * 255.255.0.0 U 0 0 0 br0
192.168.1.0 * 255.255.255.0 U 0 0 0 br0
192.168.2.0 * 255.255.255.0 U 0 0 0 tun0
Я не силен в сетях, поэтому не могу точно сказать, достаточно ли строки 192.168.2.0 для того, чтобы пакеты на сеть 192.168.2.0 заворачивались этим правилом. Поэтому добавляю такое правило (просто командой, не через WEB интерфейс):
# route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.2.1 metric 1
После чего имею уже два правила:
# route | grep 192.168.2.0
192.168.2.0 * 255.255.255.0 U 0 0 0 tun0
192.168.2.0 192.168.2.1 255.255.255.0 UG 1 0 0 tun0
По идее, этого достаточно для того, чтобы роутер начал пробрасывать пакеты из сети 192.168.1.0/24 в 192.168.2.0/24, используя в качестве гейтвея хост с виртуалкой 192.168.2.1.
Однако ни ping 192.168.2.1, ни traceroute 192.168.2.1, выполненные в консоли домашней рабочей станции, не работают.
Я не пойму, почему так происходит. Может быть, пакеты пробрасываются до 192.168.2.1 из сети 192.168.1.0/24, но обратно не возвращаются, потому что нужно еще как-то маршрут возвращения прописать? Или пинги не проходят потому, что на роутере их рубит файрвол? Вот какую информацию могу дать по файрволу:
# cat /proc/sys/net/ipv4/ip_forward
1
# iptables -L -n --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
2 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
3 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
4 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:69
5 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 lan2wan 0 -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT udp -- 0.0.0.0/0 224.0.0.0/4
5 TRIGGER 0 -- 0.0.0.0/0 0.0.0.0/0 TRIGGER type:in match:0 relate:0
6 trigger_out 0 -- 0.0.0.0/0 0.0.0.0/0
7 ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0 state NEW
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain advgrp_1 (0 references)
num target prot opt source destination
Chain advgrp_10 (0 references)
num target prot opt source destination
Chain advgrp_2 (0 references)
num target prot opt source destination
Chain advgrp_3 (0 references)
num target prot opt source destination
Chain advgrp_4 (0 references)
num target prot opt source destination
Chain advgrp_5 (0 references)
num target prot opt source destination
Chain advgrp_6 (0 references)
num target prot opt source destination
Chain advgrp_7 (0 references)
num target prot opt source destination
Chain advgrp_8 (0 references)
num target prot opt source destination
Chain advgrp_9 (0 references)
num target prot opt source destination
Chain grp_1 (1 references)
num target prot opt source destination
Chain grp_10 (0 references)
num target prot opt source destination
Chain grp_2 (0 references)
num target prot opt source destination
Chain grp_3 (0 references)
num target prot opt source destination
Chain grp_4 (0 references)
num target prot opt source destination
Chain grp_5 (0 references)
num target prot opt source destination
Chain grp_6 (0 references)
num target prot opt source destination
Chain grp_7 (0 references)
num target prot opt source destination
Chain grp_8 (0 references)
num target prot opt source destination
Chain grp_9 (0 references)
num target prot opt source destination
Chain lan2wan (1 references)
num target prot opt source destination
1 grp_1 0 -- 0.0.0.0/0 0.0.0.0/0
Chain logaccept (0 references)
num target prot opt source destination
1 ACCEPT 0 -- 0.0.0.0/0 0.0.0.0/0
Chain logdrop (0 references)
num target prot opt source destination
1 DROP 0 -- 0.0.0.0/0 0.0.0.0/0
Chain logreject (0 references)
num target prot opt source destination
1 REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 reject-with tcp-reset
Chain trigger_out (1 references)
num target prot opt source destination
Я добавил правило:
# iptables -A FORWARD -d 192.168.2.0/24 -j ACCEPT
# iptables -L -n --line-numbers | grep 192.168.2.0
8 ACCEPT 0 -- 0.0.0.0/0 192.168.2.0/24
Но пинги/трейсроут с рабочей станции до виртуалки все равно не проходят.
Вопрос: что где надо еще настроить, чтобы начали ходить пинги от рабочей станции до виртуалки?
PS: Далее будет следующий вопрос: как заставить ходить пинги из виртуалки до рабочей станции. Ради этого, в принципе, все и затевалось.