一、SNAT:
1.应用环境
局域网主机共享单个公网IP地址接入Internet (私有IP不能在Internet中正常路由)
2.SNAT原理
- 源地址转换,根据指定条件修改数据包的源IP地址,通常被叫做源映谢
- 数据包从内网发送到公网时,SNAT会把数据包的源IP由私网IP转换成公网IP
- 当响应的数据包从公网发送到内网时,会把数据包的目的IP由公网IP转换为私网IP
3.SNAT转换前提条件
局域网各主机已正确设置IP地址、子网掩码、默认网关地址
Linux网关开启IP路由转发
linxu系统本身是没有转发功能,只有路由发送数据
4.开启SNAT:
1.临时打开:
echo 1 >/proc/sys/net/ipv4/ip_forward
或
sysctl -w net.ipv4.ip forward=1
2.永久打开
vim /etc/ sysctl. conf
net. ipv4.ip_ forward = 1 #将此行写入配置文件sysctl -P #读取修改后的配置
5.SNAT的转换:
1.固定的公网IP地址
#配置SNAT策略,实现snat功能,将所有192.168.37.0这个网段的ip的源ip改为10.0.0.1iptables -t nat -A POSTROUTING -s 192.168.37.0/24 -o ens33 -j SNAT --to 10.0.0.1可换成单独IP 出站外网网卡 外网IPiptables -t nat -A POSTROUTING -s 192.168.37.0/24 -o ens33 -j SNAT --to-source 10.0.0.1-10.0.0.10内网IP 出站外网网卡 外网IP或地址池
2.非固定的公网IP地址(共享动态IP地址)
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j MASQUERADEiptables -t nat -A POSTROUTING -s 12.0.0.0/24 -d 192.168.100.0/24 -j MASQUERADE一个IP地址做SNAT转换,一般可以让内网 100到200 台主机实现上网
6.SNAT实验:
运用SNAT策略将局域网中的客户机IP封装为网关服务器的外网IP,访问web服务器的http服务
添加网卡
cd /etc/sysconfig/network-scripts/ 切换绝对路径
cp ifcfg-ens33 ifcfg-ens36 复制模板
配置网卡ens36
重启网卡检验
vim /etc/sysctl.conf
0——》1开启路由转发功能
配置生效
配置防火墙策略:
[root@localhost network-scripts]#iptables -t nat -A POSTROUTING -s 192.168.91.0/24 -o ens36 -j SNAT --to 12.0.0.1#在出口的地方加 指定 POSTROUTING #指定源网段 192.168.91.0/24#出口网卡 ens36#将内网地址通过ens36网口,都转为12.0.0.1的外网地址
配置策略:
配置
测试:
内网访问外网
源内网地址转为源外网地址
二.DNAT:
1.DNAT定义:
DNAT 将私网中web服务器映射到公网IP,使其公网IP作为目标地址被公网中主机进行访问
2.DNAT原理
- 目标地址转换
- 修改数据包的目标地址
3.DNAT转换前提条件
- 局域网的服务器能够访问Internet
- 网关的外网地址有正确的DNS解析记录
- Linux网关开启IP路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysct1 -p
4.DNAT源地址转换过程:
- 数据包从外网发送到内网时,DNAT会把数据包的目标地址由公网IP转换成私网IP。
- 当相应的数据包从内网发送到公网时,会把数据包的源地址由私网IP转换为公网IP。
5.实验:
通过DNAT将web服务器的提供的httpd服务映射到网关服务器ens36网卡,且端口为80上面
DNAT 防火墙策略:
[root@localhost network-scripts]#iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.91.4#把从ens36进来的要访问web服务的数据包目的地址转换为192.168.91.4#指定目的地址为网关服务器的ens36外网网卡的IP地址,将web服务器的私网地址映射到网关服务器的外网IP
#指定目的端口为html:80 这里可以修改映射为其它端口,加强安全性
内网开启httpd服务:
测试:
三.SNAT和DNAT的区别
从定义上讲,SNAT是原地址转换,DNAT是目标地址转换。区分这两个功能可以简单的由服务的发起者是谁来区分,内部地址要访问公网上的服务时,内部地址会主动发起连接,将内部地址转换成公有ip。