![获取任意接口的路由器地址](https://linux22.com/image/4796/%E8%8E%B7%E5%8F%96%E4%BB%BB%E6%84%8F%E6%8E%A5%E5%8F%A3%E7%9A%84%E8%B7%AF%E7%94%B1%E5%99%A8%E5%9C%B0%E5%9D%80.png)
当我在多个接口上时,如何知道路由器的地址是什么?我知道通过使用 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/dhcp/dhclient.(interface).leases 上找到,并在那里查找路由器定义