SNAT:让内网机器可以访问外网服务器
DNAT:让外网机器可以访问内网服务器
SNAT的原理
源地址转换,根据指定条件修改数据包的源IP地址,通常被叫做源映射
数据包从内网发送到公网时,SNAT会把数据包的源IP由私网IP转换成公网IP
当响应的数据包从公网发送到内网时,会把数据包的目的IP由公网IP转换为私网IP切记:私网地址永远不会出现在公网地址上
SNAT转换前提条件
局域网各主机已正确设置IP地址、子网掩码、默认网关地址
Linux网关开启IP路由转发
linxu系统本身是没有转发功能 只有路由发送数据
效果图:
模拟实验:7-1 表示网关
7-2表示内网服务器
7-3表示外网服务器
第一步,所有机器关闭防火墙,核心防护
7-1网关配置
第一步,先添加网卡,因为有两个网卡 一个外网,一个内网
ens36为外网网卡 ens33为内网网卡,vens33跟ens36都是网关 切换到网卡配置中,修改ens36网卡的配置内容
随后,重启network服务,查看ens36虚拟网卡
然后修改ens33 ,因为为网关,所以ip跟网关都设置成一样的
随后,开启路由转发的功能
配置文件的内容:
7-2内网服务器配置
因为内网服务器跟网关连接,所以7-2的网关要设置成7-1内网的ip地址
随后,重启网关服务,查看网关
随后给网页写个内容
7-3外网服务器配置
随后,重启 ,因为是不同网段,所以断开连接了 去虚拟机上面操作
随后,给外网页面写点东西
进入xshell,用7-2 内网去curl 7-3外网
可以看见互通,使用虚拟机做实验默认是互通的,在生产环境中内网跟外网没有SNAT是没办法互通的
随后,再进入虚拟机,查看外网的日志 可以看出有7-2内网服务器的ip地址
然后进入7-1网关服务器上,修改iptables的转换规则
ptables -t nat -A POSTROUTING -s 192.168.68.0/24 -o ens36 -j SNAT --to 12.0.0.1
验证,在xshell用内网去访问外网服务器,然后再去虚拟机上面查看日志
方法二:未知公网地址 MASQUERADE 伪装 当不知道公网地址的时候,可以使用此项
验证一下,在内网服务器去curl公网服务器
然后在虚拟机查看日志
DNAT
DNAT应用环境:
在Internet中发布位于局域网内的服务器
②DNAT原理:
目的地址转换,根据指定条件修改数据包的目的IP地址,保证了内网服务器的安全,通常被叫做目的映射。
③DNAT转换前提条件:
DNAT转换前提条件:
1.局域网的服务器能够访问Internet
2.网关的外网地址有正确的DNS解析记录 3. Linux网关开启IP路由转发
实验:外网主机访问网关服务器地址,通过DNAT实现访问内网服务器
配置网卡跟ip地址的路由跟上面步骤是一样的
要在7-1网关服务器上面设置iptables的转换规则
iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.68.4
随后,在虚拟机上面的外网服务器去curl一下12.0.0.1,curl12.0.0.1出现的是内网服务器的网页内容,表明去连外网网关,就等于访问内网服务器
然后查看内网的日志,DNAT改变的是目的地址,所以访问的ip地址不会改变
iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.254 -p tcp --dport 80 -j DNAT --to 192.168.68.4
iptables -t nat:指定操作在NAT表上
-A PREROUTING:在PREROUTING链中追加一条新规则。数据包在进入本机并进行路由 决策之前,PREROUTING链上的规则会被执行
-i ens36:仅针对从名为ens36的网络接口进入的数据包应用此规则。
-d 12.0.0.1:匹配目标IP地址为12.0.0.1的数据包
-p tcp --dport 80:进一步限定仅当数据包是TCP协议且目标端口号为80时才进行转换
-j DNAT:执行DNAT动作,即改变数据包的目标IP地址
--to 192.168.68.4:将满足上述条件的数据包的目标IP地址更改为此特定IP地址(192.168.68.4)
#总结起来,这条规则的效果是:所有发往公网IP地址12.0.0.1且目标端口为80的TCP数据包,在到达本地主机并准备转发到内部网络之前,其目标IP地址都会被转换成192.168.68.4。这通常用于对外发布服务,使得外部用户可以通过公网IP访问位于私有网络内的服务器提供的服务。