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

SNAT

典型应用场景

  • snat实现共享上网,即通过SNAT实现局域网多台主机可以通过一个有效的公网ip地址访问外部网络
  • 内网访问外网:当内部网络中的主机需要访问外部网络时,内部主机的私有IP地址需要被转换为公共IP地址,以便外部网络正确识别和响应。这种情况下,SNAT将内部主机的私有IP地址替换为路由器或防火墙的公共IP地址,使得外部网络能够正确响应数据包。例如带动局域网主机上网,公司有很多台电脑,都需要上网,这时就可以在防火墙中配置一个SNAT地址转换,某个网段进入防火墙后通过SNAT修改源地址信息,修改为防火墙的公网地址,由防火墙去互联网环境中请求数据,最后返回给公司电脑,带动局域网上网。
  • 负载均衡:在负载均衡场景中,当负载均衡设备作为代理服务器转发请求时,为了避免外部服务器直接与内部服务器通信,通常会将源IP地址替换为负载均衡设备的IP地址。这样可以隐藏内部服务器的真实IP地址,提高安全性。
  • 保护内部网络:有时候内部网络希望隐藏真实的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
2.源地址转换:通过SNAT源地址转换实现共享上网

在这里插入图片描述

如上图所示,公司网段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。

3.伪装:不能保证固定公网地址如何使用SNAT源地址转换

在某些情况下,防火墙公网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

2.通过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

未完结 待完善

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值