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