网络地址转换NAT
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络地址转换NAT相关的知识,希望对你有一定的参考价值。
网络地址转换NAT
NAT(Network Address Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。
这种方法需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。
NAT 原理:出去时,私有地址转换为公有地址,回包时,公有地址转换为私有地址。缓解IP v4不够用的问题。
功能:NAT不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的***,隐藏并保护网络内部的计算机。
1.宽带分享:这是 NAT 主机的最大功能。
2.安全防护:NAT 之内的 PC 联机到 Internet 上面时,他所显示的 IP 是 NAT 主机的公共 IP,所以 Client 端的 PC 当然就具有一定程度的安全了,外界在进行 portscan(端口扫描) 的时候,就侦测不到源Client 端的 PC 。
实现的三种方式:
即静态转换Static Nat、动态转换Dynamic Nat和端口地址转换 Port Address Tra
Nslation,PAT
优缺点:
优点:
1.节省公有合法IP地址。
2.处理地址重叠。
3.增强灵活性。
4.安全性更可靠。
缺点:
1.延迟增大。
2.配量和维护的复杂性。
3.不支持某些应用,可以通过静态的NAT来避免。
衍生,私网IP包括那些
RFC 1918 为私有网络预留出了三个IP 地址块,如下:
A 类:10.0.0.0~10.255.255.255
B 类:172.16.0.0~172.31.255.255
C 类:192.168.0.0~192.168.255.255
上述三个范围内的地址不会在因特网上被分配,因此可以不必向ISP 或注册中心申请而在公司或企业内部自由使用。
虽然NAT可以借助于某些代理服务器来实现,但考虑到运算成本和网络性能,很多时候都是在路由器上来实现的。
NAT实现的三种方式简介和配置。
1.静态转换:
静态NAT,是建立内部本地地址和内部全局地址的一对一永久映射。当外部网络需要通过固定的全局可路由地址访问内部主机,静态NAT就显得十分重要。
(1). 静态Nat配置
Pc的配置
VPCS[1]> ip 192.168.10.2 192.168.10.1 ###内网主机
Checking for duplicate address...
PC1 : 192.168.10.2 255.255.255.0 gateway 192.168.10.1
VPCS[2]> ip 192.168.20.2 192.168.20.1 ###外网主机
Checking for duplicate address...
PC2 : 192.168.20.2 255.255.255.0 gateway 192.168.20.1
R1的配置(内网路由器)
R1(config)#int f0/0 ### 给内网端口配IP
R1(config-if)#ip add 192.168.10.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#int f0/1 ###给外网端口配ip
R1(config-if)#ip add 192.168.11.2 255.255.255.0
R1(config-if)#no shut
R2的配置 (外网路由器) ###给各个端口配IP
R2(config)#int f0/0
R2(config-if)#ip add 192.168.11.1 255.255.255.0
R2(config-if)#no shut
R2(config-if)#int f0/1
R2(config-if)#ip add 192.168.20.1 255.255.255.0
R2(config-if)#no shut
建立静态NAT关系语法,一对一的关系
R1上的配置
R1(config)#int f0/1
R1(config-if)#ip nat outside ###定义端口状态,outside 外部端口
R1(config-if)#int f0/0
R1(config-if)#ip nat inside ###定义端口状态,inside 内部端口
R1(config-if)#exit
R1(config)#ip nat inside source static 192.168.10.2 192.168.11.2 ###建立映射关系
R1(config)#ip route 0.0.0.0 0.0.0.0 192.168.11.1 ###设置静态路由,不然访问时无法返回
测试:在pc1上测试,可以直接访问外网。
VPCS[1]> ping 192.168.20.2 -t
192.168.20.2 icmp_seq=1 ttl=62 time=105.467 ms
192.168.20.2 icmp_seq=2 ttl=62 time=70.864 ms
192.168.20.2 icmp_seq=3 ttl=62 time=57.642 ms
192.168.20.2 icmp_seq=4 ttl=62 time=30.919 ms
192.168.20.2 icmp_seq=5 ttl=62 time=43.880 ms
192.168.20.2 icmp_seq=6 ttl=62 time=74.532 ms
192.168.20.2 icmp_seq=7 ttl=62 time=77.786 ms
192.168.20.2 icmp_seq=8 ttl=62 time=67.817 ms
192.168.20.2 icmp_seq=9 ttl=62 time=46.807 ms
192.168.20.2 icmp_seq=10 ttl=62 time=39.863 ms
192.168.20.2 icmp_seq=11 ttl=62 time=84.772 ms
192.168.20.2 icmp_seq=12 ttl=62 time=67.640 ms
192.168.20.2 icmp_seq=13 ttl=62 time=39.802 ms
192.168.20.2 icmp_seq=14 ttl=62 time=51.859 ms
查看NAT统计信息
R1#sh ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 192.168.11.2:27739 192.168.10.2:27739 192.168.20.2:27739 192.168.20.2:27739
icmp 192.168.11.2:27995 192.168.10.2:27995 192.168.20.2:27995 192.168.20.2:27995
icmp 192.168.11.2:28507 192.168.10.2:28507 192.168.20.2:28507 192.168.20.2:28507
(2)NAT端口映射
端口映射运用到udp和tcp协议
TCP端口及应用
端口 协议 说明
21 FTP FTP服务器所开放的控制端口
23 TELNET 用于运程登录,可以远程控制和管理目标计算机
25 SMTP SMTP服务器开放的端口,用于发送邮件
80 HTTP web,超文本chuans。
UDP常用的一些端口
端口 协议 说明
69 TFTP 简单文件传输协议
111 RPC 运程过程调用
123 NTP 网络时间协议
这边我们就不重新作图就用上面,其配置都一样,就映射关系命令不同,将其映射命令改成下面的即可
端口映射的命令如下:
R1(config)#ip nat inside source static tcp 192.168.10.2 80 192.168.11.2 8080 extendable
如果是tcp协议就加tcp,如果是用到udp协议,中间就用udp。
这样就将192.168.10.2的80端口转换成192.168.11.2的8080端口,在外网访问,192.168.11.2的8080端口时就会映射到192.168.10.2的80 端口。
2.动态NAT(多对多)
是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。可以采用动态转换的方式。 下面以实验方式来说配置方法
动态NAT配置,通过动态NAT模式,内网pc能够访问外网pc3
Sw1交互机的配置
sw1(config)#no ip routing
R1的配置
R1(config)#int f0/0 ###内部端口配置IP
R1(config-if)#ip add 192.168.10.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#int f0/1 ###外部端口配置IP
R1(config-if)#ip add 192.168.11.2 255.255.255.0
R1(config-if)#no shut
R1(config-if)#int f0/0
R1(config-if)#ip nat inside ###定义内部端口
R1(config-if)#int f0/1
R1(config-if)#ip nat outside ###定义外部端口
R1(config)#ip route 0.0.0.0 0.0.0.0 192.168.11.1 配置默认路由
R2的配置 ###外网路由器配置IP
R2(config)#int f0/0
R2(config-if)#ip add 192.168.11.1 255.255.255.0
R2(config-if)#no shut
R2(config-if)#int f0/1
R2(config-if)#ip add 192.168.30.1 255.255.255.0
R2(config-if)#no shut
三个pc配置IP
VPCS[1]> ip 192.168.10.2 192.168.10.1 ###内网pc配置ip
Checking for duplicate address...
PC1 : 192.168.10.2 255.255.255.0 gateway 192.168.10.1
VPCS[1]> 2
VPCS[2]> ip 192.168.10.3 192.168.10.1
Checking for duplicate address...
PC2 : 192.168.10.3 255.255.255.0 gateway 192.168.10.1
VPCS[2]> 3
VPCS[3]> ip 192.168.30.2 192.168.30.1 ###外网pc配置IP
Checking for duplicate address...
PC3 : 192.168.30.2 255.255.255.0 gateway 192.168.30.1
动态NAT配置,在R1上设置
定义内部网络中允许访问外部网络的ACL控制列表
R1(config)#access-list 1 permit 192.168.10.0 0.0.0.255
###需要访问的内部网段,后面接的时反子网掩码,1为序列号
设置地址池
R1(config)#ip nat pool test0 192.168.11.10 192.168.11.30 netmask 255.255.255.0
###test0表示地址池名称,表示地址池的IP网段间范围,后面是子网掩码
实现网络地址转换
R1(config)#ip nat inside source list 1 pool test0
测试:
VPCS[1]> ping 192.168.30.2
192.168.30.2 icmp_seq=1 timeout
192.168.30.2 icmp_seq=2 ttl=62 time=102.470 ms
192.168.30.2 icmp_seq=3 ttl=62 time=82.810 ms
192.168.30.2 icmp_seq=4 ttl=62 time=72.518 ms
192.168.30.2 icmp_seq=5 ttl=62 time=56.579 ms
VPCS[1]> 2
VPCS[2]> ping 192.168.30.2
192.168.30.2 icmp_seq=1 timeout
192.168.30.2 icmp_seq=2 ttl=62 time=52.858 ms
192.168.30.2 icmp_seq=3 ttl=62 time=44.620 ms
192.168.30.2 icmp_seq=4 ttl=62 time=44.615 ms
192.168.30.2 icmp_seq=5 ttl=62 time=62.830 ms
R1#sh ip nat translations 查看映射关系表
Pro Inside global Inside local Outside local Outside global
--- 192.168.11.10 192.168.10.2 --- ---
icmp 192.168.11.11:34234 192.168.10.3:34234 192.168.30.2:34234 192.168.30.2:34234
icmp 192.168.11.11:34746 192.168.10.3:34746 192.168.30.2:34746 192.168.30.2:34746
icmp 192.168.11.11:35002 192.168.10.3:35002 192.168.30.2:35002 192.168.30.2:35002
3.端口多路复用(Port address Translation,PAT) (多对1)
是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,Port Address Translation).采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的***。因此,目前网络中应用最多的就是端口多路复用方式。(说白了就是外部映射的地址可以反复使用)
配置如下:
(1)使用外部全局地址
我们还用上面的图,基本配置一样的。只是NAT配置有点不同。
PAT的配置在R1上操作。
R1(config)#int f0/0 ###定义内部端口
R1(config-if)#ip nat inside
R1(config-if)#int f0/1 ###定义外部端口
R1(config-if)#ip nat outside
R1(config-if)#exit
R1(config)#access-list 1 permit 192.168.10.0 0.0.0.255 ###设置允许访问外部网络的ACL
R1(config)#ip nat pool test0 192.168.11.2 192.168.11.2 netmask 255.255.255.0
###定义合法的IP地址池,这边我们只用一个IP地址。
R1(config)#ip nat inside source list 1 pool test0 overload ###加个overload,复用,意思是各个内部IP都可以用地址池里的IP
测试
VPCS[1]> ping 192.168.30.2
192.168.30.2 icmp_seq=1 timeout
192.168.30.2 icmp_seq=2 timeout
192.168.30.2 icmp_seq=3 ttl=62 time=140.374 ms
192.168.30.2 icmp_seq=4 ttl=62 time=156.359 ms
192.168.30.2 icmp_seq=5 ttl=62 time=109.123 ms
VPCS[1]> 2
VPCS[2]> ping 192.168.30.2
192.168.30.2 icmp_seq=1 ttl=62 time=94.067 ms
192.168.30.2 icmp_seq=2 ttl=62 time=78.242 ms
192.168.30.2 icmp_seq=3 ttl=62 time=109.294 ms
192.168.30.2 icmp_seq=4 ttl=62 time=124.984 ms
192.168.30.2 icmp_seq=5 ttl=62 time=78.103 ms
(3)复用路由器外部接口地址
基本配置一样,NAT配置不一样。
R1(config)#access-list 1 permit 192.168.10.0 0.0.0.255 ###定义访问控制列表
R1(config)#ip nat inside source list 1 interface FastEthernet 0/1 overload
###这边 interface FastEthernet 0/1 是指定外部端口反复使用
测试:
PCS[2]> ping 192.168.30.2
192.168.30.2 icmp_seq=1 timeout
192.168.30.2 icmp_seq=2 ttl=62 time=109.401 ms
192.168.30.2 icmp_seq=3 ttl=62 time=93.569 ms
192.168.30.2 icmp_seq=4 ttl=62 time=78.084 ms
192.168.30.2 icmp_seq=5 ttl=62 time=93.945 ms
总结:NAT的模式,PAT最常用,其可以最大节省IP地址。在做实验时,定义内部和外部端口一定要看仔细了,不要弄反了,静态路由也不要忘了设了,不然数据内出去,回不来,访问外网也会失败的。
以上是关于网络地址转换NAT的主要内容,如果未能解决你的问题,请参考以下文章