免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8643 | 回复: 8
打印 上一主题 下一主题

[FreeBSD] 桥接模式和防火墙配置问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-13 11:31 |只看该作者 |倒序浏览
20可用积分
FB8.0双网卡使用桥接模式过滤数据包。
内核配置如下:
device          if_bridge
device          carp

options         SC_DISABLE_REBOOT
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=100
options         IPFIREWALL_FORWARD
options         IPFIREWALL_NAT
options         LIBALIAS
options         IPDIVERT
options         DUMMYNET

device          pf
device          pflog
device          pfsync
options         ALTQ
options         ALTQ_CBQ
options         ALTQ_RED
options         ALTQ_RIO
options         ALTQ_HFSC
options         ALTQ_PRIQ
options         ALTQ_NOPCC
options         ALTQ_CDNR

桥接配置/etc/rc.conf:
gateway_enable="YES"
hostname="FB8.localdomain"
cloned_interfaces="bridge0"
ifconfig_bridge0="addm re0 addm bge0 up"
ifconfig_re0="up"
ifconfig_bge0="up"
ifconfig_bridge0="inet 172.16.100.65 netmask 255.255.255.0"
defaultrouter="172.16.100.1"

firewall_enable="YES"
firewall_script="/etc/ipfw.rules"


FB8# ifconfig
re0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
        ether 00:24:8c:39:a7:e4
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
bge0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 00:04:76:dd:29:e1
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet 127.0.0.1 netmask 0xff000000
pflog0: flags=0<> metric 0 mtu 33152
pfsync0: flags=0<> metric 0 mtu 1460
        syncpeer: 224.0.0.240 maxupd: 128
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether f6:21:6e:ad:b3:90
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        member: bge0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 2 priority 128 path cost 55
        member: re0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 1 priority 128 path cost 55

问题一:网桥接口bridge0在不配IP的情况下两端的主机都可以连通,但没有IP无法远程控制网桥主机,配上IP后就无法连通了,看手册上网桥是可以配IP的。
问题二:IPFW配置控制网桥两端的进出数据包,是在网桥接口bridge0上控制还是在两个物理网卡接口re0,bge0上控制,我在bridge0上应用规则后,两端网络都不通了。
请大家帮忙分析下原因。

IPS.PNG (10.02 KB, 下载次数: 181)

IPS.PNG

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
2 [报告]
发表于 2010-01-13 15:06 |只看该作者
很久以前做过,当然好像了卡在某处很长时间:
1)网桥可以配置IP。
2)内核参数,看一下有关bridge的,好像有个转发参数。
3)bridge会使数据包通过防火墙多次,所以要做好规则,在单个网卡上的规则也会起作用,刚开始最好先把规则全放开进行测试。
4)抓包测试,把单网卡的数据和桥的数据进行对比,就知道数据包卡在哪儿了。

论坛徽章:
1
寅虎
日期:2013-09-29 23:15:15
3 [报告]
发表于 2010-01-13 17:42 |只看该作者
玩IPFW时弄过桥,现在都忘了.

论坛徽章:
0
4 [报告]
发表于 2010-01-14 09:45 |只看该作者
很高兴得到两位版主的回复。
1. 网桥手册上说的是可以配IP,但我配上后确实就不通了,我是配在网桥接口bridge0上的。(目前我是新加了一张网卡在上面配IP可以)
2. IPFW的日志太少了,比如被IPFW拒绝了日志中没有反映出来很难找出是卡在某个规则了。
3. IPFW配置我现在主要是不清进出的数据要在那个接口上应用,单机环境下到是好弄,现在启用网桥模式后就有三个接口不知道是都在bridge0上应用in,out的规则还是要分别在两个物理网卡(re0,bge0)上应用。

规则:
ipfw add 00010  allow ip from any to any via lo0
ipfw add 00015  check-state
ipfw add 00112  allow tcp from any to any dst-port 53 out setup keep-state
ipfw add 00113  allow udp from any to any dst-port 53 out keep-state

