VM은 다른 중첩된 VM을 ping할 수 없습니다. 이유는 무엇입니까?

VM은 다른 중첩된 VM을 ping할 수 없습니다. 이유는 무엇입니까?

br0동일한 서브넷에 두 개의 가상 머신이 있으며 ( :) 와 같이 호스트에 생성되었습니다 122.56.0.1/24.

  • 가상 머신 1 IP:122.56.0.3
  • 가상 머신 2 IP:122.56.0.2

VM2 내부에서 IP 주소를 br1사용하여 VM2(:) 내부에 생성된 다른 서브넷에 연결된 또 다른 VM(예: VM3)을 생성했습니다 . 기본적으로 이제 VM2에는 두 개의 네트워크 카드가 있습니다.192.168.0.2/24192.168.0.3

  • eth0, IP 주소는122.56.0.2
  • br1, IP 주소는192.168.0.2

eth0다음을 사용하여 VM2 간 및 VM2 내에서 IP 전달을 활성화합니다 .br1

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o br1 -j MASQUERADE
iptables -A FORWARD -i br1 -j ACCEPT
iptables -A FORWARD -i eth0 -j ACCEPT

또한 VM1 내의 NIC를 다음과 같이 설정했습니다.

ip addr add 122.56.0.3/24 dev eth0
ip link set eth0 up
ip route add default via 122.56.0.2

VM2 내부:

ip addr add 122.56.0.2/24 dev eth0
ip link set eth0 up
ip route add default via 122.56.0.1
ip link add br1 type bridge
ip addr add 192.168.0.2/24 dev br1
ip link set br1 up

마지막으로 VM3(VM2에서 생성된 중첩된 가상 머신)에서는 다음과 같습니다.

ip addr add 192.168.0.3/24 dev eth0
ip link set eth0 up
ip route add default via 192.168.0.2

이제 VM1 내에서 VM2는 ping할 수 있지만 122.56.0.2VM2는 ping할 수 없으며 192.168.0.2VM3은 전혀 ping할 수 없습니다. VM2 내에서는 VM1을 핑 122.56.0.3하고 VM3을 핑할 수 있으며 , VM3 내부에서는 VM2를 핑 하고 VM1을 핑할 192.168.0.3수 있습니다 .122.56.0.2192.168.0.2122.56.0.3

보시다시피 내 문제는 VM1이 VM3에 액세스할 수 없지만 VM3은 VM1에 액세스할 수 있다는 것입니다. 여기서 무슨 일이 일어나고 있는지 잘 모르겠습니다. VM1과 VM2가 도커 컨테이너일 때(VM3는 여전히 컨테이너 내부의 가상 머신임) 똑같은 설정을 테스트했고, 똑같은 네트워크 설정으로 모든 것이 잘 작동했습니다. 모든 VM 내에서 IP 전달을 확인했는데 다음과 같이 활성화된 것으로 보입니다.

cat /proc/sys/net/ipv4/ip_forward
1

따라서 VM3이 동일한 서브넷에 있지 않을 때 VM1에 도달할 수 있다는 사실을 기반으로 하면 IP 전달이 실제로 잘 작동하고 있다는 것을 알 수 있지만 VM1이 VM3에 도달할 수 없는 이유는 잘 모르겠습니다. 그런데 여기에는 방화벽이 없습니다. 도움을 주셔서 감사합니다.

답변1

UFW를 비활성화해 보십시오. ICMP 문제일 수도 있습니다. 이는 나쁜 습관이고 안전하지 않기 때문에 이 사용을 권장하지 않습니다. ufw가 비활성화된 후 ping이 작동하면 icmp를 활성화해 보십시오.

ufw를 비활성화된 상태로 두지 마십시오. 이 명령이 적용된 후에만 볼 수 있습니다.

$ ufw disable

이 링크를 확인하세요https://www.layerstack.com/resources/tutorials/How-to-enable-and-disable-Ping-from-IPTables-on-Linux-Cloud-Servers

관련 정보