両方のVMがLinuxブリッジ(br0)に接続されている間にVM1からVM2に移動できるようにしたいです。以下は私のトポロジです。
VM1(m1)<====SSH====>[br0]<======SSH=====>VM2(m2)
1 ブリッジ br0 生成
$ sudo ip link add dev br0 type bridge
$ sudo ip addr add 10.200.1.1/24 dev br0
$ sudo ip link set br0 up
$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
2 VM起動時に指定したブリッジ名
veeru@ghost:~$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.fe540005c7df no vnet0
vnet1
docker0 8000.024205ca1927 no
virbr0 8000.5254003bf832 yes virbr0-nic
ゲストVMのネットワークが稼働中問題なくホストからゲストとしてSSH経由で接続できます。
ただし、VM1(m1)からVM2(m2)にsshしようとすると、VM2にアクセスできなくなります。 VM2(m2)でtcpdumpを使用して、SSHパケットがVM1(m1)から到着していないことを確認しました。ただし、VM1からVM2にpingできます。
Linuxブリッジングの概念に関するいくつかの重要な点が欠けているようです。
添付:
また、LinuxブリッジにWi-Fiインターフェース(wlp0s20f3)を追加しようとしましたが、
sudo ip link set wlp0s20f3 down
sudo ip link set br0 down
sudo brctl addif br0 wlp0s20f3
can't add wlp0s20f3 to bridge br0: Operation not supported
ゲストとホストでiptableに触れませんでした。
ベストアンサー1
net.bridge.bridge-nf-call-arptables net.bridge.bridge-nf-call-ip6tables net.bridge.bridge-nf-call-iptables
これは、ブリッジを通過するパケットが処理のためにiptablesに送信されるかどうかを制御します。ブリッジを使用して仮想マシンをネットワークに接続する場合、一般的なプロセスは次のとおりです。いいえ ホスト iptables ルールは、ゲストではなくホスト自体のみを考慮するため、ゲストトラフィックがブロックされるため、これが望ましいです。
したがって、次のようにbridge-nfパラメータを無効にします。これはうまくいきます。
sudo sysctl -w net.bridge.bridge-nf-call-arptables=0
sudo sysctl -w net.bridge.bridge-nf-call-ip6tables=0
sudo sysctl -w net.bridge.bridge-nf-call-iptables=0
より多くの情報を見ることができます@libvirt ブログそしてLinux財団ブログ