CentOS 7/8 安装启动iptables.services信息包过滤系统报错

Posted 一宿君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS 7/8 安装启动iptables.services信息包过滤系统报错相关的知识,希望对你有一定的参考价值。

什么是iptables(内容来自百科)?

IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤防火墙配置

防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。

虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。
netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它。


1、遇见问题

首先我是在linux系统下安装使用Nacos,防火墙正常开启,对应的默认端口号8848也是正常开启,但是启动Nacos服务,依然无法访问,之后想到我用的是阿里云服务器,可能是因为安全组策略的问题,所以再次配置安全组策略将端口号8848也允许被访问,再次重启加载防火墙,依然是无法访问Nacos。

后来经过查阅相关资料,说是由于ip访问受限,需要通过iptablesIP信息包过滤系统,将Nacos端口号8848开启。

默认情况下,云服务器Linux系统是没有安装iptables.services系统的,所以第一步安装:

#安装之前首先需要将防火墙关闭
systemctl stop firewalld

小贴士:
linux系统默认使用的是firewalld防火墙,其实通过上述百科可知,iptables也可以认为是一个防火墙,只不过两者的策略不同,所以在安装iptables之前需要将firewalld关闭。

2、安装报错信息

yum list all iptables*
或者
yum -y install iptables-services

结果安装运行报错如下:

报错信息显示,大概意思是无法通过http://mirrors.cloud.aliyuncs.com/centos/8/AppStream/x86_64/os/repodata/repomd.xml该镜像源下载相关依赖包,通过查询资料得知,CentOS 8操作系统版本结束了生命周期(EOL),Linux社区已不再维护该操作系统版本。

可以参考官方指导文档

2021年12月31日CentOS 8 EOL。按照社区规则,CentOS 8的源地址http://mirror.centos.org/centos/8/内容已移除,目前第三方的镜像站中均已移除CentOS 8的源。阿里云的源http://mirrors.cloud.aliyuncs.comhttp://mirrors.aliyun.com也无法同步到CentOS 8的源。当您在阿里云上继续使用默认配置的CentOS 8的源就会报出以上错误。

3、解决办法

在CentOS 8操作系统的ECS实例中将源配置按照网络环境不同进行切换。

  • yum源

    • 专有网络VPC类型实例需切换为http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/源。
    • 经典网络类型实例需切换为http://mirrors.aliyuncs.com/centos-vault/8.5.2111/源。
  • epel源:

    • 专有网络VPC类型实例需切换为http://mirrors.cloud.aliyuncs.com/epel-archive/8/源。
    • 经典网络类型实例需切换为http://mirrors.aliyuncs.com/epel-archive/8/源。

4、操作步骤

第一步:连接CentOS8实例(也就是远侧连接)。

第二步:备份之前的repo文件。

rename '.repo' '.repo.bak' /etc/yum.repos.d/*.repo

第三步:下载最新的repo文件。

#先执行
wget http://mirrors.cloud.aliyuncs.com/repo/Centos-vault-8.5.2111.repo -O /etc/yum.repos.d/Centos-vault-8.5.2111.repo
#再执行
wget http://mirrors.cloud.aliyuncs.com/repo/epel-archive-8.repo -O /etc/yum.repos.d/epel-archive-8.repo

第四步:替换repo文件中的链接。

#先执行
sed -i 's/mirrors.cloud.aliyuncs.com/url_tmp/g'  /etc/yum.repos.d/Centos-vault-8.5.2111.repo &&  sed -i 's/mirrors.aliyun.com/mirrors.cloud.aliyuncs.com/g' /etc/yum.repos.d/Centos-vault-8.5.2111.repo && sed -i 's/url_tmp/mirrors.aliyun.com/g' /etc/yum.repos.d/Centos-vault-8.5.2111.repo
#再执行
sed -i 's/mirrors.aliyun.com/mirrors.cloud.aliyuncs.com/g' /etc/yum.repos.d/epel-archive-8.repo

第五步:重新创建缓存。

yum clean all && yum makecache

到这,yum源epel源切换完成后,即可使用yum install命令在实例上安装您所需要的软件包了。

5、再次安装iptables

yum -y install iptables-services


启动iptables服务:

systemctl start iptables.service

如果启动报错,可以根据提示:

#查看状态
systemctl status iptables.service
#或查看异常详情
journalctl -xe


可知报错原因:Failed to start IPv4 firewall with iptables.

报这个错误很明显是因为firewalld防火墙没有关闭成功,所以被拦截了,再次执行关闭防火墙:

systemctl stop firewalld

#隐藏firewalld
systemctl mask firewalld
#如果以后想再次开启,可以先执行如下命令,然后再开启
systemctl unmask firewalld

再次启动iptables服务:

systemctl start iptables.service

查看服务状态:

systemctl status iptables.service


开放443端口(HTTPS):

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

开放端口号8848(Nacos):

iptables -I INPUT -p tcp --dport 8848 -j ACCEPT

保存上述规则:

service iptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

重新启动uotables服务:

systemctl restart iptables.service

设置为开机自启:

systemctl enable iptables

以上是关于CentOS 7/8 安装启动iptables.services信息包过滤系统报错的主要内容,如果未能解决你的问题,请参考以下文章

在 CentOS 8 上实现PXE自动化安装 CentOS 6,7,8

腾讯云centos无法安装docker安装上也启动失败求解换了多个版本系统都不行

CentOS7 安装 MySQL 5.7(yum) - IT书 - itbook.com

CentOS 6.5 安装 Nginx 1.7.8 教程

centos-7/8.2.2004安装oracle11g全过程

linux(centos6.8 64位)下安装mysql5.7(yum方式)