LINUX.ORG.RU

OpenWRT маршрут без указания gw через dev

 , , ,


1

1

Всем привет! Есть модем Teltonika RUT240, на нем по умолчанию OpenWRT.

На модеме 2 ethernet (lan и wan), gsm-модем и wi-fi. Wan ethernet переназначен в LAN

Настроен wan failover:

- Сим: wwan0 (метрика 0)

- Wi-Fi: wlan0 (метрика 10)

Есть 2 wi-fi сети с одинаковым ssid и неизвестными подсетями. Известно, что шлюз, с этими wi-fi сетями знает где находится нужная мне подсеть. Пытаюсь добавить статический маршрут не указывая gw (via dev), т.к. gw заранее неизвестен и будет выдан по DHCP

В описании OpenWRT написано, что используется шлюз из родительского интерфейса. «gateway ip address no (none) Network gateway. If omitted, the gateway from the parent interface is taken if any, otherwise creates a link scope route; if set to 0.0.0.0 no gateway will be specified for the route»

# ip a
13: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 00:1e:42:25:ec:1f brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.4/24 brd 192.168.1.255 scope global br-lan
       valid_lft forever preferred_lft forever
14: wwan0: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
    link/ether 86:3c:12:54:57:44 brd ff:ff:ff:ff:ff:ff
    inet 10.34.0.92/29 brd 10.34.0.95 scope global wwan0
       valid_lft forever preferred_lft forever
15: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 00:1e:42:25:ec:21 brd ff:ff:ff:ff:ff:ff
    inet 192.168.103.146/22 brd 192.168.103.255 scope global wlan0
       valid_lft forever preferred_lft forever

# ip route show all
default via 10.34.0.93 dev wwan0
default via 192.168.100.7 dev wlan0  metric 10
10.34.0.88/29 dev wwan0  proto static  scope link  metric 1
10.34.0.93 dev wwan0  proto static  scope link  src 10.34.0.92  metric 1
172.24.0.0/24 dev wlan0  scope link
192.168.1.0/24 dev br-lan  proto kernel  scope link  src 192.168.1.4
192.168.100.0/22 dev wlan0  proto static  scope link  metric 10
192.168.100.7 dev wlan0  proto static  scope link  src 192.168.103.146  metric 10
Видно, что пакет пытается уйти через wlan0
# tcpdump -nni wlan0 host 172.24.0.1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), capture size 262144 bytes
19:31:56.981553 ARP, Request who-has 172.24.0.1 tell 192.168.103.146, length 28
19:31:57.978060 ARP, Request who-has 172.24.0.1 tell 192.168.103.146, length 28

маршрут без указания gw через dev имеет 2 применения:

- прямой маршрут

- маршрут через интерфейс p2p

т.е. это не твой вариант.

Есть 2 wi-fi сети с одинаковым ssid и неизвестными подсетями. Известно, что шлюз, с этими wi-fi сетями знает где находится нужная мне подсеть. Пытаюсь добавить статический маршрут не указывая gw (via dev), т.к. gw заранее неизвестен и будет выдан по DHCP

Так вот после получения адреса и шлюза от dhcp и прописывай дополнительный маршрут. Это самый простой и правильный вариант.

Нормальные dhcp-клиенты умеют выполнять доп. действия после получения настроек.

vel ★★★★★ ()
Ответ на: комментарий от vel

Спасибо за ответ, можешь пояснить, что значит прямой маршрут.

При подключении к wi-fi сетям возможности добавлять маршрут руками - не получится, т.к. доступа не будет.

Можно подробней про добавления маршрута при получении адреса по dhcp В пункте Network -> WAN -> WiFi (WAN3) -> Advanced Settings есть пункт Execute command. Может есть предложения, как вытащить адрес шлюза и подставить в команду?

x077948 ()
Ответ на: комментарий от x077948

Решение

Решение моей ситуации следующее:

cat etc/hotplug.d/iface/99-wlan0-up
#!/bin/sh
if [ "${ACTION}" = "ifup" ] && [ "${DEVICE}" = "wlan0" ]; then
    route add 192.168.160.90 gw $(ip route show 0.0.0.0/0 dev wlan0 | cut -d\  -f3) dev wlan0
fi
иными словами это выполнение скрипта if-up

x077948 ()