신호를 수신하는 인터페이스가 아닌 다른 인터페이스에서 IP 주소를 ping하는 중

신호를 수신하는 인터페이스가 아닌 다른 인터페이스에서 IP 주소를 ping하는 중

PCa와 PCB가 있습니다.

PCa:

$> ip addr && ip route
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:13:3b:0f:24:fc brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.150/24 brd 192.168.3.255 scope global eth6
       valid_lft forever preferred_lft forever
    inet6 fe80::213:3bff:fe0f:24fc/64 scope link 
       valid_lft forever preferred_lft forever
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether f8:b1:56:ba:ae:ee brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.150/24 brd 192.168.10.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.1.150/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 172.18.0.150/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 2a00:801:19:1:288f:db46:14ef:cca8/64 scope global temporary dynamic 
       valid_lft 546270sec preferred_lft 27270sec
    inet6 2a00:801:19:1:50c3:7b14:61bc:1bc0/64 scope global temporary deprecated dynamic 
       valid_lft 460473sec preferred_lft 0sec
    inet6 2a00:801:19:1:fab1:56ff:feba:aeee/64 scope global dynamic 
       valid_lft 2591993sec preferred_lft 604793sec
    inet6 fe80::fab1:56ff:feba:aeee/64 scope link 
       valid_lft forever preferred_lft forever
5: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN group default 
    link/gre 10.110.2.204 brd 10.110.0.115
6: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1462 qdisc noop state DOWN group default qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
7: netgw@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1256 qdisc noqueue state UNKNOWN group default 
    link/gre 10.110.1.222 peer 10.110.0.115
    inet 192.168.4.1/24 scope global netgw
       valid_lft forever preferred_lft forever
default via 172.18.0.1 dev eth0 
169.254.0.0/16 dev eth6  scope link  metric 1000 
172.18.0.0/24 dev eth0  proto kernel  scope link  src 172.18.0.150 
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.150 
192.168.3.0/24 dev eth6  proto kernel  scope link  src 192.168.3.150 
192.168.5.0/24 dev netgw  scope link 
192.168.10.0/24 dev eth0  proto kernel  scope link  src 192.168.10.150

PCB:

bash# ip addr && ip route
1: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:05:68:02:68:dd brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.1/24 brd 192.168.3.255 scope global eth0
3: tunl0: <NOARP> mtu 1480 qdisc noop 
    link/ipip 0.0.0.0 brd 0.0.0.0
4: gre0: <NOARP> mtu 1476 qdisc noop 
    link/gre 0.0.0.0 brd 0.0.0.0
5: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:05:68:03:68:dd brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.2/24 brd 192.168.3.255 scope global eth1
7: netpc@NONE: <POINTOPOINT,NOARP,UP,10000> mtu 1476 qdisc noqueue 
    link/gre 10.110.0.115 peer 10.110.1.222
    inet 192.168.5.1/24 scope global netpc
19: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,10000> mtu 1280 qdisc pfifo_fast qlen 3
    link/ppp 
    inet 10.110.1.16 peer 192.168.111.111/32 scope global ppp0
192.168.111.111 dev ppp0  proto kernel  scope link  src 10.110.1.16 
10.99.196.40 dev ppp0  scope link 
8.8.8.8 dev ppp0  scope link 
192.168.4.0/24 dev netpc  scope link 
192.168.3.0/24 dev eth0  proto kernel  scope link  src 192.168.3.1 
172.18.0.0/24 dev eth0  scope link 
224.0.0.0/4 dev eth0  scope link

PCa, eth6은 이더넷 케이블을 통해 PCB, eth0에 연결됩니다.

지금,PCB에서 핑 172.18.0.150다음을 제공합니다:

bash# ping 172.18.0.150
PING 172.18.0.150 (172.18.0.150) 56(84) bytes of data.
64 bytes from 172.18.0.150: icmp_seq=1 ttl=64 time=4.31 ms
64 bytes from 172.18.0.150: icmp_seq=2 ttl=64 time=0.848 ms

그래서 ping이 계속 나옴PCB의 eth0나는 가정하고 들어온다PCa의 eth6. 문제는 그렇다는 것이다PCa의 eth0그것은172.18.0.150IP 주소. 내가 어떻게 답장을 받았지?PCa의 eth0, 언제PCB의 eth0정말 연결되어 있어요PCa의 eth6?

IP는 인터페이스 자체에만 연결되어 있지 않습니까? 이것이 예상되는 동작입니까? 터널 같은 건 신경쓰지 마세요...

답변1

예, 예상되는 동작입니다. 핑 응답은 그 자체로 IP 패킷이며 응답하는 패킷에 특별히 연결되지 않습니다. IP 패킷은 응답을 위한 "회로"를 형성하지 않으며 각 패킷은 독립적으로 라우팅됩니다.

비대칭 라우팅은 인터넷에서 매우 일반적입니다. 예를 들어, 한 국가를 횡단하는 트래픽의 경우 일반적으로 대상 네트워크가 장거리 전송을 수행합니다. 따라서 국가 반대편에 있는 서버에 ping을 실행하면 해당 서비스 제공자는 전국으로 쿼리를 전달하지만 내 제공자는 응답을 전국으로 전달합니다. 그래서 두 경로는 매우 다릅니다. 한 경로가 다른 경로와 같아야 하는 특별한 이유는 없습니다.

답변2

Linux를 사용하는 경우 이것이 기본 게이트웨이와 더 관련이 있다고 생각합니다. 모든 인터페이스가 동일한 호스트에 있으므로 모든 아웃바운드 트래픽은 기본 게이트웨이 및 관련 인터페이스를 통해 이루어집니다.

즉, 특정 IP 주소를 ping하더라도 응답은 기본 게이트웨이를 통해 왔다는 의미입니다. 즉, 기본 게이트웨이와 연결된 인터페이스에서 응답이 왔다는 뜻입니다.

특정 IP 주소에 사용되는 기본 경로와 인터페이스를 보려면 다음을 시도해 보세요.

ip route

루트로 실행하거나 sudo.

답변3

이것이 scobe 글로벌/범위 링크 등과 관련이 있습니까?

아마도 라우팅 테이블 및 메트릭과 관련이 있을 것입니다. 노력하다

netstat -nr

PCB의 명령 프롬프트에서

나는 PCB가 Eth2 인터페이스가 Eth1보다 PCa에 "더 가깝다"고 확신할 것으로 기대합니다.

출력에 표시된 측정항목은 netstat경로의 적합성을 측정한 것입니다. 예전에는 홉 수였지만 다양한 라우팅 프로토콜이 다양한 방식으로 경로 비용을 측정하므로 이를 우선순위 값으로 생각하는 것이 가장 좋습니다.

명령 을 사용하여 일시적으로 라우팅 테이블을 조작할 수 있습니다 route( 참조 route /?).

관련 정보