获取任意接口的路由器地址

获取任意接口的路由器地址

当我在多个接口上时,如何知道路由器的地址是什么?我知道通过使用 netstat -rn 我可以获得主接口的网关,即路由器的地址。但其他接口呢?

就我而言,我在不同路由器上的 eth0 和 wlan0 上,操作系统选择 eth0 作为默认值(并且我找不到 wlan0 的网关),但是有没有一种通用方法可以查询接口的路由器地址?

$ 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

我想你想要这个ip route命令。如果您在我的服务器上调用ip route,该服务器有两个以太网卡“enp3s0”和“enp3s8”,您会得到以下结果:

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

这会向您显示所有路线。看来您可以获取特定设备名称的路由,如下所示:

[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

“默认通过”行显示路由器的 IP 地址。

这一切都在 Arch Linux 盒子上。 ip是包的一部分iproute2,并且它是/usr/bin/ip.在较旧的 RHEL 机器上,它是/sbin/ip,我不知道它来自哪个包。

答案2

您可以使用traceroute并指定要使用的设备-i,那么下一跳将是连接到该设备的路由器。

答案3

我找到的最好方法是打印 dhcp 配置文件,在 /var/lib/dh​​cp/dhclient.(interface).leases 上找到,并在那里查找路由器定义

相关内容