Obtenha o endereço do roteador de qualquer interface

0

Como posso saber qual é o endereço do roteador quando estou em várias interfaces? Eu sei que usando netstat -rn eu posso ter o gateway da interface dominante, que é o endereço do roteador. Mas e quanto a outra interface?

No meu caso, eu estou no eth0 e wlan0 no roteador diferente, o SO escolhe eth0 como padrão (e não consigo encontrar o gateway do wlan0), mas existe uma maneira universal de consultar o endereço do roteador da interface?

$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0

$ ifconfig
eth0      Link encap:Ethernet  HWaddr b4:b5:2f:32:f3:22  
      inet addr:192.168.1.132  Bcast:192.168.1.255  Mask:255.255.255.0
      inet6 addr: fe80::b6b5:2fff:fe32:f322/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:22 errors:0 dropped:0 overruns:0 frame:0
      TX packets:53 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:3035 (3.0 KB)  TX bytes:9857 (9.8 KB)
      Interrupt:17 Memory:d4400000-d4420000 

lo        Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:65536  Metric:1
      RX packets:569 errors:0 dropped:0 overruns:0 frame:0
      TX packets:569 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:53950 (53.9 KB)  TX bytes:53950 (53.9 KB)

wlan0     Link encap:Ethernet  HWaddr 60:67:20:00:56:6c  
      inet addr:192.168.2.115  Bcast:192.168.2.255  Mask:255.255.255.0
      inet6 addr: fe80::6267:20ff:fe00:566c/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:8152 errors:0 dropped:0 overruns:0 frame:0
      TX packets:4030 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:6316155 (6.3 MB)  TX bytes:574275 (574.2 KB)
    
por Lingyuan He 10.03.2015 / 19:46

3 respostas

1

Eu acho que você quer o comando ip route . Se você invocar ip route no meu servidor, que tem duas placas ethernet, "enp3s0" e "enp3s8", você verá isto:

1001 % ip route
default via 10.0.0.1 dev enp3s8
10.0.0.0/24 dev enp3s8  proto kernel  scope link  src 10.0.0.3
192.168.1.0/24 dev enp3s0  proto kernel  scope link  src 192.168.1.148

Isso mostra todas as rotas. Parece que você pode obter uma rota para um nome de dispositivo específico como este:

[root@splunge ~]# ip route list dev enp3s8
default via 10.0.0.1
10.0.0.0/24  proto kernel  scope link  src 10.0.0.3

A linha "padrão via" mostra o endereço IP do roteador.

Isso é tudo em uma caixa Arch Linux. ip faz parte do pacote iproute2 e é /usr/bin/ip . Em uma caixa RHEL mais antiga, é /sbin/ip e não tenho ideia de qual pacote é.

    
por 10.03.2015 / 20:14
1

Você pode usar traceroute e especificar o dispositivo a ser usado com -i . Em seguida, o próximo salto será o roteador conectado a esse dispositivo.

    
por 10.03.2015 / 20:14
0

A melhor maneira que encontrei para isso é imprimir os arquivos de configuração do dhcp, encontrados em /var/lib/dhcp/dhclient.(interface).leases, e procurar a definição dos roteadores lá

    
por 04.02.2016 / 16:10