iptables port forwding - 没有返回

时间:2016-04-22 16:02:05

标签: linux iptables portforwarding

我很难过。

这就是我在Debian 7上配置iptables的方法。

sudo iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 8090 -j ACCEPT
-A FORWARD -d 127.0.0.1/32 -i eth0 -p tcp -m state --state NEW -m tcp --dport 8090 -j ACCEPT
-A FORWARD -d 10.1.130.5/32 -i eth0 -p tcp -m state --state NEW -m tcp --dport 8090 -j ACCEPT

基本上将端口80转发到端口8090。

我还有一个Apache Tomcat实例在端口8090上运行和监听。例如

sudo lsof -i :8090
COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    15081 user1   36u  IPv6 164737      0t0  TCP *:8090 (LISTEN)

但是,每当我尝试通过浏览器连接时,都不会返回任何内容。使用Wget也一样。 e.g。

wget www.test.com/confluence
--2016-04-22 16:59:22--  http://www.test.com/confluence
Resolving www.test.com... 10.1.130.5
Connecting to www.test.com|10.1.130.5|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: /bootstrap/selectsetupstep.action [following]
--2016-04-22 16:59:22--  http://se-    www.test.com/bootstrap/selectsetupstep.action
Reusing existing connection to www.test.com:80.
HTTP request sent, awaiting response... 

1 个答案:

答案 0 :(得分:1)

规则集中没有任何内容可以实际转发端口。您有INPUT个规则,它们会接受或拒绝发往本地主机的数据包,并且您有FORWARD个规则,这些规则将接受或拒绝将机器转移到另一个地址的规则,但您不会有任何实际改变连接目标端口的东西。

如果您确实想要更改连接的某些方面,则这属于广泛类别的网络地址转换" (NAT),它在nat表中执行,而不是默认的filter表。

您的REDIRECT表中可能需要nat规则:

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 \
  -j REDIRECT --to-ports 8090

请注意,REDIRECT规则仅适用于未在本地主机上发送的流量。您需要从网络上的其他主机(或从容器或虚拟机内部)进行测试。

或者,您可以使用haproxy等代理软件完成类似的工作。

一些额外的阅读: