用 NETGRAPH 构建 ether 网桥
2009-05-13 07:56:41来源:未知 阅读 ()
[url=http://www.freebsdchina.org/forum/posting.php?mode=quote&p=184649][/url]
在 FreeBSD 中除了用 bridge 和 if_bridge 构建网桥外,还可以用 NETGRAPH 的 ng_ether 和 ng_bridge 构建网桥。
用这个方法将几块网卡构建的网桥,在外部看上去就像一块网卡。
执行脚本:/bin/ebridge
--------------------------------------------------------
#!/bin/sh
B_NAME=bnet0 #网桥名称
B_IF0=fxp0 #第一块网卡
B_IF1=rl1 #第二块网卡
kldload ng_ether #加载模块
kldload ng_bridge #加载模块
ifconfig ${B_IF0} up #启动网卡
ifconfig ${B_IF1} up #启动网卡
ngctl mkpeer ${B_IF0}: bridge lower link0 #创建网桥节点并将第一块网卡挂在这个节点上,lower 表示转发进入的包
ngctl name ${B_IF0}:lower ${B_NAME} #命名网桥名称
ngctl connect ${B_IF1}: ${B_NAME}: lower link1 #将第二块网卡挂在这个节点上
ngctl connect ${B_IF0}: ${B_NAME}: upper link2 #将第一块网卡挂在这个节点上,upper 表示转发出去的包,如果是纯网桥不与主机联络这两行可不写
ngctl connect ${B_IF1}: ${B_NAME}: upper link3 #将第二块网卡挂在这个节点上
ngctl msg ${B_IF0}: setpromisc 1 #设置第一块网卡为混杂模式
ngctl msg ${B_IF0}: setautosrc 0 #设置第一块网卡采用单一的 Ethernet 源地址
ngctl msg ${B_IF1}: setpromisc 1 #设置第二块网卡为混杂模式
ngctl msg ${B_IF1}: setautosrc 0 #设置第二块网卡采用单一的 Ethernet 源地址
ifconfig ${B_IF0} 192.168.1.x #设置第一块网卡的IP地址,或者在 rc.conf 中设置,如果是纯网桥不与主机联络这行可不写
---------------------------------------------------------
如果开机就需要构建网桥以及一个网桥要跨接好几张网卡时可采用下列方法:
开机启动脚本:/etc/rc.d/ebridge
---------------------------------------------------
#!/bin/sh
# PROVIDE: ebridge
# BEFORE: NETWORKING
# KEYWORD: nojail
ebridge_enable=${ebridge_enable:-"NO"}
. /etc/rc.subr
name="ebridge"
rcvar=`set_rcvar`
start_cmd="${name}_start"
stop_cmd="${name}_stop"
B_NAME="bnet0"
ebridge_start()
{
for j in ng_ether ng_bridge; do
if kldstat -v | grep -qw $j; then
else
kldload $j
fi
done
for k in ${ebridge_interfaces}; do
ifconfig $k up
done
FIF=`echo ${ebridge_interfaces}|awk '{ print $1 }'`
ngctl mkpeer ${FIF}: bridge lower link0
ngctl name ${FIF}:lower ${B_NAME}
LKN=0
for SIF in ${ebridge_interfaces}; do
if [ ${LKN} != 0 ]; then
ngctl connect ${SIF}: ${B_NAME}: lower link${LKN}
fi
LKN=`expr ${LKN} + 1`
done
for AIF in ${ebridge_interfaces}; do
ngctl connect ${AIF}: ${B_NAME}: upper link${LKN}
LKN=`expr ${LKN} + 1`
done
for i in ${ebridge_interfaces}; do
ngctl msg $i: setpromisc 1
ngctl msg $i: setautosrc 0
done
}
ebridge_stop()
{
ngctl kill ${B_NAME}: > /dev/null 2>&1
for k in ${ebridge_interfaces}; do
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 启动dbus和hald网卡就不见了?? 2009-05-13
- FreeBSD 双网卡绑定 2009-05-13
- FreeBSD里面网卡IP地址的设置方法和生效方法 2009-05-13
- freebsd 单一网卡配置多个 2009-05-13
- 通过lagg, 实现网络接口故障转移failover功能(即双网卡绑定) 2009-05-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash