LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3546|回复: 19

iptables进行IP伪装的疑问?

[复制链接]
发表于 2005-7-2 10:47:13 | 显示全部楼层 |阅读模式
IP伪装是否有去无回??


iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j SNAT --to-source 119.119.119.119

这样的话,可以看到效果Ping的话,可以看到来源ip是119.119.119.119(这个在网络中实际上是不存在的,转发NAT masquerading称为ip伪装,这个ip是否一定要是存在,一般的NAT其实是路由器对内网和外网进行转换,这是必须的。)

iptables -t nat -A PREROUTING -i eth0 -d 119.119.119.119 -j DNAT -to-destination 192.168.1.108

192.168.1.110( smallmantou)  是我机器的ip。

似乎,在debain机器ping  192.168.123.1.110的时候,不会和正常显示一样,在terminal没有看到收到回复
865 packets transmitted, 0 received, 100% packet loss, time 864028ms

但是在win下看到
10:13:43.145462 IP smallmantou > 119.119.119.119: icmp 64: echo reply seq 85
10:13:44.145240 IP 119.119.119.119 > smallmantou: icmp 64: echo request seq 86
10:13:44.145275 IP smallmantou > 119.119.119.119: icmp 64: echo reply seq 86
10:13:45.145151 IP 119.119.119.119 > smallmantou: icmp 64: echo request seq 87
10:13:45.145186 IP smallmantou > 119.119.119.119: icmp 64: echo reply seq 87
10:13:46.145048 IP 119.119.119.119 > smallmantou: icmp 64: echo request seq 88
10:13:46.145084 IP smallmantou > 119.119.119.119: icmp 64: echo reply seq 88
10:13:47.144954 IP 119.119.119.119 > smallmantou: icmp 64: echo request seq 89
10:13:47.144988 IP smallmantou > 119.119.119.119: icmp 64: echo reply seq 89


似乎这里是对的
windump -i 2 tcp port ! 22 and host 119.119.119.119
windump -i 2 tcp port ! 22 and host 192.168.1.110
看到的结果都是这样, 然后我windump看我  ping 其他机器,看到的结果也是这样。

--
接着我 tcpdump tcp port ! 22 and host 119.119.119.119

10:41:01.347825 IP 119.119.119.119 > 192.168.1.110: icmp 64: echo request seq 152
10:41:01.348145 IP 192.168.1.110 > 119.119.119.119: icmp 64: echo reply seq 152
10:41:02.347676 IP 119.119.119.119 > 192.168.1.110: icmp 64: echo request seq 153
10:41:02.348003 IP 192.168.1.110 > 119.119.119.119: icmp 64: echo reply seq 153
10:41:03.347520 IP 119.119.119.119 > 192.168.1.110: icmp 64: echo request seq 154
10:41:03.347844 IP 192.168.1.110 > 119.119.119.119: icmp 64: echo reply seq 154
10:41:04.347371 IP 119.119.119.119 > 192.168.1.110: icmp 64: echo request seq 155
10:41:04.347705 IP 192.168.1.110 > 119.119.119.119: icmp 64: echo reply seq 155
10:41:05.347221 IP 119.119.119.119 > 192.168.1.110: icmp 64: echo request seq 156
10:41:05.347545 IP 192.168.1.110 > 119.119.119.119: icmp 64: echo reply seq 156

tcpdump tcp port ! 22 and host 192.168.1.108(smallmantou)
似乎没有截获到数据,  怀疑这跟SNAT已经将源IP已经改掉了有关

请指教
发表于 2005-7-2 11:03:19 | 显示全部楼层
关注之中....
回复 支持 反对

使用道具 举报

发表于 2005-7-2 13:22:43 | 显示全部楼层
看看iptables的表顺序。

我没研究过,snat后包是如何处理的。

1。出去的时候:不做DNAT,然后就SNAT,所以成为119.119.119.119。
2。进来的时候:DNAT先,所以成为192.168.0.110。

arp对应你如何做的?
回复 支持 反对

使用道具 举报

发表于 2005-7-2 15:12:31 | 显示全部楼层
没有完全看懂楼主到底要说明什么问题。你的意思是不是问,如果做了 DNAT,还是否需要 SNAT 来使回复的包的进行源地址转换?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-3 22:02:43 | 显示全部楼层
不好意思,我的意思说的不是很明白。
  我也是刚学习iptables,  了解到nat, 就是试了下SNAT发现, 对方收到的数据包中就是 SNAT的ip 119.119.119.119,  但是实际上的ip是192.168.1.108
  现在SNAT是成功了,从debian机器也可以把包发出去, 那么当对方机器reply的时候,能接收到对方的syn/ack包么??   应该对方应该回复的是119.119.119.119的地址。所以这也是 在debian 192.168.1.108上ping  192.168.1.110  的时候,现实是所有的包都丢了。
865 packets transmitted, 0 received, 100% packet loss, time 864028ms
  但是,用dump看的时候,显示似乎又是正常。  

  不知道现在明白没有,就是说
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j SNAT --to-source 119.119.119.119
iptables -t nat -A PREROUTING -i eth0 -d 119.119.119.119 -j DNAT -to-destination 192.168.1.108

我是否也能同正常时候,192.168.1.108debian这台机器没有SNATip伪装那样正常ping能有回复结果。
该怎么修改上述2个规则才能行? 还是本身要能用SNAT DNAT那样像路由那样, 只是转发, 内网和外网公共ip都是存在的情况才可以。 而现在119.119.119.119这个ip是没有存在的,只是我随便定的。

目的就是 把192.168.1.108这台linux机器伪装成119.119.119.119,能正常和其他机器通讯, 也就是能这样 ping 192.168.1.110 ,然后下面就会不停的显示ping通的结果。这样。
回复 支持 反对

使用道具 举报

发表于 2005-7-4 10:21:50 | 显示全部楼层
其实是想做一个虚拟的网关,对不?。

等机器修好后,再测试了,,我觉得思路还是行的通的。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-4 12:08:51 | 显示全部楼层
我不是很清楚虚拟网关的具体含义。

  估计大哥明白了我的意思, 因为我对这些也不很明白,现在正努力明白,所以怕我说的不清楚。这里我要提醒的是, 我现在的情况不是用这台linux来做代理服务器,(已经有拨号路由器了,那个路由器已经是做了NAT的工作了,应该是这样的),如果是用linux做软路由,NAT的话,我是在内网的上一层的。  现在不是

   这台linux是在内网上,我只是要试验NAT,测试将这台机器的ip伪装(NAT)使用,来测试iptables。  所以我要NAT的ip网络中没有,但又要能完全通过这个ip来正常使用,不知道可行不?。   千万要明白, 如果是我这台机器做NAT,转发和软路由的话,这个我曾经在寝室的时候,弄过。
回复 支持 反对

使用道具 举报

发表于 2005-7-4 14:31:01 | 显示全部楼层
既然你已经有一个拨号代理,那么是不是你没有把实验的两台主机的默认路由配置正确呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-4 15:13:45 | 显示全部楼层
网络已经是没有问题的,是我现在学习iptables , 在试验NAT功能的时候,发现,SNAT可以,dump看到是真的在另外一台机器上收到的包中ip被改变了。 所以,就像,既然,ip伪装数据库包出去了,那么能否收到包呢?ping  应该就有回应的,但是没有,不知是哪里问题,所以请教。

  注意,我这台机器不是用来做网关路由的了。
回复 支持 反对

使用道具 举报

发表于 2005-7-4 16:58:30 | 显示全部楼层
我的意思是,比如,你 ping 192.168.1.110,按你上面的配置,192.168.1.110 自然可以收到报文。可是 192.168.1.110 会把报文回复到哪里呢?──如果你的 192.168.1.110 的默认网关是你原来的拨号代理网关,那自然会把报文发送到那里而不是你的 debian(192.168.1.108)。

所以,你在1楼说:
tcpdump tcp port ! 22 and host 192.168.1.108(smallmantou)
似乎没有截获到数据

我觉得应该就是这个原因。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表