免费注册 查看新帖 |

Chinaunix

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

[FreeBSD] 如何使用pf在单网卡的FreeBSD机器上作转发 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-20 16:11 |只看该作者 |倒序浏览
FreeBSD7.0的计算机,已经修改内核和/etc/rc.conf以获得pf支持。

经访问测试,目前pf的filter规则可以生效。

希望实现如下功能:
当到达目的主机的tcp目的端口,就把这个请求转发到同一网络的另外一台计算机。

比如,到达10.20.62.20的tcp 80,就转发到10.20.62.66的tcp 80
(FreeBSD7.0计算机 ip 为 10.20.62.20)
(请大家不要问我为什么这样做,这样做也是迫于服务器的需要。我只想知道如何达到这样的目的,现在我是用win2000 服务器做的端口转发,十分迫切学习和使用freebsd,请大家帮忙一下)

--------------
参看pf的手册,都在讲是经由多个网络接口的情况,但这部FreeBSD只是工作在单网卡上。在网络上搜索也未能获得明确信息。
特来请教。

至于为什么要这样诡异的做法,呵呵——事出有因。

在没有任何其它规则的情况下,包括nat规则和filter规则,此规则无效。
现在写filter规则如下:
rdr on le0 proto tcp from any to any port 80 -> 10.20.62.66 port 80

有如下提示:

all tcp 10.20.62.66:80 <- 10.20.62.20:80 <-10.20.62.156:1799 CLOSED:SYN_SENT

论坛徽章:
0
2 [报告]
发表于 2009-03-20 16:19 |只看该作者
IP地址劫持?

论坛徽章:
0
3 [报告]
发表于 2009-03-20 16:26 |只看该作者
不是了,学校局域网的要求

论坛徽章:
0
4 [报告]
发表于 2009-03-20 18:40 |只看该作者
我认为这样不行,因为rdr并没有将src add进行改写。测试过程如下:

源主机ip_addr 200.0.10.1   gw 200.0.10.10
firewall_ip_addr 200.0.10.10
dst_addr  200.0.10.100

rdr pass on $ext_if proto tcp from any to 150.0.2.3 port 40 -> 200.0.10.100 port 22

的确防火墙把tcp的syn包重定位到200.0.10.100上面去了,但是问题就是出在这。

我在200.0.10.100 上面tcpdump了一下包,如下


01:26:18.023117 IP 200.0.10.1.2258 > 200.0.10.100.ssh: S 1328903982:1328903982(0) win 65535 <mss 1460,nop,nop,sackOK>
01:26:18.023755 IP 200.0.10.100.ssh > 200.0.10.1.2258: S 2411630202:2411630202(0) ack 1328903983 win 65535 <mss 1460,sackOK,eol>
01:26:19.502430 IP 200.0.10.1.2258 > 200.0.10.100.ssh: S 1328903982:1328903982(0) win 65535 <mss 1460,nop,nop,sackOK>
01:26:19.502562 IP 200.0.10.100.ssh > 200.0.10.1.2258: S 2411630202:2411630202(0) ack 1328903983 win 65535 <mss 1460,sackOK,eol>
01:26:22.515766 IP 200.0.10.100.ssh > 200.0.10.1.2258: S 2411630202:2411630202(0) ack 1328903983 win 65535 <mss 1460,sackOK,eol>
01:26:22.561328 IP 200.0.10.1.2258 > 200.0.10.100.ssh: S 1328903982:1328903982(0) win 65535 <mss 1460,nop,nop,sackOK>
01:26:22.561691 IP 200.0.10.100.ssh > 200.0.10.1.2258: S 2411630202:2411630202(0) ack 1328903983 win 65535 <mss 1460,sackOK,eol>

可以看到每次200.0.10.100都对源主机 200.0.10.1 的syn 连接 进行了syn+ack,但是源主机200.0.10.1并没有对200.0.10.100 发起连接,仅对150.0.2.3进行了连接,所以每次200.0.10.100 的syn+ack包都被源主机drop掉了。
所以这种方法行不通。

[ 本帖最后由 unixnovice 于 2009-3-20 18:45 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-03-20 20:23 |只看该作者
网卡绑定双 IP。
这样做的本质其实就是桥接 VLAN。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP