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

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

--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-адреса в пространстве 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. Скрипт запуска:

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

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'

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

1 ответ1

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

Брандмауэр

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