iptables 工作过程整理

转载注明出处:

1.概念和工作原理

iptables是Linux系统中用来配置防火墙的命令。iptables是工作在TCP/IP的二、三、四层 ,当主机收到一个数据包后,数据包先在内核空间处理,若发现目标地址是自身,则传到用户空间中交给对应的应用程序处理,若发现目标不是自身,则会将包丢弃或进行转发。

1.1 四表:

  • filter(用于过滤)
  • nat(用于 NAT)
  • mangle(用于修改分组数据)
  • raw(用于原始数据包)

最常用的是filter 和 nat。

1.2 五链:

  • PREROUTING:用于路由判断前所执行的规则,比如,对接收到的数据包进行 DNAT。
  • POSTROUTING:用于路由判断后所执行的规则,比如,对发送或转发的数据包进行 SNAT 或 MASQUERADE。
  • OUTPUT: 类似于 PREROUTING,但只处理从本机发送出去的包。
  • INPUT: 类似于 POSTROUTING,但只处理从本机接收的包。
  • FORWARD

流入本机: PREROUTING --> INPUT-->用户空间进程

流出本机: 用户空间进程 -->OUTPUT--> POSTROUTING

**转发:**PREROUTING --> FORWARD --> POSTROUTING

**  内网至外网用postrouting SNAT**

**  外网至内网用prerouting DNA**

下图中白色背景方框,则表示链(chain)

2.iptables命令

2.1 链管理:

-N: new 自定义一条新的规则链

-X: delete 删除自定义的空的规则链

-P:policy 设置默认策略

ACCEPT:接受

DROP:丢弃

-E:重命名自定义链

2.2 查看:

-L: list

-n:以数字格式显示地址和端口号

-v:详细信息

2.3 规则管理:

-A : append 追加

-I:insert 插入

-D:delete 删除

-F:flush 清空指定规则链

-R:replace 替换指定链上的规则编号

-Z: zero :置零

3.iptables命令使用

iptables -L 列出规则,默认为filter表的规则。

iptables -t nat -L 列出nat表的规则。

复制代码
[root@node100 ~]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DOCKER     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
DOCKER     all  --  anywhere            !loopback/8           ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  172.17.0.0/16        anywhere

Chain DOCKER (2 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

iptables中的第一个选项可以是-A, 表明向链(chain)中添加一条新的规则,也可以是-I,表明将新的规则插入到规则集的开头。接下来的参数指定了链。

所谓链就是若干条规则的集合

OUTPUT链它可以控制所有的出站流量(outgoing traffic)。

**  INPUT链它能够控制所有的入站流量(incoming traffic)。**

  • -d指定了所要匹配的分组目的地址,
  • -s指定了分组的源地址。
  • -j指示iptables执行到特定的处理(action)
相关推荐
MilesShi3 小时前
从 scheduler_tick 到上下文切换:深入解析 Linux 内核的 TIF_NEED_RESCHED 标志设置流程
linux·运维·单片机
我爱云计算6 小时前
K8S详解(5万字详细教程)
linux·运维·云原生·容器·kubernetes
2301_794333918 小时前
实验室服务器配置|通过Docker实现Linux系统多用户隔离与安全防控
linux·服务器·docker·实验室
荣光波比9 小时前
Nginx 实战系列(一)—— Web 核心概念、HTTP/HTTPS协议 与 Nginx 安装
linux·运维·服务器·nginx·云计算
绿箭柠檬茶11 小时前
Ubuntu 使用 Samba 共享文件夹
linux·运维·ubuntu
工藤新一¹12 小时前
Linux —— 虚拟进程地址空间
linux·运维·服务器·c/c++·虚拟进程地址空间
Aspiresky13 小时前
浅析Linux内核scatter-gather list实现
linux·dma·scatter/gather
奔跑吧 android13 小时前
【linux kernel 常用数据结构和设计模式】【数据结构 3】【模拟input子系统input_dev和input_handler之间的多对多关系】
linux·数据结构·input·kernel·input_dev·input_handler·input_handle
再难也得平13 小时前
Linux初级篇
linux·运维·服务器
小猫挖掘机(绝版)14 小时前
通过tailscale实现一台电脑上vscode通过ssh连接另一台电脑上的VMware Linux 虚拟机
linux·windows·vscode·ubuntu·ssh