免费注册 查看新帖 |

Chinaunix

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

iptables 的一个奇怪的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-02 09:34 |只看该作者 |倒序浏览
先介绍一下我的系统吧: 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 (可以正常用)

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

论坛徽章:
0
2 [报告]
发表于 2006-04-02 10:10 |只看该作者
把 iptables-save 执行后的结果贴出来看看。

==

论坛徽章:
0
3 [报告]
发表于 2006-04-02 10:15 |只看该作者
谢谢kenduest兄:
iptables-save执行后的结果:

# Generated by iptables-save v1.2.11 on Sun Apr  2 17:17:12 2006
*nat
:PREROUTING ACCEPT [5:508]
:POSTROUTING ACCEPT [2:132]
:OUTPUT ACCEPT [2:132]
-A PREROUTING -d 1.2.3.4 -p tcp -m tcp --dport 1322 -j DNAT --to-destination 10.0.3.3:22
COMMIT
# Completed on Sun Apr  2 17:17:12 2006

[ 本帖最后由 redhat_bluebird 于 2006-4-2 10:21 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2006-04-02 10:29 |只看该作者
依据你设定组态来看,那设定是无法作用的。

你使用了 -j DNAT 的规则配置的话,那您并没有任何针对 private ip 的 client 端设定 SNAT or MASQUERADE 的配置设定,所以 private ip 的 client 到时候封包根本回应不出去 ( internet 上没有 private ip 路由)。

你得先把基本的 NAT 服务设定好,client 端 default gw 要指向该机器,要让该 client 端要能够正常透过该 nat 的机器连到外面去。

若是你只是要提供 tcp proxy 服务应对连结的话,有一堆程式可以支援该代理功能。像是 xinetd 可以设定 listen 指定 port,有任何 request 时可以提供代理进而把封包传送到指定的机器。

==

论坛徽章:
0
5 [报告]
发表于 2006-04-02 11:01 |只看该作者
楼主是想在外网用ssh登陆到内网的10.0.3.3由1..2.3.4的332----->10.0.3.3:22

论坛徽章:
0
6 [报告]
发表于 2006-04-02 11:12 |只看该作者
原帖由 kenduest 于 2006-4-2 10:29 发表
依据你设定组态来看,那设定是无法作用的。

你使用了 -j DNAT 的规则配置的话,那您并没有任何针对 private ip 的 client 端设定 SNAT or MASQUERADE 的配置设定,所以 private ip 的 client 到时候封包根本回 ...

这个要看 iptables 和内核的版本
我针对这个和 netman 一起做过测试,结果证明了“高版本可以忽略 SNAT 或 MASQUERADE”的结果 ^_^
至于“高版本”是从多少开始,我也不得而知,但 RH9 已经没有问题了,我原来的时候实在 RH7.3 上发现不可以的
RH7.3 时候的内核版本还是 2.4.18-3,iptables 的版本是 1.2.7a(好像是,如果没记错的话)

论坛徽章:
0
7 [报告]
发表于 2006-04-02 11:43 |只看该作者
原帖由 platinum 于 2006-4-2 11:12 发表
这个要看 iptables 和内核的版本
我针对这个和 netman 一起做过测试,结果证明了“高版本可以忽略 SNAT 或 MASQUERADE”的结果 ^_^
至于“高版本”是从多少开始,我也不得而知,但 RH9 已经没有问题了,我原来的时候实在 RH7.3 上发现不可以的
RH7.3 时候的内核版本还是 2.4.18-3,iptables 的版本是 1.2.7a(好像是,如果没记错的话)


呵... 我晚点看到 netman 他时私底下与他讨论看看好了

不过我是很好奇这个论点,因为 client 端收到要回应时,传送的封包 source ip 带的是 private ip,那没有转换的话,实际外面的机器收的到这个封包结果吗?

另外就是,client 端应该也是需要把 default gw 指向该 linux 主机,要不然封包应该不知道往哪边回应出去。

我晚点跑个 vmware 来测试一下好了 ^_^

==

论坛徽章:
0
8 [报告]
发表于 2006-04-02 11:53 |只看该作者
由于水平不够,我不能看懂 nat 的源码,不知道 DNAT 的实现原理
但是我想,netfilter team 考虑到了 DNAT 后的 conntrack,因此不必再作 SNAT 或 MASQUERADE
在这一点上,和 icmp 协议的处理方式是一样的,那天我和 netman 测试了 icmp 的 conntrack,最后发现 netfilter 变了、iptables 变了,针对 icmp 的 conntrack 也变了,不必再考虑 icmp 的返回过程
这一点一直是我和他之间的分歧,通过那次的测试最后达成了统一观点:谁都没有错,只不过“以前”和“现在”不同了,netman 说的是“以前”,没有发现“现在”已经不用考虑了,而我是通过实作知道“现在”可以,却不知道“以前”不行

论坛徽章:
0
9 [报告]
发表于 2006-04-02 12:17 |只看该作者
听了大家的讨论真是受益不少呀,不过我已经加了定句:
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.3.0/24 -j MASQUERADE
而且把client端的机了的defaut gw设成我的服务器了,可现在client端的机还是不能防问外网,这是怎么回事,再次谢谢大家的关注!希望能交个朋友!

[ 本帖最后由 redhat_bluebird 于 2006-4-2 12:24 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2006-04-02 12:23 |只看该作者
----------------------------------------------
原帖由 Xcon_O 于 2006-4-2 11:01 发表
楼主是想在外网用ssh登陆到内网的10.0.3.3由1..2.3.4的332----->10.0.3.3:22


-----------------------------------------------
确实是Xcon_O兄说的这样我现在已经把client端的default gw设成10.0.3.1了, 而且在rc.local中也加了一句:
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.3.0/24 -j MASQUERADE
现在client 端还是不能访问外网.

iptables-save的内容:
# Generated by iptables-save v1.2.11 on Sun Apr  2 12:24:13 2006
*nat
REROUTING ACCEPT [17:1071]
OSTROUTING ACCEPT [1:96]
:OUTPUT ACCEPT [1:96]
-A POSTROUTING -s 10.0.3.0/255.255.255.0 -o eth0 -j MASQUERADE
COMMIT
# Completed on Sun Apr  2 12:24:13 200
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP