当前位置: 代码网 > 服务器>服务器>Linux > linux防火墙端口不通怎么解决?iptables规则清理与放行教程

linux防火墙端口不通怎么解决?iptables规则清理与放行教程

2026年07月16日 Linux 我要评论
今天遇到一个问题centos7.9 firewalld 已关闭,但是端口访问依旧不同,请了400服务,排查下来发现是iptables 策略的问题,因为低版本的centos firewalld和ipta

今天遇到一个问题

centos7.9 firewalld 已关闭,但是端口访问依旧不同,请了400服务,排查下来发现是iptables 策略的问题,因为低版本的centos firewalld和iptables是同时存在的

方法有两种一种是清除 iptables 中的所有规则,另一种是给需要放行的端口开accept 策略

单独开策略:  

 iptables -i input -p tcp --dport 8000 -j accept

清除策略可以使用以下命令:

iptables -f

这会清除所有的防火墙规则,但不会删除任何链 (chains)。如果你想要删除所有的链,可以使用以下命令:

iptables -f
iptables -x

第一个命令清除了所有的规则,第二个命令删除了所有自定义的链。请确保在执行这些命令之前,你了解自己在做什么,并且明白这可能会影响系统的网络连接和安全性。

防火墙综述

linux 防火墙,常用的包括三种:ufw 、 firewalld 和 iptables。学习难度依次递增。

常见的防火墙分为两种,一种是3层防火墙,另一种是 7 层防火墙。

在 tcp/ip 的七层网络中,第三层是网络层,三层防火网会在这层对源地址和目标地址进行检测。但七成防火墙会对 源端口、目标端口、源ip、目标ip 全都进行检测。

ufw

因为原生的 iptable 配置麻烦,学习成本较高。 ufw全称 uncomplicated firewall 是 ubuntu提供的一个 iptables 的接口。同时支持 ipv4 和 ipv6

最新版的ufw默认启用了ipv6配置,你也可以通过以下命令进行检查:

# cat /etc/default/ufw | grep -i ipv6
ipv6=yes

默认策略

默认情况下,ufw 设置了:禁止所有流量转入,允许所有流量转出。(这点和 iptable 的默认允许所有流量转入不同)。

我们也可以更改此默认配置:

cat /etc/default/ufw |grep -i default_input  # 加 -i 是关闭大小写区分。
default_input_policy="drop"

规则设置

允许 80 端口的 tcp 流量包进入

sudo ufw allow 22/tcp

拒绝 88 端口的 tcp 流量包进入与流出

sudo ufw deny 88/tcp

允许特定的 ip 源的访问

sudo ufw allow from 192.168.1.1

firewall

centos7以上的发行版都试自带了firewalld防火墙的,firewalld去带了iptables防火墙。

其原因是iptables的防火墙策略是交由内核层面的netfilter网络过滤器来处理的,而firewalld则是交由内核层面的nftables包过滤框架来处理。

相较于iptables防火墙而言,firewalld支持动态更新技术并加入了区域(zone)的概念。

简单来说,区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。

关于 firewall 防火墙配置,需要注意的是:

这里需要首先说明的是,在执行命令时,如果没有带 --permanent 参数表示配置立即生效,但是不会对该配置进行存储,相当于重启服务器就会丢失。

如果带上则会将配置存储到配置文件,但是这种仅仅是将配置存储到文件,却并不会实时生效,需要执行 firewall-cmd --reload 命令重载配置才会生效。

规则配置

默认域的配置

firewall-cmd --list-all

应急命令

firewall-cmd --panic-on     # 拒绝所有流量,远程连接会立即断开,只有本地能登陆
firewall-cmd --panic-off    # 取消应急模式,但需要重启firewalld后才可以远程ssh
firewall-cmd --query-panic  # 查看是否为应急模式

端口

firewall-cmd --add-port=<port>/<protocol>    # 添加端口/协议(tcp/udp)
firewall-cmd --remove-port=<port>/<protocol> # 移除端口/协议(tcp/udp)
firewall-cmd --list-ports                    # 查看开放的端口

开放指定端口,并重新加载

firewall-cmd --add-port=443/tcp --permanent # 开放端口
firewall-cmd --reload                       # 重新加载
firewall-cmd --query-port=443/tcp           # 查询是否放开

iptables

iptables 的结构

iptables -> tables -> chains -> rules

简单地讲,tables由chains组成,而chains又由rules组成。iptables 默认有四个表filter, nat, mangle, raw,其对于的链如下图。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com