Skip to content

iptables学习记录

iptables是linux系统中控制网络报文进出网卡及转发的控制服务。

iptables的网络模型

软件中主要是有 五链 四表 堵通策略

五链

PREROUTING, 路由前,过滤从网卡到达的报文

POSTROUTING, 路由后,过滤离开到网卡的报文

INPUT, 报文入口,过滤进入操作系统的报文(与进程交互)

OUTPUT, 报文出口,过滤离开操作系统的报文(与进程交互)

FORWARD, 转发管卡,过滤直接转发到指定网卡的报文

四表

FILTER:

报文是否允许通过,主要作为防火墙

支持:INPUT,OUTPUT,FORWARD

NAT:

转换报文的地址(源地址,目的地址)

支持:PREROUTING,POSTROUTING,INPUT,OUTPUT

MANGLE:

修改报文中的源数据

在应用中使用的少

支持:PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD

RAW:

记录NAT表中连接的记录

报文流向

发送到本机某进程的报文:PREROUTING -> INPUT

本机某进程发出的报文:OUTPUT -> POSTROUTING

由本机转发的报文:PREROUTING -> FORWARD

堵通策略

堵通策略指的是规则对报文的操作

  1. 允许(ACCEPT),丢(DROP),拒绝(REJECT)

    这里ACCEPT应该不用介绍了,主要介绍堵的两种策略。DROP会直接丢弃报文,可能使具有重试策略的远程重传数据。使用REJECT会回复拒绝。能够避免远程重传数据造成带宽和网卡的资源浪费,但是可能暴露信息给攻击者。

  2. 源地址转换(SNAT),目标地址转换(DNAT)

    这两个转换分别是修改报文的源地址和目的地址,SNAT通常用于将内网地址转换为公网。DNAT通常用于将外部请求转发至内网中的服务。

  3. REDIRECT(端口转发)

    将报文从目标端口转发到另一个端口上,通常用于实现端口映射或负载均衡

  4. 返回(RETURN)

    结束当前规则链,将控制器返回到调用该规则的上一级规则链

  5. 只记录日志(LOG)

    将匹配该规则的报文记录进日志,不做其他处理

总结

iptables五链

iptables命令的使用

以下是打印filter表中存在的规则的命令

shell
iptables -t filter -L -n

-t 选择打印的表 (filter是默认表)

-L 把表列出来

-n 打印的时候带行号

以下是在filter表中添加规则的命令

shell
iptables -t filter -A  INPUT -j DROP -p tcp --dport 8081

-t 选择打印的表 (filter是默认,可以不写)

-A 添加规则(-A append 在末尾添加,-I insert在头部添加)

-j 丢弃匹配的报文

-p 指定生效的协议