本文为博主原创,转载请注明出处:

  SNAT(Source Network Address Translation,源网络地址转换)和DNAT(Destination Network Address Translation,目标网络地址转换)是网络地址转换(NAT)中的两种重要技术,它们在实现内部网络与外部网络之间的通信中发挥着关键作用。以下是对这两种技术的详细解释和它们的主要用途:

一、SNAT(源网络地址转换)

定义: SNAT是一种在IP数据包从内部网络发送到外部网络时,将源IP地址替换为公共IP地址的技术。这种转换允许内部网络中的多台设备通过共享一个或多个公共IP地址来访问外部网络。

工作原理: 当内部网络中的设备发送数据包到外部网络时,数据包经过NAT设备(如路由器或防火墙),NAT设备会自动将数据包的源IP地址替换为配置的公共IP地址。这样,外部网络中的设备看到的所有来自内部网络的数据包都似乎来自同一个公共IP地址。

主要用途

  1. 地址共享:允许多个内部设备共享一个或多个公网IP地址访问互联网,从而节省公网IP资源。

  2. 负载均衡:在负载均衡场景中,SNAT可以将内部服务器的源IP地址替换为负载均衡器的IP地址,以实现流量分发和负载均衡。

  3. 安全性:通过隐藏内部网络的实际IP地址,SNAT可以增强内部网络的安全性,防止外部直接攻击内部设备。

  4. 简化网络配置:使用SNAT可以在规划地址时有更大的灵活性,简化内部网络的设计和配置。

二、DNAT(目标网络地址转换)

定义: DNAT是一种在IP数据包从外部网络发送到内部网络时,将目标IP地址替换为内部网络中的IP地址的技术。这种转换允许外部网络中的设备通过公共IP地址访问内部网络中的特定设备或服务。

工作原理: 当外部网络中的数据包到达NAT设备时,NAT设备会检查数据包的目标IP地址和端口号,并根据配置的DNAT规则将其替换为内部网络中的相应IP地址和端口号。然后,数据包被转发到内部网络中的指定设备。

主要用途

  1. 端口映射:将外部网络中的公共IP地址和端口号映射到内部网络中的私有IP地址和端口号,实现远程访问、网站托管等功能。

  2. 负载均衡:在将外部流量分发到内部多个服务器时,DNAT可以根据负载均衡策略将流量转发到不同的服务器。

  3. 安全性:通过隐藏内部网络的实际IP地址和端口号,DNAT可以在一定程度上增强内部网络的安全性。

三、场景示例

场景假设

  • 内部网络:192.168.1.0/24

  • 外部网络:互联网,假设通过ISP获得的公网IP为1.2.3.4

  • 内部服务器IP:192.168.1.100,希望对外提供服务(例如Web服务)

  • NAT服务器/防火墙IP:内网为192.168.1.1,外网为1.2.3.4

3.1 添加SNAT规则

  允许外部访问内部服务器,首先,我们需要将到达NAT服务器的公网IP(1.2.3.4)上的特定端口(例如HTTP的80端口)的数据包转发到内部服务器的相应端口。

# 添加SNAT规则
# 将源地址是192.168.1.0/24的数据包的源地址改为1.2.3.4
# 假设出站接口为eth0(连接到外部网络的接口),需要根据实际情况替换
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 1.2.3.4

3.2 添加DNAT规则

  允许外部访问内部服务器,需要将到达NAT服务器的公网IP(1.2.3.4)上的特定端口(例如HTTP的80端口)的数据包转发到内部服务器的相应端口。

# 添加DNAT规则
# 将目的地址为1.2.3.4且目的端口为80的数据包的目标地址改为192.168.1.100
iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80
  • -t nat:指定要操作的表为NAT表。NAT表用于地址转换,包括源地址转换(SNAT)和目的地址转换(DNAT)。

  • -A PREROUTING:向PREROUTING链添加一条规则。PREROUTING链用于处理进入本机的数据包,在路由决策之前进行。这意味着,对于进入本机的数据包,首先会经过PREROUTING链上的规则处理。

  • -d 1.2.3.4:指定目的IP地址为1.2.3.4的数据包会被这条规则匹配。这意味着,只有当数据包的目的地址是1.2.3.4时,这条规则才会生效。

  • -p tcp:指定协议类型为TCP。这意味着,只有TCP协议的数据包才会被这条规则匹配。

  • --dport 80:指定目的端口为80。这意味着,只有目的端口为80的TCP数据包才会被这条规则匹配。

  • -j DNAT:指定满足条件的数据包应该执行的动作是DNAT(目的地址转换)。DNAT用于将数据包的目的地址和/或端口号转换为其他值。

  • --to-destination 192.168.1.100:80:指定转换后的目的地址和端口。这意味着,满足上述条件的数据包的目的地址将被转换为192.168.1.100,目的端口将被转换为80。

