關於iptables添加規則不生效的問題


1.我們要增加的規則是:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 82 -j ACCEPT
#  即開放82的tcp端口。

2.第一種方法,使用命令增加:
首先用命令增加規則:

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 82 -j ACCEPT

上面的命令即時生效,但是重啟iptables服務后就消失了。如何永久生效呢?

/etc/rc.d/init.d/iptables save 或者 service iptables save


service iptables restart

 

然后看下配置文件里,是有的。以后重啟iptables服務,或者重啟系統這條規則都會生效。

[root@localhost ~]# cat /etc/sysconfig/iptables | grep 82
-A INPUT -p tcp -m state --state NEW -m tcp --dport 82 -j ACCEPT

 

實例:

iptables只允許指定ip地址訪問指定端口

首先,清除所有預設置

iptables -F#清除預設表filter中的所有規則鏈的規則

iptables -X#清除預設表filter中使用者自定鏈中的規則

其次,設置只允許指定ip地址訪問指定端口

iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp --dport 22 -j ACCEPT

iptables -A OUTPUT -d xxx.xxx.xxx.xxx -p tcp --sport 22 -j ACCEPT

iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp --dport 3306 -j ACCEPT 

iptables -A OUTPUT -d xxx.xxx.xxx.xxx -p tcp --sport 3306 -j ACCEPT

上面這兩條,請注意--dport為目標端口,當數據從外部進入服務器為目標端口;反之,數據從服務器出去則為數據源端口,使用 --sport
同理,-s是指定源地址,-d是指定目標地址。


然后,關閉所有的端口

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

最后,保存當前規則

/etc/rc.d/init.d/iptables save
service iptables restart

這種iptables的規則設定適用於只充當MySQL服務器的管理和維護,外部地址不提供任何服務。

如果你希望yum可以運行的話,還需要添加以下內容,允許DNS請求的53端口,允許下載隨機產生的高端口

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 10000:65535 -j ACCEPT

/etc/rc.d/init.d/iptables save
service iptables restart

[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]


3.第二種方法,直接編輯iptables配置文件
vim /etc/sysconfig/iptables


將上面的語句-A INPUT -p tcp -m state --state NEW -m tcp --dport 82 -j ACCEPT直接插入到上述文件中。
這時候規則是不生效的,需要重啟服務service iptables restart。之后這條規則就永久生效了。

4.總結一下。
如果是命令增加條目,那規則是臨時的。
如果要永久生效,要把規則寫進配置文件。寫配置文件的辦法有兩種,一種是直接編輯,一種是service iptables save。
iptables服務每次啟動的時候才會去讀一次規則。如果直接編輯了配置文件,然后用service iptables save,那么內存里的配置規則是初始的,會覆蓋你直接對配置文件的編輯。
因此,最后的結論是,如果是臨時規則,用上面的第一種辦法,但是不要save;如果是永久規則,用上面的第一種或第二種方法,二選一不可混用。

 

資料來源:https://blog.csdn.net/donglynn/article/details/73530542


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM