当前位置: 首页 > article >正文

Linux内核中 Netfilter 框架的用户态工具iptables(配置防火墙规则)

iptables 是 Linux 内核中 Netfilter 框架的用户态工具,用于配置防火墙规则。

  1. 发送数据

    • 内核态:数据包从应用程序发出后,经过内核的 OUTPUT 链,匹配 iptables 规则(如过滤、NAT),然后进入 POSTROUTING 链,最终发送到网络接口。

    • 用户态iptables 工具用于定义和管理规则,规则通过系统调用传递给内核。

  2. 接收数据

    • 内核态:数据包进入网络接口后,经过 PREROUTING 链,匹配规则后进入 INPUT 链(本地处理)或 FORWARD 链(转发)。

    • 用户态:规则由 iptables 配置并传递给内核执行。

内核态负责数据包的实际处理,用户态负责规则的配置和管理。

例如:

iptables -A INPUT -s 100.1.1.35 -j DROP 是一条 iptables 规则,用于配置 Linux 防火墙。以下是该命令的详细解释:


命令结构

iptables -A INPUT -s 100.1.1.35 -j DROP
部分说明
iptablesLinux 中用于配置防火墙规则的工具。
-A INPUT表示将规则添加到 INPUT 链中。INPUT 链用于处理进入本机的数据包。
-s 100.1.1.35指定数据包的源 IP 地址为 100.1.1.35
-j DROP表示对匹配的数据包执行 DROP 动作,即丢弃数据包,不返回任何响应。

命令作用

这条规则的作用是:

  • 丢弃所有来自 IP 地址 100.1.1.35 的数据包

  • 数据包进入本机时,如果源 IP 地址是 100.1.1.35,则会被直接丢弃,不会到达应用程序。


详细解释

1. -A INPUT
  • -A:表示将规则追加(Append)到指定链的末尾。

  • INPUT:是 iptables 的一个内置链,用于处理进入本机的数据包。

2. -s 100.1.1.35
  • -s:指定数据包的源 IP 地址(Source IP)。

  • 100.1.1.35:具体的源 IP 地址。

3. -j DROP
  • -j:指定对匹配的数据包执行的动作(Jump)。

  • DROP:丢弃数据包,不返回任何响应。


示例场景

假设你希望阻止来自 IP 地址 100.1.1.35 的所有访问,可以使用这条规则:

iptables -A INPUT -s 100.1.1.35 -j DROP
  • 执行后,来自 100.1.1.35 的所有数据包都会被丢弃。

  • 例如:

    • 100.1.1.35 尝试 SSH 连接到本机,连接会被直接丢弃。

    • 100.1.1.35 尝试访问本机的 Web 服务,请求会被直接丢弃。


注意事项

  1. 规则的顺序

    • iptables 规则是按顺序匹配的,如果前面有允许规则,可能会覆盖这条规则。

    • 例如:

      iptables -A INPUT -s 100.1.1.35 -j ACCEPT
      iptables -A INPUT -s 100.1.1.35 -j DROP
      • 由于 ACCEPT 规则在前,DROP 规则不会生效。

  2. 持久化规则

    • 使用 iptables 添加的规则在重启后会失效。

    • 可以使用以下命令保存规则:

      iptables-save > /etc/iptables/rules.v4
    • 重启后恢复规则:

      iptables-restore < /etc/iptables/rules.v4
  3. 删除规则

方法 1:通过规则内容删除

直接使用 -D 参数删除规则,规则内容需要与添加时完全一致。

删除命令
iptables -D INPUT -s 100.1.1.35 -j DROP
  • -D:表示删除规则。

  • INPUT:规则所在的链。

  • -s 100.1.1.35:源 IP 地址。

  • -j DROP:动作(DROP)。


方法 2:通过规则编号删除

如果规则较多,可以通过规则编号删除。

  1. 查看规则及其编号

    iptables -L INPUT -v -n --line-numbers
    • 输出示例:

      Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
      num   pkts bytes target     prot opt in     out     source               destination
      1        0     0 DROP       all  --  *      *       100.1.1.35           0.0.0.0/0
  2. 根据编号删除规则

    iptables -D INPUT 1
    • 1 是规则的编号。


方法 3:清空整个链的规则

如果不需要保留其他规则,可以直接清空 INPUT 链的所有规则。

清空命令
iptables -F INPUT
  • -F:清空指定链的所有规则。


http://www.kler.cn/a/514850.html

相关文章:

  • 16_动态提示窗口_协程延时
  • QT调用OpenSceneGraph
  • OneData体系架构详解
  • 202009 青少年软件编程等级考试C/C++ 二级真题答案及解析(电子学会)
  • 2025年最新汽车零部件企业销售项目管理解决方案
  • Vue平台开发三——项目管理页面
  • Vue | 搭建第一个Vue项目(安装node,vue-cli)
  • ubuntu中xrandr多屏幕设置
  • 2024年智慧消防一体化安全管控年度回顾与2025年预测
  • ubuntu改变swap存储空间,遇到 fallocate 失败: 文本文件忙
  • SQL Server所有数据类型大全
  • Ollama在Docker下的安装与配置
  • Django学习笔记(启动项目)-03
  • Vue3.5 企业级管理系统实战(三):页面布局及样式处理 (Scss UnoCSS )
  • OpenCV边沿检测(Python版)
  • 本地部署DeepSeek-R1 1.5B
  • java ,springboot 对接支付宝支付,实现生成付款二维码,退款,查询订单状态等接口
  • 十三、数据的的输入与输出(3)
  • Android节点读写实现
  • 【影刀RPA_初级课程_影刀初相识】
  • 解决安装 Composer 依赖报错:“./composer.json“ does not match the expected JSON schema
  • 【QNX】QNX侧查看CPU的信息
  • 如何在Matplotlib中绘制多个Y轴刻度
  • Unity Line Renderer Component入门
  • IP所属地与上网地点:如何匹配?
  • 2024大模型双向突破:MoE架构创新与小模型崛起