NetworkManagerを使用しながらブリッジするinitscript書いた。
ノートPCなんか特にそうですが、無線とか、VPNの設定あると、NetworkManagerはかなり便利です。
で、やっぱりブリッジはしたいことが多いので、initscript書きました。結構便利になるかと思います。
テストは、FC16です。Deb系等他のディストリがわかってないんで、汎用かどうかは不明。。。
(openvpnのスクリプトを流用ですが。。。)
tunctlとbrctlが使える状況にしておいてください。Redhat系だと
yum install -y tunctl bridge-utils
だったかと。。。
適宜環境に合わせて、networkとインターフェースを変更してください。
(うちの環境だと、IntelNic増設してるので、p7p1ってのを使ってます。)
んで中身です。なんかおかしいとことか、こうしたほうがっていうのがあれば、ご指摘下さいm(_ _)m
#!/bin/sh # bridge This shell script takes care of starting and stopping # RedHat or other chkconfig-based system. # # chkconfig: - 23 76 # # processname: bridge # description: bridge create script. # # # # # author: dai_yamashita ### BEGIN INIT INFO # Provides: bridge # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: Bridge create script ### END INIT INFO # Define Bridge Interface br="br0" # Define list of TAP interfaces to be bridged, # for example tap="tap0 tap1 tap2". tap="tap0" # Define physical ethernet interface to be bridged # with TAP interface(s) above. eth="p7p1" # Get physical ethernet interface IP address. PROG="/sbin/ifconfig" IPKEY="addr:" PATTERN_IPV4="[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\$" ifconfig_output=`$PROG $eth 2> /dev/null` for check in $ifconfig_output; do check=`echo $check | egrep $PATTERN_IPV4` if [ -n "$check" ]; then ipaddr="$check" break fi done ipaddr=`echo $ipaddr | sed s/"$IPKEY"//gi` #echo $ipaddr eth_ip="${ipaddr}" eth_netmask="255.255.255.0" eth_broadcast="192.168.xxx.255" gw="192.168.xxx.1" t=$eth_ip ################################# # Set up Ethernet bridge on Linux # Requires: bridge-utils tunctl ################################# start_bridge() { tunctl for t in $tap; do ifconfig $t done brctl addbr $br brctl addif $br $eth for t in $tap; do brctl addif $br $t done for t in $tap; do ifconfig $t 0.0.0.0 promisc up done sleep 1 ifconfig $eth 0.0.0.0 promisc up sleep 1 ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast up route add default gw $gw $br } #################################### # Tear Down Ethernet bridge on Linux #################################### stop_bridge(){ ifconfig $br down brctl delbr $br for t in $tap; do tunctl -d $t done ifconfig $eth $eth_ip netmask $eth_netmask broadcast $eth_broadcast up route add default gw $gw } #################################### # OPTIONS #################################### case "$1" in start) echo -n "Starting Bridge" start_bridge ;; stop) echo -n "Stopping Bridge" stop_bridge ;; restart) stop_bridge sleep 2 start_bridge ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac