最近遇到一个问题,SNMP网管不能穿透路由器管理到私网设备(即使内网中的设备先使用trap包打洞出来),因此研究了一下NAT机制。

现在多数路由器都支持NAT转换,但实现模式不同,因此当你需要NAT穿透的功能时,必须确定路由器使用的NAT模式,不然可能导致你的NAT穿透功能失效。

先介绍一下,大致有4种类型的NAT:
a) Full Cone 完全圆锥体
因特网上的任何PC,可以发送数据包到IP:port对;而NAT将这个IP:port对(公网上的)映射到内网的IP:port对(私有网络的)。

b) restricted cone 受限制的圆锥体
NAT外面的PC,只有那些内网中已有PC与之联系过的PC,才能通过这个映射进来。例如,我通过内网的一台机器,IP 地址是10.1.1.1:123,与PC(a)联系,则PC(a)也可以通过这个NAT的映射,联系到我。而PC(b)则不行。
10.1.1.1:123 ---NAT ---> 202.70.65.78:10000 ------pc(a)
如果pc(b)也发送数据到202.70.65.78:10000,则不会有数据送到10.1.1.1:123。

c) port restricted 端口受限制的圆锥体
除了b)的条件外,即不但要检测pc(a)的源IP地址,还要检测其端口是否与前面也一样。
10.1.1.1:123 --->NAT---->202.70.65.78:10000 -----> pc(a)[213.123.324.34:8000]

这个NAT只会接收从IP地址 213.123.324.34 且端口为 8000来的数据,让进入到10.1.1.1:123。

d) symmetric 对称的NAT
这是关系描述最简单的一个
10.1.1.1:1000 ----NAT -----> 200.123.123.34:1234 ----pc(a)
10.1.1.1:1000 ----NAT -----> 200.123.123.34:2222----pc(b)
这种NAT的IP:port对,对每个外部的程序,都是不同的。因而每一个外部的程序,都有自己的映射(NAT分配的IP:port对)。而前面的三种,多个外部程序,可能共用一个NAT的IP:port对。

从上面可以看出,Full Cone(完全圆锥体)类型的NAT模式是最宽松的,只要私网有包发出形成端口映射以后,公网的任何IP任何端口都可以向映射的外网IP+端口发包进来,即使你的应用程序编写时两端的通信端口不是完全对称(即收发端口正好相反),通信也是没有问题的,但必须注意的是,现在大多电信运营商使用的路由器其NAT都不是Full cone模式,因此要小心,当你的应用程序设计为不完全对称端口通信时,很可能导致你不能穿透NAT。

请看下面的各厂商使用的NAT模式的调查列表:
In the following table the Prim column indicates the primary type of the NAT. A value of Port indicates port restricted, Cone is a full cone, Bad is described in the next section, Symm is Symmetric, and Addr is Address restricted. The Hair column value of Y or N indicates whether the NAT will hairpin media. The Pres column indicates whether the NAT attempts to preserve port numbers. The Sec column indicates the secondary type of the NAT, and a value of Same indicates it is the same as the primary type. The Grp indicates the group that this NAT falls into.
Vendor         Model       Firmware           Prim  Sec  Hair Pres Grp

Airlink     ASOHO4P     V1.01.0095         Port  Symm  N    Y    B
   Apple       Air Base    V5.2               Cone  Same  Y    N    A
   Belkin      F5D5321     V1.13              Port  Same  N    N    B
   Cisco       IOS                            Port  Symm            -
   Cisco       PIX                            Port  Same            -
   Corega      BAR Pro2    R1.00 Feb 21 2003  Cone                  -
   DLink       DI-604      2.0 Jun 2002       Cone  Same  N    N    B
   DLink       DI-704P     2.61 build 2       Cone  Same  Y    N    A
   Dlink       DI-804      .30, Tue,Jun 24 20 Cone  Same  Y    N    A
   Hawkings    FR24        6.26.02h Build 004 Bad   Same  Y    Y    D
   Linksys     BEFSR11                        Port                  B
   Linksys     BEFSR11 V2  1.42.7, Apr 02 200 Port                  B
   Linksys     BEFSR41     v1.44.2            Port                  B
   Linksys     BEFSR81     2.42.7.1 June 2002 Addr  Same  N    Y    B
   Linksys     BEFSRU31                       Port                  B
   Linksys     BEFSX41     1.44.3, Dec 24 200 Port                  B
   Linksys     BEFVP41     1.41.1, Sep 04 200 Port                  B
   Linksys     BEFW11S4    1.45.3, Jul 1 2003 Port                  B
   Linksys     WRT54G      1.42.2             Port  Symm  N    Y    B
   Linksys     WRT55AG     1.04, Jun.30, 2003 Port                  B
   Linksys     WRV54G      2.03               Port  Same  N    Y    B
   Microsoft   MN-700      02.00.07.0331      Cone  Same  N    N    B
   Netgear     FVS318      V1.4 Jul. 15 2003  Port  Same  N    N    B
   Netgear     RP114       3.26(CD.0) 8/17/20 Cone                  -
   Netgear     RP614       4.00 April 2002    Cone  Same  Y    N    A
   NetworkEver NR041       Version 1.0 Rel 10 Symm  Same  N    N    F
   NetworkEver NR041       Version 1.2 Rel 03 Bad   Same  Y    Y    D
   SMC         2804WBRP-G  v1.00 Oct 14 2003  Port  Symm  Y    Y    B
   SMC         7004ABR     V1.42.003          Port  Same  N    N    B
   SMC         7004VBR     v1.03 Jun 12, 2002 Cone                  -
   Toshiba     WRC-1000    1.07.03a-C024a     Port  Cone  N    Y    B
   umax        ugate-3000  2.06h              Port                  -
   US Robotics USR8003     1.04 08            Cone  Same  N    N    B
   ZOT         BR1014      Unknown            Bad   Same  N    Y    D
   Netgear     MR814v2     Version 5.01       Bad   Same  Y    Y    D
   Cisco       PIX 515     6.3(3)             Port  Same  N    N    B
   Dynex       DX-E401     1.03               Cone  Same  Y    N    A
   Asante      FR1004      R1.13 V2           Cone  Same  N    N    B
   Linksys     BEFSR81     2.42.7.1           Addr Note 1 N    Y    B
   Lanner      BRL-04FPU                      Cone  Same  N    N
   AboCom      CAS3047                        Port  Same  N    Y
   Lemmel      LM-IS6400B                     Port  Same  N    Y

