1

我在 CENT OS 6.5 中遇到端口转发问题。

我需要将所有传入流量从端口 80 转发到 3128。比如设置透明代理服务器。我试过什么都没有用。我的透明代理服务器 IP 是 10.5.255.252

请看我下面的配置。

<code>
[root@xxxxxxhost xx-yy]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  anywhere             10.5.255.252        multiport dports http,https to:10.5.255.252:3128 

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  10.5.0.0/16          anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

[root@xxxxxxhost xx-yy]# iptables-save
*nat
:PREROUTING ACCEPT [18:3530]
:POSTROUTING ACCEPT [9:540]
:OUTPUT ACCEPT [228:14574]
-A PREROUTING -d 10.5.255.252/32 -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 10.5.255.252:3128 
-A POSTROUTING -s 10.5.0.0/16 -o eth0 -j MASQUERADE 
COMMIT

[root@xxxxxxhost xx-yy]# cat /proc/sys/net/ipv4/ip_forward 
1

[root@xxxxxxhost xx-yy]# wget 127.0.0.1
--2014-03-12 04:05:51--  http://127.0.0.1/
Resolving 127.0.0.1... 127.0.0.1
Connecting to 127.0.0.1|127.0.0.1|:80... failed: Connection refused.

[root@xxxxxxhost xx-yy]# wget 127.0.0.1:3128
--2014-03-12 04:05:55--  http://127.0.0.1:3128/
Resolving 127.0.0.1... 127.0.0.1
Connecting to 127.0.0.1|127.0.0.1|:3128... connected.
HTTP request sent, awaiting response... ^C

[root@xxxxxxhost xx-yy]# 
</code>

如果您在上面看到,在端口 80 上对 localhost 的 wget 请求被拒绝,但对 3128 端口的请求被接受。所以它不起作用:(

甚至尝试了以下规则。

<code>
iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -d 10.5.255.252 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.5.255.252:3128
iptables -t nat -A POSTROUTING -d 10.5.255.252 -p tcp --dport 3128 -j SNAT --to-source 10.5.255.252
</code>

但没有任何效果。你能帮我解决这个问题吗?

感谢你的帮助。

4

0 回答 0