什么是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 或更高版本,否则需要下载该工具并安装使用它。
首先我是在linux系统下安装使用Nacos,防火墙正常开启,对应的默认端口号8848也是正常开启,但是启动Nacos服务,依然无法访问,之后想到我用的是阿里云服务器,可能是因为安全组策略的问题,所以再次配置安全组策略将端口号8848也允许被访问,再次重启加载防火墙,依然是无法访问Nacos。
后来经过查阅相关资料,说是由于ip访问受限,需要通过iptablesIP信息包过滤系统
,将Nacos端口号8848
开启。
默认情况下,云服务器Linux系统是没有安装iptables.services系统的,所以第一步安装:
#安装之前首先需要将防火墙关闭
systemctl stop firewalld
小贴士:
linux系统默认使用的是firewalld防火墙,其实通过上述百科可知,iptables也可以认为是一个防火墙,只不过两者的策略不同,所以在安装iptables之前需要将firewalld关闭。
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.com
和http://mirrors.aliyun.com
也无法同步到CentOS 8的源。当您在阿里云上继续使用默认配置的CentOS 8的源就会报出以上错误。
在CentOS 8操作系统的ECS实例中将源配置按照网络环境不同进行切换。
yum源
http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/
源。http://mirrors.aliyuncs.com/centos-vault/8.5.2111/
源。epel源:
http://mirrors.cloud.aliyuncs.com/epel-archive/8/
源。http://mirrors.aliyuncs.com/epel-archive/8/
源。第一步:连接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
命令在实例上安装您所需要的软件包了。
yum -y install iptables-services
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
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