设为首页收藏本站

LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

查看: 1149|回复: 7

NAT规则问题。 [复制链接]

Rank: 3Rank: 3

签到
34
注册时间
2010-3-24
最后登录
2012-1-29
在线时间
30 小时
阅读权限
30
积分
423
帖子
22
主题
2
精华
0
UID
8495
发表于 2010-9-4 11:08:18 |显示全部楼层
本帖最后由 风在哪里 于 2010-9-4 11:25 编辑

简介:内网的一个服务(腾讯通RTX),内部的用户与外网的用户都要访问,为了统一设置,所以使用公网IP来访问。问题在于内网设置公网IP在NAT上规则配置出错,没有成功。
网络拓扑是 iptables_nat 防火墙;下面接一个netgear的三层交换机,里面配置有8,9个vlan,腾讯通RTX服务端在其中一个VLAN;
    下面说一下iptables_nat上的配置。
两网卡,eth1外网IP(61.154.164.x),内网与三层上相连的IP为10.10.10.0/24,eth0为10.10.10.1/24,
开机启用这两条命令
route add default gw 61.154.164.x
route add -net 192.168.0.0 netmask 255.255.0.0 gw 10.10.10.2 (dev eth0)
下面是我设置的NAT规则的一些信息
LAN="192.168.0.0/16"
#LAN="10.10.10.0/24"
WAN="61.154.164.x"
EXTIF="eth1" #eth0内网卡,eth1外网卡
INIF="eth0"
#########set netfilter default rule
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
#########set nat default rule
iptables -t nat -P PREROUTING  ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT      ACCEPT

iptables -A FORWARD -i $EXTIF -p tcp -d 192.168.19.218 --dport 8000 -j ACCEPT
iptables -A FORWARD -i $EXTIF -p tcp -d 192.168.19.218 --dport 8003 -j ACCEPT
iptables -A FORWARD -i $EXTIF -p tcp -d 192.168.19.218 --dport 8010 -j ACCEPT
iptables -A FORWARD -i $EXTIF -p tcp -d 192.168.19.218 --dport 8012 -j ACCEPT
iptables -A FORWARD -i $EXTIF -p tcp -d 192.168.19.218 --dport 8880 -j ACCEPT
iptables -A FORWARD -i $EXTIF -p tcp -d 192.168.19.218 --dport 9000 -j ACCEPT
iptables -A FORWARD -i $EXTIF -p tcp -d 192.168.19.218 --dport 9005 -j ACCEPT

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $EXTIF -s $LAN -j MASQUERADE

iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 8000 -j DNAT --to 192.168.19.218:8000
iptables -t nat -A PREROUTING -p udp -i $EXTIF --dport 9000 -j DNAT --to 192.168.19.218:9000
iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 8012 -j DNAT --to 192.168.19.218:8012
iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 8003 -j DNAT --to 192.168.19.218:8003
iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 8010 -j DNAT --to 192.168.19.218:8010
iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 8880 -j DNAT --to 192.168.19.218:8880
iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 9005 -j DNAT --to 192.168.19.218:9005

iptables -t nat -A POSTROUTING -p tcp -d 192.168.19.218 --dport 8000 -j SNAT --to 10.10.10.1
iptables -t nat -A POSTROUTING -p tcp -d 192.168.19.218 --dport 9000 -j SNAT --to 10.10.10.1
iptables -t nat -A POSTROUTING -p tcp -d 192.168.19.218 --dport 8012 -j SNAT --to 10.10.10.1
iptables -t nat -A POSTROUTING -p tcp -d 192.168.19.218 --dport 8003 -j SNAT --to 10.10.10.1
iptables -t nat -A POSTROUTING -p tcp -d 192.168.19.218 --dport 8010 -j SNAT --to 10.10.10.1
iptables -t nat -A POSTROUTING -p tcp -d 192.168.19.218 --dport 8880 -j SNAT --to 10.10.10.1
iptables -t nat -A POSTROUTING -p tcp -d 192.168.19.218 --dport 9005 -j SNAT --to 10.10.10.1

申明一点:其中192.168.19.218为腾讯通RTX的服器。上面的具体IP没有写出来,网络没有问题。三层也OK,就是内网设置61.154.164.x:8000访问不成功,问题在NAT的规则。
请大家有空帮看一下问题所在。。有需要补充的信息我会及时贴上来。

其中我试过将‘iptables -t nat -A POSTROUTING -p tcp -d 192.168.19.218 --dport 9005 -j SNAT --to 10.10.10.1’这一条命令最后的IP改为公网IP与三层IP10.10.10.2都没有成功,还有试过直接三层去掉,只挂 RTX所在的一个网段也没有成功。。

Rank: 2

注册时间
2010-5-19
最后登录
2011-11-20
在线时间
15 小时
阅读权限
20
积分
92
帖子
14
主题
1
精华
0
UID
9288
发表于 2010-9-4 12:39:42 |显示全部楼层
本帖最后由 huanying0003301 于 2010-9-4 13:18 编辑

建议iptables -P FORWARD DROP   先改成ACCEPT

