Gitlib Gitlib
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)

Ravior

以梦为马,莫负韶华
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)
  • 操作系统

    • 学习笔记

    • Shell

    • Linux命令

      • Linux常见命令
      • Liunx常用命令总结
      • Liunx命令之awk总结
      • Liunx命令之ip命令
      • Liunx命令之iptable命令
        • Liunx命令之lsof命令
        • Liunx命令之netstat总结
        • Linux命令之ss命令
        • Liunx命令之tcpdump命令
      • RAID分类详解
      • Page Cache与Page回写
      • 磁盘IO与swap分区
    • 计算机网络

    • 数据结构和算法

    • MySQL

    • Redis

    • Nginx

    • MongoDB

    • 其他

    • 计算机基础
    • 操作系统
    • Linux命令
    Ravior
    2017-02-04
    目录

    Liunx命令之iptable命令

    iptables是一个配置Linux内核防火墙的命令行工具, 功能十分强大。

    # iptables组成

    Tables -> Chains -> Rules
    
    1

    # 表(tables)

    • filter
    • nat
    • mangle
    • raw

    我们实际中使用最多的是filter表,nat表。

    # 链(chanins)

    每个table有多个链(Chains)

    # Filter表

    Filter表示iptables的默认表,如果没有自定义表,那么就默认使用filter表,它具有以下三种内建链:

    • INPUT链 – 处理来自外部的数据。
    • OUTPUT链 – 处理向外发送的数据。
    • FORWARD链 – 将数据转发到本机的其他网卡设备上。
    # NAT表

    NAT表有三种内建链:

    • PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
    • POSTROUTING链 – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。
    • OUTPUT链 – 处理本机产生的数据包。

    # 数据包通过iptables流程

    大概流程如下:

    • 数据经由互联网到达nat表的 PREROUTING
    • 数据到达filter表的INPUT
    • 数据通过防火墙,进入数据处理逻辑,处理后数据发出
    • 数据经由filter表的OUTPUT
    • 数据经有nat表的POSTROUTING
    • 数据传输到互联网

    我们也可以在数据到达 nat 表的 PREROUTING后,使用 filter表的FORWARD进行转发。 理解数据包流向很重要,这样我们就能很清楚的知道在哪个表哪个链增加对应的规则。

    # 命令

    iptables命令参数非常多。我们分为:配置命令、匹配条件、动作选项、模块选项,这样便于记忆。

    • 配置命令 指的ACDIF等命令,都是大写开头的简称,且一般不可省略,例如-A新增规则、-D删除规则。
    • 匹配条件 一般是小写,例如-t指定table,-i指定网卡接口,这些条件一般是可选的。
    • 动作选项 指的是-j指定的动作,可选值有:DROP、ACCEPT等。
    • 模块选项 指的是-m指定的参数。

    iptables命令格式如下:

    iptables [option] CHAIN_rule [-j target]
    
    1

    以下是一些常用iptables选项的列表:

    • –A, ––append 将规则添加到链中(最后)。
    • –I, ––insert 将规则添加到给定位置的链中。
    • –C, ––check 寻找符合链条要求的规则。
    • –D, ––delete 从链中删除指定的规则。
    • –F, ––flush 删除对应表的所有规则,慎重使用。
    • –L, ––list 连锁显示所有规则。
    • –v, ––verbose 使用列表选项时显示更多信息。
    • -P, --policy 设置链的默认策略(policy)
    • -N, --new 创建用户自定义链
    • -X, --delete-chain 删除用户自定义链
    • -E, --rename-chain 重命名用户自定义链

    iptables区分大小写,因此请确保使用正确的选项。更多参数可以输入iptables --help查看。

    # 新增规则(-A)

    -A <链名>
      Append, 追加一条规则(放到最后)
    
    1
    2

    Example:

    # -i条件指定网卡接口
    # -s条件指定数据包的源地址
    # -j指定动作选项为DROP, 丢弃数据
    iptables -A INPUT -i eth0 -s 172.18.0.3 -j DROP
    
    1
    2
    3
    4

    上面的命令会在 filter 表的 INPUT 链里追加一条规则:对于来自172.18.0.3经由 eth0接口的数据,直接丢弃。

    #Linux
    上次更新: 2022/12/01, 11:09:34
    Liunx命令之ip命令
    Liunx命令之lsof命令

    ← Liunx命令之ip命令 Liunx命令之lsof命令→

    最近更新
    01
    常用游戏反外挂技术总结
    11-27
    02
    Golang开发实践万字总结
    11-11
    03
    Redis万字总结
    10-30
    更多文章>
    Theme by Vdoing | Copyright © 2011-2022 Ravior | 粤ICP备17060229号-3 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式