在Centos上转发端口7

我正在做一个CentOS 7服务器,我试图让JBoss以我想要的方式工作。 我正在运行Java 8和JBoss(疯狂)8.我已经得到了那些安装在默认端口上的工作,但是我想让JBoss工作在80端口上。我知道如果我能在端口80上工作,以root身份运行它,但我知道这不是一个好主意,我不想以任何方式以root身份运行它。

我已经尝试转发端口80到8080,但我没有得到它的工作。 我想我错过了一步,但我不知道我错过了什么。

我正在使用防火墙cmd。 我打开了两个港口(80和8080),我已经启用了公共区域的伪装。 我也使用这个命令转发端口

firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080. 

任何想法我失踪?

我只是find了一个让我可以做到这一点的方法:

 firewall-cmd --zone=public --add-masquerade --permanent firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=3001 --permanent 

firewall-cmd的add-forward-port会将规则添加到PREROUTING NAT链中,这只适用于外部生成的数据包。 如果您尝试连接到服务器的端口80上的本地主机(或服务器的本地IP),将会失败,因为这些数据包永远不会通过PREROUTING

如果您从外部来源连接到端口80,则列出的firewall-cmd应正常工作。 我build议您validation您的界面实际上是在“公共”区域。

您还可以运行以下命令来获取规则上的数据包数量,以确保它实际上正在被命中:

iptables -t nat -vnL | grep 8080 -B1

如果每次尝试都增加数据包计数,那么防火墙工作正常,并且在防火墙之外还有一些问题(可能是JBOSS上的一个ACL?)。 如果数据包在每次尝试时都没有递增,那么防火墙规则根本就没有被打中,这表明您是在错误的区域中,或者有一些其他规则抢占端口转发规则。