P2P技术(NAT基础)

一.       NAT分类( 对称 完美锥形  地址受限制锥形 端口受限制锥形)
根据Stun协议(RFC3489),NAT大致分为下面四类
1、 Full Cone
这种NAT内部的机器A连接过外网机器C后,NAT会打开一个端口.然后外网的任何发到这个打开的端口的UDP数据报都可以到达A.不管是不是C发过来的.
例如 A:192.168.8.100 NAT:202.100.100.100 C:292.88.88.88
A(192.168.8.100:5000) -> NAT(202.100.100.100 : 8000) -> C(292.88.88.88:2000)
任何发送到 NAT(202.100.100.100:8000)的数据都可以到达A(192.168.8.100:5000)
2、 Restricted Cone
这种NAT内部的机器A连接过外网的机器C后,NAT打开一个端口.然后C可以用任何端口和A通信.其他的外网机器不行.
例如 A:192.168.8.100 NAT:202.100.100.100 C:292.88.88.88
A(192.168.8.100:5000) -> NAT(202.100.100.100 : 8000) -> C(292.88.88.88:2000)
任何从C发送到 NAT(202.100.100.100:8000)的数据都可以到达A(192.168.8.100:5000)
3、Port Restricted Cone
这种NAT内部的机器A连接过外网的机器C后,NAT打开一个端口.然后C可以用原来的端口和A通信.其他的外网机器不行.
例如 A:192.168.8.100 NAT:202.100.100.100 C:292.88.88.88
A(192.168.8.100:5000) -> NAT(202.100.100.100 : 8000) -> C(292.88.88.88:2000)
C(202.88.88.88:2000)发送到 NAT(202.100.100.100:8000)的数据都可以到达A(192.168.8.100:5000)

      以上三种NAT通称Cone NAT.我们只能用这种NAT进行UDP打洞.

4、Symmetic对于这种NAT.连接不同的外部目标.原来NAT打开的端口会变化.而Cone NAT不会.虽然可以用端口猜测.但是成功的概率很小.因此放弃这种NAT的UDP打洞.
二、NAT实现方式 

  NAT的实现方式有三种,即静态转换Static Nat动态转换Dynamic Nat 和 端口多路复用OverLoad

  静态转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有     IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务     器)的访问。

  动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。可以采用动态转换的方式。
  端口多路复用(Port address Translation,PAT)是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,Port Address Translation).采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。因此,目前网络中应用最多的就是端口多路复用方式。
  3.网络地址转换(NAT)的实现
在配置网络地址转换的过程之前,首先必须搞清楚内部接口和外部接口,以及在哪个外部接口上启用NAT。通常情况下,连接到用户内部网络的接口是NAT内部接口,而连接到外部网络(如Internet)的接口是NAT外部接口。
  
  1).静态地址转换的实现 
