Linux 네트워킹을 처음 접했고 비슷한 질문에 대한 답변을 찾을 수 없었습니다.
2개의 네임스페이스를 만들고 그 사이에 핑을 시도하는 중입니다.
ip netns add red;
ip netns add blue;
ip link add dev v-red type veth peer name v-blue;
ip link set dev v-red netns red;
ip link set dev v-blue netns blue;
ip netns exec red ip addr add 192.168.15.1 dev v-red;
ip netns exec blue ip addr add 192.168.15.2 dev v-blue;
ip netns exec red ip link set dev v-red up;
ip netns exec blue ip link set dev v-blue up;
ip netns exec red ping 192.168.15.2;
-> ping: connect: Network is unreachable
디버깅할 때 찾아본 것
ip netns exec blue ifconfig
v-blue: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.15.2 netmask 255.255.255.255 broadcast 0.0.0.0
ip netns exec red ifconfig
v-red: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.15.1 netmask 255.255.255.255 broadcast 0.0.0.0
답변1
두 장치는 서로 다른 두 개의 논리적 /32 네트워크에 위치하며 각 호스트에 연결하는 방식을 암시하는 경로나 라우팅 테이블이 없습니다.
실행하면 # ip netns exec red ip route get 192.168.15.2
으로 응답합니다 RTNETLINK answers: Network is unreachable
. 라우팅 테이블에는 192.168.15.2/32 네트워크로 패킷을 보내는 방법에 대한 답이 없기 때문입니다.
그러나 양방향으로 경로를 추가하는 경우 이는 두 호스트가 이웃(기술적으로는 직접 연결된 피어와 비슷함)이며 패킷을 보내야 한다는 힌트로 작동해야 합니다.
ip netns exec red ip route add 192.168.15.2/32 dev v-red
ip netns exec blue ip route add 192.168.15.1/32 dev v-blue
그런 다음 라우팅 테이블을 인쇄하여 현재 경로가 어떻게 지정되는지 확인할 수 있습니다.
ip netns exec blue ip route list
192.168.15.1 dev v-blue scope link
여기서 기본 경로( ip netns exec red ip route add default dev v-red
)를 실제로 사용하는 것은 완전히 유효합니다. 이는 모든 호스트를 포함하기 때문입니다. 이는 여러분이 알고 있는 경로가 반대편에 존재하는 것뿐만 아니라 여기에 문제가 무엇인지 이해하기 위해 다음을 추가했습니다. 통신하려는 특정 호스트.
이 시점에서 (방화벽이 허용하는) 핑은 예상대로 작동해야 합니다.
답변2
답변3
동일한 네트워크에 빨간색과 파란색 네임스페이스를 두려는 의도라면 다음을 사용하여 라우터를 제거할 수 있습니다.
ip netns exec red ip 경로 추가 192.168.15.2/24 dev v-red
ip netns exec blue ip 경로 추가 192.168.15.1/24 dev v-blue