Linux 防火墙系统

iptables 和 nftables#

iptables 是 Linux 中最常用的防火墙管理软件,它通过 Linux 内核中的 netfilter 模块提供的 Hook 来管理网络数据包的处理和转发。

nftables 是 iptables 的代替品,在 Debian 10、Ubuntu 22、CentOS 8 中默认的防火墙软件已经由 iptables 切换到了 nftables。

iptables 的操作命令是 iptables,nftables 的操作命令是 nft。在一些 Linux 发行版中为了实现兼容,会将 iptables 命令作为一个接口链接到 iptables-nft 来使用 nftables,也可以使用 update-alternatives 命令手动将 iptables 命令切换到 iptables-legacy 来使用原版的 iptables (通过 iptables -v 可以查看当前实现: iptables v1.8.9 (nf_tables))。

工具链#

image

  1. netfilter 是 Linux 内核层的一个模块,用于管理网络数据包。netfilter 制定了五个数据包的挂载点(Hook),分别是 PRE_ROUTING、INPUT、OUTPUT、FORWARD 与 POST_ROUTING。
  2. iptables 是一个运行在用户空间的应用软件,它通过 netfilter 提供的 Hook 来实现对网络数据包的处理和转发。
  3. nftables 是 iptables 的代替品。
  4. ufw/firewalld 分别是 Debian/Redhat 系中的默认防火墙配置工具前端,为防火墙提供了轻量化的配置功能,它们后端通常是 iptables。

它们之间的关系可以总结为:netfilter 是 Linux 的一个内核模块,iptables/nftables 是基于 netfilter 模块实现的防火墙应用程序,ufw/firewalld 是防火墙功能的前端工具。

防火墙的原理#

netfilter 的处理流程如下
image

iptables 由表,链和规则组成,netfilter 流程中的 5 个 Hook 对应了 iptables 四表五链中的五链(四表:raw、mangle、nat、filter,五链:PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING),iptables 的执行顺序如下
image

image

网络数据包有两条执行路径:

  1. PREROUTING -> FORWARD -> POSTROUTING
  2. RREROUTING -> INPUT -> OUTPUT -> POSTROUTING

当路由选择判断数据包的目标地址不是当前设备时会执行第一条流程进行转发,否则会执行第二条流程。

在每条执行路径上的链中又会按照顺序执行各表中的规则,如 PREROUTING 链会按照 raw.PREROUTING -> mangle.PREROUTING -> nat.PREROUTING 的顺序执行规则

常用命令#

iptables -t filter -n -v -L --line-numbers

背景:
docker container1 8080
docker container2 80

container2 -> container1

ufw deny 8080

ip:8080 可以访问
ip:80 -> ip:8080 无法访问

相关知识:
防火墙工具关系

解决步骤:
iptables 打印日志

解决方案:

作者:xtyuns

出处:https://www.cnblogs.com/xtyuns/p/18337849

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   xtyuns  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示