Универсальный способ узнать адрес маршрутизатора

Универсальный способ узнать адрес маршрутизатора

Как узнать адрес маршрутизатора, когда я нахожусь на нескольких интерфейсах? Я знаю, что с помощью netstat -rn я могу получить шлюз доминирующего интерфейса, который является адресом маршрутизатора. Но что насчет других интерфейсов.

В моем случае я использую eth0 и wlan0 на разных маршрутизаторах, ОС выбирает eth0 по умолчанию, но есть ли универсальный способ запросить адрес маршрутизатора интерфейса?

$ 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)

решение1

Это не полное решение, но вы проверьте arp -n.

ddd@mmm ~ $ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
xxx.xxx.xxx.xxx          ether   00:e0:1e:b4:12:42   C                     eth0
yyy.yyy.yyy.yyy          ether   00:14:78:52:28:d2   C                     wlan0

решение2

Чтобы найти первый интерфейс hopan, используемый для доступа в Интернет:

ping -I <interface or ip of interface> -t 1 8.8.8.8

-t 1 — ограничивает пакет ttl до 1, то есть пакет будет уничтожен первым маршрутизатором, через который он попытается пройти. Этот маршрутизатор вернет пакет «Time to live exceeded», показывающий IP-адрес устройства, сгенерировавшего этот пакет.

From 192.168.0.254 icmp_seq=1 Time to live exceeded

В Windows команда немного отличается:

ping -S <ip address of interface> -i 1 8.8.8.8

-i 1 — это опция ограничения ttl до 1 в Windows, ответ будет следующим:

Reply from 192.168.0.254: TTL expired in transit.

Если вы увеличите число после -t/-i, то вы получите n-ный прыжок, через который проходит пакет. Этот метод можно использовать, если у вас нет tracert, и вам нужно знать путь, по которому пройдет пакет.

Обратите внимание, что маршрут, по которому проходит пакет в Интернете и некоторых локальных сетях, может меняться каждый раз при отправке пакета.

Связанный контент