网站LOGO
oneLN
页面加载中
12月22日
网站LOGO oneLN
时间就是力量,你的时间就是你的力量
菜单
  • oneLN
    时间就是力量,你的时间就是你的力量
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    Nftables
    点击复制本页信息
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。
    • 复制图片
    • 复制图片地址
    • 百度识图
    按住ctrl可打开默认菜单

    Nftables

    oneLN · 原创 ·
    Linux · 网络防御
    共 3024 字 · 约 3 分钟 · 159

    Nftables官方网站

    使用nftables配置和管理防火墙规则相对于iptables来说更加灵活和强大。
    1. 什么是 nftables
    nftables 是 Linux 内核的一个包过滤和网络地址转换框架,是 iptables 的继任者。它集成了所有网络表(IPv4, IPv6, ARP, ebtables)到一个统一的框架中,并提供了更高效和灵活的包过滤和管理机制。
    2. nftables 的优势
    统一的框架:取代了 iptables、ip6tables、arptables 和 ebtables 等工具。
    简洁的语法:nftables 采用了一种更为简洁和高级的语言,使规则编写和管理更加方便。
    高效的规则处理:使用了更高效的数据结构,减少了内存占用并提升了处理速度。
    动态更新:在不中断现有连接的情况下动态更新规则集。
    复杂匹配和操作:更灵活的匹配条件、映射和操作。
    3. 基本概念
    表(table):表是规则的容器,可以包含多个链和规则。
    链(chain):链是在某个特定时刻应用规则的一个序列。
    规则(rule):规则定义了具体的过滤或者转换操作。
    集(set):集用于存储动态更新的数据,比如 IP 地址列表。

    4. 安装和基本配置
    在大多数现代 Linux 发行版上,nftables 通常已经预装。如果没有,可以使用包管理器安装:
    sudo apt-get install nftables # 对 Debian/Ubuntu 系统
    sudo yum install nftables # 对 CentOS/RHEL 系统
    启动和启用 nftables 服务:
    sudo systemctl start nftables
    sudo systemctl enable nftables
    添加规则: 通过添加规则来定义如何处理匹配的数据包。以下是一个允许进入系统的SSH连接的规则示例:
    nft add rule ip filter input tcp dport 22 accept
    保存规则: 默认情况下,nftables并不会自动将规则保存到磁盘上。你可以将规则保存到一个文件中,以便在系统重启后加载规则。将当前规则保存到文件中:
    nft list ruleset > /etc/nftables.conf
    加载规则: 要加载之前保存的规则文件,可以使用以下命令:
    nft -f /etc/nftables.conf
    删除规则: 如果需要删除某条规则,你可以使用nft delete命令。例如,删除之前创建的SSH连接规则:
    nft delete rule ip filter input tcp dport 22 accept
    清空规则: 要清空所有规则,可以使用以下命令:
    nft flush ruleset

    5. 示例:创建简单防火墙规则
    假设你需要创建一个防火墙规则,允许 SSH 连接并禁止所有其他连接。
    创建表和链:
    sudo nft add table inet filter
    sudo nft add chain inet filter input { type filter hook input priority 0 \; }
    添加规则:
    允许来自本地回环接口的流量
    sudo nft add rule inet filter input iif lo accept
    允许已建立和相关连接的流量
    sudo nft add rule inet filter input ct state established,related accept
    允许 SSH 连接
    sudo nft add rule inet filter input tcp dport ssh accept
    丢弃其他所有流量
    sudo nft add rule inet filter input drop
    查看规则:
    查看当前表和规则:
    sudo nft list ruleset
    输出可能类似于:

    bash 代码:
    table inet filter {
        chain input {
            type filter hook input priority 0; policy accept;
            iif "lo" accept
            ct state established,related accept
            tcp dport ssh accept
            drop
        }
    }

    6. 高级功能和使用技巧
    使用集(sets)
    在防火墙规则中,可以使用集来匹配动态变化的数据。下面是一个示例,防止来自特定 IP 地址的访问:
    创建一个集:
    sudo nft add set inet filter blacklist { type ipv4_addr \; }
    添加某个 IP 到集:
    sudo nft add element inet filter blacklist { 192.168.1.100 }
    修改规则引用集:
    sudo nft add rule inet filter input ip saddr @blacklist drop
    NAT 和转发
    nftables 也可以用于 NAT 和包转发。以下是一个简单的 NAT 示例:
    创建 NAT 表和链:
    sudo nft add table ip nat
    sudo nft add chain ip nat PREROUTING { type nat hook prerouting priority 0 \; }
    sudo nft add chain ip nat POSTROUTING { type nat hook postrouting priority 100 \; }
    添加规则:

    1. 将入站 NAT 流量转发到内网服务器
      sudo nft add rule ip nat PREROUTING tcp dport 80 dnat to 192.168.1.10
    2. 出站 NAT(伪装)规则
      sudo nft add rule ip nat POSTROUTING oif eth0 masquerade

    总结
    nftables 是一种强大且灵活的网络包过滤工具,是 iptables 的优秀继任者。它通过简洁的语法和高效的规则处理,提高了网络管理的效率和灵活性。通过对基本概念、安装配置、规则示例以及高级功能的学习和掌握,可以有效地利用 nftables 来保护和管理网络环境。

    声明:本文由 oneLN(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    我要发表评论 我要发表评论
    博客logo oneLN 时间就是力量,你的时间就是你的力量
    MOEICP 20240256

    💻️ oneLN 昨天 20:13 在线

    正在获取您的IP地址... 来访 人次, 查阅 次, 本页查阅

    🕛

    本站已运行 1 年 175 天 19 小时 35 分

    🌳

    自豪地使用 Typecho 建站,并搭配 MyLife 主题
    oneLN. © 2023 ~ 2024.
    网站logo

    oneLN 时间就是力量,你的时间就是你的力量