我是靠谱客的博主 着急柚子,最近开发中收集的这篇文章主要介绍iptables--SNAT和DNAT的配置一、iptables表、链结构的概述二、 iptables的基本语法三、SNAT和DNAT 实验,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  • 一、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 ~]# ifconfig ens36
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 ~]# iptables -F
## 清空防火墙
[root@promote ~]# setenforce 0
## 关闭核心防护

3.2 外部服务器配置

  • 网卡配置
[root@localhost ~]# ifconfig ens33
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
  • 开启apache服务
[root@promote ~]# yum -y install httpd
[root@promote ~]# systemctl start httpd
[root@promote ~]# iptables -F
## 清空防火墙
[root@promote ~]# setenforce 0
## 关闭核心防护

3.3 内部服务器配置

[root@promote httpd]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.233.50
NETMASK=255.255.255.0
GATEWAY=192.168.233.200
  • 开启apache服务
[root@promote ~]# yum -y install httpd
[root@promote ~]# systemctl start httpd
[root@promote ~]# iptables -F
## 清空防火墙
[root@promote ~]# setenforce 0
## 关闭核心防护

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 实验所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部