Linuxブリッジの私の精神モデルが間違っています。
私はいつもブリッジを単純な非管理スイッチと似ていると思いました。これは、イーサネットケーブルを接続し、そのポートで通信するMACアドレスに基づいて、あるポートから別のポートにデータをコピーすることです。特に:スイッチ自体いいえIPアドレスがあります。
だから私は簡単にできると思いました。
brctl addbr mybr
brctl addif mybr eth0
eth0にはIPアドレスがあります。
しかし、動作させることはできません。 eth0に関連するすべてのIPアドレスは無視されるようです。
代わりに、私はこれを行うことができます:
default_interface=$(ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)')
dif=$default_interface
gw=$(ip -4 route ls | grep default | grep -Po '(?<=via )(\S+)')
dif_ip=$(ip -4 route ls | grep default | grep -Po '(?<=src )(\S+)')
echo Add bridge
sudo brctl addbr mybr
# $dif must be up, but with no ip addr
sudo ip addr flush dev $dif
sudo brctl addif mybr $dif
sudo ifconfig mybr $dif_ip
sudo route add -net 0.0.0.0 gw $gw
これにより、IPアドレスとパスがeth0からブリッジに移動されます。
わかりました。それ私は単にできません:brctl addif eth0
私が理解していないことはなぜ。