网络NAT路由器

这两天复习计算机网络的时候遇到这样一个概念。

NAT 网络地址转换(Network Address Translation)

 

大概是这样的。

举一个例子,假如说我们现在接入了校园网,我有一个内部IP是10.2.61.55。

意思是我是2号楼第6层A段(1)的第55台主机。我的网关是10.2.61.254

如图:

当我要像外界发数据包的时候我该用什么IP呢? 10.2.61.55?  

大家不要忘了这是一个内部的IP,类似的另一个内部的IP是192.168.*.*

 

互联网上的通信是相互的,例如TCP就是三次握手,我给你说句话,你还要告诉我你收到这句话了。

那么假如说我现在在浏览器里打开百度网页,我使用10.2.61.55 的IP,那么当百度的服务器给我回应消息的时候,数据报里的目标地址应该填10.2.61.55吗?

我们都知道这是一个内部地址,当路由器转接收到一个以内部地址为目的地址的数据包时,会直接丢弃到不发送。

 

那么我们处在一个内部网络究竟是怎样与服务器进行通信的呢?

答案是NAT路由器,或者说是 实现了NAT功能的路由器。

 

我们都知道广义上的路由器是工作在网络层的设备,其主要功能是转发分组。

对于接收到的一个数据包,只会改变它的MAC地址,以及IP数据包里的TTL(生存时间)字段 减 1

 

还是举刚才的那个例子来说明。

假如我现在要访问百度网站,那么我势必要和百度服务器建立HTTP连接。

HTTP连接的运输层协议使用的是TCP协议,也就是要使用端口。

那么我发出去的数据包就是这样的。

运输层:源端口5000 目标端口 80

网络层:源地址10.2.61.55 目标地址119.75.217.56

 

经过我的第一个网关(一个路由器)10.2.61.254 ,数据包就会变成这样

运输层:源端口3001 目标端口 80

网络层:源地址10.2.61.254 目标地址119.75.217.56

 

然后再经过多个网关(多个路由器)最后到了与外部网络相连的路由器时,发出数据包就会变成这样

运输层:源端口6001 目标端口 80

网络层:源地址61.185.225.162 目标地址119.75.217.56

注意这个时候源地址就变成了一个对外真实的IP地址

 

 

服务器接到与我们校园与外部相连的路由器发出的数据包,就会这样返回一个数据包

运输层:源端口80 目标端口 6001

网络层:源地址119.75.217.56 目标地址61.185.225.162

 

然后再经过多个路由器最后变成这样一个数据包

运输层:源端口80 目标端口 3001

网络层:源地址119.75.217.56 目标地址10.2.61.55

 

于是我们本机就接收到了来自百度服务器的数据包了。

 

需要注意的一些问题:

1.路由器在进行IP地址,与端口转换的过程中,会把之前原先的IP地址与端口地址存起来,形成一个映射表,在收到外部发来的数据包时,会根据映射表来重新修改数据包中的IP地址与端口地址。

2.根据需要,外部的路由器可能不止一个(毕竟一个主机的端口只有那么几w个)

 

 

 

那么使用NAT路由器还有什么好处呢?

1.节省世界上的IP资源

2.外部不知道我们这个内部网络究竟是怎样划分的,就增加了内部网络的安全性。

3.防止外部主机攻击,内部的主机或服务器。

 

 

 

 

 

 

 

 

 

 

 

### NAT 路由器工作原理 在网络环境中,NAT(Network Address Translation,网络地址转换)路由器用于解决IPv4地址不足的问题,并增强网络安全。当内部网络中的设备尝试访问互联网时,NAT路由器会修改数据包头部的目的IP地址和源端口号。 对于静态NAT而言,这是将内部主机地址与外部地址进行一对一转换,即一个内网私有地址需要独占一个固定的公有IP地址[^2]。这种方式主要用于内部局域网中对外提供服务的服务器上,因为这些服务器通常需要稳定的公网IP来保持持续的服务可达性。 而动态NAT则是指动态分配公共IP地址给私有IP地址的过程,允许多个私有IP地址共享少量的公共IP地址资源[^3]。这不仅提高了公共资源利用率,还增强了系统的灵活性。 另外还有Easy IP模式,在这种情况下,多个私网IP地址可以直接对应到路由器外网接口上的单个公网IP地址。此方式不需要额外定义合法IP地址池,简化了配置过程[^4]。 ### 配置方法概述 #### 动态NAT配置实例 要实现动态NAT功能,一般按照如下方式进行设置: ```shell ip nat pool MY_POOL 198.51.100.1 198.51.100.10 netmask 255.255.255.0 access-list 1 permit 172.16.0.0 0.0.255.255 ip nat inside source list 1 pool MY_POOL overload ``` 上述命令创建了一个名为MY_POOL的地址池,范围是从198.51.100.1至198.51.100.10,并允许来自172.16.0.0/16子网内的流量使用该地址池完成地址转换操作。 #### Easy IP配置示例 如果采用Easy IP方案,则只需简单几步即可完成基本配置: ```shell interface GigabitEthernet0/0 ip address dhcp no shutdown exit interface GigabitEthernet0/1 ip address 192.168.1.1 255.255.255.0 ip nat inside exit ip nat outside access-list 1 permit any ip nat inside source list 1 interface GigabitEthernet0/0 overload ``` 这里假设GigabitEthernet0/0为连接Internet的广域网接口,它通过DHCP获取其公网IP;而GigabitEthernet0/1则作为LAN侧接口服务于本地网络。最后一条语句实现了所有来自ACL列表1匹配的数据流都将被映射到WAN口所持有的当前有
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值