DD-WRT - перенаправление интернет-трафика на основе исходной подсети

0

Следующий вопрос имеет длинное описание. Я надеюсь, что кто-то в подобной позиции найдет это полезным. Пожалуйста, будьте терпеливы. Моя проблема в конце.

Прежде всего, у меня есть следующие настройки в домашних условиях:

--MODEM (ADSL) - ISP INTERNET : 192.168.0.1
  |
  -- WIRELESS ROUTER (DDWRT) : 192.168.1.1

У меня есть L2TP VPN-сервис, который мне необходимо использовать для доступа в Интернет. Поскольку DD-WRT не поддерживает L2TP в качестве VPN-клиента, я настроил его в качестве основного WAN-соединения. Работает как положено, и мой трафик проходит через VPN-соединение со всех беспроводных клиентов и портов Ethernet. Именно то, что я хочу.

введите описание изображения здесь

Сейчас в некоторых редких случаях я не хочу использовать VPN-соединение. Например, когда он падает. До сих пор мне приходилось переходить на панель управления маршрутизатора и устанавливать настройки WAN «DHCP», чтобы получить прямой доступ в Интернет. Затем снова, когда VPN станет онлайн, верните настройки обратно.

Я обнаружил, что это сложно (особенно потому, что никто другой не знает, как это сделать), и поэтому я решил создать интерфейс Virtual Wireless, который использует IP-адрес модема в качестве шлюза, и в результате любое подключенное к нему устройство получает прямую связь с Интернетом. Поэтому я создал виртуальный беспроводной интерфейс и добавил его в новый мост, а затем настроил DHCP для назначения любому клиенту, подключенному к нему, IP-адреса в пространстве IP 192.168.3.x. Следующие скриншоты помогут вам понять настройки:

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

До сих пор все работает как положено. Теперь мне нужно было найти способ отправить трафик из этой подсети (192.168.3.x) в 192.168.0.1, который является модемом ADSL, и в результате обойти соединение PPP маршрутизатора.

Используя мои ограниченные знания IP-таблиц и некоторую помощь из Интернета, я написал следующий скрипт:

ip rule add from 192.168.3.0/24 table 200
ip route add default via 192.168.0.1 dev vlan2 table 200
ip route flush cache

Таблица IP содержит следующие правила перед выполнением вышеуказанных команд:

root@router:~# ip route
default via 192.168.100.198 dev ppp0  scope link
50.105.xxx.xxx via 192.168.0.1 dev vlan2
127.0.0.0/8 dev lo  scope link
169.254.0.0/16 dev br0  proto kernel  scope link  src 169.254.255.1
192.168.0.0/24 dev vlan2  proto kernel  scope link  src 192.168.0.100
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.1
192.168.1.1 via 192.168.0.1 dev vlan2
192.168.3.0/24 dev br1  proto kernel  scope link  src 192.168.3.1
192.168.100.198 dev ppp0  scope link

После выполнения в таблице 200:

root@router:~# ip route list table 200
default via 192.168.0.1 dev vlan2

Как видите, вышеприведенные команды работают хорошо, но у меня есть две проблемы:

  1. Я не могу найти надежный способ выполнить его при каждом перезапуске

  2. VPN-соединение не будет подключаться снова после отключения. Фактически, после отключения любой клиент, кроме клиентов с IP-адресом 192.168.3.x, теряет доступ к Интернету.

Взгляните на правила таблицы IP после отключения:

root@router:~# ip route list table 200
default via 192.168.0.1 dev vlan2
root@router:~# ip route
127.0.0.0/8 dev lo  scope link
169.254.0.0/16 dev br0  proto kernel  scope link  src 169.254.255.1
192.168.0.0/24 dev vlan2  proto kernel  scope link  src 192.168.0.100
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.1
192.168.1.1 via 192.168.0.1 dev vlan2
192.168.3.0/24 dev br1  proto kernel  scope link  src 192.168.3.1

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

Что я уже пробовал:

  1. Скрипт запуска:

Я использовал приведенную ниже команду для создания скрипта, который будет выполняться при подключении wan. не имел никакого успеха.

mkdir -p '/tmp/etc/config/'
echo "ip rule add from 192.168.3.0/24 table 200
ip route add default via 192.168.0.1 dev vlan2 table 200
ip route flush cache" > '/tmp/etc/config/direct.wanup'
chmod +x '/tmp/etc/config/direct.wanup'

Может ли кто-нибудь помочь?

Соруш Фалахати
источник

Ответы:

0

Добавление следующих правил в скрипт брандмауэра полностью решило мою проблему:

ip route add default via 192.168.0.1 dev vlan2
ip route delete 8.8.8.8 via 192.168.0.1 dev vlan2
ip rule add from 192.168.3.0/24 table 200
ip route add default via 192.168.0.1 dev vlan2 table 200
ip route flush cache

Брандмауэр

Соруш Фалахати
источник