- 论坛徽章:
- 0
|
我认为这样不行,因为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 编辑 ] |
|