问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

SNAT(源地址转换)、DNAT(目的地址转换)

创作时间:
作者:
@小白创作中心

SNAT(源地址转换)、DNAT(目的地址转换)

引用
CSDN
1.
https://blog.csdn.net/sunrj_niu/article/details/137038491

SNAT(源地址转换)和DNAT(目的地址转换)是网络地址转换(NAT)的两种主要类型,它们在现代网络环境中扮演着至关重要的角色。本文将详细介绍这两种地址转换技术的概念、应用场景以及具体的实现方法。

SNAT - 源地址转换

典型应用场景

  • 共享上网:通过SNAT实现局域网多台主机可以通过一个有效的公网IP地址访问外部网络。例如,公司有多台电脑需要上网,可以在防火墙中配置一个SNAT地址转换,将局域网主机的源地址修改为防火墙的公网地址,由防火墙去互联网环境中请求数据,最后返回给公司电脑。
  • 负载均衡:在负载均衡场景中,当负载均衡设备作为代理服务器转发请求时,为了避免外部服务器直接与内部服务器通信,通常会将源IP地址替换为负载均衡设备的IP地址。
  • 保护内部网络:通过SNAT隐藏内部主机的真实IP地址,增强网络安全性。
  • 访问控制:实施访问控制策略,例如限制特定IP地址范围的主机访问外部网络。

SNAT实现及具体使用

SNAT策略只能用在NAT表的POSTROUTING链,使用iptables编写SNAT策略时,需要结合--to-source IP地址来指定修改后的源地址。

  1. 开启IP转换功能

无论使用哪种类型的地址转换,防火墙主机一定要开启IP转换的功能。

临时开启
echo 1 > /proc/sys/net/ipv4/ip_forward

永久开启
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p
  1. 源地址转换

如图所示,公司网段192.168.10.0想要通过防火墙公网地址上网,当数据包进入防火墙时修改源地址信息,公司电脑通过防火墙去上网,会经过的链路有PREROUTING、FORWARD、POSTROUTING,通过防火墙出去修改源地址,很明显需要在POSTROUTING链去添加规则。

[root@sunrj-1 ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 172.16.10.1

解释:将源地址为192.168.10.0/24的转换为防火墙的公网地址172.16.10.1。

  1. 伪装

在某些情况下,防火墙公网IP不是固定的,针对这种需求、iptables命令提供了一个名为MASQUERADE(伪装)的数据包控制类型,MASQUERADE相当于SNAT的一个特例,同样用来修改数据包源IP地址,只不过它能够自动获取外网接口的IP地址,而无须使用--to-source指定固定的IP地址。

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

DNAT - 目的地址转换

应用场景

所谓的DNAT目标地址转换指的是修改请求包中的目标地址,很多情况下只有一个公网地址,但是内网服务器有几百台,想要通过一个公网地址访问到内网的所有服务器,就需要用到DNAT目标地址转换的功能了,接收到用户发送的数据包后,修改数据包中的目标地址,根据来源转发到具体的某台内网服务器中。

DNAT地址转换的应用场景:

  • 端口映射
  • IP地址映射

DNAT实现及具体使用

  1. 开启IP转换功能
临时开启
echo 1 > /proc/sys/net/ipv4/ip_forward

永久开启
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p
  1. 通过DNAT目标地址转换实现IP地址/端口映射

案例描述:通过公司防火墙的公网地址,映射内网所有主机的22号端口,即使用一个公网地址根据不同的端口转发至不同主机的ssh服务上。

访问防火墙的888端口实际访问的是内网主机192.168.30.21。

访问防火墙的999端口实际访问的是内网主机192.168.30.22。

防火墙规则如下。

[root@ipsec-1 ~]# iptables -t nat -A PREROUTING -d 192.168.20.20 -p tcp --dport 888 -j DNAT --to-destination 192.168.30.21:22
[root@ipsec-1 ~]# iptables -t nat -A PREROUTING -d 192.168.20.20 -p tcp --dport 999 -j DNAT --to-destination 192.168.30.22:22
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号