내부 네트워크 네임스페이스를 ping할 수 없습니다.

내부 네트워크 네임스페이스를 ping할 수 없습니다.

다음과 같이 centos 시스템에 빨간색과 파란색이라는 두 개의 네트워크 네임스페이스를 만들었습니다.

[root@ip-xxx-xxx-xxx-xxx ~]# ip netns add red
[root@ip-xxx-xxx-xxx-xxx ~]# ip netns add blue

[root@ip-xxx-xxx-xxx-xxx ~]# ip netns
blue
red

가상 케이블 'veth-red'와 'veth-blue'를 생성한 후 다음 명령을 사용하여 연결했습니다.

[root@ip-xxx-xxx-xxx-xxx ~]# ip link add veth-red type veth peer name veth-blue

그런 다음 다음과 같이 각 네임스페이스에 적절한 인터페이스를 연결했습니다.

[root@ip-xxx-xxx-xxx-xxx ~]# ip link set veth-red netns red
[root@ip-xxx-xxx-xxx-xxx ~]# ip link set veth-blue netns blue

그런 다음 다음과 같이 각 네임스페이스에 IP 주소를 할당했습니다.

[root@ip-xxx-xxx-xxx-xxx ~]# ip -n red addr add 192.168.15.1 dev veth-red

[root@ip-xxx-xxx-xxx-xxx ~]# ip -n blue addr add 192.168.15.2 dev veth-blue

그런 다음 해당 네임스페이스 내의 각 장치에 대해 IP 링크 설정 명령을 사용하여 인터페이스를 불러옵니다.

[root@ip-xxx-xxx-xxx-xxx ~]# ip -n red link set veth-red up
[root@ip-xxx-xxx-xxx-xxx ~]# ip -n blue link set veth-blue up

그런 다음 각 네임스페이스 내부의 인터페이스를 확인하면 다음과 같이 'red' 네임스페이스에 'veth-red'가 있고 blue 네임스페이스에 'veth-blue'가 표시됩니다.

[root@ip-xxx-xxx-xxx-xxx ~]# ip -n red link
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
17: veth-red@if16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 7e:9d:42:79:2d:2f brd ff:ff:ff:ff:ff:ff link-netnsid 1
[root@ip-xxx-xxx-xxx-xxx ~]# ip -n blue link
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
16: veth-blue@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 62:aa:79:55:46:56 brd ff:ff:ff:ff:ff:ff link-netnsid 0

다음과 같이 빨간색에서 파란색(IP 주소: 192.168.15.2)으로 ping을 보내려고 하면 의심이 듭니다.

[root@ip-xxx-xxx-xxx-xxx ~]# ip netns exec red ping 192.168.15.2
connect: Network is unreachable

책에 따라 모든 작업을 수행했는데 왜 '네트워크에 연결할 수 없습니다'라는 메시지가 표시되는지 알려주실 수 있나요? 도와주세요

답변1

다음 명령을 사용하여 문제를 해결할 수 있습니다 route.

# ip -n red route get 192.168.15.2
RTNETLINK answers: Network is unreachable

좋은 힌트네요. 네임스페이스에 적절한 라우팅이 없습니다. 이 경우 IP 주소를 추가할 때 넷마스크를 놓쳤기 때문입니다.

# ip -o -n red a
7: veth-red    inet 192.168.15.1/32 scope global veth-red\       valid_lft forever preferred_lft forever 

/24라우팅 테이블이 이 인터페이스를 통해 네트워크의 다른 IP에 도달할 수 있음을 알 수 있도록 IP 주소를 추가해 보십시오 .

  1. 먼저 모든 IP 주소를 삭제하세요.
# ip -n red  addr flush dev veth-red
# ip -n blue addr flush dev veth-blue

  1. 올바른 IP를 추가하세요.넷마스크 있음( /24최소 혼란을 사용하지만 /30귀하의 예에서도 작동합니다).
# ip -n red  addr add 192.168.15.1/24 dev veth-red
# ip -n blue addr add 192.168.15.2/24 dev veth-blue

이제 끝났습니다.

# ip netns exec red ping -c2 192.168.15.2
PING 192.168.15.2 (192.168.15.2) 56(84) bytes of data.
64 bytes from 192.168.15.2: icmp_seq=1 ttl=64 time=0.034 ms
64 bytes from 192.168.15.2: icmp_seq=2 ttl=64 time=0.022 ms

--- 192.168.15.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1035ms
rtt min/avg/max/mdev = 0.022/0.028/0.034/0.006 ms```

관련 정보