Como fazer com que a wlan seja sempre a rota padrão? (lista de rotas ip)


8

Sempre que adiciono meu modem 4G ao meu raspberry, ele fica no topo das rotas padrão ou ip route list, no entanto, quero que tudo passe pela wlan e use apenas o modem 4G para receber conexões SSH.

Encontrei esta resposta sobre como desativar as rotas padrão.

no entanto, após a reinicialização, o modem 4G volta ao topo.

Como faço wlan0para ser sempre a primeira regra por padrão?

ATUALIZAR:

Aqui está a saída dmesg quando eu conecto o dongle USB:

[426102.910168] usb 1-1.5.1: new full-speed USB device number 6 using dwc_otg
[426103.046670] usb 1-1.5.1: not running at top speed; connect to a high speed hub
[426103.056674] usb 1-1.5.1: New USB device found, idVendor=12d1, idProduct=1f01
[426103.056693] usb 1-1.5.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[426103.056704] usb 1-1.5.1: Product: HUAWEI_MOBILE
[426103.056714] usb 1-1.5.1: Manufacturer: HUAWEI_MOBILE
[426103.056724] usb 1-1.5.1: SerialNumber: 0123456789ABCDEF
[426103.121355] usb-storage 1-1.5.1:1.0: USB Mass Storage device detected
[426103.122875] scsi host0: usb-storage 1-1.5.1:1.0
[426103.987177] usb 1-1.5.1: USB disconnect, device number 6
[426105.470211] usb 1-1.5.1: new full-speed USB device number 7 using dwc_otg
[426105.606666] usb 1-1.5.1: not running at top speed; connect to a high speed hub
[426105.615673] usb 1-1.5.1: New USB device found, idVendor=12d1, idProduct=14dc
[426105.615692] usb 1-1.5.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[426105.615703] usb 1-1.5.1: Product: HUAWEI_MOBILE
[426105.615713] usb 1-1.5.1: Manufacturer: HUAWEI_MOBILE
[426105.766297] usb-storage 1-1.5.1:1.2: USB Mass Storage device detected
[426105.766768] scsi host0: usb-storage 1-1.5.1:1.2
[426105.855053] cdc_ether 1-1.5.1:1.0 eth1: register 'cdc_ether' at usb-3f980000.usb-1.5.1, CDC Ethernet Device, 0c:5b:8f:27:9a:64
[426105.855593] usbcore: registered new interface driver cdc_ether
[426106.785653] scsi 0:0:0:0: Direct-Access     HUAWEI   TF CARD Storage  2.31 PQ: 0 ANSI: 2
[426106.803758] sd 0:0:0:0: Attached scsi generic sg0 type 0
[426106.820687] sd 0:0:0:0: [sda] Attached SCSI removable disk

Aqui está ip addr

eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 0c:5b:8f:27:9a:64 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::584f:751f:bb3e:e26b/64 scope link 
       valid_lft forever preferred_lft forever

ATUALIZAÇÃO 2

Anexei-o mais algumas vezes até mostrar a eth1rota:

