目录
②配置pc3服务端,安装httpd服务修改网卡ip为12.0.0.100/24--网关为12.0.0.254,然后重启网卡
③配置pc1客户端,修改网卡ip为192.168.111/24--网关192.168.170.12,然后重启网卡
④配置pc2网关服务器,首先配置ens33和ens36网卡的ip地址
注意:删除ens36的uuid并且修改name跟device选项的名称
⑥检测pc1 pc2 pc3三台机器之间是否互通(使用虚拟机做实验默认是互通的,是由于处于同一环境中,生产环境内网和外网没有SNAT的情况下是不同的)
⑦在pc1上curl服务端IP,然后在服务端实时查看/var/log/httpd/access_log日志。可查看到源ip为pc1的ip,所以是未经过nat的,生产环境中不可能直接curl通
⑧在pc2中添加防火墙规则使得来源于192.168.170.0/24网段的所有从ens36网卡流出数据的IP全部nat为12.0.0.254.然后再使用pc1去curl服务端实时查看日志。
①先给三台机器做SNAT,因为做DNAT之后内网的pc1需要通过SNAT给公网的用户返回数据包。
②在内网pc1上安装一个httpd服务并开启,作为内网的业务服务器
④然后实时查看pc1的/var/log/httpd/access_log日志,使用pc3公网网址直接curlpc1,可以看见日志中的源地址。
一、SNAT
1、SNAT的应用环境
局域网主机共享单个公网IP地址接入internet(私有IP不能在internet中正常路由)
2、SNAT的原理
源地址转换,根据指定条件修改数据包的源IP地址,通常被叫做源映射
数据包从内网发送到公网时,SNAT会把数据包的源IP由私网IP转换成公网IP
当响应的数据包从公网发送到内网时,会把数据包的目的IP由公网IP转换为私网IP
3、SNAT转换前提条件
①局域网各个主机已正常设置ip地址,子网掩码,默认网关地址
②Linux网关开启IP路由转发
③Linux系统本身是没有转发功能的,只有路由发送数据
二、开启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 #读取修改后的配置
3、SNAT的转换
①固定的公网IP地址
#配置SNAT策略,实现snat功能,将所有192.168.100.0这个网段的ip的源ip改为10.0.0.1
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to 10.0.0.1
可换成单独IP 出站外网网卡 外网IP
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to-source 10.0.0.1-10.0.0.10
内网IP 出站外网网卡 外网IP或地址池
三、SNAT实验
1、实验目的
公司内两台机器,但是只有一个公网IP,利用SNAT技术实现2台私网地址都可以访问公网
2、SNAT实验环境准备
①三台服务器:pc1 pc2 pc3
②硬件要求:pc1 和pc3只需要一个网卡,pc2需要两个网卡
③网络模式要求:pc1 为nat模式,pc2中作为pc1网关的网卡为nat模式
④IP地址的要求:pc1为192.168.170.111网关为192.168.170.113,pc2的网关的ens33网卡地址为192.168.170.0/24网关为192.168.170.0 ens36为12.0.0.1/24不需要网关,pc3为12.0.0.100/24网关为12.0.0.1
3、实验开始
①关闭三台机器的防火墙和selinux
三台机器全部执行:
systemctl stop firewalld
setenforce 0
②配置pc3服务端,安装httpd服务修改网卡ip为12.0.0.100/24--网关为12.0.0.254,然后重启网卡
PC3执行:
vim /etc/sysconfig/network-script/ifcfg-ens33
文本添加内容:
IPADDR=12.0.0.100
NETMASK=255.255.255.0
GATEWAY=12.0.0.254
③配置pc1客户端,修改网卡ip为192.168.111/24--网关192.168.170.12,然后重启网卡
PC1执行:
vim /etc/sysconfig/network-script/ifcfg-ens33
文本添加内容:
IPADDR=192.168.170.11
NETMASK=255.255.255.0
GATEWAY=192.168.170.12
④配置pc2网关服务器,首先配置ens33和ens36网卡的ip地址
PC2执行:
vim /etc/sysconfig/network-script/ifcfg-ens33
文本添加内容:
IPADDR=192.168.170.12
NETMASK=255.255.255.0
GATEWAY=192.168.170.12
cp /etc/sysconfig/network-script/ifcfg-ens33 /etc/sysconfig/network-script/ifcfg-ens36
#复制ens33配置文件给ens36网卡,新增网卡不会有配置文件
ens36配置文件修改:将UUID此行删除,修改ip和网关
IPADDR=12.0.0.254
NETMASK=255.255.255.0
注意:删除ens36的uuid并且修改name跟device选项的名称
⑤开启pc2网关服务器的路由转发功能,重启网卡
⑥检测pc1 pc2 pc3三台机器之间是否互通(使用虚拟机做实验默认是互通的,是由于处于同一环境中,生产环境内网和外网没有SNAT的情况下是不同的)
⑦在pc1上curl服务端IP,然后在服务端实时查看/var/log/httpd/access_log日志。可查看到源ip为pc1的ip,所以是未经过nat的,生产环境中不可能直接curl通
⑧在pc2中添加防火墙规则使得来源于192.168.170.0/24网段的所有从ens36网卡流出数据的IP全部nat为12.0.0.254.然后再使用pc1去curl服务端实时查看日志。
PC2执行:
iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -o ens36 -j SNAT --to 12.0.0.254
# -t nat 指定使用nat表
# -A POSTROUTING 添加在数据流出链,原因为在输出时添加只需要添加一次。
# -s 指定源ip
# -o 指定输出网卡为ens36时
# -j 指定跳转到SNAT处理
# --to 指定SNAT nat为12.0.0.254这个地址
4、实验结果
不经过nat的地址为pc1自己的地址,使用虚拟机环境才会出现这种情况,生成环境是不通的。经过nat之后的地址才是公司的公网ip地址,由网关服务器iptables规则SNAT实现。
四、DNAT
1、DNAT实验目的
为了保护公司业务服务器安全,业务服务器在私网中,从公网访问的用户只能通过nat为服务器的私网网关地址才可访问。
2、DNAT实验环境准备
①三台服务器:PC1客户端、PC2网关、PC3服务端。
②硬件要求:PC1和PC3均只需一块网卡、PC2需要2块网卡
③网络模式要求:三台主机都为NAT模式
④IP地址要求:PC1为192.168.170.111/--网关为192.168.170.113、PC2网关的ens33网卡地址为192.168.170.113/24--网关为192.168.170.113、ens36为12.0.0.1/24--不需要网关、PC3为12.0.0.100/24--网关为12.0.0.1
3、实验拓扑
4、实验步骤
①先给三台机器做SNAT,因为做DNAT之后内网的pc1需要通过SNAT给公网的用户返回数据包。
②在内网pc1上安装一个httpd服务并开启,作为内网的业务服务器
③pc2网关服务器上配置DNAT规则
PC2执行:
iptables -t nat -A PREROUTING -d 12.0.0.1 -i ens36 -p tcp --dport 80 -j DNAT --to 192.168.170.113
# 从ens36网卡进入的流量目的地址为12.0.0.254目的端口为80的tcp协议NAT处理为访问192.168.170.113
# -t nat 指定使用nat表
# -A PREROUINTG 添加在路由选择前数据进入链,在输入时直接判断。
# -d 指定目的ip
# -i 指定输出网卡为ens36时
# -p 指定协议为tcp协议
# --dport 指定目的端口为80
# -j 指定跳转到DNAT处理
# --to 指定DNAT nat到192.168.30.12这个地址
④然后实时查看pc1的/var/log/httpd/access_log日志,使用pc3公网网址直接curlpc1,可以看见日志中的源地址。
⑤实验结果
经过DNAT之后的用户访问公网的网关即会跳转到内网的httpd服务中。pc1内网日志会显示访问的源公网IP