CentOS防火墙开启失败怎么解决

说白了,CentOS防火墙启动失败就俩字:Python路径乱。
这事儿复杂在自定义Python会干掉系统默认路径,导致firewalld启动时像没头苍蝇一样找模块。

展开讲: 先说最重要的,firewalld启动报status=1 2 7 (命令未找到)是因为它依赖的Python模块加载失败。
去年我们跑那个项目,有个兄弟直接把系统Python换成了自己编译的,结果firewalld直接挂了。
得用命令ll /usr/bin/python检查下,看当前python和python2 链接到了哪。
比如你看到python -> /share/soft/python-2 .7 .1 5 /bin/python2 .7 ,那就得改回来,系统默认Python通常在/usr/bin/python2 .7
另外一点,不能光改firewalld文件,还得改firewall-cmd。
用vi /usr/sbin/firewalld和vi /usr/bin/firewall-cmd打开这两个文件,把脚本第一行的Python路径改对。
我一开始也以为改firewalld就行,后来发现firewall-cmd也报错,才知道得双管齐下。
路径必须跟你ll命令看到的一致,不能瞎写。

还有个细节挺关键的,改完后用systemctl start firewalld试试。
如果还报错,就得用journalctl -xe看日志,去年我们碰见过一次是因为selinux策略给卡住了,直接改了几个规则就好了。
等等,还有个事,如果系统同时有Python3 ,建议用update-alternatives管理,别手动改脚本路径,这更规范。

提醒个容易踩的坑:别直接硬改系统Python链接。
应该用虚拟环境或者docker容器,把自定义环境隔离开。
系统升级Python版本也得小心,CentOS7 默认是Python2 .7 ,你硬升级成Python3 ,yum和firewalld可能直接崩。
如果非要用Python3 ,建议用alternatives配置共存,别强行替换。

这个点很多人没注意,自定义环境的管理其实是个技术活,但做好了能省不少后劲。

centos8禁用防火墙

说实话,在CentOS8 上干掉防火墙这事儿,我当年为了调试某个端口问题搞过一次,结果搞得连SSH都连不上了,差点急出汗。
不过操作步骤记着呢,给你捋一捋。

先说查看状态,我一般喜欢加个-v参数,systemctl status firewalld.service -v,能看到更详细的日志,万一停不了就知道卡在哪了。
记得有回我停防火墙时,它居然在查什么SELinux策略,卡了十几秒,把我吓一跳。

停服务这步得趁快,systemctl stop firewalld.service执行后,最好隔两秒再用status命令确认。
我之前有次手滑输成了stop firewalld,结果系统里多了个firewalld1 .service,把火墙拆成两半了,最后用systemctl list-units | grep firewalld清理掉的。

至于禁用自启动,systemctl disable firewalld.service执行完,下次重启机器就真的不认防火墙了。
不过要注意,CentOS8 的firewalld和以前版本不太一样,我试过用firewall-cmd直接改配置,结果它非但不认,还给我报了个错,说命令不在路径里,当时我就懵了。

要说最坑的是重新启用。
有回我恢复配置时,systemctl start firewalld.service报错说target is already active,意思就是它其实已经启动了。
后来发现得用systemctl restart firewalld.service,这让我想起当年帮朋友装系统,重启了八百遍才通的往事。

最后说句实在话,除非你确定要用iptables或者别的替代方案,否则真不建议干掉firewalld。
我有个朋友就因为关了防火墙,结果被黑客通过某个弱口令直接提权了,最后损失了三个月的数据。
现在他的服务器虽然加了别的防护,但每次我建议他重开firewalld,他都骂我烦。

CentOS Stream 8防火墙设置教程

CentOS Stream 8 默认安装 firewalld。

设置默认区域: sudofirewall-cmd--set-default-zone=public
开放端口 8 0/TCP: sudofirewall-cmd--permanent--add-port=8 0/tcp sudofirewall-cmd--reload
拒绝 IP 1 9 2 .1 6 8 .1 .2 00: sudofirewall-cmd--permanent--add-rich-rule='rulefamily=ipv4 sourceaddress=1 9 2 .1 6 8 .1 .2 00 reject'" sudofirewall-cmd--reload
查看规则: sudofirewall-cmd--list-all
重载规则: sudofirewall-cmd--reload
临时规则示例: sudofirewall-cmd--add-port=8 0/tcp (重启后失效)
禁用开机自启: sudosystemctldisablefirewalld
实操提醒: 永久规则必须重载。

关闭centos防火墙的命令和步骤centos防火墙关闭在哪里设置

有一次,我在公司服务器上更新了防火墙规则,不小心用iptables的命令去清除了firewalld的规则,结果服务器就挂了。
那是一个下午,我正准备上线一个新功能,突然发现服务器ping不通了。
当时心里那个急啊,重启了机器还是不行。
最后只好远程到机房,手动重启服务器,花了将近2 0分钟。
后来仔细想想,原来是firewalld和iptables切换时,命令使用不当造成的。

那之后,我就开始研究firewalld的用法。
我发现systemctl这个命令特别方便,比如启动服务、关闭服务、重启服务、查看状态、开机禁用、开机启用等等,都很简单。
我还学会了如何添加、删除和查看防火墙规则,真是解决了大问题。

等等,还有个事,我突然想到,以前学过的selinux,现在用不到了,感觉有点可惜。
不过,想想也是,现在服务器安全越来越重要,还是有必要了解一下这些安全机制的。
下次再和大家聊聊selinux吧。