59

CentOS 8的firewalld已经与iptables解绑

 4 years ago
source link: https://www.tuicool.com/articles/uauiaeA
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

今天有人找上我,说之前用的一键安装脚本不好使了,希望我能帮忙看看怎么回事。

根据他的描述,初步断定是系统多次安装某个依赖导致。仔细询问,他每次有问题都直接重建vps,不应该存在这个问题。接着猜测应该是脚本与当前系统不匹配,脚本太久没更新所以安装报错。他说的脚本既不是我写的也没用过,让他联系作者反馈估计很难也不能解决当下问题,于是帮忙找了另外一个一键安装脚本让其尝试。

新的脚本很快就将所需软件安装成功,但是出现无法连接的问题。考虑到服务器有可能被屏蔽掉,于是用境外服务器连接,同样不能连上。接着指导他排除服务未启动、iptables端口和服务商防火墙未放行等因素,问题依旧。

很久没碰到这么奇怪的状况,于是向他要了root密码,亲自登录服务器查看问题。首先用 ps aux | grep xxx 查看进程,确认软件正常运行;接着 netstat -nltp 查看端口监听,确认端口一直且正在被监听; iptables -nL 查看系统内置防火墙,输出为空,说明iptables没有屏蔽进程监听的端口。然而在这样的配置下,依然无法 telnet 远程连接到这台服务器。问题到底出现在哪里?

会不会是因为进程的问题?于是测试用 ssh 进程监听端口,无法连接;换一个端口,还是连不上;改成常用的80和443端口,也 telnet 不过去。测试了多个进程和端口,除了 ssh 的22端口,不管哪个进程监听的其他端口都不行。

走到这个地步,不是系统有问题便是我的水平有问题。于是用 uname -a 查看系统版本,输出如下: Linux xxx 4.18.0-80.7.1.el8_0.x86_64 #1 SMP Sat Aug 3 10:14:00 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux 。信息略显杂乱,但还是能让人一眼就看出问题所在:el8,系统竟然是 CentOS 8

到此一切都明朗了:之前的一键安装脚本报错不好用了,因为脚本只适用于6和7, CentOS 8 刚出来没多久没有测试过;我找的一键安装脚本能安装和运行,无法连接是因为 CentOS 8 中firewalld已经与iptables解绑,后端改用 nftables ,这便是 iptables -nL 输出为空还是无法连接的真正原因;要想连接上,只需要用 nft 或者 firewall-cmd 放行相应的端口即可:

firewall-cmd --permanent --add-port=xxxx/tcp
firewall-cmd --reload

向他解释这些有点难度,于是让他重建vps时选 CentOS 7 ,一键安装脚本好用了,也能远程连接过去了。

CentOS 8打开了一个新世界。

参考

  1. https://www.zdnet.com/article/red-hats-centos-8-arrives-heres-what-you-get-with-it/
  2. https://developers.redhat.com/blog/2016/10/28/what-comes-after-iptables-its-successor-of-course-nftables/

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK