Следующий вопрос имеет длинное описание. Я надеюсь, что кто-то в подобной позиции найдет это полезным. Пожалуйста, будьте терпеливы. Моя проблема в конце.
Прежде всего, у меня есть следующие настройки в домашних условиях:
--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
Как видите, вышеприведенные команды работают хорошо, но у меня есть две проблемы:
Я не могу найти надежный способ выполнить его при каждом перезапуске
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
основываясь на приведенном выше результате, я думаю, это из-за отсутствия правила по умолчанию, но почему и как я могу его решить? Важно знать, что без выполнения моих пользовательских команд все будет работать нормально.
Что я уже пробовал:
- Скрипт запуска:
Я использовал приведенную ниже команду, чтобы создать скрипт, который будет выполняться при подключении. не имел никакого успеха.
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'
Может ли кто-нибудь помочь?