FreeBSD 7.0 用ng_fec实现双网卡绑定笔记
参考了网友在5.x、6.3下双网卡绑定的文档,于是自己在7.0下做了次实验,结果成功通过。
自己做了些修改,留个笔记。
1. 编译和加载netgraph.ko、ng_fecko、ng_socket.ko模块
a. 编译
#cd /usr/src/sys/modules/netgraph/
#cd netgraph/ && make && make install clean
#cd ../fec && make && make install clean
#cd ../socket && make && make install clean
b. 加载
#cat << EOF >> /boot/loader.conf
ng_ether_load="YES"
ng_fec_load="YES"
ng_socket_load="YES"
EOF
c. 修改rc.conf
#sed -i.bak -e 's/^\(defaultrouter\)/#\1/' -e 's/^\(ifconfig_\)/#\1/' /etc/rc.conf
2. 编辑启动脚本
# cat << EOF > /etc/bonding
#!/bin/sh
MYIP=xxx.xxx.xxx.xxx
GW=xxx.xxx.xxx.xxx
NIC1=bge0
NIC2=bge1
/usr/sbin/ngctl mkpeer fec dummy fec
/usr/sbin/ngctl msg fec0: add_iface '"'\${NIC1}'"'
/usr/sbin/ngctl msg fec0: add_iface '"'\${NIC2}'"'
/usr/sbin/ngctl msg fec0: set_mode_inet
/sbin/ifconfig fec0 promisc
/sbin/ifconfig \${NIC1} promisc
/sbin/ifconfig \${NIC2} promisc
/sbin/ifconfig fec0 inet \${MYIP} netmask 0xfffffe00
/sbin/ifconfig fec0 up
/sbin/route add default \${GW}
EOF
# chmod 400 /etc/bonding
# echo "sh /etc/bonding" >> /etc/rc.local
3. 重启系统
# reboot
# ifconfig
bge0: flags=28943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,PPROMISC> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether 00:13:21:c8:54:6b
media: Ethernet autoselect (1000baseTX <full-duplex>)
status: active
bge1: flags=28943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,PPROMISC> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether 00:13:21:c8:54:6b
media: Ethernet autoselect (1000baseTX <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
inet 127.0.0.1 netmask 0xff000000
fec0: flags=28943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,PPROMISC> metric 0 mtu 1500
ether 00:13:21:c8:54:6b
inet xxx.xxx.xxx.xxx netmask 0xfffffe00 broadcast xxx.xxx.xxx.xxx
media: Ethernet none
status: active