防火墙中的SNAT 与DNAT

本文详细介绍了SNAT(源地址转换)和DNAT(目的地址转换)的工作原理,以及如何在Linux网络环境中配置SNAT和DNAT以实现内网与外网的访问。通过实例展示了如何在网关服务器上设置iptables规则来实现这两种转换,并验证了它们在实际场景中的效果。
摘要由CSDN通过智能技术生成

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访问位于私有网络内的服务器提供的服务。

  • 25
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值