我很难过。
这就是我在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...
答案 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等代理软件完成类似的工作。
一些额外的阅读: