iptables
Linux系统的防火墙:IP信息包过滤系统,它实际上由两个组件netfilter和iptables组成。主要工作在网络层,针对IP数据包。体现在对包内的IP地址、端口、协议等信息的处理上。
1.四表五链
表中有链,链中有规则
- 表的作用:规定了具体的功能,如何处理数据包
- 链的作用:链是规则的集合,容纳管理存放各种防火墙规则。 规则就是判断是否可以通过,分为通过 和 不通过
- 规则作用:对数据包进行过滤和处理。 规则是立即生效。
1.1四表
| 表名 | 作用 |
|---|---|
| raw | 确定是否对该数据包进行状态跟踪。包含两个规则链,OUTPUT、PREROUTING |
| mangle | 修改数据包内容,用来做流量整形,给数据包设置标记。包含五个规则链,INPUT、 OUTPUT、 FORWARD、 PREROUTING、 POSTROUTING |
| nat | 负责网络地址转换,用来修改数据包中的源、目标IP地址或端口(通信五元素)。包含三个规则链,OUTPUT、 PREROUTING、 POSTROUTING |
| filter | 负责过滤数据包,确定是否放行该数据包(过滤)。包含三个规则链,INPUT、 FORWARD、 OUTPUT |
1.2五链
| 链名 | 作用 |
|---|---|
| INPUT | 处理入站数据包,匹配目标IP为本机的数据包。 |
| OUTPUT | 处理出站数据包,一般不在此链上做配置。 |
| FORWARD | 处理转发数据包,匹配流经本机的数据包。 |
| PREROUTING | 在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上。 |
| POSTROUTING | 在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网。 |
2.iptables命令及格式
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
-t nat filter 如果不指定 默认是filter
入
2.1 管理选项
| 选项 | 含义 |
|---|---|
| -v | 显示更详细的信息 |
| -n | 以数字形式显示 |
| -L | 防火墙里的规则列表,L必须在最后 |
| -A | 追加,后面跟链名,一般是INPUT链或者FORWARD链 |
| -I | 插入,-I后面加链名 和 编号 |
| -D | 删除,后面也是加链名 和 编号 |
| -R | 替换 |
| -F | 清空 |
2.2匹配条件
| 选项 | 含义 |
|---|---|
| -p | 指定协议匹配 |
| -s | 指定源地址匹配 |
| -d | 指定目标地址匹配 |
| -i | 指定入站网卡(静态网卡) |
| -o | 指定出站网卡(数据网卡 |
| - - sport | 指定源端口 |
| - -dport | 指定目标端口 |
| -j ACCEPT | 允许 数据包通过 |
| -j DROP | 直接丢弃,已读不回 |
| -j REJECT | 拒绝 |