论坛风格切换切换到宽版
  • 701阅读
  • 8回复

[问题求助]用iptables做NAT后,从外网能访问到内网地址,但从内网无法访问,救助! [复制链接]

上一主题 下一主题
离线mofan.
 
发帖
2003
C币
-139169
威望
389
贡献值
1
银元
-2
铜钱
4649
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
我用如下命令做了NAT.,以使内网的一个服务对外网公.开(a.b.c.d为公网IP):    美容
iptables -.t nat -A PREROUTI.NG -i eth1 -p tcp --dport .7788 -j DNAT --to 192.168.100.66:7788.
iptables -t nat -A .POSTROUTIN.G -d 192.168.100.66 -p tcp --dport 7788 -j SNAT --t.o a.b.c.d域名

但NAT后,从公网能直接访问到192.168.100.66:7788.的服务,但从192..168.100.0内网通过a.b.c.d:7788却访问不通,咋回事?怎么解决?请版主.赐教!            杀毒

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线laoli521.
发帖
1941
C币
-236087
威望
354
贡献值
1
银元
-4
铜钱
4476
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-13
试试:
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.100.0/24 -d 192.168.100.66 -p tcp --dport 7788 -j MASQUERADE

发帖
1902
C币
-235584
威望
405
贡献值
6
银元
2
铜钱
4414
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-13


QUOTE:原帖由 xiali_1216 于 2006-5-12 10:54 发表
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 7788 -j DNAT --to 192.168.100.66:7788
iptables -t nat -A POSTROUTING -d 192.168.100.66 -p tcp --dport 7788 -j SNAT --to a.b.c.d

进来的时候,端口 7788 是“目的”,回去的时候,端口 7788 应该是“源”
同理,IP 也一样,进来的时候是“目的”,回去的时候应该是“源”
因此,你将上面两句话应该改成
iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 7788 -j DNAT --to 192.168.100.66
iptables -t nat -A POSTROUTING -s 192.168.100.66 -p tcp --sport 7788 -j SNAT --to a.b.c.d

不要照搬我的语句,注意命令用的是 -A,注意与你当前已有规则的逻辑关系

离线mycoolfeng.
发帖
1957
C币
-627507
威望
342
贡献值
4
银元
-1
铜钱
4265
人人网人气币
0
只看该作者 地板  发表于: 2010-04-13
当192.168.100.x的主机向a.b.c.d请求数据,那么经过防火墙的时候,防火墙会将数据的目的地址修改为192.168.100.66(源地址未变)并发送到主机192.168.100.66上
192.168.100.66接收到该数据包后,判断源地址为本网段的,因此通过发送广播,找到192.168.100.x的主机的MAC地址,然后直接向这个MAC地址发送数据包,此时,192.168.100.x主机收到源地址为192.168.100.66的数据包,这根本不是它记忆中的数据包,因此丢弃。
所以,内网机器访问的时候会出现问题。


如果在防火墙上,发送数据包的时候,判断一下源地址,如果是内网发送的请求,则将源地址修改为自己的内网IP,这样数据包才能有去有回。

发帖
2103
C币
-235095
威望
414
贡献值
1
银元
-1
铜钱
4699
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-13
奇怪了,我按版主的修改了,结果从内网能访问了,从外网却不行了。

离线mofan.
发帖
2003
C币
-139169
威望
389
贡献值
1
银元
-2
铜钱
4649
人人网人气币
0
只看该作者 5楼 发表于: 2010-04-13
确认从外网访问时,目的 IP 是 a.b.c.d,且这个 IP 可以路由到你的 Linux 上吗?

离线qscefb.
发帖
2089
C币
-60468
威望
366
贡献值
1
银元
-1
铜钱
4573
人人网人气币
0
只看该作者 6楼 发表于: 2010-04-13
可以的啊,按照我原来的NAT,从外网是能正常访问的

离线kaerdd.
发帖
2017
C币
-549385
威望
385
贡献值
3
银元
0
铜钱
4377
人人网人气币
0
只看该作者 7楼 发表于: 2010-04-13
你再查查吧,我写的没有问题

发帖
2021
C币
-132535
威望
366
贡献值
1
银元
-3
铜钱
4503
人人网人气币
0
只看该作者 8楼 发表于: 2010-04-13
我的原NAT
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.100.66:8080
iptables -t nat -A POSTROUTING -d 192.168.100.66 -p tcp --dport 8080 -j SNAT --to a.b.c.d

按照版主的意思是否该改成这样?
iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 80 -j DNAT --to 192.168.100.66:8080
iptables -t nat -A POSTROUTING -s 192.168.100.66 -p tcp --sport 8080 -j SNAT --to a.b.c.d

为了区分端口,我把公网的服务端口改为80,内网的服务端口改为8080了
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个