Linux 라우터의 한 인터페이스를 라우터의 다른 인터페이스로 ping

Linux 라우터의 한 인터페이스를 라우터의 다른 인터페이스로 ping

네트워크 네임스페이스와 veth 쌍으로 구성된 다음과 같은 토폴로지가 있습니다.

------                           ------                            ------
| a1 |                           | r1 |                            | r2 |
|    | a1-eth0-----------r1-eth0 |    |r1-eth1--------------r2-eth1|    |
-----(11.0.0.1/30)   (11.0.0.2/30)----(11.0.0.9/30)   (11.0.0.10/30)----- 

을 위한 r1, net.ipv4.ip_forward is 1.

다음 명령을 사용하여 성공적으로 핑할 수 있습니다 r2.a1

ping -I a1-eth0 -c1 11.0.0.10

또한 인터페이스와 명령을 사용하여 r2성공적 으로 핑할 수 있습니다.r1r1-eth1

ping -I r1-eth1 -c1 11.0.0.10

그렇다면 왜 인터페이스를 사용하여 ping을 수행할 수 없습니까 r2? 알겠어요r1r1-eth0대상 호스트에 연결할 수 없습니다.:

ping -I r1-eth0 -c1 11.0.0.10
PING 11.0.0.10 (11.0.0.10) from 11.0.0.2 r1-eth0: 56(84) bytes of data.
From 11.0.0.2 icmp_seq=1 Destination Host Unreachable

--- 11.0.0.10 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

마찬가지로 라우터 r1의 한 인터페이스를 해당 라우터의 다른 인터페이스를 통해 ping할 수 없습니다.

# here I get Destination Host Unreachable again:
ping -I r1-eth0 -c1 11.0.0.9

# here I get Redirect Host(New nexthop: 11.0.0.9):
ping -I r1-eth1 -c1 11.0.0.2

이것은 r1의 기본 라우팅 테이블입니다.

ip route
default via 11.0.0.10 dev r1-eth1 
11.0.0.0/30 dev r1-eth0  proto kernel  scope link  src 11.0.0.2 
11.0.0.8/30 dev r1-eth1  proto kernel  scope link  src 11.0.0.9

r1그래서 제가 보기에는 라우터의 인터페이스가 서로 통신할 수 없다는 것이 문제인 것 같습니다 . 그러나 r1트래픽은 일반적으로 와 사이에서 전달됩니다 .a1r2

관심을 가져주셔서 감사합니다!

고쳐 쓰다:

문제를 해결하려면 위에서 설명한 문제를 해결해야 합니다.tcpdump 기록에 Tc qdisc 지연이 표시되지 않음. 이 문제에 대한 해결책을 찾았고 링크와 함께 게시했습니다. 따라서 이 문제는 더 이상 필요하지 않으므로 닫겠습니다. 읽어주시고 참여해주신 모든 분들께 감사드립니다!

답변1

잘못된 인터페이스, 즉 연결하려는 네트워크에 연결되지 않은 인터페이스를 사용하여 패킷을 보내는 이유는 무엇입니까? 그것은 잘못된 플랫폼에서 지하철을 타는 것과 같습니다. 인터페이스 간 통신은 없고 호스트 간 통신이 있습니다. 호스트는 네트워크를 통해 다른 호스트와 통신합니다. 인터페이스 선택은 라우팅 테이블 항목을 기반으로 수행됩니다. 내가 아는 한, -I이러한 옵션을 완전히 제거하면 ping 명령이 작동할 것입니다.

관련 정보