我有一个装有 CENT OS 的 hostgator VPS。当我停止 VPS 并重新启动它时,我对 IPTABLES 所做的更改不会保存。我尝试保存 IPTABLES,但无济于事。每次我重新启动服务器时,我都必须运行以下命令才能获得所需的 IPTABLES:
iptables -I INPUT -p tcp --dport 3000 --syn -j ACCEPT
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
第一个命令打开端口 3000,第二个命令将端口 80 流量重定向到端口 3000。
当我重新启动或完全停止 VPS 并再次启动它时,IPTABLES 启动就像我从未保存过它们一样,并恢复到我第一次获得 VPS 时的默认设置。
我已尝试了所有这些命令但仍然没有效果。
我正在考虑编写一个脚本来运行配置 IPTABLES 所需的命令。有什么建议吗?
仅供参考:我编辑了 /etc/sysconfig/iptables 并且做了service iptables save
但没有成功,一旦重新启动,它在重置 VPS 后就会恢复到 Host Gator 的配置。
答案1
为了使 iptables 规则在重启后仍然有效,您必须明确设置它。
在 CentOS 中,规则设置完成后,您可以运行:
/sbin/service iptables save
更多信息请点击这里:https://library.linode.com/securing-your-server#sph_creating-a-firewall (参见第 10 点)
答案2
我昨天晚上发送了一封电子邮件(在我发布这个问题之前),最后收到了 Host Gator 的 Linux 管理员的回复(如果有效我会更新):
你好呀!
HostGator 已构建自定义防火墙,所有 VPS 和专用服务器计划均默认安装该防火墙。
幸运的是,防火墙配置中有一个文件可以用于保存iptables
配置。
该文件是:/etc/firewall/INCLUDE
只需将您的iptables
行添加到该文件,然后使用 重新启动防火墙service firewall restart
。iptables
规则将持续有效。
实际上,我已经将这些行添加到文件中,因此您的iptables
规则现在应该加载并保留。
如果您还有其他问题或疑虑,请随时与我们联系。
我打电话给 Host Gator 时要求添加以下规则,但没有成功,因为当他告诉我添加这些规则时,我没有在规则前添加“iptables”。以下是 Host Gator 的 Linux 管理员添加的内容。我从文件中复制了此文本/etc/firewall/INCLUDE
:
iptables INPUT -p tcp -m tcp --dport 3000 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
iptables -A INPUT -j acctboth
iptables -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3000
iptables -I INPUT -p tcp --dport 3000 --syn -j ACCEPT
iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
答案3
我在互联网上找到了一些参考资料,这些资料表明 HostGator 在其 VPS 和专用服务器上安装了自定义防火墙脚本。但是,我找不到有关如何安装或如何删除它的任何说明。我会联系 HostGator 获取更多信息,或者考虑换一家提供商。