无法在 Google 云虚拟机实例 (CentOS 7) 上保存 iptables 规则
Can't save iptables rule on Google Cloud VM instance (CentOS 7)
我在 CentOS7 上 运行ning Tomcat8 端口 8080 上的 Google VM 实例中。
我设置了 iptables 规则以将所有外部连接映射到端口 80 到 8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
之后我用
保存规则
service iptables save
Tomcat 工作正常,可以通过端口 80 从外部访问。
规则保存在 /etc/sysconfig/iptables
.
...
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
...
但在服务器重新启动后,规则未应用。
它仍在文件 /etc/sysconfig/iptables
中,但当我 运行
iptables-save
iptables 规则好像是从别的地方恢复过来的。
我如何正确地保留规则以在重启后保留它?
要解决 IPtables 问题,您可以执行以下操作:
yum install iptables-services
systemctl mask firewalld
systemctl enable iptables
systemctl enable ip6tables
systemctl stop firewalld
systemctl start iptables
systemctl start ip6tables
不过,Centos7 现在改用 FirewallD。为了应用防火墙,您需要先检查哪些可用区域以及哪些区域在 FirewallD 上处于活动状态,方法是 运行 执行以下命令:
firewall-cmd --list-all-zones
firewall-cmd --get-active-zones
例如,如果 public 区域处于活动状态,您可以 运行 这些命令来启用端口转发(在您的情况下是端口 80 到 8080):
firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
完成后,您可以通过 运行 执行以下命令重新加载规则以确保一切正常:
firewall-cmd --reload
您可以查看 man firewall-cmd
了解更多信息。
我在 CentOS7 上 运行ning Tomcat8 端口 8080 上的 Google VM 实例中。 我设置了 iptables 规则以将所有外部连接映射到端口 80 到 8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
之后我用
保存规则service iptables save
Tomcat 工作正常,可以通过端口 80 从外部访问。
规则保存在 /etc/sysconfig/iptables
.
...
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
...
但在服务器重新启动后,规则未应用。
它仍在文件 /etc/sysconfig/iptables
中,但当我 运行
iptables-save
iptables 规则好像是从别的地方恢复过来的。
我如何正确地保留规则以在重启后保留它?
要解决 IPtables 问题,您可以执行以下操作:
yum install iptables-services
systemctl mask firewalld
systemctl enable iptables
systemctl enable ip6tables
systemctl stop firewalld
systemctl start iptables
systemctl start ip6tables
不过,Centos7 现在改用 FirewallD。为了应用防火墙,您需要先检查哪些可用区域以及哪些区域在 FirewallD 上处于活动状态,方法是 运行 执行以下命令:
firewall-cmd --list-all-zones
firewall-cmd --get-active-zones
例如,如果 public 区域处于活动状态,您可以 运行 这些命令来启用端口转发(在您的情况下是端口 80 到 8080):
firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
完成后,您可以通过 运行 执行以下命令重新加载规则以确保一切正常:
firewall-cmd --reload
您可以查看 man firewall-cmd
了解更多信息。