В целях самообразование играюсь с OpenVPN и в данном случае хочу попробовать соединить две локальные сети, т.е. чтобы каждый из хостов одной сети видел (мог пинговать) все остальные хосты.
Ситуация следующая. Есть две локальные сети 10.129.0.0/16 (состоит из двух хостов 10.129.20.80 и 10.129.18.182) и 10.135.0.0/16 (тоже состоит из двух хостов 10.135.28.233 и 10.135.32.170).
Хост 10.129.18.182 имеет постоянный внешний IP 37.139.10.10, потому здесь я запустил OpenVPN в режиме сервера:
# openvpn --ifconfig 10.8.0.1 10.8.0.2 --dev tun --secret /etc/openvpn/secret.key 0 --route 10.135.0.0 255.255.0.0 --verb 7
инструкция '--route' добавила локальный маршрут на сеть 10.135.0.0 через tun0 интерфейс.
На 10.135.28.233 я запустил OpenVPN в режиме клиента и подключаюсь к внешнему адресу сервера 10.129.18.182:
# openvpn --ifconfig 10.8.0.2 10.8.0.1 --dev tun --secret /etc/openvpn/secret.key 1 --remote 37.139.10.10 --route 10.129.0.0 255.255.0.0 --verb 7
Чтобы сервера 10.129.18.182 и 10.135.28.233 видели всю сеть я добавляю правила на них:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -P FORWARD ACCEPT
# iptables -t nat -s 10.8.0.0/24 -A POSTROUTING -o eth1 -j MASQUERADE
В конечном итоге сервера 10.129.18.182 и 10.135.28.233 видят все хосты в сетях.
Для того, чтобы 10.129.20.80 видел сеть 10.135.0.0/16 я добавляю для него новый маршрут:
# route add -net 10.135.0.0 netmask 255.255.0.0 gw 10.129.18.182
А для того, чтобы 10.135.32.170 видел сеть 10.129.0.0/16:
# route add -net 10.129.0.0 netmask 255.255.0.0 gw 10.135.28.233
И собственно проблема. Для того, чтобы 10.135.28.233 и 10.129.18.182 пересылали трафик на необходимую сеть я добавляю правило маршрутизации на 10.135.28.233:
# iptables -t nat -s 10.129.0.0/16 -A POSTROUTING -o tun0 -j MASQUERADE
А на 10.129.18.182 следующее:
# iptables -t nat -s 10.135.0.0/16 -A POSTROUTING -o tun0 -j MASQUERADE
И вот тут ничего не происходит: 10.129.20.80 так и не видит сеть 10.135.0.0/16, а 10.135.32.170 не видит сеть 10.129.0.0/16.
Похоже, что я не шарю и потому прошу о помощи.
P.S. Возможно эта картинка поможет понять то, что я хочу http://i.imgur.com/vVaiwlM.jpg
P.P.S. Для тестирования всего этого я использую хостинг Digital Ocean, если это важно.