网络工程师从入门到精通-通俗易懂系列 | 网络地址转换NAT技术,每天都在用,真正懂的人有多少?

2019-08-06 16:13:35 浏览数 (1)

NAT技术使得一个私有IP地址网络可以通过合法的公网IP连接到公网,同时将内部网络的IP地址隐藏起来不被外界发现,对内部网络设备起到保护的作用,同时,它还帮助网络可以超越地址的限制,合理地安排网络中的公有IP地址和私有IP地址的使用

NAT优缺点

NAT术语

NAT转换规则

· 数据包从outside接口到inside接口,先转换后查路由

· 数据包从inside接口到outside接口,先查路由后转换

· ip nat inside source是指把私网地址转换成公网地址

· ip nat outside source是指把公网地址转换成私网地址

NAT转换顺序

· 从inside到outside时转换源地址

访问8.8.8.8 源地址是192.168.1.1 被路由器转换成202.1.1.1的源地址出去

· 从outside到inside时转换目标地址

8.8.8.8 回包202.1.1.1,路由器查NAT表,目的地址被转换192.168.1.1

· 从outside到inside时转换源地址

203.2.1.1 访问 192.168.10.1源地址被路由器转换成192.168.20.1

· 从inside到outside时转换目标地址

192.168.10.1 回包192.168.20.1 路由器查NAT表,目的地址被转换203.2.1.1

静态NAT

内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址。静态NAT将部本地地址与内部全局地址进行一对一的转换。多用于服务器映射。静态映射是

R2配置示例:

代码语言:javascript复制
ip nat inside source static 192.168.1.1 183.62.61.10 //定义内部与公网地址一对一转换
ip route 0.0.0.0 0.0.0.0 183.62.61.2
!
interface f0/0
ip address 192.168.1.254 255.255.255.0
ip nat inside //配置NAT入接口
interface f1/0
ip address 183.62.61.1 255.255.255.0
ip nat outside
!

如果只是需要开放服务器的某些端口,则可使用静态端口映射,更加安全:

ip nat inside source static tcp 192.168.1.1 80 183.62.61.10 8080 //将TCP协议80端口映射到8080

动态NAT

是动态多对M的映射。动态NAT首先要定义合法地址池,然后采用动态分配的方法映射到内部网络。

比如NAT地址池里有2个可用地址,但有3台主机需要上网,那么第Pc3就必须等到PC1或者PC2业务结束,把IP地址放回NAT地址之后才能使用。

R2配置示例:

代码语言:javascript复制
ip nat pool ccna 183.62.61.20 183.62.61.30 netmask 255.255.255.0 //定义NAT地址池
access-list 1 permit 192.168.1.0 0.0.0.255 //定义访问控制列表
ip nat inside source list 1 pool ccna //将ACL与NAT地址池关联
ip route 0.0.0.0 0.0.0.0 183.62.61.2
interface f0/0
ip address 192.168.1.254 255.255.255.0
ip nat inside //配置NAT入接口
interface f1/0
ip address 183.62.61.1 255.255.255.0
ip nat outside //配置NAT出接口
no shutdown

PAT端口复用

PAT则是把内部地址映射到外部网络IP地址的不同端口上,从而可以实现一对多的映射。由上面推论,PAT理论上可以同时支持(65535 - 1024) = 64511个会话连接。但是实际使用中由于设备性能和物理连接特性是不能达到的,Cisco的路由器NAT功能中每个公共IP最多能有效地支持大约4000个会话。PAT对于节省IP地址是最为有效的

R2配置示例:

代码语言:javascript复制
access-list 1 permit 192.168.1.0 0.0.0.255 //定义访问控制列表
ip nat inside source list 1 interface f1/0 overload //将ACL与出接口匹配,并且是PAT方式
ip route 0.0.0.0 0.0.0.0 183.62.61.2
interface f0/0
ip address 192.168.1.254 255.255.255.0
ip nat inside //配置NAT入接口
interface f1/0
ip address 183.62.61.1 255.255.255.0
ip nat outside //配置NAT出接口
no shutdown

NAT轮询

外部用户对内部的真实主机访问时,NAT路由器会会截获得访问的数据包,把目的地址以以循环方式把目的地址转换为对应的真实主机上,以实现内网服务器的负载均衡

· 比如,内网有2台服务器,分别是 192.168.1.1、192.168.1.2、

· 这2台服务器对公网开放的内容都是一样的,为了避免公网的访问流量对单台服务器造成的负荷,可将公网的流量以负载均衡的方式,让每台服务器承担二分之一的访问量,

· 用户第一次访问将跳转到192.168.1.1这台服务器,第二次访问将跳转到192.168.1.2,以此轮询。

R2配置示例:

代码语言:javascript复制
ip nat pool ccna 192.168.1.1 192.168.1.3 netmask 255.255.255.0 type rotary //定义内网服务器流量分担地址,并且是轮询的方式
 
access-list 1 permit 183.62.61.1 0.0.0.0 //定于被转换的地址,一般为路由器ouside 接口地
址,也可为其他公网IP
ip nat inside destination list 1 pool ccna // 关键!!将负载地址池与访问列表关联
ip route 0.0.0.0 0.0.0.0 183.62.61.2
interface f0/0
ip address 192.168.1.254 255.255.255.0
ip nat inside //配置NAT入接口
interface f1/0
ip address 183.62.61.1 255.255.255.0
ip nat outside //配置NAT出接口
no shutdown
!

0 人点赞