IPTABLES 不會在重啟時保留更改
我有一個擁有 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 點)