[10787.229141] usb 1-1.5: new full-speed USB device number 7 using dwc_otg
[10787.363515] usb 1-1.5: New USB device found, idVendor=05e3, idProduct=0606
[10787.363533] usb 1-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[10787.363544] usb 1-1.5: Product: USB Hub 2.0
[10787.363555] usb 1-1.5: Manufacturer: ALCOR
[10787.365166] hub 1-1.5:1.0: USB hub found
[10787.369831] hub 1-1.5:1.0: 4 ports detected
[10797.419094] usb 1-1.5.1: new full-speed USB device number 8 using dwc_otg
[10797.555636] usb 1-1.5.1: not running at top speed; connect to a high speed hub
[10797.565759] usb 1-1.5.1: New USB device found, idVendor=12d1, idProduct=1f01
[10797.565777] usb 1-1.5.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[10797.565789] usb 1-1.5.1: Product: HUAWEI_MOBILE
[10797.565799] usb 1-1.5.1: Manufacturer: HUAWEI_MOBILE
[10797.565808] usb 1-1.5.1: SerialNumber: 0123456789ABCDEF
[10797.630477] usb-storage 1-1.5.1:1.0: USB Mass Storage device detected
[10797.631101] scsi host0: usb-storage 1-1.5.1:1.0
[10798.472745] usb 1-1.5.1: USB disconnect, device number 8
[10799.469081] usb 1-1.5.1: new full-speed USB device number 9 using dwc_otg
[10799.630768] usb 1-1.5.1: not running at top speed; connect to a high speed hub
[10799.646891] usb 1-1.5.1: New USB device found, idVendor=12d1, idProduct=14dc
[10799.646909] usb 1-1.5.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[10799.646920] usb 1-1.5.1: Product: HUAWEI_MOBILE
[10799.646930] usb 1-1.5.1: Manufacturer: HUAWEI_MOBILE
[10799.814489] usb-storage 1-1.5.1:1.2: USB Mass Storage device detected
[10799.815008] scsi host0: usb-storage 1-1.5.1:1.2
[10799.897788] cdc_ether 1-1.5.1:1.0 eth1: register 'cdc_ether' at usb-3f980000.usb-1.5.1, CDC Ethernet Device, 0c:5b:8f:27:9a:64
[10799.898127] usbcore: registered new interface driver cdc_ether
[10800.889652] scsi 0:0:0:0: Direct-Access     HUAWEI   TF CARD Storage  2.31 PQ: 0 ANSI: 2
[10800.910585] sd 0:0:0:0: Attached scsi generic sg0 type 0
[10800.923297] sd 0:0:0:0: [sda] Attached SCSI removable disk

Aqui está route -n

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 wlan0
0.0.0.0         192.168.8.1     0.0.0.0         UG    207    0        0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG    303    0        0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U     202    0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     204    0        0 docker0
169.254.0.0     0.0.0.0         255.255.0.0     U     206    0        0 veth4557ad2
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     303    0        0 wlan0
192.168.8.0     0.0.0.0         255.255.255.0   U     207    0        0 eth1

Ver que eu fiz ifmetric wlan0, a fim de ser capaz de usar o wlan0que sshem minha framboesa

ATUALIZAÇÃO 10/09:

allow-hotplug wlan0
iface wlan0 inet dhcp
    up ifmetric wlan0 0
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Isso não fará com wlan0que a métrica tenha 0. O que estou fazendo de errado?


1
O primeiro passo é descobrir por que o modem 4G obtém uma rota padrão. Ele faz DHCP? Se sim, descubra como o chama (gerenciador de rede? Ifup / ifdown tradicional?) E configure o dhclient etc. nessa chamada para não definir a rota padrão para essa interface específica.
dirkt

@dirkt é um dongle USB, portanto, quando está conectado, obtém uma nova interface por padrão. Não há regra para eth1 em / etc / network / interfaces, no entanto, este é o dispositivo Ethernet atribuído a ele. Você sabe por quê? Não sei se ele faz DHCP, a interface é bem simples, não há coisas avançadas para mudar ou procurar. É um modem Huawei. Você poderia me ajudar?
Guerlando OCs

1
Edite a pergunta com a saída de dmesge syslog (use journalctlse você tiver systemd) depois de conectar o dongle USB (recuo 4 espaços para formatação adequada no stackoverflow).
dirkt

@ dirkt Vou postar o dmesg em breve quando conseguir alguém para conectar o modem 4G para mim. Enquanto isso, como encontro qual coisa está fornecendo um endereço IP para o meu roteador? Estou usando o raspbian, que é baseado no debian, então você tem uma ideia?
Guerlando OCs

