当我们访问一个服务器的时候,客户端在局域网内是私网地址,访问的服务器也在局域网内也是私网地址,前者需要转换成公网地址访问服务器才能收到服务器的反馈,后者需要将自己的私网IP地址隐藏起来不暴露在公网中,以免受到攻击成为肉机或者矿机前者使用SNAT技术,后者使用DNAT技术
SNAT
- 应用场景
局域网主机共享单个公网IP地址接入Internet
- 原理及应用
源地址转换(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中发布内网服务器,保护自己的服务器不暴露在公网中,以免受到攻击
-
原理
目标地址转换(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
之后重启网络服务。
vim /etc/sysconfig/network-scripts/ifcfg-ens33
ens33:
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens37
vim /etc/sysconfig/network-scripts/ifcfg-ens37
ens37:
关闭firewalld和selinux。开启路由转发功能。
配置iptables策略
设置SNAT服务,解析源地址。修改nat表中的POSTROUTING链
设置DNAT服务,解析目的地址。修改nat表中的PRETROUTING链
配置DNS分离解析。
当内网解析ww.yuji.com时,将域名解析为:192.168.50.110
当外网解析ww.yuji.com时,将域名解析为:12.0.0.254
编辑主配置文件
vim /etc/named.conf
编辑区域配置文件
vim /etc/named.rfc1912.zones
配置内网解析地址库文件
vim ye.com.zone.lan
配置外网解析地址库文件。之后启动named服务\
cp -p named.localhost yuji.com.zone.wan
vim yuji.com.zone.wan
systemctl start named //启动named服务
配置web服务器
关闭firewalld和selinux
修改网卡配置。
将网络模式修改为VMnet1(仅主机模式)。
编辑网卡配置文件,将网卡地址设置为192.168.137.10,网关地址设置为192.168.137.137。
之后重启网络服务
安装httpd服务,启动服务。
安装httpd软件包,写一个网页,启动httpd服务。本地验证一下能否打开该网页