2016-04-22 87 views
-2

我很难过。iptables端口forwding - 没有任何返回

这是我的iptables是如何在Debian配置7

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相同。例如

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... 
+0

可能是更好的问上superuser.com – Soren

回答

1

您的规则集中没有任何内容实际转发端口。您有INPUT规则,它们将接受或拒绝去往本地主机的数据包,并且您有FORWARD规则,它们将接受或拒绝将规则传输到另一个地址的规则,但您没有任何实际更改目标端口的规则一个连接。

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

也许你需要在你natREDIRECT规则:

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

注意,一个REDIRECT规则将只对交通是不会在本地主机上起源操作。您需要从网络上的另一台主机(或者从一个容器或一个虚拟机内)对其进行测试。

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

一些额外阅读: