添加以下行

添加以下行

我尝试过这个,但它只是一个部分答案或者不适合 CentOS7。 https://serverfault.com/a/320624/439512

我完全按照它说的做了但这是不对的。

$ sudo iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
$ sudo iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

$ curl localhost
  curl: (7) Failed connect to localhost:80; Connection refused
$ curl localhost:8080
  <html>...</html>
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:webcache

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination     

这两个命令暂时有效,但重启后无效:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080

如果你尝试保存它那人说它会彻底坏掉,甚至暂时无法工作:

$ sudo systemctl enable iptables
$ sudo service iptables save
$ sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
$ sudo iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
$ sudo service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

有人有关于如何做到这一点的实用示例吗?

答案1

使用以下命令,如果遇到任何问题,请发布错误。

确保该帖子被 iptables 允许并打开,然后:

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 --permanent

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent

sudo firewall-cmd --reload

答案2

它无法识别 --permanent。如果没有它,命令可以完成但不起作用。

“--permanent” 用于firewalld,而不是用于iptables。这是打字错误。

请在执行以下命令后列出错误。它对我有用

打开文件:vim /etc/sysconfig/iptables

添加以下行

-A 输入 -m 状态 --状态新 -m tcp -p tcp --dport 8080 -j 接受

-A 输入!-i lo -p tcp -m conntrack --ctstate 新-m tcp --dport 8080 -j 接受

犯罪

*自然

-A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-ports 80

犯罪

添加行后保存并重新启动服务

iptables-保存

systemctl 重新启动 iptables->REHL 7

服务重启 iptables->RHEL 6

使用以下 cmd 检查流量

iptables -t nat -L -n

ss-tulnp

注:场景如下 1.(网络 A 或机器 A )--8080-->内部-80->(网络 B 或机器 B)

2.(网络 B 或机器 B) <--8080-- 内部 <-80- (网络 A 或机器 A)

尝试使用 url 从外部进行故障排除,因为您已经添加的 iptables 中的规则可能会发生冲突,而且与现代防火墙应用程序相比,它是一个非常复杂的程序。

答案3

在 CentOS 7 上使用以下命令:

# firewall-cmd --permanent --zone=<zone-name> --add-forward-port=port=80:proto=tcp:toport=443:toaddr=<ip-address>

# firewall-cmd --reload

相应地更改您的区域、端口和 IP 地址。

相关内容