NAT的两种模式SNAT和DNAT

简单介绍

NAT(Network Address Translation):网络地址转换,是将IP数据包头中的IP地址转换为另一个IP地址的过程。在实际的应用中,NAT主要用于实现私有网络访问公共网络的功能。这种通过使用少量的公网IP地址代表较多的私有IP地址的方式,将有助于减缓可用IP地址空间的枯竭。

简单来说,NAT就是在内部专有网络使用内部地址(不可路由),而当内部节点要与外界网络发生联系时,就在边缘路由器或者防火墙处,将内部的地址替换成全局地址(合法地址,可路由),从而在外部公共网上正常使用。

这里说明一下,内部地址是指在内部网络中分配给节点的私有IP地址,这个地址只能在内部网络中使用,不能被路由。
虽然内部地址可以随机挑选,但是通常使用的是RFC 1918中定义的专用地址::

10.0.0.0
10.255.255.255
172.16.0.0
172.16.255.255
192.168.0.0~192.168.255.255

全局地址,是指合法的IP地址,它是由NIC或者网络服务提供商分配的地址,对外代表一个或多个内部局部地址,是全局统一的可寻址的地址。
NAT的作用:NAT的主要作用是节省地址空间,在任一时刻,如果内部网络中只有少数节点与外界建立连接,那么就只有少数的内部地址需要被转换成全局地址,可以减少对合法地址的需求。同时,还可以使用多个内部地址共享一个外部地址,使用端口进行区分。这样就能更有效的节约合法地址。除了节约地址,NAT还能简化配置,增加网络规划的灵活性,使用NAT,可以在规划地址时有更大的灵活性,从而简化内部网的涉及。另外,当两个有地址重叠的私有网要连接在一起时,可以使用NAT来防止地址冲突,而避免逐个改变节点的地址这个繁杂的工作。

网络地址转换主要有两种:SNAT和DNAT。


SNAT

SNAT(Source Network Address Translation):源网络地址转换,内部地址要访问公网上的服务时,内部地址会主动发起连接,将内部地址转换为公网IP。有关这个地址转换称为SNAT。
具体示例说明:
公司内部的主机A想访问互联网上的主机C,首先将请求数据包(源:ipA,目标:ipC)发送到防火墙所在的主机B,B收到后将数据包源地址改为本机公网网卡的ip(源:ipA,目标:ipB),然后经互联网发送给C,C收到后将回应包(源:ipC,目标:ipB)转发给C的路由器,经互联网将回应包转给B,B收到回应包后修改其目的地址,将回应包(源:ipC,目标:ipA)然后将数据包转发给A。

比如,多个PC机使用ADSL路由器共享上网,每个PC机都配置了内网IP。PC机访问外部网络的时候,路由器将数据包的报头中的源地址替换成路由器的ip。当外部网络的服务器比如网站web服务器接到访问请求的时候,他的日志记录下来的是路由器的ip地址,而不是pc机的内网ip。


实验

主机 A: 模拟内网主机 eth0 192.168.66.10

主机 B: 模拟网关服务器 eth0 192.168.66.20 eth1 200.200.200.10

主机 C: 模拟外网 Web 站点 eth0 200.200.200.20

1, 内网各主机将设置正确的 IP 地址 / 子网掩码,并设置网关服务器的内网 IP 为默认网关地址。(可由 DHCP 服务器分发)

route add default gw 192.168.66.20

2, 网关服务器支持 IP 路由转发,并编写 SNAT 转换规则。

vim /etc/sysctl.conf
其中的net.ipv4.ip_forward = 1	#开启转发
sysctl -p  #加载一下
#在防火墙的 nat 表当中的 POSTROUTING 链上添加(-A)一条规则
#规则是从(-s)66 网段过来的请求,出去(-o OPUTPUT)的时候都走 eth1(外网网卡),做的动作(-j)是转换它的源地址(SNAT)为 200.200.200.10
iptables -t nat -A POSTROUTING -s 192.168.66.0/24 -o eth1 -j SNAT --to-source 200.200.200.10	

3, 外网服务器,安装 apache,写一个测试网页!

yum -y install httpd
echo “11111” >  /var/www/html/index.html
service httpd start

test

直接在内网主机输入 curl 200.200.200.20,如果访问到,则说明成功。

DNAT

DNAT(Destination Network Address Translation):目标地址转换,内部需要对外提供服务时,外部主动发起连接,路由器或者防火墙的网络接收到这个连接,然后将连接转换到内部,此过程是由带公网ip的网关代替内部服务来接收外部的连接,然后在内部做地址转换。此转换成为DNAT,主要用于内部服务对外发布。
互联网主机C想访问企业内部的web服务器A,但A的地址是私有地址,无法直接访问。此时,C可以访问防火墙的公网地址,C的请求数据包(源:ipC,目标:ipB)到达防火墙B后,在B的PREROUTING上将请求数据包的目标地址进行修改,并将数据包(源:ipC,目标:ipA)发送给A。A收到后进行回复发送响应包(源:ipA,目的ipC)到防火墙,防火墙收到后对数据包源地址进行修改,并将响应包(源:ipB,目标:ipC)给C。

posted @ 2022-07-22 20:57  徐野子  阅读(381)  评论(0编辑  收藏  举报