免费注册 查看新帖 |

Chinaunix

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

关于iptables与nat映射端口的超级难题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-06 23:24 |只看该作者 |倒序浏览
网络结构:

一台对外服务器,eth0:210.20.20.14,eth1:192.168.1.20
一台对内服务器,eth0:192.168.1.21
外服务器eth1与内服务器eth0直接网线连接

两层防火墙,设置了any源到210.20.20.14目标,只允许80,和8000-8020通过。

要求:
访问210.20.20.14:8001,映射到192.168.1.21:8080运行。


外服务器210.20.20.14的iptables如下:

# Generated by iptables-save v1.4.7 on Fri May  6 20:11:32 2011
*nat
REROUTING ACCEPT [0:0]
OSTROUTING ACCEPT [3:225]
:OUTPUT ACCEPT [3:225]
-A PREROUTING -d 210.76.196.134 -p tcp --dport 8001 -j DNAT --to-destination 192.168.1.21:8080
-A POSTROUTING -d 192.168.1.21 -p tcp --dport 8080 -j SNAT --to-source 192.168.1.20
COMMIT
# Completed on Fri May  6 20:11:32 2011
# Generated by iptables-save v1.4.7 on Fri May  6 20:11:32 2011
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [226:26623]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8019 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8001 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -d 192.168.1.21/32 -i eth0 -p tcp -m tcp --dport 8080 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -d 192.168.1.21/32 -o eth1 -p tcp -m tcp --dport 8080 -j ACCEPT
-A FORWARD -s 192.168.1.21/32 -i eth1 -p tcp -m tcp --sport 8080 -j ACCEPT
COMMIT
# Completed on Fri May  6 20:11:32 2011


内服务器192.168.1.21的iptable大致如下:

# Generated by iptables-save v1.4.7 on Fri May  6 18:30:09 2011
*filter
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Fri May  6 18:30:09 2011


外服务器本身部署了80,8019两个端口,都能从外网成功访问,8001端口无法访问,也就是说没有映射到内服务器上。


请问问题是出在iptables上吗?
防火墙需不需要修改。

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
2 [报告]
发表于 2011-05-07 07:53 |只看该作者
-A POSTROUTING -d 192.168.1.21 -p tcp --dport 8080 -j SNAT --to-source 192.168.1.20

这句去掉看看

论坛徽章:
0
3 [报告]
发表于 2011-05-09 10:49 |只看该作者
-A PREROUTING -d 210.76.196.134 -p tcp --dport 8001 -j DNAT --to-destination 192.168.1.21:8080
这个-d的地址怎么不是你的公网IP?
你的对外服务器,转发功能开启了吗?
20和21,谁是网关?在对外服务器上能ping到21吗?

论坛徽章:
0
4 [报告]
发表于 2011-05-09 10:57 |只看该作者
这个很简单, 检查办法

1. 将 192.168.1.21 上的规则先清掉, 连接正常了再加,先将问题简单化
2. 192.168.1.20上 -A POSTROUTING -d 192.168.1.21 -p tcp --dport 8080 -j SNAT --to-source 192.168.1.20  去掉, 看不出有何特别意义,反而增加负担,除非你有特别用处
3. 还要就是楼上说的 -A PREROUTING -d 210.76.196.134 -p tcp --dport 8001 -j DNAT --to-destination 192.168.1.21:8080  地址根本不对嘛
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP