VMは他のネストされたVMをpingできません。なぜですか?

VMは他のネストされたVMをpingできません。なぜですか?

br0同じサブネットに2つの仮想マシンがあり、(:)のようにホストに作成されました122.56.0.1/24

  • 仮想マシン1 IP:122.56.0.3
  • 仮想マシン 2 IP:122.56.0.2

VM2内でIPアドレスをbr1使用して、VM2(:)内に作成された別のサブネットに接続されている別のVM(VM3など)を作成しました。デフォルトでは、VM2には2つのネットワークカードがあります。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をpingし、122.56.0.3VM3をpingすることができ、VM3内部ではVM2をpingし、VM1をpingすることが192.168.0.3できます。122.56.0.2192.168.0.2122.56.0.3

ご覧のように、私の問題はVM1がVM3にアクセスできないことですが、VM3はVM1にアクセスできることです。ここで何が起こっているのか分かりません。 VM1とVM2がDockerコンテナの場合(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

おすすめ記事