Então, parece que consegui encontrar uma solução (temporária?) em que wlan0
é a rota padrão. Eu não preciso conhecer o gateway wifi.
A chave é seguir a ideia @goldilocks para os processos de roteamento de scripts. Mas esta solução permite manter eth0
e wlan1
em execução no dhcp.
Então, adicionei o arquivo /etc/dhcp/dhclient-enter-hooks.d/post-wlan0
(e chmod +x
a ele), que contém:
# post-wlan0 script
# Goal : activate default route via wlan0 after wlan0 is up
#echo "post-wlan0 start" >> /tmp/testwlan0.debug
if [ "$interface" = "wlan0" ]; then
#echo "wlan0 detected" >> /tmp/testwlan0.debug
if [ -n "$new_routers" ] ; then
#echo "setting route" >> /tmp/testwlan0.debug
sudo ip route del default
sudo ip route add default via $new_routers dev wlan0
fi
fi
Na verdade, esse script é um gancho que é acionado quando o cliente dhcp está funcionando. Veja /etc/dhcp/dhclient-enter-hooks.d/debug
para mais informações.
Portanto, quando wlan0
estiver ativo, ele removerá a rota padrão antiga e adicionará uma nova com o wlan0
router ip ( $new_routers
).
Saída de sudo route -n
:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.43.1 0.0.0.0 UG 0 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan1
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.43.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
Eu posso fazer ping em um dispositivo em eth0
ou wlan1
networks. E estou navegando via eth0
.
@goldilocks e @bobstro: Muito obrigado pela sua ajuda! Esta solução parece boa para você?
Minha configuração:
/etc/network/interfaces
:
auto lo
iface lo inet loopback
# Connection to the world
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ssid "wifi1"
wpa-psk "pwd1"
# Debugging connection
auto eth0
iface eth0 inet dhcp
# Connection to the future camera
auto wlan1
allow-hotplug wlan1
iface wlan1 inet dhcp
wpa-ssid "wifi2"
wpa-psk "pwd2"
Saída de ifconfig
:
eth0 Link encap:Ethernet HWaddr b8:27:eb:8c:e2:10
inet addr:192.168.2.2 Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1371 errors:0 dropped:0 overruns:0 frame:0
TX packets:494 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:145112 (141.7 KiB) TX bytes:87219 (85.1 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
wlan0 Link encap:Ethernet HWaddr c0:4a:00:2a:ab:6c
inet addr:192.168.43.44 Bcast:192.168.43.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:230 errors:0 dropped:0 overruns:0 frame:0
TX packets:323 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:22412 (21.8 KiB) TX bytes:32270 (31.5 KiB)
wlan1 Link encap:Ethernet HWaddr 74:da:38:0c:c6:f0
inet addr:192.168.0.14 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1942 errors:0 dropped:1 overruns:0 frame:0
TX packets:30 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:305388 (298.2 KiB) TX bytes:3302 (3.2 KiB)
Editar: solução testada com um dispositivo UPnP em algum lugar em wlan1
. Eu tive que adicionar a rota sudo ip route add 239.255.255.250 dev wlan1
para a descoberta do UPnP passar pela boa interface.
Eu usei este código NodeJS para teste.