在FreeBSD中使用网桥,开机自启动,并自动设置IP地址:192.168.1.2/24,两块网卡分别为re0,re1
问题:
按常规写法:
- cloned_interfaces="bridge0"
- ifconfig_bridge0="addm re0 addm re1 up"
- ifconfig_bridge0="inet 192.168.1.2/24"
如果两行ifconfig交换一下位置,那么网桥可以设置上,IP设置不上。
原因:
FreeBSD的rc.conf其实有个限制,那就是同一个命令,只保留最后一次。比如syslogd_enable,其实最早先读取/etc/default/rc.conf里面的内容,有个syslogd_enable="YES",然后再读取/etc/rc.conf,如果设置了syslogd_enable="NO",那么就是禁用;但是如果在/etc/rc.conf中设置了多次,那么就以最后一次为准。
具体到网桥的设置上,ifconfig_bridge0也视为一条命令,多次执行,则仅保留最后一次。
解决:
下列两种之一:
1、把两条命令写成一行:
cloned_interface="bridge0"
ifconfig_bridge0="inet 192.168.1.2/24 addm re0 addm re1 up"
注意要先写IP,后写成员网卡名,否则会报命令不对。
2、避开同一条命令,针对bridge,其实rc.conf中还有个专用命令:
- cloned_interfaces="bridge0"
- autobridge_interfaces="bridge0"
- autobridge_bridge0="re0 re1"
- ifconfig_re0="up"
- ifconfig_re1="up"
- ifconfig_bridge0="inet 192.168.1.2/24"
注:
虚拟网桥名必须为bridge*,否则不会自动启用if_bridge模块。
--end---