Em geral, você obtém endereços IP via DHCP , geralmente chamando dhclientou, se o modem usa um protocolo ponto a ponto, desse protocolo. Tudo isso deve ser mostrado em algum lugar nos logs, e é por isso que eu estava pedindo os logs. Se você não tem acesso físico ao RaspPi (você não mencionou isso), ip linkou ip addrtambém deve mostrar se é um protocolo ponto a ponto ou não (possivelmente você precisa do modo detalhado).
dirkt 17/07/19

Respostas:


5

Para alterar a prioridade de roteamento de uma interface, você altera as métricas.

Por padrão, todos são 0, que é a maior prioridade. Então, você pode fazer:

allow-hotplug eth1
iface eth1 inet dhcp
    up ifmetric eth1 30

Para usar ifmetricno Debian, você precisa instalá-lo:

sudo apt-get install ifmetric

ifmetric

Definir métricas de roteamento para uma interface de rede

O ifmetric é uma ferramenta Linux para definir as métricas de todas as rotas IPv4 conectadas a uma determinada interface de rede de uma só vez. Isso pode ser usado para alterar a prioridade do roteamento do tráfego IPv4 pela interface. Métricas mais baixas se correlacionam com prioridades mais altas.

A métrica 0 significa a rota de maior prioridade e é a rota padrão. O valor métrico maior significa rotas de menor prioridade. O endereço IP da interface ativa com o menor valor de métrica passa a ser o de origem. Veja ifmetric (8).


1
Talvez você deva também explicar por que isso ajudará a obter o DHCP de uma interface específica (em vez de ignorá-la) se houver outras interfaces presentes.
dirkt

@ Dirkt você poderia explicar melhor a coisa dhcp? Eu tenho atualmente iface wlan0 inet manual para cima wlan0 ifmetric 0, mas métrica wlan0 não aparecerá como 0
Guerlando OCs

1

Esse é o bom e velho problema de como substituir uma rota padrão.

A maneira mais fácil para o IPv4 é não tentar alterar a métrica / prioridade, mas dividir a rota:

ip route add 0.0.0.0/1 via wlan0-gw
ip route add 128.0.0.0/1 via wlan0-gw

O motivo disso funciona é que as pesquisas da tabela de roteamento são realizadas usando uma pesquisa de prefixo de correspondência mais longa. As métricas de rota entram em jogo somente quando há duas rotas equivalentes. Nesse caso, essas duas rotas têm um prefixo de 1 bit que é maior que o prefixo de 0 bits da rota padrão (0.0.0.0/0) e serão consultadas primeiro. Como essas duas rotas cobrem todo o 0.0.0.0/0, elas sempre terão preferência sobre a rota padrão.

Uma abordagem alternativa é usar uma tabela de roteamento separada com a rota padrão de sua preferência e adicionar uma regra para enviar todo o tráfego para lá. Eu nunca vi nenhuma automação que mexa com as regras de ip, então não importa que outras rotas eles adicionem. O problema aqui é que sua automação não poderá inserir rotas adicionais.

Então, tl; dr:

iface wlan0 inet manual
    up ip route add 0.0.0.0/1 via wlan0-gw
    up ip route add 128.0.0.0/1 via wlan0-gw
    ....

Ou (mas você também precisará adicionar todas as outras rotas à "tabela 5"):

iface wlan0 inet manual
    up ip rule add to 0.0.0.0/0 table 5
    up ip route add default via wlan0-gw table 5
    ....

0

Uma maneira de persistir ip route add/delno debian é anotá-los /etc/network/interfacescomo abaixo:

allow-hotplug eth1
iface eth1 inet dhcp
    post-up ip route del default
    post-up ip route add default via <gateway IP> dev wlan0

Acho que desta forma ele vai apenas adicionar um gateway padrão para cada interface, mas não qual deles é usado de preferência
Guerlando OCs

Ok eu entendi, ele irá excluir o padrão e adicionar um para wlan0. Mas também não será adicionado um padrão para eth0?
Guerlando OCs

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.