【问题标题】:iptables port forwding - nothing returnediptables 端口转发 - 没有返回
【发布时间】:2016-04-22 16:02:05
【问题描述】:

我被难住了。

这就是我的 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... 

【问题讨论】:

  • 最好在 superuser.com 上询问

标签: linux iptables portforwarding


【解决方案1】:

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

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

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

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

请注意,REDIRECT 规则仅对并非源自本地主机的流量起作用。您需要从网络上的另一台主机(或从容器或虚拟机内部)进行测试。

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

一些补充阅读:

【讨论】:

    猜你喜欢
    • 2011-08-28
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 2016-03-28
    • 2013-06-27
    • 1970-01-01
    • 2014-04-15
    • 2012-12-22
    相关资源
    最近更新 更多