모든 인터페이스의 라우터 주소를 얻으세요

모든 인터페이스의 라우터 주소를 얻으세요

다중 인터페이스에 있을 때 라우터의 주소가 무엇인지 어떻게 알 수 있나요? netstat -rn을 사용하면 라우터 주소인 기본 인터페이스의 게이트웨이를 얻을 수 있다는 것을 알고 있습니다. 하지만 다른 인터페이스는 어떻습니까?

제 경우에는 서로 다른 라우터의 eth0과 wlan0에 있고 OS는 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명령을 원하는 것 같아요. 두 개의 이더넷 카드 "enp3s0"과 "enp3s8"이 있는 내 서버에서 이것을 호출하면 ip route다음과 같은 결과를 얻습니다.

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

내가 찾은 가장 좋은 방법은 /var/lib/dh​​cp/dhclient.(interface).leases에 있는 dhcp 구성 파일을 인쇄하고 거기에서 라우터 정의를 찾는 것입니다.

관련 정보