主流供应商里面,Cisco普遍使用port restricted模式,DLink的几款倒是使用Full cone模式。

如果要保证穿透,需要把我们的的SNMP网管的下行口都改成162(本来这个是Trap的接收口),极不方便;另外还有一个办法使用静态NAT映射,但是路由器配置麻烦。华为公司的IADMS网管提到支持SNMP的NAT穿透,不知道是什么机制,可有达人知道?

附1 推荐一个Tracert命令替代工具 x-firewalk
      这是一个IP路由trace工具,比Windows系统自带的Tracert命令强许多,主要是支持IP归属地解析(基于纯真IP数据库,注意从x-firewalk官网下载的2006的版本所带的IP数据库太旧,有很多错误,建议自行到纯真网下一个最新的IP数据库放在x-firewalk.exe旁边),另外,除了传统的ICMP探测,它还支持TCP和UDP的探测以及端口扫描。

下面是一个使用实例:
e:/myprogram/vc/firewalk/Release>x-firewalk.exe www.163.net -u -N

Tracing route to www.163.net [202.108.252.146] by UDP
over No.0 netWork interface with ip [10.11.11.177]
over a maximum of 32 hops, timeout in 3000 milliseconds:

1     *       *       *       Request Timed Out
  2     <10 ms  <10 ms  <10 ms  61.154.14.254     [福建省福州市 电信]
  3     <10 ms  <10 ms  <10 ms  202.109.204.181   [福建省福州市  CZ88.NET]
  4     <10 ms  *       16 ms   202.109.204.6     [福建省福州市  CZ88.NET]
  5     31 ms   15 ms   32 ms   202.97.41.209     [中国电信 骨干网]
  6     15 ms   47 ms   31 ms   202.97.35.25      [ CZ88.NET ]
  7     32 ms   31 ms   31 ms   202.97.46.38      [中国电信 骨干网]
  8     156 ms  157 ms  156 ms  219.158.32.1      [北京市 网通]
  9     250 ms  250 ms  250 ms  219.158.13.9      [北京市 网通]
  10    266 ms  250 ms  250 ms  202.96.12.162     [北京市 CHINANET-BJ]
  11    265 ms  250 ms  250 ms  202.106.193.150   [北京市 路由器]
  12    250 ms  *       250 ms  202.106.193.114   [北京市 路由器]
  13    266 ms  250 ms  250 ms  61.148.3.30       [北京市 网通]
  14    *       250 ms  250 ms  202.106.48.129    [北京市 网通]
  15    250 ms  *       250 ms  202.106.48.6      [北京市 网通]
  16    265 ms  250 ms  *       202.108.252.146   [北京市 网通]
  17    250 ms  250 ms  266 ms  202.108.252.146   [北京市 网通]

Trace complete.

还有一个国外的共享软件,VisualRoute,也提供类似功能,而且是图形化的,可以在地图上显示路由过程,但装上后需要注册什么的,如果你的电脑不能直接上网的话,它还会多次企图连接官网,导致电脑狂慢!!

我整理了一个x-firewalk + 最新的IP数据库放到CSDN下载频道。

附2:一个后备解决方案 - 路由器虚拟服务器功能
     这也是现在很多路由器都支持的功能(我使用的ADSL调制解调器附带的路由器都有这个支持),可以指定某些端口的数据转发到特定的IP,这个方案主要是可以帮助你把私网上的服务器发布到公网上,当路由器没有采用完全圆锥体的NAT方案时,设置虚拟服务器的端口转发可以帮助你达成穿透的目的。

但这个方案也有缺点,就是如果你的NAT映射不是静态的,或者私网下设备很多,就很难设置。

