Linux

IPTABLES 不會在重啟時保留更改

  • June 30, 2014

我有一個擁有 CENT 作業系統的 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 的配置。

我昨天晚上(在我發布這個問題之前)發送了一封電子郵件,我終於收到了來自 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

為了讓 iptables 規則在重新啟動後保持不變,您必須明確設置它。

在 CentOS 中,當您的規則到位後,您可以執行:

/sbin/service iptables save

更多資訊:https ://library.linode.com/securing-your-server#sph_creating-a-firewall (見第 10 點)

引用自:https://serverfault.com/questions/608990