我在 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>
但没有任何效果。你能帮我解决这个问题吗?
感谢你的帮助。