SNAT和DNAT原理及应用

384 阅读3分钟

当我们访问一个服务器的时候,客户端在局域网内是私网地址,访问的服务器也在局域网内也是私网地址,前者需要转换成公网地址访问服务器才能收到服务器的反馈,后者需要将自己的私网IP地址隐藏起来不暴露在公网中,以免受到攻击成为肉机或者矿机前者使用SNAT技术,后者使用DNAT技术

SNAT

  • 应用场景
    局域网主机共享单个公网IP地址接入Internet

image.png

  • 原理及应用
    源地址转换(Source Network Address Translation),修改数据包的源地址

客户端往网关服务器发数据包,通过网关服务器不进行转发,发送至需要访问的服务器,访问后,数据包回来的时候还是私网IP,原来的源IP作为目的IP进行传送,私网IP作为目的地址在互联网中会被丢弃,所以我们需要将IP进行转换,这样就能以公网IP的身份返回

  • 转换前提条件
    1.局域网各主机已正确设置IP地址、子网掩码、默认网关地址
    2.Linux网关开启IP路由转发

  • 小提示
    一个IP地址做SNAT转换,一般可以让内网100到200台主机实现上网

Linux网关开启IP路由转发

临时开启:

 echo 1 > /proc/sys/net/ipv4/ip_forward
 或
 sysctl -w net.ipv4.ip_forward=1

永久开启:

 vim /etc/sysctl.conf
 net.ipv4.ip_forward=1    #将此行写入配置文件

 sysctl -p     #读取修改后的配置

DNAT

  • 应用场景
    在Internet中发布内网服务器,保护自己的服务器不暴露在公网中,以免受到攻击

image.png

  • 原理
    目标地址转换(Destination Network Address Translation)
    修改数据包的目的地址

  • 转换条件
    1.局域网的web服务器能够访问Internet
    2.网关的外网IP地址有正确的DNS解析记录
    3.Linux网关支持IP路由转换

  • DNAT转换:发布内网的web服务

 #把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.72.10
 iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.254 -p tcp --dport 80 -j DNAT --to 192.168.72.102
 或
 iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.254 -p tcp --dport 80 -j DNAT --to 192.168.72.10-192.168.72.20

 #-A PREROUTING        //修改目标地址的链           
 #-i ens33             //入站网卡
 #-d 12.0.0.254        //数据包的目的地址
 #-p tcp --dport 80    //数据包的目的端口
 #-j DNAT              //使用DNAT功能
 #--to 192.168.109.11  //内网服务器IP

SNAT分离解析

实验准备
1、web服务器:192.168.137.10/24(VMnet1)

2、外网主机(win10客户机):12.0.0.200/24(VMnet2)

3、网关服务器:

ens33网卡地址:192.168.50.110/24(VMnet1)

ens37网卡地址:12.0.0.254/24(VMnet2)

配置网关服务器

配置网卡

增加一块网卡ens36

将ens33的网络模式设置为VMnet1(仅主机模式),地址设置为192.168.50.110

将ens36的网络模式设置为VMnet2(仅主机模式),地址设置为12.0.0.254

之后重启网络服务。

image.png

vim /etc/sysconfig/network-scripts/ifcfg-ens33

ens33: image.png

cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens37
vim /etc/sysconfig/network-scripts/ifcfg-ens37

ens37: image.png

image.png 关闭firewalld和selinux。开启路由转发功能。

image.png image.png 配置iptables策略

设置SNAT服务,解析源地址。修改nat表中的POSTROUTING链

image.png

设置DNAT服务,解析目的地址。修改nat表中的PRETROUTING链

image.png

配置DNS分离解析。

当内网解析ww.yuji.com时,将域名解析为:192.168.50.110

当外网解析ww.yuji.com时,将域名解析为:12.0.0.254

编辑主配置文件
vim /etc/named.conf image.png

image.png

编辑区域配置文件
vim /etc/named.rfc1912.zones image.png 配置内网解析地址库文件
vim ye.com.zone.lan image.png 配置外网解析地址库文件。之后启动named服务\

cp -p named.localhost yuji.com.zone.wan
vim yuji.com.zone.wan

image.png systemctl start named //启动named服务

配置web服务器

关闭firewalld和selinux

image.png 修改网卡配置。

将网络模式修改为VMnet1(仅主机模式)。

编辑网卡配置文件,将网卡地址设置为192.168.137.10,网关地址设置为192.168.137.137。

之后重启网络服务

image.png

image.png

image.png

安装httpd服务,启动服务。

安装httpd软件包,写一个网页,启动httpd服务。本地验证一下能否打开该网页

image.png