2

У меня есть маршрутизатор DD-WRT, к которому я хотел бы получить удаленный доступ через SSH. DD-WRT находится за маршрутизатором ADSL, у которого включена переадресация портов для порта 22, доступ и обслуживание DD-WRT SSH также настроены на порт 22. Удаленный доступ работает нормально. Однако предполагается, что DD-WRT постоянно подключен к VPN-серверу (используя встроенный клиент OpenVPN).

Соединение OpenVPN работает нормально, но удаленный доступ по SSH работает только тогда, когда VPN-клиент отключен.

Я читаю, что это может быть связано со всем трафиком, маршрутизируемым через шлюз VPN, включая трафик, поступающий через WAN. Правильно ли, что мне нужно будет определить пользовательские настройки iptables для запросов, поступающих через WAN, которые также будут отвечать через WAN? Если да, как бы я поступил? Если нет, что еще я мог сделать?

У меня похожая проблема с веб-интерфейсом на порте 8080 и сервером PPTP VPN на порте 1723, поэтому я считаю, что проблема не связана с SSH как таковым.

Вот детали моей настройки:

Устройства:

  • ADSL маршрутизатор TP-Link W8151N
  • Маршрутизатор TP-Link WR1043ND с DD-WRT 25544

IP-адреса:

  • ADSL роутер внешний: 115.x.x.x
  • Внутренний маршрутизатор ADSL: 192.168.1.1
  • DD-WRT WAN IP: 192.168.1.100 (от ADSL-маршрутизатора)
  • DD-WRT IP: 192.168.10.1
  • DD-WRT IP внешний (VPN): 119.x.x.x
  • Псевдоним DDNS, указывающий на подключение маршрутизатора ADSL: 115.x.x.x

Конфигурация:

  • ADSL-маршрутизатор с активированной переадресацией портов для портов 22/8080, DDNS на 192.168.1.100
  • DD-WRT установлен для разрешения удаленного управления графическим интерфейсом на 8080, также с удаленных IP-адресов и доступа SSH на 22, SSH активирован в сервисах, также на 22.
  • DD-WRT подключен к OpenVPN с помощью встроенной функции клиента во вкладке «Службы»

Редактировать 05 марта: что я пробовал в то же время:

Добавление следующего в поле «Маршрутизация на основе политик» в настройках клиента OpenVPN (идея: трафик, который идет от ip WAN, должен направляться обратно в интерфейс WAN, vlan2 или ppp0):

ip rule add from 192.168.1.1 table 200
ip route add default via 192.168.1.1 dev vlan2 table 200
ip route flush cache

Результат: когда VPN-соединение установлено, я больше не могу получить доступ к GUI и Интернету. Мой маршрутизатор настроен на перезагрузку через три минуты, после того как я не смог связаться с Google DNS, поэтому через три минуты я снова получаю доступ к графическому интерфейсу и сети, но только до тех пор, пока VPN-подключение не будет восстановлено.

Я полностью на неправильном пути с этим подходом?

2 ответа2

2

Я не был доволен маршрутизацией на основе политики, поэтому после полных выходных исследований я дошел до этого.

Однако пакеты поступают на маршрутизатор, если вы пытаетесь использовать SSH для IP-адреса WAN, поскольку весь OUTPUT-трафик перенаправляется через VPN (интерфейс tun0) SSH не удастся.

Чего не хватает, так это правила OUTPUT для iptables для маршрутизации трафика через порт 22 через интерфейс vlan2 (это интерфейс, подключенный напрямую к Интернету)

# Create table 202 via the Gateway Ip on the Interface VLAN2
ip route add default via $(nvram get wan_gateway) dev vlan2 table 202

# Apply the rule on table 202 to packages marked with 22
ip rule add fwmark 22 table 202

# Tag with 22 every output package on port 22 not coming from any  machine in the local network
iptables -t mangle -I OUTPUT -p tcp --sport 22 -d ! 192.168.1.0/24 -j  MARK --set-mark 22

Обратите внимание, что последняя команда пропускает пакеты из локальной сети в моем случае 192.168.1.0/24, причина в том, что при SSHing с хоста в локальной сети пакеты должны маршрутизироваться через br0 а не vlan2 .

Сначала выполните эти команды в командной строке вашего маршрутизатора, чтобы убедиться, что они работают с вами. Если каким-то образом они нарушат вашу маршрутизацию, перезапуск их очистит. Убедившись, что они работают, вы можете добавить их в скрипт брандмауэра вашего маршрутизатора.

DD-WRT Config Обратите внимание, что мой конфигурационный IP и порт отличаются, потому что я не использую значения по умолчанию.

0

В DD-WRT перейдите в раздел Сервисы -> VPN -> Клиент OpenVPN -> Маршрутизация на основе политик, добавьте одну строку для каждого клиента, трафик которого вы хотите направить через VPN-туннель, например

    192.168.10.20/32
    192.168.10.21/32
    ...

В результате клиент OpenVPN больше не маршрутизирует весь трафик через туннель и, следовательно, также снова открывает WAN. Теперь у меня запущен VPN-клиент, который по-прежнему может подключаться к маршрутизатору через SSH / PPTP / GUI через IP-адрес WAN или псевдоним DDNS.

(Вероятно, есть более разумный способ, чем добавление одной строки для каждого клиента, но все разные сетевые маски, которые я попробовал, привели к тому, что маршрутизатор перестает быть доступным вообще, поэтому я добавил одну строку для всех IP-адресов в моем диапазоне DHCP.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .