内网穿透&UDP打洞
这两天找度度重新回忆了一下关于内网穿透的事情,在百度文库上找到了两三篇写的比较通俗易懂的文章,把内网穿透做个简单总结。
首先文章建议 Cone NAPT 还有希望,要是 Symmetri NAPT 就别想了,接着介绍了两种基本情况,一是一台内网机器连接外网通信的情况,二是两台内网之间互联的情况。
第一种,只需要内网主动发起连接就可以了。内网机器
A(192.168.1.x:4000)要求连接外网服务端S(60.17.211.x:5000),发出连接请求后被A网所在网关
NA(10.11.12.x)获取,NA将A的地址转变为其自身地址,并分配临时端口(6000)用作通讯,于是,当初的 A->S 就变成现在的
A->NA->S。那么S接到请求后看到的并不是A的地址,而是NA的IP和Port,此时S如果照着此地址回复,则NA收到,因为NA此时
有通讯临时Session被创建了,所以在一定时间内(貌似根据不同硬件、软件设备而不同)还记得发到6000的信息要转给A,NA就会转发给A。至此,
通讯成功。
第二种,两个内网之间就要复杂一些,有一个图很好,我转载了一下,特别声明,是从百度文库截图下来的。

这个图很清晰,做个简单备注就可以了。
首先,两个内网A和B谁都不能直接连谁,所以第一次,都是给S发送登录、心跳之类的,目的是表明自己的存在,并建立session,当然,这个过程还是通过自身网络的N实现的。那么,如何做到UDP穿透呢?
1. 假设左边的为A(192.168.1.77:8000),A->NA(211.133.*:6000)->S,此时,S记住了 A 的存在,NA也与A建立了对应关系(发到6000的信息就是A的),一样道理,B也与S建立了连接。
2. A通过S知道了B的存在(只是知道存在),A想连B,于是A告诉S,“让B探测我一下”
3. S把A的要求发给B,于是B发送“探测”包给A,事实上就是
B->NB->NA,但是因为 NA 不认识 NB(之前没联系过),所以 NA 就不会转发给 A,随之丢弃。但是 NB
上已经建立起了目的是 NA 的 session,这是后面打洞成功的关键一步。
4. B 发送探测给 A 之后,因为 NA 必定丢弃,所以 B 向 S 发送“反馈包”,就是图中的步骤 4,目的是告诉 S 已经发送过探测包给 A 了。这一步的目的是,借 S 之手告诉 A ,我已经联系过你了,我已经有了关于你的 session 。
5. S 通知 A:“人家 B 已经联系过你了”。
6. A 知道之后,发送数据包给 B ,也就是
A->NA->NB->B。当 NA->NB 时,因为 NB 存有当初链接 NA 的信息,所以 NB 认为它自己认识 NA
,会接受 NA 发送的信息,转发给 B,至此,理论上,打洞完成。AB之间可以互通了。还未经过自己试验,不知道对不对。
图中右上角步骤2中的文字“...给NAT211.134.*”应该是错误的,正确的应该是“211.133.*”,因为是 S 让 B 去连接 A,而 A 的地址是 211.133.*,另外还有几点疑惑和说明的地方
1. “信息不请自来,NAT
安全起见,是会被丢弃的”——A->NA->S 时,NA 接到请求会创建 session ,分配某端口如6000对应 A
,目的是接到发到 6000 端口上的信息就知道转发给 A,但只会接受当初 A 所请求的远程主机 S 所发过来的信息才会转发给
A,其它地址则会丢弃。这也是为什么两个内网不能直接互发的原因,举个例子就是洞还没打,外界发过来的信息,也会被看门人 NA 给扔掉,因 NA
那有一个记录表,A 曾经要求连接 S,这条记录就会有关于 S 的信息,比如另一台 S2 发过来同样的 6000 端口信息,由于 NA
没有记录不认识 S2 ,是会丢弃不会转发的。
2. 打洞要从内部向外部打,S 想连接 A,A 向 S 打洞(发起连接)。A 想连接 B,要通过 S 告诉 B 让 B 向 A 打洞,B 打完 A 沿此路打回去,才能成功。
转自 http://www.cnblogs.com/cinlap/articles/2684330.html
内网穿透&UDP打洞的更多相关文章
- p2p-tunnel 打洞内网穿透系列(三)TCP转发访问内网web服务
系列文章 p2p-tunnel 打洞内网穿透系列(一)客户端配置及打洞 p2p-tunnel 打洞内网穿透系列(二)TCP转发访问远程共享文件夹 p2p-tunnel 打洞内网穿透系列(三)TCP转发 ...
- p2p-tunnel 打洞内网穿透系列(二)TCP转发访问内网共享文件夹
系列文章 p2p-tunnel 打洞内网穿透系列(一)客户端配置及打洞 p2p-tunnel 打洞内网穿透系列(二)TCP转发访问远程共享文件夹 p2p-tunnel 打洞内网穿透系列(三)TCP转发 ...
- p2p-tunnel 打洞内网穿透系列(一)客户端配置及打洞
系列文章 p2p-tunnel 打洞内网穿透系列(一)客户端配置及打洞 p2p-tunnel 打洞内网穿透系列(二)TCP转发访问远程共享文件夹 p2p-tunnel 打洞内网穿透系列(三)TCP转发 ...
- 基于C#的内网穿透学习笔记(附源码)
如何让两台处在不同内网的主机直接互连?你需要内网穿透! 上图是一个非完整版内外网通讯图由内网端先发起,内网设备192.168.1.2:6677发送数据到外网时候必须经过nat会转换成 ...
- 四、frp内网穿透服务端frps.ini各配置参数详解
[必须]标识头[common]是不可或缺的部分 [必须]服务器IPbind_addr = 0.0.0.00.0.0.0为服务器全局所有IP可用,假如你的服务器有多个IP则可以这样做,或者填写为指定其中 ...
- 使用FRP做内网穿透
Github地址:https://github.com/fatedier/frp 什么是FRP? frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 h ...
- 一款带Web面板的轻量级、高性能内网穿透工具:nps使用教程
说明:内网穿透工具之前已经介绍了不少了,比如Frp.lanproxy.Holer等,现在再介绍个带Web面板的穿透工具nps,之前叫easyProxy,只是改名了而已,该工具是一款使用go语言编写的轻 ...
- frp内网穿透学习
前言 因为自己在内网,但是目标站在外网,这时候可以通过内网穿透工具,将接收到的请求转发到内网,实现在内网的msf可以控制外网的靶机. 也看了一些Ngrok,花生壳的,发现Ngrok.cc这个看文章说有 ...
- 如何使用 frp 实现内网穿透
这有一个专注Gopher技术成长的开源项目「go home」 背景 作为一名程序员,家里多多少少会有一些落了灰的电脑,如果把闲置的电脑变成服务器,不仅有良好的配置,还能用来做各种测试,那就再好不过了. ...
随机推荐
- __weak如何实现目标值自己主动设置nil的
在开始评论__weak机制之前,首先,一些床上用品 ARC 实现 苹果公司的官方介绍说,.ARC这是"内存管理由编译器"的,但事实上,只有编译器不能完全胜任,ARC另外还要看OC执 ...
- C# winform 实现 qq 在屏幕边缘 自动隐藏 鼠标移过去 移上去 又自动显示
代码下载地址 http://download.csdn.net/detail/simadi/7677147
- 在python正在使用mysql
缘由 近期在折腾一个小东西须要抓取网上的页面.然后进行解析.将结果放到数据库中. 了解到Python在这方面有优势,便选用之. 由于我有台server上面安装有mysql,自然使用之.在进行数据库的这 ...
- 高速压缩跟踪(fast compressive tracking)(CT)算法分析
本文为原创,转载请注明出处:http://blog.csdn.net/autocyz/article/details/44490009 Fast Compressive Tracking (高速压缩跟 ...
- 微通道产品经理Grover采访:美国的微通道设计
"'哥'在中国是一种尊称吗?哈哈.我们平时都叫张小龙'龙哥'." "是的.Dan哥,当你认为某个人牛逼的时候,你就能够叫他'哥'." 我对于Dan Grover ...
- 淘宝API学习之道:淘宝API相关了解
淘宝API开发平台,经过两年多的升级一系列动作,提供的api接口日渐稳定.看到淘宝api开发的浏览量还是较大,但那会写的DEMO如今已不能执行,淘宝改了链接地址,改了加密算法,为了不让大家浪费时间,特 ...
- 世界杯推动彩票APP爆发,谁将会笑到最后?
巴西世界杯的火爆上演不只给球迷们带来了一场华丽的足球盛宴,对网络彩票行业而言,这也是一次千载难逢的商机. 只是,并不是全部玩家都能攫取理想的商业利益,网络彩票的角逐宛如世界杯的比赛一样,有人晋 ...
- Gradle增量学习建筑
请在本系列下面的文章下载Github演示示例代码: git clone https://github.com/davenkin/gradle-learning.git 假设我们Gradle ...
- 安装、设置与启动MySql绿色版的方法
原文:安装.设置与启动MySql绿色版的方法 1.解压 mysql-noinstall-5.1.30-win32.zip(下载地址http://dev.mysql.com/downloads/mysq ...
- remine chart2安装
http://blog.csdn.net/kufeiyun/article/details/9213911