QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3130|回复: 14

请教iptables高手,怎样进行端口重定向?

[复制链接]
发表于 2004-9-19 20:05:24 | 显示全部楼层 |阅读模式
我现在是用校园网通过路由上网的,只能上教育网,

假设我的机器A的ip是内网ip:10.16.27.*,

但是学校同时提供了一个squid代理服务器B可以上国外网站的,

B的ip:a.b.240.8,端口8080,

但是限制了ip范围,只允许a.b.*.*使用。

但是另外有一台学校的服务器C,C的ip:a.b.240.45,操作系统是fc2,我有root权限。

现在我想利用C做个端口重定向,将我的机器A发送到a.b.240.45的8000端口的数据重定向到a.b.240.8的8080端口上,
同时限制只能是10.16.27.*网段的ip才能连接C,这样我就可以使用a.b.240.8这台代理服务器上国外网站了

我试着用iptables做端口重定向,但是没成功,不知道有没有高手教怎么做,不胜感激!!!
发表于 2004-9-19 23:05:49 | 显示全部楼层
不是用“端口重定向”,而应该使用DNAT。
[code:1]iptables -t nat -A PREROUTING -s 10.16.27.0/24 -d a.b.240.45 -p tcp --dport 8000 -j DNAT --to-destination a.b.240.8:8080[/code:1]
相关的语句以及-i 参数等可以自己写了吧?

还有一种方法就是使用多重代理,同样可以实现你的目的。
回复

使用道具 举报

 楼主| 发表于 2004-9-19 23:18:13 | 显示全部楼层
[code:1]
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6112 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6200 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
[/code:1]
以上是我的iptables内容,还是不大清楚怎么配置,可以说的更清楚点吗
做端口nat的系统是fc2,只有一个网卡,就是eth0
回复

使用道具 举报

 楼主| 发表于 2004-9-19 23:37:46 | 显示全部楼层
[code:1]
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -s 10.16.27.0/24 -i eth0 -d 210.45.240.45 -p tcp --dport 8000 -j DNAT --to-destination 210.45.240.8:8080
COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6112 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6200 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
[/code:1]
我改成这样的配置,经测试仍然不行!
回复

使用道具 举报

发表于 2004-9-20 12:51:49 | 显示全部楼层
IP转发开了没有?
单网卡不要加 -i 参数了。
居然是单网卡?! 你的网络什么结构?
回复

使用道具 举报

发表于 2004-9-20 15:40:34 | 显示全部楼层
iptables -t nat -A PREROUTING -s 10.16.27.0/24 -d a.b.240.45 -p tcp --dport 8000 -j DNAT --to-destination a.b.240.8:8080
应可以搞定你的事.
回复

使用道具 举报

 楼主| 发表于 2004-9-21 14:22:59 | 显示全部楼层
我是在校园网内
我的机器A、代理服务器B、我的服务器C都可以互相ping通的
回复

使用道具 举报

 楼主| 发表于 2004-9-21 14:55:24 | 显示全部楼层
经过测试以上几种办法都不行,我已经放弃了使用iptables
不知道那位兄弟知道linux有没有像porttunnel和portmap之类的软件
我在windows下用这两个软件做端口映射都成功的使用学校的代理服务器上国外网站
回复

使用道具 举报

 楼主| 发表于 2004-9-21 14:58:39 | 显示全部楼层
ip转发默认就是开的,我的系统是fc2的
回复

使用道具 举报

 楼主| 发表于 2004-9-21 21:15:07 | 显示全部楼层
现在老问题解决了,我下了一个端口重定向的工具rited
使用这个工具可以:
A->C:8000->B:8080
我现在可以直接使用B及做代理了上网了
不过必须把C的iptables服务给关了,但是我在配置文件里已经设置了允许连接8000端口!!不解中。。。。
希望有高手可以给我解答
回复

使用道具 举报

发表于 2004-9-22 00:21:27 | 显示全部楼层
会不会是DNS的问题啊??
找个外网的ip地址ping一下看看。
回复

使用道具 举报

发表于 2004-9-22 16:33:43 | 显示全部楼层
再加一个 SNAT。让包知道怎么回来。
回复

使用道具 举报

 楼主| 发表于 2004-9-23 02:40:35 | 显示全部楼层
[quote:efac8c085d="gugong"]再加一个 SNAT。让包知道怎么回来。[/quote]
楼上的兄弟说明白一点
我也猜到是这个原因,转发出去包给B,B回应时被A给drop了,但是我不知道怎么加让包回来的规则!
回复

使用道具 举报

发表于 2004-9-23 09:15:37 | 显示全部楼层
举个例子:

[code:1][0:0] -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.9 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.0.254[/code:1]
回复

使用道具 举报

 楼主| 发表于 2004-9-27 10:27:12 | 显示全部楼层
后来发现不需要这条语句也可以连上学校代理??
只是我在iptables中允许8000端口
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-7 14:32 , Processed in 0.096285 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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