目录

  • 一、SNAT策略及应用
  • 1.1 SNAT策略概述
  • 1.2 SNAT的典型应用环境
  • 1.3 SNAT策略的工作原理
  • 1.3.1 未作SNAT转换时的情况
  • 1.3.2 进行SNAT转换后的情况(私网转公网)
  • 二、DNAT策略及应用
  • 2.1 DNAT策略概述
  • 2.2 DNAT的典型应用环境
  • 2.3 DNAT策略的工作原理
  • 2.3.1 进行DNAT转换后的情况(公网转私网)
  • 2.4 DNAT策略的应用
  • 三、规则的备份及还原
  • 3.1保存防火墙规则
  • 3.2备份防火墙规则
  • 3.3 导入(还原)规则
  • 3.4 清空所有防火墙规则
  • 3.5 设置具体的iptables规则
  • 四、实验
  • 4.1 Windows客户机设置
  • 4.2 web服务器设置
  • 4.3 防火墙设置
  • 4.3.1 配置网卡
  • 4.3.2 关闭防火墙,开启路由转发
  • 4.3.3 设置DNAT和SNAT地址映射
  • 4.4 实验结果验证


一、SNAT策略及应用

1.1 SNAT策略概述

  • SNAT策略的典型应用环境
  • 局域网主机共享单个公网IP地址接入Internet
  • SNAT策略的原理
  • 源地址转换,Source Network Address Translation
  • 修改数据包的源地址

1.2 SNAT的典型应用环境

  • 局域网共享上网

1.3 SNAT策略的工作原理

1.3.1 未作SNAT转换时的情况

iptables nat转发流程 iptables配置nat转发_服务器


因为私网地址是不可以直接访问公网的,如果不做转换,路由那边会形成黑洞抹杀数据

1.3.2 进行SNAT转换后的情况(私网转公网)

iptables nat转发流程 iptables配置nat转发_服务器_02


首先局域网PC机向Web服务器发送服务请求,源ip为192.168.1.234,目标ip为58.63.236.45,因为SNAT策略,网关服务器在数据进行路由选择后处理数据包,然后将私网的源地址转换成公网的地址,访问公网Web服务器

二、DNAT策略及应用

2.1 DNAT策略概述

  • DNAT策略的典型应用环境
  • 在Internet中发布位于企业局域网内的服务器
  • DNAT策略的原理
  • 目标地址转换,Destination Network Address Translation
  • 修改数据包的目标地址

2.2 DNAT的典型应用环境

  • 在Internet中发布内网服务器

2.3 DNAT策略的工作原理

2.3.1 进行DNAT转换后的情况(公网转私网)

iptables nat转发流程 iptables配置nat转发_服务器_03


客户机源地址:173.96.97.98 目标地址:218.29.30.31 向内网的Web服务器发出服务请求,因为DNAT策略,网关服务器在进行路由选择前处理数据包,将客户机数据的目标218.29.30.31换成192.168.1.6,这样就能访问私网服务器了

2.4 DNAT策略的应用

  • 前提条件
  • 局域网的Web服务器能够访问Internet
  • 网关的外网IP地址有正确的DNS解析记录
  • Linux网关支持IP路由转发
  • 实现方法示例:
[root@localhost ~]# iptables -t nat -A PREROUTING -i ens33-d 218.29.30.31-p tcp --dport 80 -j DNAT --to-destination 192.168.1.6
  • 发布时修改目标端口
  • 在DNAT规则中以“IP:Port”的形式指定目标地址
[root@localhost~]# iptables -t nat -A PREROUTING -i ens33-d 218.29.30.31-p tcp --dport 2346 -j DNAT --to-destination 192.168.1.6:22

三、规则的备份及还原

3.1保存防火墙规则

  • iptables-save
  • 由于iptables-save 命令只是把规则内容输出到屏幕上,因此当需要保存为固定的文件时,还需结合重定向输出的操作以完成备份。

3.2备份防火墙规则

  • iptables-save > /opt/iprules_all.txt
  • 将iptables规则保存到opt目录里iprules_all.txt

3.3 导入(还原)规则

  • iptables-restore < /opt/iprules_all.txt
  • 将保存了规则的文本导入到iptables里面

3.4 清空所有防火墙规则

  • 停用iptables服务即可一次清空所有表的规则
systemctl  stop iptables
systemctl  status iptables

3.5 设置具体的iptables规则

  • 清理已有的规则
  • 为了避免已有的防火墙规则造成干扰,通常会预先安排一个“清理”操作,删除所有表中用户自定义的链,清空所有链内的规则
$IPT   -t  filter  -X   //删除各表中自定义的链
$IPT   -t  filter  -F   //清空各表中已有的规

四、实验

4.1 Windows客户机设置

iptables nat转发流程 iptables配置nat转发_iptables nat转发流程_04


iptables nat转发流程 iptables配置nat转发_iptables nat转发流程_05

4.2 web服务器设置

  • 网卡为NAT模式,安装httpd服务
[root@localhost ~]# yum install httpd -y
[root@localhost ~]# systemctl start httpd
  • 修改为仅主机模式
  • 编辑网卡,设置IP地址
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
...省略内容
BOOTPROTO="static"	'//将dhcp修改为static'
...省略内容,末尾添加下面内容
IPADDR=192.168.10.10
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
[root@localhost ~]# systemctl restart network
[root@localhost ~]# ifconfig
  • 清空防火墙规则
[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -t nat -F

4.3 防火墙设置

4.3.1 配置网卡

  • 添加一张网卡,两张网卡都改为仅主机模式
  • 修改网卡IP地址
[root@firewall ~]# cd /etc/sysconfig/network-scripts/
[root@firewall network-scripts]# cp ifcfg-ens33 ifcfg-ens36
[root@firewall network-scripts]# vim ifcfg-ens33
...省略内容
BOOTPROTO="static"	'//将dhcp修改为static'
...省略内容。添加以下内容
IPADDR=192.168.10.1
NETMASK=255.255.255.0
[root@firewall network-scripts]# vim ifcfg-ens36
...省略内容
BOOTPROTO="static"	'//将dhcp修改为static'
...省略内容
NAME="ens36"	'//将ens33修改为ens36'
    		'//删除UUID'
DEVICE="ens36"	'//将ens33修改为ens36'
'//添加以下内容'
IPADDR=12.0.0.1
NETMASK=255.255.255.0
[root@firewall network-scripts]# systemctl restart network
[root@firewall network-scripts]# ifconfig

4.3.2 关闭防火墙,开启路由转发

[root@firewall network-scripts]# iptables -F	'//清空防火墙规则'
[root@firewall network-scripts]# iptables -t nat -F	'//清空DNAT和SNAT规则'
[root@firewall network-scripts]# vim /etc/sysctl.conf 
..省略内容,末行添加下段内容
net.ipv4.ip_forward=1	'//开启路由转发功能'
[root@firewall network-scripts]# sysctl -p	'//刷新sysctl.conf配置'
net.ipv4.ip_forward = 1

4.3.3 设置DNAT和SNAT地址映射

[root@firewall ~]# iptables -t nat -I PREROUTING -d 12.0.0.1 -p tcp --dport 80 -i ens36 -j DNAT --to-destination 192.168.10.10
[root@firewall ~]# iptables -t nat -I POSTROUTING -s 192.168.10.10/24 -o ens36 -j SNAT --to-source 12.0.0.1

4.4 实验结果验证

  • 客户端访问
  • web服务器查看日志访问记录
[root@localhost httpd]# cd /var/log/httpd
[root@localhost httpd]# cat access_log