目录
1、iptables介绍
2、iptables四表五链详解
3、iptables基本语法
4、实际操作
4.1 增加规则
4.2 删除规则
4.3 修改规则
5、命令语法总结
6、基本匹配条件
7、iptables进阶用法
7.1 iprange扩展模块
7.2 string扩展模块
8、iptables进行端口转发
1、iptables介绍
防火墙分类:从逻辑上分类
| 分类 | 说明 |
| 主机防火墙 | 针对单个主机进行防护 |
| 网络防火墙 | 处理网络入口或者边缘,针对网络入口进行防护 |
防火墙分类:从物理上分类
| 分类 | 说明 |
| 硬件防火墙 | 在硬件级别实现防火墙功能 |
| 软件防火墙 | 应用软件处理逻辑运行于通用硬件平台之上的防火墙 |
两个概念:
内核空间:也叫内核态,操作系统占据的内存区域
用户空间:也叫用户态,用户进程所在的内存区域
2、iptables四表五链详解

| 表 | 说明 |
| filter表 | 负责过滤功能,防火墙;内核模块:iptable_filter |
| nat表 | 网络地址转换功能;内核模块:iptable_nat |
| mangle表 | 拆解报文,做出修改;iptable_mangle |
| raw表 | 关闭nat表上启用的追踪机制;iptable_raw |
| 链 | 表 |
| prerouting | raw表,mangle表,nat表 |
| input | mangle表,filter表 |
| forward | mangle表,filter表 |
| output | raw表,mangle表,nat表,filter表 |
| postrouting | mangle表,nat表 |
表和链的关系:
| 表 | 链 |
| raw | prerouting,output |
| mangle | prerouting,input,forward,output,postrouting |
| nat | prerouting,output,postrouting |
| filter | input,forward,outpu |
优先级次序(由高到低): raw > mangle > nat > filter
3、iptables基本语法
处理动作
| 动作 | 含义 |
| ACCEPT | 允许数据包通过 |
| DROP | 直接丢弃数据包,不给任何回应信息 |
| REJECT | 拒绝数据包通过,客户端会收到拒绝的信息 |
| SNAT | 源地址转换 |
| DNAT | 目标地址转换 |
常用操作命令
| 常用操作命令 | 说明 |
| -A | 在指定链尾部添加规则 |
| -D | 删除匹配的规则 |
| -R | 替换匹配的规则 |
| -I | 在指定位置插入规则 |
| -F | 删除所有链的规则 |
常见设置参数
| 常见设置参数 | 说明 |
| --dport | 指定目标TCP/IP端口 |
| --sport | 指定源TCP/IP端口 |
| -p tcp | tcp协议 |
| -p udp | udp协议 |
| -j DROP | 拒绝 |
| -j ACCEPT | 允许 |
| -s 192.168.150.129 | 指定源地址或地址段 |
| -d 192.168.150.130 | 指定目标地址或地址段 |
4、实际操作
4.1 增加规则
选项说明:
-t :指定操作的表
-I :指定插入规则到哪个链中
-s :指定“匹配条件”中的源地址
-j :指定“匹配条件”中的动作
拒绝所有来自192.168.150.15的所有报文
iptables -I INPUT -s 192.168.150.15 -j DROP
效果展示:

再允许192.168.150.15的所有报文
iptables -I INPUT -s 192.168.150.15 -j ACCEPT
效果展示:

4.2 删除规则
iptables -D INPUT 1
4.3 修改规则
iptabels -R INPUT 1 -s 192.168.150.15 -j ACCEPT
效果展示:


5、命令语法总结
iptables -t 表名 -A 链名 匹配条件 -j 动作 #在规则尾部追加
iptables -t 表名 -I 链名 匹配条件 -j 动作 #在规则首部增加
iptables -t 表名 -I 链名 规则序号 匹配条件 -j 动作 #在链的指定位置添加
iptables - t 表名 -D 链名 规则序号 #按照规则序号删除规则
iptables -t 表名 -D 链名 匹配条件 -j 动作 #按照匹配条件个动作删除规则
iptables - t 表名 -P 链名 动作 #修改指定表的指定链的默认策略
iptables -F #删除所有规则
iptables -t 表名 -R 链名 规则序号 规则原本的匹配条件 -j 动作 #修改规则
6、基本匹配条件
# -s 用于匹配报文的源地址,可以同时指定多个源地址,每个IP之间用逗号隔开,也可以指定为一个网段。
iptables -t filter -I INPUT -s 192.168.150.15,192.168.150.16 -j DROP
# -d 用于匹配报文的目标地址,可以同时指定多个目标地址,每个IP之间用逗号隔开,也可以指定为一个网段。
iptables -t filter -I OUTPUT -d 192.168.150.15,192.168.150.16 -j DROP
# -p 用于匹配报文的协议类型,可以匹配的协议类型tcp,udp,udplite,icmp等等。
iptables -t filter -I INPUT -p tcp -s 192.168.150.15,192.168.150.16 -j DROP
# -i 用于匹配报文是哪个网卡接口流入本机的,由于匹配条件只是用于匹配报文的流入的网卡,所以OUTPUT链与POSTROUTING链中不能使用此选项。
iptables -t filter -I INPUT -p tcp -i ens33 -j DROP
7、iptables进阶用法
7.1 iprange扩展模块
使用iprange扩展模块可以指定“一段连续的ip地址范围”,用于匹配报文的源地址或者目标地址。
iprange扩展模块有两个扩展匹配条件可以使用:
- --src-range:源地址范围
- --dst-range:目标地址范围
- -m iprange:表示使用iprange扩展模块
iptables -t filter -I INPUT -m iprange --src-range 192.168.150.15-192.168.150.25 -j DROP
7.2 string扩展模块
使用string扩展模块,可以指定要匹配的字符串,如果报文中包含对应的字符串,则符合匹配条件。
- -m string:表示使用string扩展模块
- --algo:用于指定匹配算法,可选的算法有bm和kmp,此选项为必选。
- --string:用于指定需要匹配的字符串
iptables -t filter -I INPUT -m string --algo kmp --string "bit" -j DROP
# 网站有敏感字符串,用户访问不让响应
8、iptables进行端口转发
实例1:
将本机的8080端口转发至其他主机,主机IP:192.168.150.16,目标主机IP和端口:192.168.150.15:8088,规则如下;
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.150.15:8088
iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 8088 -j SNAT --to-source 192.168.150.16
echo 1 > /proc/sys/net/ipv4/ip_forward #开启iptables forward转发功能。
实例2:
访问本机的8080端口转发到本地的80端口
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-ports 80



![[附源码]SSM计算机毕业设计作业自动评阅系统JAVA](https://img-blog.csdnimg.cn/88c1daf617d04992be4583f51c5784e7.png)




![[Java] [Spring boot] Mybatis generator 生成Mapper.xml无效的问题](https://img-blog.csdnimg.cn/fdf00d5a1e7645049c117e8c65246144.png)




![[iOS]分析Mach-O文件](https://img-blog.csdnimg.cn/0543b9b0c74443f69d5856017eb5f802.png)



![[UE][C++]Assimp库安装编译,UE_Assimp插件安装使用,各种三维格式转换](https://img-blog.csdnimg.cn/ef81b2aa4eac431e80a2eba3376db560.png)

