Linux踩坑記錄–開放指定端口
注意:redhat/centos 的iptables和firewalld是兩種不同的防火牆機制(firewalld是centos升級到7後新建的代替iptables的)
所有如果在機器上同時安裝的firewalld和iptables的話,開放端口的時候,兩個防火牆都要進行設置。
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允許本地迴環接口(即運行本機訪問本機)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允許已建立的或相關連的通行
iptables -A OUTPUT -j ACCEPT #允許所有本機向外的訪問
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允許訪問22端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允許訪問80端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT #允許ftp服務的21端口
iptables -A INPUT -p tcp --dport 20 -j ACCEPT #允許FTP服務的20端口
iptables -A INPUT -j reject #禁止其他未允許的規則訪問
iptables -A FORWARD -j REJECT #禁止其他未允許的規則訪問
#以上是臨時設置。
#先備份iptables
cp /etc/sysconfig/iptables /var/tmp
#然後保存iptables
service iptables save
#重啓防火
service iptables restart
#添加
firewall-cmd --zone=public --add-port=80/tcp --permanent #(--permanent永久生效,沒有此參數重啓後失效)
#重新載入
firewall-cmd --reload
#查看
firewall-cmd --zone= public --query-port=80/tcp
#刪除
firewall-cmd --zone= public --remove-port=80/tcp --permanent
另一個坑:
關於service iptables save 指令使用失敗的結局方
問題:使用 service iptables save 時顯示 The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.
解決辦法:
使用systemctl stop firewalld 關閉防火牆
然後使用 yum install iptables-services 安裝或更新服務
再使用systemctl enable iptables 啓動iptables
最後 systemctl start iptables 打開iptables