Centos7啟動防火牆時報錯Failed to start IPv4 firewall with iptables


 

今天在虛擬機的Linux系統(centos7)里安裝Redis,准備學習一下布隆過濾器呢,安裝完后使用Windows本機訪問不了虛擬機里的Redis,telnet不通能夠ping通。於是就去看防火牆,是否關閉或是否把6379端口放開了。

於是就往這方面查問題,發現沒有iptables文件,然后我啟動iptables服務,報錯。

Centos 7在啟動iptables(防火牆)時報錯:
Failed to start IPv4 firewall with iptables.

原因:因為centos7.0默認不是使用iptables方式管理,而是firewalld方式。Centos6.0防火牆用iptables管理。(原來是這樣,centos7默認防火牆時firewalld啊[笑哭]。:-D)

解決辦法有兩個:一是繼續使用默認的firewalld方式。二是關閉firewalld,然后安裝iptables。以前都是用iptables,所以想換回來,於是找到如下切換教程。

從firewalld切換到iptables:關閉firewalld安裝iptables

1、首先執行如下命令

1#關閉
2systemctl stop firewalld
3systemctl mask firewalld

2、然后安裝iptables-services

1#安裝
2yum install iptables-services
3#設置開機啟動
4systemctl enable iptables

3、開放443端口(HTTPS)

iptables -A INPUT -p tcp --dport 443 -j ACCEPT

4、保存防火牆配置

1service iptables save
2#或者
3/usr/libexec/iptables/iptables.init save

5、iptables的一些命令,停止/啟動/重啟 防火牆:

1systemctl [stop|start|restart] iptables
2#或者
3service iptables [stop|start|restart]

然后啟動iptables服務,這樣就搞定了。

但是,從firewalld切換到iptables后會有這樣那樣的問題,還不如用系統默認的。

從iptables切換回firewalld

1、先看firewalld的狀態:inactive
systemctl status firewalld

2、安裝firewalld
yum install firewalld

3、切換

1#關閉iptables
2systemctl mask iptables
3systemctl stop iptables
4#切換
5systemctl unmask friewalld
6systemctl start friewalld

總算恢復了。

饒了一大圈,最后找到這篇文章
windows本地連不上虛擬機redis服務完美解決,解決了這個問題。

附:firewalld相關命令

常用命令

 1#查看狀態,是否已經安裝firewalld
2systemctl status firewalld
3#開啟防火牆
4systemctl startfirewalld.service
5#關閉防火牆
6systemctl stop firewalld.service
7#設置開機自動啟動
8systemctl enable firewalld.servic
9#設置關閉開機制動啟動
10systemctl disable firewalld.service
11#在不改變狀態的條件下重新加載防火牆
12firewall-cmd --reload

啟用某個服務

1#臨時
2firewall-cmd --zone=public --add-service=https
3#永久
4firewall-cmd --permanent --zone=public --add-service=https

開啟某個端口

1#永久
2firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp
3#臨時
4firewall-cmd  --zone=public --add-port=8080-8081/tcp

查看開啟的端口和服務

1#查看開啟的服務 空格隔開
2firewall-cmd --permanent --zone=public --list-services
3#查看開啟的端口 空格隔開
4firewall-cmd --permanent --zone=public --list-ports
5#修改配置后需要重啟服務使其生效
6systemctl restartfirewalld.service
7#查看服務是否生效 (例:添加的端口為8080)
8firewall-cmd --zone=public --query-port=8080/tcp 

如下,查看開啟的服務、端口


免責聲明!

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



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