SNAT 与 DNAT的更多相关文章

  1. iptables snat和dnat

    iptables中的snat和dnat是非常有用的,感觉他们二个比较特别,所以单独拿出来说一下. dnat是用来做目的网络地址转换的,就是重写包的目的IP地址.如果一个包被匹配了,那么和它属于同一个流 ...

  2. iptables snat 和dnat说明

    iptables中的snat和dnat是非常有用的,感觉他们二个比较特别,所以单独拿出来说一下. dnat是用来做目的网络地址转换的,就是重写包的目的IP地址.如果一个包被匹配了,那么和它属于同一个流 ...

  3. Iptables防火墙(SNAT和DNAT)

     1.SNAT:源地址转换 实现内网访问外网,修改IP地址,使用POSTROUTING 命令:iptables  -t  nat  -A POSTROUTING  -s  192.168.1.10/2 ...

  4. [daily] SNAT和DNAT

    SNAT,DNAT,MASQUERADE都是NAT MASQUERADE是SNAT的一个特例 SNAT是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,这样,接收方就认为数据包 ...

  5. Iptables 下 SNAT、DNAT和MASQUERADE三者之间的区别

    Iptables 中可以灵活的做各种网络地址转换(NAT,Network Address Translation) 网络地址转换(NAT)主要有两种:SNAT 和 DNAT,但是也有一种特例 MASQ ...

  6. 10.Linux防火墙iptables之SNAT与DNAT

    Linux防火墙iptables之SNAT与DNAT 目录 Linux防火墙iptables之SNAT与DNAT SNAT策略及应用 SNAT策略概述 SNAT策略典型应用环境 SNAT策略原理 SN ...

  7. 经验分享:Linux 双网卡SNAT和DNAT映射本地端口出外网

    A 机器 网卡1  公网IP网卡2  内网 B 机器网卡1 内网 如果想把公网端口P1 映射为内网B机器端口P2 iptables -t nat -A PREROUTING -d [A公网地址] -p ...

  8. 如何区分SNAT和DNAT

    从定义来讲它们一个是源地址转换,一个是目标地址转换.都是地址转换的功能,将私有地址转换为公网地址.要区分这两个功能可以简单的由连接发起者是谁来区分:       内部地址要访问公网上的服务时(如web ...

  9. 学习总结---SNAT和DNAT

    1.SNAT是结合源ip+源端口号变化的NAT功能. DNAT是将目的ip直接转换成私有的目的ip.(是否转换目的端口号?) 2.SNAT的应用场景:公司内部访问互联网时,使用公共的公网ip.从内到外 ...

  10. SNAT和DNAT

    1.SNAT iptables防火墙 Centos6.6 64位 iptables 内网:eth0 172.16.4.1 外网:eth 112.112.112.112/24 当有用户访问公网时,修改用 ...

随机推荐

  1. InfluxDB 常用基本配置,启用账号密码登录,配置指定端口登录

    打开安装目录下的 influxdb.conf 找到 http 节点 配置完成后再安装目录下使用命令启动 influxdb influxd --config influxdb.conf 启动完成后,基本 ...

  2. SpringBoot 处理xss攻击

    添加依赖 <!-- xss跨站脚本攻击 --> <dependency> <groupId>net.dreamlu</groupId> <arti ...

  3. SurveillanceStation破解版 SurveillanceStation-x86_64-8.2.2-5766

    直接手动安装好套件,许可就是65535.安装的时候提示套件损坏,不理继续安装.不过这个版本有时间炸弹问题,使用几个小时后会出现摄像机消失问题,显示摄像机被删除,但是配置其实是在的.只要禁用套件再启用一 ...

  4. 解决方案 | Get-AppxPackage : 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动

    前几天由于需要卸载一些win10自带应用,导致onenote2016无法启动(根本原因:当时可能remove-appxpackage导致某些微软原生应用出现问题),同时今天使用power shell出 ...

  5. 构筑开放式大数据架构,Apache Kyuubi和NDH荣登开源OSCAR

    [点击了解更多网易大数据技术] 在9月16日召开的"2022 OSCAR开源产业大会"上,中国信息通信研究院发布了一系列开源研究成果和开源表彰,网易数帆发起的开源项目Apache ...

  6. tp5.1--数据库事务操作

    https://blog.csdn.net/qq_42176520/article/details/88708395 使用事务处理的话,需要数据库引擎支持事务处理.比如 MySQL 的 MyISAM  ...

  7. oeasy教您玩转vim - 68 - # 标签页tab

    ​ tab选项卡 回忆上次 上次有三种批量替换,分别是 :windo :bufdo :argdo 执行的{cmd}可以用|按顺序增加 分别对应的 windows 窗口 buffers 缓存文件 arg ...

  8. Vue 使用Use、prototype自定义全局插件

    Vue 使用Use.prototype自定义全局插件   by:授客 QQ:1033553122   开发环境   Win 10   node-v10.15.3-x64.msi 下载地址: https ...

  9. RHCA rh442 005 (NICE FIFO RR) 资源强占与分配 cpuset

    cgroup 容器 控制服务访问 limits 控制用户 进程管理 [root@servera ~]# ps -aux | more USER PID %CPU %MEM VSZ RSS TTY ST ...

  10. 【Axure RP】Axure RP 9 下载安装及汉化

    本体及破解机下载: http://www.sd173.com/soft/7951.html 汉化补丁教程见: https://blog.csdn.net/weixin_74457789/article ...