概述
目录
- 一、iptables表、链结构的概述
- 1.1 规则链
- 1.2 默认包括的5个规则链
- 1.3 规则表
- 1.4 默认包括四个规则表
- 1.5 表、链的具体对应关系
- 1.6 数据包过滤的匹配流程
- 1.7 规则链内的匹配顺序
- 二、 iptables的基本语法
- 2.1 基本语法结构
- 2.2 数据包的常见控制类型
- 2.3 管理选项
- 2.4 规则的匹配条件
- 三、SNAT和DNAT 实验
- 3.1 防火墙配置
- 3.2 外部服务器配置
- 3.3 内部服务器配置
- 3.3 SNAT与DNAT规则的配置
一、iptables表、链结构的概述
1.1 规则链
- 规则的作用:对数据包进行过滤或处理
- 链的作用:容纳各种防火墙规则
- 链的分类依据:处理数据包的不同时机
1.2 默认包括的5个规则链
链名 | 作用 |
---|
INPUT | 处理入站数据包 ## 进防火墙读 |
OUTPU | 处理出站数据包 出防火墙读 |
FORWARD | 处理转发数据包 在数据包进入防火墙还未出去时处理,即转发时处理 |
POSTROUTING | 在进行路由选择后处理数据包 ## NAT的时候用的 防火墙也可以做NAT功能 由内向外时用,先查路由表 |
PREROUTING | 在进行路由选择前处理数据包 ## 也是NAT的时候用的 外面访问里面的时候用 做映射的时候 先转换目标IP 再查询 |
1.3 规则表
- 表的作用:容纳各种规则链
- 表的划分依据: 防火墙规则的作用相似
1.4 默认包括四个规则表
表名 | 作用 |
---|
raw表 | 确定是否对该数据包进行状态追踪 DBUG测试的时候用 |
mangle表 | 为数据包设置标记 打完标记 raw追踪 这两个表配合使用 |
nat表 | 修改数据包中的源、目标IP地址或端口 地址转换用到,IP映射,端口映射 都会用到 |
filter表 | 确定是否放行该数据包 ## 核心 用的最多,数据转发一定会用到,默认用的就是这个 表 |
1.5 表、链的具体对应关系
表 | 链 |
---|
raw 表 | PREROUTING链 OUTPUT链 |
mangle表 | PREROUTING链 POSTROUTING链 INPUT链 OUTPUT链 FORWARD链 |
nat表 | PREROUTING链 POSTROUTING链 OUTPUT链 |
filter表 | INPUT链 FORWARD链 OUTPUT链 |
1.6 数据包过滤的匹配流程
- 规则表之间的顺序
raw-mangle-nat-filter - 规则链之间的顺序
入站:PREROUTING-INPUT
出站:OUTPUT-POSTROUTING
转发:PREROUTING-FORWARD-POSTROUTING
1.7 规则链内的匹配顺序
- 按顺序依次检查,匹配即停止(log策略例外)
- 若找不到相匹配的规则,则按该链的默认策略处理
二、 iptables的基本语法
2.1 基本语法结构
iptables [-t 表名 ] 选项 [ 链名 ] [ 条件] [ -j 控制类型]
- 注意事项
不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链
除非设置链的默认策略,否则必须指定匹配条件
选项、链名、控制类型、使用大写字母,其他用小写。
2.2 数据包的常见控制类型
控制类型 | 解释 |
---|
ACCEPT | 允许通过 |
DROP | 直接丢弃,不给出任何提示 |
REJECT | 拒绝通过,必要时会给出提示 |
LOG | 记录日志信息,然后传给下一条规则继续匹配 |
2.3 管理选项
类别 | 选项 | 用途 |
---|
添加新的规则 | -A | 在链的末尾追加一条规则 |
添加新的规则 | -I | 在链的开头,或指定序号插入一条规则 |
查看规则列表 | -L | 列出所有的规则条目 |
查看规则列表 | -n | 以数字的形式显示地址、端口等信息 |
查看规则列表 | -v | 以更详细的方式显示规则 |
查看规则列表 | -line-numbers | 查看规则时,显示序列号 |
清空、删除规则 | -D | 删除链内指定序号(或内容)的一条规则 |
清空、删除规则 | -F | 清空所有的规则 |
设置默认策略 | -P | 为指定的链设置默认规则 |
2.4 规则的匹配条件
- 通用匹配
可直接使用,不依赖于其他条件或扩展
包括网络协议、IP地址、网络接口等条件 - 隐含匹配
要求以特定的协议匹配作为前提
包括端口、TCP标记、ICMP 类型等条件 - 显示匹配
要求以 “-m 扩展模块”的形式明确指出类型
包括多端口、MAC地址、IP范围、数据包状态等条件。
类别 | 条件类型 | 用法 |
---|
通用匹配 | 协议匹配 | -p 协议名 |
通用匹配 | 地址匹配 | -s 源地址 -d 目的地址 |
通用匹配 | 接口匹配 | - i 入站网卡 -o 出站网卡 |
隐含匹配 | 端口匹配 | -sport 源端口 -dport 目的端口 |
隐含匹配 | ICMP类型匹配 | -icmp-type ICMP类型 |
显示匹配 | 多端口匹配 | -m multiport --sports |
显示匹配 | IP范围匹配 | -m iprange --src-range IP范围 |
显示匹配 | MAC | -m mac --mac-source MAC地址 |
显示匹配 | 状态匹配 | -m state --state 连接状态 |
三、SNAT和DNAT 实验
- 实验环境
三台CentOS 7.6 虚拟机
一台 配置双网卡代表防火墙,ens33代表内网网关 ens36网卡 代表外部网关
另一台代表外部服务器 ens33网卡 与ens36在同一网段 互通
一台代表内部服务器 ens33网卡 与防火墙ens36在同一网段 互通 - 实验步骤
双网卡的虚拟机与另一台虚拟机都开启apache服务
清空双网卡防火墙规则 配置SNAT与DNAT规则 - 实验目的
内部双网卡虚拟机 访问对方网站,对方日志记录为 SNAT规则指定的地址访问
外部通过访问 DNAT规则配置的地址,访问内部服务器网站,内部服务器网站日志记录访问的地址来自DNAT规则配置的地址
3.1 防火墙配置
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>
mtu 1500
inet 192.168.233.200
netmask 255.255.255.0
broadcast 192.168.233.255
inet6 fe80::1199:c740:2050:ac62
prefixlen 64
scopeid 0x20<link>
ether 00:0c:29:e7:9d:50
txqueuelen 1000
(Ethernet)
RX packets 275
bytes 27081 (26.4 KiB)
RX errors 0
dropped 0
overruns 0
frame 0
TX packets 274
bytes 23792 (23.2 KiB)
TX errors 0
dropped 0 overruns 0
carrier 0
collisions 0
[root@promote ~]
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>
mtu 1500
inet 12.0.0.1
netmask 255.255.255.0
broadcast 12.0.0.255
inet6 fe80::2497:36b:6870:267f
prefixlen 64
scopeid 0x20<link>
ether 00:0c:29:e7:9d:5a
txqueuelen 1000
(Ethernet)
RX packets 133
bytes 11554 (11.2 KiB)
RX errors 0
dropped 0
overruns 0
frame 0
TX packets 40
bytes 4960 (4.8 KiB)
TX errors 0
dropped 0 overruns 0
carrier 0
collisions 0
[root@promote ~]
[root@promote ~]
3.2 外部服务器配置
[root@localhost ~]
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>
mtu 1500
inet 12.0.0.12
netmask 255.255.255.0
broadcast 12.0.0.255
inet6 fe80::9c9:3acb:1c5f:375a
prefixlen 64
scopeid 0x20<link>
ether 00:0c:29:71:b6:ad
txqueuelen 1000
(Ethernet)
RX packets 150
bytes 14661 (14.3 KiB)
RX errors 0
dropped 0
overruns 0
frame 0
TX packets 43
bytes 5479 (5.3 KiB)
TX errors 0
dropped 0 overruns 0
carrier 0
collisions 0
[root@promote ~]
[root@promote ~]
[root@promote ~]
[root@promote ~]
3.3 内部服务器配置
[root@promote httpd]
IPADDR=192.168.233.50
NETMASK=255.255.255.0
GATEWAY=192.168.233.200
[root@promote ~]
[root@promote ~]
[root@promote ~]
[root@promote ~]
3.3 SNAT与DNAT规则的配置
iptables -t nat -I PREROUTING -d 12.0.0.1 -i ens36 -p tcp --dport 80 -j DNAT
--to-destination 192.168.233.200
iptables -t nat -I POSTROUTING -s 192.168.233.200 -o ens36 -j SNAT --to-source 12.0.0.1
最后
以上就是着急柚子为你收集整理的iptables--SNAT和DNAT的配置一、iptables表、链结构的概述二、 iptables的基本语法三、SNAT和DNAT 实验的全部内容,希望文章能够帮你解决iptables--SNAT和DNAT的配置一、iptables表、链结构的概述二、 iptables的基本语法三、SNAT和DNAT 实验所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复