zoukankan      html  css  js  c++  java
  • NAT技术详解及配置实例

    NAT技术详解及配置实例

    2007022622:17:00

    阅读数:28241

    NAT作为一种减轻IPv4地址空间耗尽速度的方法,最早出现在Cisco IOS 11.2版本中。  

    为什么要使用NAT

    1 内网中主机过多,没有足够的合法IP地址可用。

    2 当ISP发生变化时,使用NAT技术避免了IP地址的重新编址。

    3 当两个合并的网络中出现了重复地址的时候。

    4 利用NAT来解决TCP的负载均衡问题。

    5 隐藏内部网络,增强安全性。

    NAT就是将内网中使用的私有地址转换成可在Internet上进行路由的合法地址的技术。

    私有地址范围:

    10.0.0.0 ~ 10.255.255.255

    172.16.0.0 ~ 172..31.255.255

    192.168.0.0 ~ 192.168.255.255

    NAT技术主要分为NAT和PAT。

    NAT是从内部本地地址到内部全局地址的一对一转换。

    PAT是从多个内部本地地址到内部全局地址的多对一转换。通过端口号确定其多个内部主机的唯一性。

    NAT术语

    Inside network:需要翻译成外部地址的内部网络。

    Outside network:使用合法地址进行通信的外部网络。

    Local address:内部网络使用的地址。

    Global address:外部网络使用的地址。

    Inside local address:内部本地地址。数据在内部网络使用的地址,一般为private ip address。

    Inside global address:内部全局地址。数据为了到达外部网络,用来代表inside local address的地址,一般为ISP提供的合法地址。

    Outside local address:外部本地地址,不必是合法地址。当外部网络数据到达内部网络,外部网络中的主机IP地址与内部网络中的主机处在同一网段时,为防止内部主机误认外部主机与自己在同一网段而广播ARP请求,造成无法通信,将外部主机的地址转换成外部本地地址之后再与内部主机进行通信。

    Outside global address:数据在外部网络使用的地址,是个合法地址。

    Simple translation entry:把一个IP地址映射到另外一个地址上的一对一的翻译方式。

    Extended translation entry:把IP地址和端口(port)的组合翻译成另外一个地址和端口的组合。

    Static address translation:静态地址翻译,把一个local对应到一个global上去。

    Dynamic address translation:动态翻译,local和global池(pool)建立动态对应关系。

    Port address translation(PAT):通过使用地址和端口的结合来达到多个local对应一个global的状态。端口号用来确定每个local的唯一性。这样的技术也叫超载(overloading)。

    NAT的优缺点

    优点:

    1 极大的节省了合法的IP地址。

    2 能够处理地址重复情况,避免了地址的重新编号,增加了编址的灵活性。

    3 隐藏了内部网络地址,增强了安全性。

    4 可以使多个使用TCP负载特性的服务器之间实现基本的数据包负载均衡。

    缺点:

    1 由于NAT要在边界路由器上进行地址的转换,增大了传输的延迟。

    2 由于NAT改动了IP地址,失去了跟踪端到端IP流量的能力。当出现恶意流量时,会使故障排除和流量跟踪变的更加棘手。

    3 不支持一些特定的应用程序。如早期版本的MSN。

    4 增大了资源开销。处理NAT进程增加了CPU的负荷,并需要更多内存来存储NAT表项。

    配置NAT

    inside & outside

    每个包含了NAT进程的接口必须被指定为内部接口或外部接口,但不能被同时指定为这两个接口。在路由器上,必须至少有一个接口被配置成内部接口,一个接口被配置成外部接口。这样路由器就知道怎样在接口上处理入站和出站流量了。

    D-Lab(config)#int e0    //进入接口模式

    D-Lab(config-if)#ip nat inside   //指定inside接口出站

    D-Lab(config-if)#int s0

    D-Lab(config-if)#ip nat outside //指定outside接口入站

    静态NAT

    inside|outside local和inside|outside global的一对一映射

    D-Lab(config)#ip nat {inside|outside} source static <inside local> < inside global>

    这样就在NAT表中创建了一个永久表项。

    配置示例:

    D-Lab#config t

    D-Lab(config)#int e0

    D-Lab(config-if)#ip nat inside

    D-Lab(config-if)#int s0

    D-Lab(config-if)#ip nat outside

    D-Lab(config)#ip nat inside source static 192.168.1.1 210.83.202.1

    D-Lab(config)#ip nat outside source static 210.83.202.2 192.168.2.3

    静态PAT

    D-Lab(config)#ip nat {inside|outside} source static <protocol> <inside local> < port> < inside global> < port>

    配置示例:

    D-Lab(config)#ip nat inside source static tcp 10.1.1.1 80 214.118.21.121 80

    动态NAT

    动态NAT用来将inside local快速映射到inside global上。这些inside local放在可用的IP地址池中。同样,必须给参与NAT进程的路由器接口分配IP地址。

    当内部网络主机要与Internet上的主机进行通信时,NAT边界路由器会从标记为“NAT内部”的接口接收数据包。

    D-Lab(config)#ip nat pool <pool-name> <start-ip> <end-ip> netmask xxxx

    D-Lab(config)#ip nat pool <pool-name> <start-ip> <end-ip> prefix-length xx     //掩码长度

    例:

    D-Lab(config)#ip nat pool dyn-nat-pool 211.10.121.1 211.10.121.254 netmask 255.255.255.0

    D-Lab(config)#ip nat pool dyn-nat-pool 211.10.121.1 211.10.121.254 prefix-length 24

    配置示例:

    D-Lab(config)#inter e0 

    D-Lab(config-if)#ip add 192.168.1.1 255.255.255.0    

    D-Lab(config-if)#ip nat inside     //指定内部接口

    D-Lab(config-if)#inter s0

    D-Lab(config-if)#ip add 210.83.202.1 255.255.255.192

    D-Lab(config-if)#ip nat outside    //指定外部接口

    D-Lab(config-if)#exit

    D-Lab(config)#access-list 1 permit 192.168.1.0 0.0.0.255     //标记inside local范围

    D-Lab(config)#ip nat pool in-out210.83.202.2 210.83.202.8 prefix 24    //设置inside global地址池 

    !

    D-Lab(config)#ip nat inside source list 1 pool in-out    //启用inside源地址翻译,把标记的inside local范围与inside global池关联起来

    动态PAT(多对一映射)

    路由器为每个转换表项添加第四层协议和端口信息

    D-Lab(config)#ip nat inside source list 1 pool in-out overload

    如果不知道出站IP地址,可在命令中指定出站接口

    D-Lab(config)#ip nat inside source list 1 e0 overload

    //如果接口shut或者接口没有设置IP地址的话,NAT不会生效

    配置实例:

    D-Lab(config)#inter e0

    D-Lab(config-if)#ip add 192.168.1.1 255.255.255.0

    D-Lab(config-if)#ip nat inside

    D-Lab(config)#inter s0

    D-Lab(config-if)#ip add 210.83.202.1 255.255.255.192

    D-Lab(config-if)#ip nat outside

    !

    !

    !

    D-Lab(config)#ip nat pool test210.83.202.2 210.83.202.8 prefix 24

    !

    D-Lab(config)#ip nat inside source list 9 pool test overload

    D-Lab(config)#access-list 9 permit 192.168.1.0 0.0.0.255

    为重复地址配置NAT

    D-Lab(config)#ip nat pool in-out211.121.1.1 211.121.1.254 prefix-length 24   //设置local global池

    D-Lab(config)#ip nat pool out-in10.1.2.1 10.1.2.254 prefix-length 24   //设置outside local池

    D-Lab(config)#ip nat inside source list pool in-out    //启用inside源地址翻译,把标记的inside local范围与inside global池关联起来

    D-Lab(config)#ip nat inside source list 1 pool out-in    //将在标记的inside local范围里的outside global转换成outside local池里的地址

    D-Lab(config)#int fa0/0

    D-Lab(config-if)#ip nat inside    //指定出站接口

    D-Lab(config-if)#int s1/1

    D-Lab(config-if)#ip nat outside    //指定入站接口

    D-Lab(config-if)#exit

    D-Lab(config)#access-list 1 permit 10.1.1.0 0.0.0.255    //标记inside local地址范围

    更灵活的地址池的配置:

    ip nat pool <name> { netmask <mask> | prefix-length <length> } [ type { rotary } ]

    这样可以允许定义不连续地址池,接下来定义地址空间:

    address <start> <end>

    例:

    D-Lab(config)#ip nat pool D-lab prefix-length 24

    D-Lab(config-ipnat-pool)#address 11.69.73.12 11.69.73.14

    D-Lab(config-ipnat-pool)#address 11.69.73.18 11.69.73.244

    这样就定义了一个11.69.73.12 ~ 11.69.73.14和11.69.73.18~11.69.73.244的地址池

    NAT关联routemap的配置:

    ip nat inside source route-map <name> pool <name>

    例:

    ip nat pool d-1 173.26.232.1 173.26.232.254 prefix-length 24

    ip nat pool d-2 24.10.12.1 24.10.12.254 prefix-length 24

    ip nat inside source route-map d1-map pool d-1

    ip nat inside source route-map d2-map pool d-2

    !

    interface Serial0/0

    ip nat outside

    !

    interface Serial0/1

    ip nat outside

    !

    route-map d1-map permit 10

    match ip address 1

    match interface Serial0/0

    !

    route-map d2-map permit 10

    match ip address 1

    match interface Serial0/1

    配置NAT超时设置:

    ip nat translation timeout <seconds>    //特权模式下

    NAT配置的验证和故障排除

    sh ip nat translations    //查看生效的NAT表项

    sh ip nat translations verbose    //查看生效的NAT表项的详细信息

    sh ip nat statistics    //显示NAT的统计数字和配置信息

    clear ip nat translation *    //清除所有NAT表项

    clear ip nat translation inside <global-ip>    //清除指定的内部NAT表项 :

    clear ip nat translation <protocol> <global-ip> <local-ip> <global-port> <local-port>    //清除指定的NAT表项

    debug ip nat [ <list> ] [ detailed ]    //调试NAT进程

  • 相关阅读:
    Oracle 推出 ODAC for Entity Framework 和 LINQ to Entities Beta版
    Entity Framework Feature CTP 5系列文章
    MonoDroid相关资源
    MSDN杂志上的Windows Phone相关文章
    微软学Android Market推出 Web Windows Phone Marketplace
    使用 Visual Studio Agent 2010 进行负载压力测试的安装指南
    MonoMac 1.0正式发布
    Shawn Wildermuth的《Architecting WP7 》系列文章
    使用.NET Mobile API即51Degrees.mobi检测UserAgent
    MongoDB 客户端 MongoVue
  • 原文地址:https://www.cnblogs.com/deepalley/p/12902619.html
Copyright © 2011-2022 走看看