这个规则是允许出站的DNS53端口访问,网桥本机上可以DNS解析,但网桥后端连接的主机却无法解析,规则后面没有加通过的接口那么应该是所有接口都生效但为什么却无法解析呢?

[ 本帖最后由 luocy2008 于 2010-1-14 10:29 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2010-01-14 14:43 |只看该作者
问题已解决了!

进出的数据包只需要在数据流向对应网卡接口的in方向打开端口即可,如下:
# ipfw show
00010      0        0 allow ip from any to any via lo0
00015      0        0 check-state
00117    288    24392 allow udp from any to any dst-port 53 in via bge0 keep-state     // 允放DNS解析服务-出站
00440   6444   561444 allow tcp from any to any dst-port 22 in via re0 setup limit src-addr 2   // 允许入站SSH
00441    304    17952 allow tcp from any to any dst-port 22 in via bge0 setup limit src-addr 2  // 允许出站SSH
00442   3177   386802 allow tcp from any to me dst-port 22 in via rl0 setup limit src-addr 5   // 允许本机入站的SSH
00443     22     1298 allow tcp from me to any dst-port 22 out via rl0 setup keep-state   
00546   2720   170112 allow icmp from any to any in via re0 keep-state   // 允许ICMP
00547     20     1680 allow icmp from any to any in via bge0 keep-state
00600     32     1636 allow tcp from any to any dst-port 3306 in via re0 setup limit src-addr 200  // 允许入站mysql请求
00601     32     2020 allow tcp from any to any dst-port 3306 out via re0 setup keep-state
65535 484726 56152407 deny ip from any to any    // 拒绝所有

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
6 [报告]
发表于 2010-01-14 15:01 |只看该作者
ipfw的日志数量可以自己定义,写规则的时候用logamount参数指定就可以了,可以指定为上万条。

对于ipfw来说,in就是进入机器的方向,out就是从本机向外走的方向,对于网桥,最好用recv和xmit,这样可以实行精确的控制。具体可以查看ipfw 的手册。

论坛徽章:
0
7 [报告]
发表于 2010-01-15 10:07 |只看该作者
原帖由 lsstarboy 于 2010-1-14 15:01 发表
ipfw的日志数量可以自己定义,写规则的时候用logamount参数指定就可以了,可以指定为上万条。

对于ipfw来说,in就是进入机器的方向,out就是从本机向外走的方向,对于网桥,最好用recv和xmit,这样可以实行精 ...


对啊,IN是开放进入的数据,但网桥环境下面的机器出去的数据也是在bge0这个接口的IN方向开放才行,OUT不好使。难道默认OUT方向的数据是允许的?

[ 本帖最后由 luocy2008 于 2010-1-15 10:09 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2010-01-15 10:23 |只看该作者
原帖由 lsstarboy 于 2010-1-14 15:01 发表
ipfw的日志数量可以自己定义,写规则的时候用logamount参数指定就可以了,可以指定为上万条。

对于ipfw来说,in就是进入机器的方向,out就是从本机向外走的方向,对于网桥,最好用recv和xmit,这样可以实行精 ...


感谢 lsstarboy 的指点,看了IPFW手册使用recv,xmit确实能控制的更精确,目前正在测试。

论坛徽章:
0
9 [报告]
发表于 2011-03-17 11:07 |只看该作者
IPFW手册使用recv,xmit确实能控制的更精确,目前正在测试。
recv,xmit的相关资料很少,我只找到下面的一点,不好理解,请问你测试的怎么样了,
via 会使接口永远都会被检查,如果用另一个关键词 recv ,则表示只检查接收的封包,而 xmit 则是送出的封包。这二个选项有时也很有用,例如要限制进出的接口不同时:   ipfw add 100 deny ip from any to any out recv vr0 xmit ed1   recv 接口可以检查流入或流出的封包,而 xmit 接口只能检查流出的封包。所以在上面这里一定要用 out 而不能用 in,只要有使用 xmit 就一定要使用 out。另外,如果 via 和 recv 或 xmit 一起使用是没有效的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP