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/24
192.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.2
VM2는 ping할 수 없으며 192.168.0.2
VM3은 전혀 ping할 수 없습니다. VM2 내에서는 VM1을 핑 122.56.0.3
하고 VM3을 핑할 수 있으며 , VM3 내부에서는 VM2를 핑 하고 VM1을 핑할 192.168.0.3
수 있습니다 .122.56.0.2
192.168.0.2
122.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