SNMP网管NAT穿透的问题相关推荐

  1. 解决外网与内网或内网之间的通信,NAT穿透

    在网络编码中会发现程序在局域网中是可以适用的,但是在外网与内网之间和内网与内网之间就不可行. 问题就在于NAT.首先介绍下NAT. NAT的作用NAT(Network Address Translat ...

  2. 【原创】IP摄像头技术纵览(七)---P2P技术—UDP打洞实现内网NAT穿透

    [原创]IP摄像头技术纵览(七)-P2P技术-UDP打洞实现内网NAT穿透 本文属于<IP摄像头技术纵览>系列文章之一: Author: chad Mail: linczone@163.c ...

  3. 通俗易懂:快速理解ipv4的NAT穿透原理

    NAT基础   IPv4由于最初的设计原因,长度只有32位,所以只提供了大约40亿个地址.这造成了地址耗尽危机.   NAT(Network Address Translation,网络地址转换),也 ...

  4. stun 协议 NAT穿透方式 简介

    STUN是RFC3489规定的一种NAT穿透方式,它采用辅助的方法探测NAT的IP和端口.毫无疑问的,它对穿越早期的NAT起了巨大的作用,并且还将继续在NAT穿透中占有一席之地. STUN的探测过程需 ...

  5. (转)NAT与NAT穿透 原理

    原文:http://blog.csdn.net/ustcgy/article/details/5655050 5. NAT穿透 5.1 转发      最可靠但又是最低效的点对点通信方法,莫过于将p2 ...

  6. p2p网络中的NAT穿透技术----常见NAT穿越解决方案

    p2p网络中的NAT穿透技术----常见NAT穿越解决方案 常见NA丁穿越解决方案 NAT技术在缓解IPv4地址紧缺问题.构建防火墙.保证网络安全等方面都发挥了重要 作用.然而,NAT设备的广一泛存在 ...

  7. NAT 穿透是如何工作的

    来自:入门小站 译者序 设想这样一个问题:在北京和上海各有一台局域网的机器(例如一台是家里的台式机,一 台是连接到星巴克 WiFi 的笔记本),二者都是私网 IP 地址,但可以访问公网, 如何让这两台 ...

  8. NAT与NAT穿透(二)

    5. NAT穿透 5.1 转发     最可靠但又是最低效的点对点通信方法,莫过于将p2p网络通信看作一个C/S结构,通过服务器来转发信息.如下图,两个客户端A和B,均与服务器S初始化了一个TCP或U ...

  9. Freeswitch在阿里云服务器语音不通问题小记(FS的NAT 穿透)

    我原来都是在公司的服务器或自己的开发环境安装FS,这次必须在阿里云上安装,自己觉得没问题,但安装好就就发现问题出来了.. 语音不通,压根就没声音! 本地PC上抓包一看,怎么回事,所有RTP包都发给了阿 ...

最新文章

  1. 可能存在无限递归_做事永远无头无尾?人生中的递归现象
  2. 第九周项目实践1 二叉树的链式存储及基本运算 算法库
  3. jQuery.sap.factory
  4. B. 重载技术(overloading)
  5. c语言计算器模拟程序,【C语言】 模拟计算器
  6. library的英语怎么读音_如何让你的英语口音无限接近母语者?英语语音语调的独家训练方法...
  7. 安装fitz报错_动态 - Fitz999的个人空间 - OSCHINA
  8. 工厂模式三部曲之工厂方法模式
  9. 清理神器CleanMyMac 6.18“粽”级优惠
  10. cesium 隐藏entity_cesium中随entity动态变化的弹出框
  11. JavaScript 验证统一社会信用代码/营业执照注册号
  12. java pcm to wav_Java音频转换:PCM格式转WAV格式
  13. div盒子边框圆角_div css圆角边框怎么设置
  14. Java每日一题——>739. 每日温度(蛮力法,栈方法)
  15. linux怎么编译ipa,如何使用XCode 4创建ipa文件及提交应用程序
  16. GitHub 标星 2.3k+,比个手势,AI 自动识别 Emoji!
  17. 如何在应用中打开系统播放器
  18. 诗经 - 小雅 - 天保
  19. pascal编程语言介绍
  20. Laurent(洛朗或者劳伦)多项式,泰勒展开式

热门文章

  1. python学习日记_第九天(ex20~21)
  2. OptiSystem应用:光放大器EDFA的仿真
  3. Android使用本地Service实现后台播放音乐
  4. python打印字符串格式_Python字符串三种格式化输出
  5. 设计系列-《在你身边,为你设计》——腾讯的用户体验设计之道-笔记
  6. 【046】人类基准-测试记忆力和反应速度等素质
  7. PHP 文件校验 文件的 MD5 散列值
  8. 多线程试验。模拟航班售票系统,实现4个售票窗口发售某班次航班的100张机票,一个售票窗口用一个线程表示。要求不能重复发售。
  9. 黑色炫酷网址安全跳转源码 GO跳转PHP页面
  10. 2020软考 信息安全工程师(第二版)学习总结【十五】