次のアプローチをお勧めします。
- ブリッジインターフェイスがダウンしていることを確認します
- ブリッジインターフェイスを構成します
- 実行する
ifconfig eth0 down && ifconfig br0 up
そして復元するには:
- 実行する
ifconfig br0 down && ifconfig eth0 up
さて、ルートについては、あなたが持っているルートの種類に依存します。明示的なインターフェイスを使用して静的ルートを定義した場合、唯一の選択肢は、ip route ls
それらを解析して新しいインターフェイスに変換することです。
また、upコマンドとdownコマンドの順序、および複数のルーティングテーブルをいじることもできます。
ip route add <whatever> table 2
ip rule add from br0 table 2
ただし、これには注意が必要な場合があるため、コーディングがさらに含まれている場合でも、単純なソリューションに固執することをお勧めします。
network-bridge
これを実現するためのxendのスクリプトの別の例を次に示します。
# Usage: transfer_addrs src dst
# Copy all IP addresses (including aliases) from device $src to device $dst.
transfer_addrs () {
local src=$1
local dst=$2
# Don't bother if $dst already has IP addresses.
if ip addr show dev ${dst} | egrep -q '^ *inet ' ; then
return
fi
# Address lines start with 'inet' and have the device in them.
# Replace 'inet' with 'ip addr add' and change the device name $src
# to 'dev $src'.
ip addr show dev ${src} | egrep '^ *inet ' | sed -e "
s/inet/ip addr add/
s@\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/[0-9]\+\)@\1@
s/${src}/dev ${dst}/
" | sh -e
# Remove automatic routes on destination device
ip route list | sed -ne "
/dev ${dst}\( \|$\)/ {
s/^/ip route del /
p
}" | sh -e
}
# Usage: transfer_routes src dst
# Get all IP routes to device $src, delete them, and
# add the same routes to device $dst.
# The original routes have to be deleted, otherwise adding them
# for $dst fails (duplicate routes).
transfer_routes () {
local src=$1
local dst=$2
# List all routes and grep the ones with $src in.
# Stick 'ip route del' on the front to delete.
# Change $src to $dst and use 'ip route add' to add.
ip route list | sed -ne "
/dev ${src}\( \|$\)/ {
h
s/^/ip route del /
P
g
s/${src}/${dst}/
s/^/ip route add /
P
d
}" | sh -e
}