转发流量从80到8080
Forwarding traffic from 80 to 8080
我 tomcat 安装了 puppet。它运行在标准的 8080 端口上。 tomcat 进程以 tomcat 用户身份启动。我想将所有流量从端口 80 重定向到 8080。我的 iptables 设置如下所示:
纳特:
# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp -- anywhere anywhere multiport dports http /* 099 forward port 80 to 8080 */ redir ports 8080
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
标准 iptables:
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT icmp -- anywhere anywhere /* 000 accept all icmp */
ACCEPT all -- anywhere anywhere /* 001 accept all to lo interface */
REJECT all -- anywhere loopback/8 /* 002 reject local traffic not on loopback interface */ reject-with icmp-port-unreachable
ACCEPT all -- anywhere anywhere /* 003 accept related established rules */ state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere multiport dports ssh /* 004 accept ssh */
ACCEPT tcp -- anywhere anywhere multiport dports http,https /* 100 allow http and https access */
DROP all -- anywhere anywhere /* 999 drop all */
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
我看到 netstat 显示 tomcat 进程正在侦听端口 8080:
# netstat -tulpn | grep 80
tcp6 0 0 :::8080 :::* LISTEN 16273/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 16273/java
tcp6 0 0 :::8009 :::* LISTEN 16273/java
你似乎没有在端口 80 上监听。 telnet
到端口80和8080拥抱的那台机器。
如何将所有流量从 80 转发到 8080?
试试这个:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8080
非常确定您的规则不会导致其他规则出现问题。所以可以肯定的是,清理一切,启动它并进行测试。如果可行,请添加您的其他规则。
试试这个:
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
并查看流量:
sudo tcpdump -i any -n port 80
如果看不到数据包,您应该检查外部防火墙。
我已经用了很多年了:
iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
但是,重要:这仅适用于来自网络中其他主机的流量。即,您不能这样测试:
curl localhost:8080
也不
curl <<same-host-ip>>:8081 (the host that has the iptables configured)
要检查此配置,您需要在其他主机上。
看到你的配置,你似乎不需要另一个 iptables 规则。
我 tomcat 安装了 puppet。它运行在标准的 8080 端口上。 tomcat 进程以 tomcat 用户身份启动。我想将所有流量从端口 80 重定向到 8080。我的 iptables 设置如下所示:
纳特:
# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp -- anywhere anywhere multiport dports http /* 099 forward port 80 to 8080 */ redir ports 8080
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
标准 iptables:
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT icmp -- anywhere anywhere /* 000 accept all icmp */
ACCEPT all -- anywhere anywhere /* 001 accept all to lo interface */
REJECT all -- anywhere loopback/8 /* 002 reject local traffic not on loopback interface */ reject-with icmp-port-unreachable
ACCEPT all -- anywhere anywhere /* 003 accept related established rules */ state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere multiport dports ssh /* 004 accept ssh */
ACCEPT tcp -- anywhere anywhere multiport dports http,https /* 100 allow http and https access */
DROP all -- anywhere anywhere /* 999 drop all */
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
我看到 netstat 显示 tomcat 进程正在侦听端口 8080:
# netstat -tulpn | grep 80
tcp6 0 0 :::8080 :::* LISTEN 16273/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 16273/java
tcp6 0 0 :::8009 :::* LISTEN 16273/java
你似乎没有在端口 80 上监听。 telnet
到端口80和8080拥抱的那台机器。
如何将所有流量从 80 转发到 8080?
试试这个:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8080
非常确定您的规则不会导致其他规则出现问题。所以可以肯定的是,清理一切,启动它并进行测试。如果可行,请添加您的其他规则。
试试这个:
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
并查看流量:
sudo tcpdump -i any -n port 80
如果看不到数据包,您应该检查外部防火墙。
我已经用了很多年了:
iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
但是,重要:这仅适用于来自网络中其他主机的流量。即,您不能这样测试:
curl localhost:8080
也不
curl <<same-host-ip>>:8081 (the host that has the iptables configured)
要检查此配置,您需要在其他主机上。
看到你的配置,你似乎不需要另一个 iptables 规则。