Chinaunix

标题: NAT 弱弱的问题 [打印本页]

作者: darnis    时间: 2011-09-06 10:57
标题: NAT 弱弱的问题
有没有人 帮忙 看看 我的 iptables NAT 功能 为啥 不行呢?

我的网络结构比较常见的:
主机A(需要配置防火墙的)有两张网卡:
  eth3:2.3.4.5 外网的
  eth2:192.168.18.245 内网的。
网内 服务器 192.168.18.228:8443

想做一个 NAT
2.3.4.5:6456-->192.168.18.228:8443

我的 filter 是 全 ACCEPT 的,

nat 表加了
iptables -t nat -A POSTROUTING -p tcp -s 192.168.18.0/24 -o eth3 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth3 -p tcp --dport 6456 -d 2.3.4.5 -j DNAT --to 192.168.18.228:8443
iptables -t nat -A POSTROUTING -o eth2 -p tcp -d 192.168.18.228 --dport 8443 -j SNAT

抓狂了,为什么 就不行呢?

/proc/net/ipv4/ip_forward 是 为 1 的。
作者: chenyx    时间: 2011-09-06 11:02
去掉iptables -t nat -A POSTROUTING -o eth2 -p tcp -d 192.168.18.228 --dport 8443 -j SNAT
然后,iptables -t nat -L 看下规则
作者: darnis    时间: 2011-09-06 11:24
回复 2# chenyx

-j SNAT 写错了,后面 还有 一个 --to 192.168.18.245:6456

这个 可以 不要 吗?
我刚把这行 注释 掉后做了测试,,结果 是一样的。

从之前 论坛里面 搜索 到的老贴子看到的需要 加这么一条,,,觉得 好像也是 有道理。

因为数据包 首先从  eth3 收到时 做了 DNAT 数据包 被 放到 eth2 内网卡的 缓存中,这时在 eth2 往外发的时候 ,
是应该把 source 更改为 本机 eth2 的 IP 地址 一样。

不知道 这样的 理解 对不?
作者: darnis    时间: 2011-09-06 11:27
下面 的是 结果 :
sudo iptables -t nat -vnL
Chain PREROUTING (policy ACCEPT 46 packets, 5954 bytes)
pkts bytes target     prot opt in     out     source               destination         
    0     0 DNAT       tcp  --  eth3   *       0.0.0.0/0           2.3.4.5        tcp dpt:6456 to:192.168.18.228:8443

Chain POSTROUTING (policy ACCEPT 1 packets, 60 bytes)
pkts bytes target     prot opt in     out     source               destination         
    1    71 MASQUERADE  all  --  *      eth3    192.168.18.0/24      0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 2 packets, 131 bytes)
pkts bytes target     prot opt in     out     source               destination
作者: taojie2000    时间: 2011-09-06 11:51
iptables -t nat -A PREROUTING -d 2.3.4.5  -p tcp --dport 6456  -j DNAT --to  192.168.18.228:8443

iptables -t nat -A POSTROUTING -d 192.168.18.228  -p tcp --dport 8443  -j SNAT --to 192.168.18.245
作者: darnis    时间: 2011-09-06 12:18
回复 5# taojie2000


    谢谢 !
好了,,终于。!
作者: mxiaohua1768    时间: 2011-09-06 13:02
iptables -t nat -A PREROUTING -d 2.3.4.5  -p tcp --dport 6456  -j DNAT --to  192.168.18.228:8443

...
taojie2000 发表于 2011-09-06 11:51



    为什么第二条是那样,做SNAT不是源地址是192.168.18.228 源端口是8843吗,还有转换的地址怎么不是 2 .3.4.5  ?
作者: mxiaohua1768    时间: 2011-09-06 13:03
回复 5# taojie2000


     为什么第二条是那样,做SNAT不是源地址是192.168.18.228 源端口是8443吗,还有转换的地址怎么不是 2 .3.4.5  ?
作者: chenyx    时间: 2011-09-06 13:44
最后那个SNAT规则应该是没用的啊
作者: taojie2000    时间: 2011-09-06 13:50
回复 9# chenyx


  嗯   对于服务器没设置内网网关的    用可以
作者: chenyx    时间: 2011-09-06 13:57
回复 10# taojie2000


    哦,原来是这样啊.正常情况下,做nat,肯定是网关啊
作者: mxiaohua1768    时间: 2011-09-06 14:03
回复 10# taojie2000


    iptables -t nat -A POSTROUTING -d 192.168.18.228  -p tcp --dport 8443  -j SNAT --to 192.168.18.245

这是什么意思,没明白。呵呵~ 怎么不是 -s 192.168.18.228  -p tcp --sport 8443  -j SNAT -to 2.3.4.5
作者: chenyx    时间: 2011-09-06 14:07
我觉得也是SNAT到2.3.4.5:6646,并且要写到楼主的规则的第一行(MASQUERADE那行前面)
作者: taojie2000    时间: 2011-09-06 14:10
本帖最后由 taojie2000 于 2011-09-06 14:11 编辑

回复 12# mxiaohua1768

没设置网关用这个

到 192.168.18.228  的源地址都改为 ..... 245    服务器看245 ip就是内网自己的包    剩下的工作交给 内网自己处理  比如 直接把返回包给交换机
作者: mxiaohua1768    时间: 2011-09-06 14:25
回复 14# taojie2000


    你说的这种情况是内网  访问服务器的情况吗? 这样的话应该可以直接访问吧,不用把数据包交给防火墙吧,也就不用转换地址了吧,嘿嘿~
作者: taojie2000    时间: 2011-09-06 14:28
回复 15# mxiaohua1768


    是内网的服务器 不写网关   这么写语句    不写网关服务器不知道数据走哪 , 所以....
作者: darnis    时间: 2011-09-06 19:01
回复  chenyx


  嗯   对于服务器没设置内网网关的    用可以
taojie2000 发表于 2011-09-06 13:50



    我的内网服务器的 192.168.18.228, 指定 的网关 并不是 192.168.18.245,也就是跟你 说的,内网的 服务器没有设置 网关 应该 是一回事。
作者: chenyx    时间: 2011-09-06 19:04
原来是这样.楼主内网服务器网关为什么不指向NAT机器呢?
作者: darnis    时间: 2011-09-07 09:01
回复 18# chenyx


    内网 服务器 不用 上网啊,越少操作,越少麻烦。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2