然后去掉
iptables -A FORWARD -i $EXTIF -p tcp -d 192.168.19.218 --dport 8000 -j ACCEPT
iptables -A FORWARD -i $EXTIF -p tcp -d 192.168.19.218 --dport 8003 -j ACCEPT
iptables -A FORWARD -i $EXTIF -p tcp -d 192.168.19.218 --dport 8010 -j ACCEPT
iptables -A FORWARD -i $EXTIF -p tcp -d 192.168.19.218 --dport 8012 -j ACCEPT
iptables -A FORWARD -i $EXTIF -p tcp -d 192.168.19.218 --dport 8880 -j ACCEPT
iptables -A FORWARD -i $EXTIF -p tcp -d 192.168.19.218 --dport 9000 -j ACCEPT
iptables -A FORWARD -i $EXTIF -p tcp -d 192.168.19.218 --dport 9005 -j ACCEPT
最好把网络拓朴图给出来

使用道具 举报

Rank: 3Rank: 3

注册时间
2010-3-24
最后登录
2012-1-29
在线时间
30 小时
阅读权限
30
积分
423
帖子
22
主题
2
精华
0
UID
8495
发表于 2010-9-4 22:20:15 |显示全部楼层
建议iptables -P FORWARD DROP   先改成ACCEPT

这个试过的。还是一样的。

使用道具 举报

Rank: 2

注册时间
2010-5-19
最后登录
2011-11-20
在线时间
15 小时
阅读权限
20
积分
92
帖子
14
主题
1
精华
0
UID
9288
发表于 2010-9-4 23:43:21 |显示全部楼层
这样吧,把你的拓朴贴出来,让大家看看

使用道具 举报

Rank: 3Rank: 3

注册时间
2010-3-24
最后登录
2012-1-29
在线时间
30 小时
阅读权限
30
积分
423
帖子
22
主题
2
精华
0
UID
8495
发表于 2010-9-5 09:05:13 |显示全部楼层
回复 4# huanying0003301
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 2

注册时间
2010-5-19
最后登录
2011-11-20
在线时间
15 小时
阅读权限
20
积分
92
帖子
14
主题
1
精华
0
UID
9288
发表于 2010-9-5 14:38:36 |显示全部楼层
回复 5# 风在哪里


    没有环境测试,分析了一下,去下面这些再试试,另外你有没有测试从外网能不能访问内网的服务?

iptables -t nat -A POSTROUTING -p tcp -d 192.168.19.218 --dport 8000 -j SNAT --to 10.10.10.1
iptables -t nat -A POSTROUTING -p tcp -d 192.168.19.218 --dport 9000 -j SNAT --to 10.10.10.1
iptables -t nat -A POSTROUTING -p tcp -d 192.168.19.218 --dport 8012 -j SNAT --to 10.10.10.1
iptables -t nat -A POSTROUTING -p tcp -d 192.168.19.218 --dport 8003 -j SNAT --to 10.10.10.1
iptables -t nat -A POSTROUTING -p tcp -d 192.168.19.218 --dport 8010 -j SNAT --to 10.10.10.1
iptables -t nat -A POSTROUTING -p tcp -d 192.168.19.218 --dport 8880 -j SNAT --to 10.10.10.1
iptables -t nat -A POSTROUTING -p tcp -d 192.168.19.218 --dport 9005 -j SNAT --to 10.10.10.1

使用道具 举报

Rank: 4

注册时间
2009-1-21
最后登录
2012-1-17
在线时间
50 小时
阅读权限
50
积分
545
帖子
54
主题
4
精华
0
UID
1121
发表于 2010-9-9 11:03:22 |显示全部楼层
楼主可以试试:

1、清除规则,预设规则及开放lo与相关的设定值
PATH=/sbin:/bin:/usr/sbin:/usr/bin; export PATH
iptables -F
iptables -X
iptables -Z
iptables -P INPUT   DROP
iptables -P OUTPUT  ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED -j ACCETP
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

2、Turn on IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 327680 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
echo 20480 >  /proc/sys/net/ipv4/neigh/default/gc_thresh1
echo 40960 >  /proc/sys/net/ipv4/neigh/default/gc_thresh2
echo 81920 >  /proc/sys/net/ipv4/neigh/default/gc_thresh3
echo "1280" > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo 86400 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established

3、清除NAT table 的规则。
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
iptables -t nat -P PREROUTING  ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT      ACCEPT

4、映射规则
iptables  -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables  -t nat -A PREROUTING -d 61.154.164.x -p tcp --dport 8000 -j DNAT --to-destination 192.168.19.218 :8000
iptables  -t nat -A POSTROUTING -p tcp -d 192.168.19.218 -j SNAT --to-source 10.10.10.1

使用道具 举报

Rank: 3Rank: 3

注册时间
2010-9-17
最后登录
2010-11-1
在线时间
36 小时
阅读权限
30
积分
241
帖子
55
主题
0
精华
0
UID
10403
发表于 2010-10-6 20:46:18 |显示全部楼层
应该是映射没做好的问题。

使用道具 举报

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

IT运维专家网感谢红之盟网络提供带宽支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2012-2-4 19:43 , Processed in 0.076344 second(s), 12 queries , Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部