LinuxSir.cn,穿越时空的Linuxsir!

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

iptables作端口映射的一个奇怪问题

[复制链接]
发表于 2006-4-2 09:51:45 | 显示全部楼层 |阅读模式
先介绍一下我的系统吧: redhat AS 4.0, 服务器有两块网卡, 外网eth1: 1.2.3.4, 内网eth0: 10.0.3.1, 我想做个端口转发即将外网进来的要到 1.2.3.4的322端口的转发到内网的其他机子10.0.3.3的22端口上,我做的规则如下:
-------------
#!/bin/sh
/sbin/service iptables restart
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -d  1.2.3.4 -p tcp --dport 322 -j DAT --to 10.0.3.3:22
--------------
但是这样做每次用ssh登陆322端口时根本连不上, 另外我试了一下如果不转到10.0.3.3,而转到10.0.3.1(服务器的内网ip)上是可以正常转发的,即:
iptables -t nat -A PREROUTING -d  1.2.3.4 -p tcp --dport 322 -j DAT --to 10.0.3.1:22 (可以正常用)

请高手们帮忙检查一下是哪个地方出问题了, 另外不知有没有什么好的方法可以查看一些错误信息或了解数据包进来后是怎么样处理的,为什么上面的数据包没法转发出去. 谢谢!
发表于 2006-4-2 10:44:25 | 显示全部楼层
iptables -t nat -A PREROUTING -i eth1 -d 1.2.3.4 -p tcp --dport 322 -j DNAT --to 10.0.3.3:22
iptables -t nat -A POSTROUTING -o eth1 -s 10.0.3.3 --sport 22 -j SNAT --from 1.2.3.4:322

然后你分别在服务器上和10.0.3.3上用tcpdump抓包。同时从外网进行连接,看看有什么情况发生。
回复 支持 反对

使用道具 举报

发表于 2006-4-2 15:40:56 | 显示全部楼层
Post by bluebird
但是这样做每次用ssh登陆322端口时根本连不上, 另外我试了一下如果不转到10.0.3.3,而转到10.0.3.1(服务器的内网ip)上是可以正常转发的,即:
iptables -t nat -A PREROUTING -d  1.2.3.4 -p tcp --dport 322 -j DAT --to 10.0.3.1:22 (可以正常用)

请高手们帮忙检查一下是哪个地方出问题了, 另外不知有没有什么好的方法可以查看一些错误信息或了解数据包进来后是怎么样处理的,为什么上面的数据包没法转发出去. 谢谢!


你是在什么情况下试验的?如果你本身在内网,试图ssh到1.2.3.4的322端口来连接到10.0.3.3,肯定是不行的。

去外网试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-11 08:15:32 | 显示全部楼层
多谢各位,我已经弄成功了!
回复 支持 反对

使用道具 举报

发表于 2006-4-11 08:16:38 | 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则

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