假设内部局域网使用的lP地址段为192.168.0.1~192.168.0.254,路由器局域网端(即默认网关)的IP地址为192.168.0.1,子网掩码为255.255.255.0。网络分配的合法IP地址范围为61.159.62.128~61.159.62.135,路由器在广域网中的IP地址为61.159.62.129,子网掩码为255.255.255.248可用于转换的IP地址范围为61.159.62.130~61.159.62.134。要求将内部网址192.168.0.2~192.168.0.6分别转换为合法IP地址61.159.62.130~61.159.62.134。
  
  第一步,设置外部端口。
  interface serial 0
  ip address 61.159.62.129 255.255.255.248
  ip nat outside
  第二步,设置内部端口。
  interface ethernet 0
  ip address 192.168.0.1 255.255.255.0
  ip nat inside
  第三步,在内部本地与内部合法地址之间建立静态地址转换。
  ip nat inside source static 内部本地地址内部合法地址。
  示例:
  ip nat inside source static 192.168.0.2 61.159.62.130 //将内部网络地址192.168.0.2转换为合法IP地址61.159.62.130
  ip nat inside source static 192.168.0.3 61.159.62.131 //将内部网络地址192.168.0.3转换为合法IP地址61.159.62.131
  ip nat inside source static 192.168.0.4 61.159.62.132 //将内部网络地址192.168.0.4转换为合法IP地址61.159.62.132
  ip nat inside source static 192.168.0.5 61.159.62.133 //将内部网络地址192.168.0.5转换为合法IP地址61.159.62.133
  ip nat inside source static 192.168.0.6 61.159.62.134 //将内部网络地址192.168.0.6转换为合法IP地址61.159.62.134
  至此,静态地址转换配置完毕。
  2).动态地址转换的实现
  假设内部网络使用的IP地址段为172.16.100.1~172.16.100.254,路由器局域网端口(即默认网关)的IP地址为172.16.100.1,子网掩码为255.255.255.0。网络分配的合法IP地址范围为61.159.62.128~61.159.62.191,路由器在广域网中的IP地址为61.159.62.129,子网掩码为255.255.255.248,可用于转换的IP地址范围为61.159.62.130~61.159.62.190。要求将内部网址172.16.100.1~172.16.100.254动态转换为合法IP地址61.159.62.130~61.159.62.190。
  第一步,设置外部端口。
  设置外部端口命令的语法如下:
  ip nat outside
  示例:
  interface serial 0 //进入串行端口serial 0
  ip address 61.159.62.129 255.255.255.248//将其IP地址指定为61.159.62.129,子网掩码为255.255.255.248
  ip nat outside //将串行口serial 0设置为外网端口
  注意,可以定义多个外部端口。
  第二步,设置内部端口。
  设置内部接口命令的语法如下:
  ip nat inside
  示例:
  interface ethernet 0 //进入以太网端口Ethernet 0
  ip address 172.16.100.1 255.255.255.0 // 将其IP地址指定为172.16.100.1,子网掩码为255.255.255.0
  ip nat inside //将Ethernet 0 设置为内网端口。
  注意,可以定义多个内部端口。
  第三步,定义合法IP地址池。
  定义合法IP地址池命令的语法如下:
  ip nat pool 地址池名称 起始IP地址 终止IP地址 子网掩码
  其中,地址池名字可以任意设定。
  示例:
  ip nat pool chinanet 61.159.62.130 61.159.62.190 netmask 255.255.255.192 //指明地址缓冲池的名称为chinanet,IP地址范围为61.159.62.130~61.159.62.190,子网掩码为255.255.255.248。需要注意的是,即使掩码为255.255.255.0,也会由起始IP地址和终止IP地址对IP地址池进行限制。
  或ip nat pool test 61.159.62.130 61.159.62.190 prefix-length 30
  注意,如果有多个合法IP地址范围,可以分别添加。例如,如果还有一段合法IP地址范围为"211.82.216.1~211.82.216.254",那么,可以再通过下述命令将其添加至缓冲池中。
  ip nat pool cernet 211.82.216.1 211.82.216.254 netmask 255.255.255.0
  或
  ip nat pool test 211.82.216.1 211.82.216.254 prefix-length 24
  第四步,定义内部网络中允许访问Internet的访问列表。
  定义内部访问列表命令的语法如下:
  access-list 标号 permit 源地址 通配符(其中,标号为1~99之间的整数)
  access-list 1 permit 172.16.100.0 0.0.0.255 //允许访问Internet的网段为172.16.100.0~172.16.100.255,反掩码为0.0.0.255。需要注意的是,在这里采用的是反掩码,而非子网掩码。反掩码与反掩码的关系为:反掩码+子网掩码=255.255.255.255。例如,子网掩码为255.255.0.0,则反掩码为0.0.255.255;子网掩码为255.0.0.0,则反掩码为0.255.255.255;子网掩码为255.252.0.0,则反掩码为0.3.255.255;子网掩码为255.255.255.192,则反掩码为 0.0.0.63。
  另外,如果想将多个IP地址段转换为合法IP地址,可以添加多个访问列表。例如,当欲将172.16.98.0~172.16.98.255和172.16.99.0~172.16.99.255转换为合法IP地址时,应当添加下述命令:
  access-list2 permit 172.16.98.0~0.0.0.255
  access-list3 permit 172.16.99.0~0.0.0.255
  第五步,实现网络地址转换。
  在全局设置模式下,将由access-list指定的内部本地地址与指定的内部合法地址池进行地址转换。命令语法如下:
  ip nat inside source list 访问列表标号 pool 内部合法地址池名字
  示例:
  ip nat inside source list 1 pool chinanet
  如果有多个内部访问列表,可以一一添加,以实现网络地址转换,如
  ip nat insde source list 2 pool chinanet
  ip nat insde source list 3 pool chinanet
  如果有多个地址池,也可以一一添加,以增加合法地址池范围,如
  ip nat insde source list 1 pool cernet
  ip nat insde source list 2 pool cernet
  ip nat insde source list 3 pool cernet
  至此,动态地址转换设置完毕。
  3).端口复用动态地址转换(PAT) 
内部网络使用的IP地址段为10.100.100.1~10.100.100.254,路由器局域网端口(即默认网关)的IP地址为10.100.100.1,子网掩码为255.255.255.0。网络分配的合法IP地址范围为202.99.160.0~202.99.160.3,路由器广域网中的IP地址为202.99.160.1,子网掩码为255.255.255.252,可用于转换的IP地址为202.99.160.2。要求将内部网址10.100.100.1~10.100.100.254 转换为合法IP地址202.99.160.2。
  
  第一步,设置外部端口。
  interface serial 0
  ip address 202.99.160.1 255.255.255.252
  in nat outside
  第二步,设置内部端口。
  interface ethernet 0
  ip address 10.100.100.1 255.255.255.0
  ip nat inside
  第三步,定义合法IP地址池。
  in nat pool onlyone 202.99.160.2 202.99.160.2 netmask 255.255.255.252
  // 指明地址缓冲池的名称为onlyone,IP地址范围为202.99.160.2,子网掩码为255.255.255.252。由于本例只有一个IP地址可用,所以,起始IP地址与终止IP地址均为202.99.160.2。如果有多个IP地址,则应当分别键入起止的IP直址。
  第四步,定义内部访问列。
  access-list 1 permit 10.100.100.0 0.0.0.255
  允许访问Internetr的网段为10.100.100.0~10.100.100.255,子网掩码为255.255.255.0。需要注意的是,在这里子网掩码的顺序跟平常所写的顺序相反,即0.0.0.255。 
,设置复用动态地址转换。
  第五步
  在全局设置模式下,设置在内部的本地地址与内部合法IP地址间建立复用动态地址转换。命令语法如下:
  ip nat inside source list访问列表号pool内部合法地址池名字overload
  示例:
  ip nat inside source list1 pool onlyone overload //以端口复用方式,将访问列表1中的私有IP地址转换为onlyone IP地址池中定义的合法IP地址。
  注意:overload是复用动态地址转换的关键词


  至此,端口复用动态地址转换完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值