Сейчас я провел довольно много исследований по этой теме и пока не смог найти жизнеспособного решения. Было много вопросов, большинство из которых не совсем соответствовали моей проблеме, и только несколько ответов. Итак, я надеюсь получить некоторую помощь здесь. Вот настройки:
Моя локальная сеть использует диапазон адресов 10.1.0.0/24, где 10.1.0.1 - маршрутизатор, а 10.1.0.2 - машина, к которой я пытаюсь получить доступ из-за пределов сети.
Маршрутизатор работает с микропрограммой dd-wrt и настроен как сервер OpenVPN с диапазоном адресов vpn 10.2.0.0/24. В конфигурации серверов я пытаюсь протолкнуть маршрут к моей локальной сети через:
push "route 10.1.0.0 255.255.255.0"
Я могу установить работающее соединение OpenVPN от моего клиента на работе, и маршрут получен правильно:
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default ds9-ds10.gate.u 0.0.0.0 UG 302 0 0 wlan0
10.1.0.0 10.2.0.1 255.255.255.0 UG 0 0 0 tun0
10.2.0.0 * 255.255.255.0 U 0 0 0 tun0
10.20.4.0 * 255.255.254.0 U 0 0 0 wlan0
10.20.4.0 * 255.255.254.0 U 302 0 0 wlan0
Я также могу подключиться к маршрутизатору через ssh или использовать его веб-интерфейс, используя либо обычный ip 10.1.0.1 (который возможен только при проталкивании маршрута), либо vpn ip 10.2.0.1.
Переадресация IP включена на маршрутизаторе:
# cat /proc/sys/net/ipv4/ip_forward
1
Я подумал, что теперь я должен быть в состоянии ssh к другой машине (которая настроена на прием соединений от 10.1.0.0/24 и 10.2.0.0./24 адресов), используя его LAN ip 10.1.0.2, как все соединения с 10.1.0.0/24 теперь должен маршрутизироваться через 10.2.0.1, но я не могу подключиться.
Я не вижу пропущенный бит в моей настройке, возможно, где-то в маршрутизаторе. Почему мой запрос на подключение к 10.1.0.1 (диапазон локальных адресов) работает, но запрос на 10.1.0.2 не достигает компьютера, подключенного к маршрутизатору?
РЕДАКТИРОВАТЬ:
Я не знал о проблеме, на которую указал @MariusMatutiae. Я пару раз читал о необходимости статического маршрута, но никогда не было ясно, куда и что добавить, я должен признать, что мои знания о мельчайших деталях весьма ограничены. Однако разъяснение в его ответе имеет смысл. Следуя его советам, я изменил таблицу маршрутизации на маршрутизаторе, чтобы теперь включить
10.2.0.0 10.2.0.1 255.255.255.0 UG 0 0 0 tun2
приводя к следующей таблице:
root@DD-WRT:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 188-193-191-254 0.0.0.0 UG 0 0 0 vlan2
10.1.0.0 * 255.255.255.0 U 0 0 0 br0
10.2.0.0 10.2.0.1 255.255.255.0 UG 0 0 0 tun2
10.2.0.0 * 255.255.255.0 U 0 0 0 tun2
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
188.193.184.0 * 255.255.248.0 U 0 0 0 vlan2
В цепочку FORWARD iptables входят строки
pkts bytes target prot opt in out source destination
0 0 ACCEPT 0 -- tun2 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT 0 -- * tun2 0.0.0.0/0 0.0.0.0/0
выше любых DROPs или REJECTs с tun2, являющимся устройством tun сервера OpenVPN. Думаю, все должно быть в порядке.
Проблема, однако, все еще остается нерешенной. В чем дело?