# NAT网络地址转换 目录 [TOC] ## 功能介绍: NAT:网络地址转换。正常数据转发时,IP头部的源和目的地址以及端口号是不会被更改的,而使用了NAT技术后,它将更改报文头部内容,实现隐藏内外部主机真实地址、多台主机共享少量IP访问内外部网络、解决IP地址空间重叠、服务器负载均衡等功能。 PAT:端口地址转换,又叫网络地址端口转换(NAPT)或NAT的端口复用(用IP地址+端口号来对应和区别各个数据流进行网络地址转换,以达到多内部主机通过一个或少量合法IP地址来访问外部网络) NAT的术语: Inside:内部 Outside:外部 Inside local:内部本地地址(内部主机的实际地址,一般为私有地址) Inside global:内部全局地址(内部主机经NAT转换后去往外部的地址,是ISP分配的合法IP地址) Outside local:外部本地地址(外部主机由NAT设备转换后的地址,一般为私有地址,内部主机访问该外部主机时,认为它是一个内部的主机而非外部主机) Outside global:外部全局地址(外部主机的真实地址,互联网上的合法IP地址) ## ip nat 基础配置命令 > 注意,不同设备有不同命令 ip nat ?  ip nat inside ?  ip nat inside source ?  ## 静态NAT ### 模拟的拓扑图:  ### 指定内外网口:  ### 配置: 默认ip地址什么的都已经配置完成了 #### 1、指定内外网口 ```shell GW(config)#int f0/0 GW(config-if)#ip nat outside GW(config-if)#int f0/1 GW(config-if)#ip nat inside GW(config-if)#GW(config)#int f0/0 ``` #### 2、配置静态NAT转发 ```shell GW(config)#ip nat inside source static 192.168.1.100 100.1.1.1 ``` 命令解析: `ip nat inside{内部地址转换} source{源地址转换} static{静态转换} 192.168.1.100{内部地址} 100.1.1.1{外部地址}` #### 3、配置静态NAT端口转发 ```shell GW(config)#ip nat inside source static tcp 192.168.1.100 22 100.1.1.1 22 ``` 命令解析: `ip nat inside{内部地址转换} source{源地址转换} static{静态转换} tcp|udp{转发tcp|udp协议} 192.168.1.100{内部地址} 22{内部端口} 100.1.1.1{外部地址} 22{外部端口}` ## NAPT端口复用 端口复用就像是我们家用的傻瓜无线路由器一样 ### 模拟的拓扑图:  指定内外网口和配置ip地址什么的就不再说明了 ### 配置NAPT ```shell GW1(config)#access-list 1 permit 192.168.1.0 0.0.0.255 ---->指定转发的内网列表 GW1(config)#ip nat inside source list 1 interface gigabitEthernet 0/0/1 overload ``` 命令详解: `ip nat inside{内部地址转换} source{源地址转换} list 1{指定描述本地地址的访问列表} interface{指定转发端口} gigabitEthernet 0/0/1 overload{启用端口复用一对多}` ### 配置指定转发目标的NAPT ```shell Router(config)#access-list 1 permit 192.168.1.0 0.0.0.255 Router(config)#ip nat pool cisco 200.1.1.3 200.1.1.3 netmask 255.255.255.0 Router(config)#ip nat inside source list 1 pool cisco overload (无overload表示多对多,有overload表示多对一) Router(config)#end Router#show ip nat translations(无结果) ``` ## NAT负载均衡 ### 模拟的拓扑图:  ### 1、定义哪些过来的数据 ```shell GW(config)#access-list 123 permit ip any host 100.1.1.2 ``` 命令详解: `access-list 123{拓展访问控制列表} permit{允许指定要转发的数据包} ip any{全部ip} host 100.1.1.2{到GW的外网接口上}` ### 2、定义转换到内部的哪些服务器上 ```shell GW(config)#ip nat pool 321 192.168.1.10 192.168.1.12 netmask 255.255.255.0 type rotary ``` 命令详解: `ip nat pool 321{nat地址池名称321} 192.168.1.10 192.168.1.12{指定ip段}netmask 255.255.255.0{指定子网掩码} type rotary{地址池类型为rotary(循环),在做目的nat转换时,循环转换为内网服务器的地址}` ### 3、内外结合转换条件 ```shell GW(config)#ip nat inside destination list 123 pool 321 ``` 命令详解: `ip nat inside{内部地址转换} destination{目的地址转换} list 123{来源地址列表} pool 321{目的地址池}` ## 查看命令 ### 1、查看NAT表 ```shell GW#show ip nat translations ```  ### 2、查看NAT配置 ```shell GW1#show ip nat statistics ```  