前言

在家里的时候比较经常需要对公司的设备进行配置,使用teamviewer最近总是弹出窗口,很不爽,所以在网上搜索了能够穿透内网的软件n2n lanproxy natapp FCN ngrok等,恰好我有一台洛杉矶的VPS,所以拿n2n进行下测试。使用n2n的原因主要是因为免费、占用资源少、P2P。这个P2P真的让人吐槽

配置

网络拓扑:

公网服务器的配置

我的公网服务器其实就是一台VPS,IP地址107.174.21.2,操作系统是Debian9

命令如下:

vi /etc/apt/sources.list
deb http://ftp.us.debian.org/debian stretch main
deb http://ftp.de.debian.org/debian jessie main ufw disable
apt-get remove iptables
apt-get install aptitude
aptitude install n2n
supernode -h
[版本是v.1.3.2]
nohup supernode -l 9000 &

公司电脑的配置

公司的电脑是ubuntu18.04.1,公司内部的IP地址是192.168.6.32在n2n网络中我准备给他配置的IP地址是10.1.1.1

命令如下:

vi /etc/apt/sources.list
deb http://ftp.us.debian.org/debian stretch main
deb http://ftp.de.debian.org/debian jessie main
ufw disable
apt-get remove iptables
apt-get install n2n
edge -h
[版本是v.1.3.2]
edge -d n2nvpn -c vpn -k password -a 10.1.1.1 -u 1000 -l 107.174.21.2:9000 >/dev/null &

家里笔记本的配置

家里的笔记本是win7,IP地址是192.168.1.5 在n2n网络中我准备给他配置的IP地址是10.1.1.3 拓扑图上写成10.1.1.2了,懒得改了

软件下载地址

配置截图如下:



然后点击Advanced

这时候就配置完成了。

注意事项

1.一定记得关防火墙,为此我多花了20分钟时间排故。。。。悲催

2.版本一定要一致.因为VPS的操作系统部署了其他软件,不方便随意更改操作系统,所以只能迁就VPS,debian下默认是1.3.2版本,所以我都改成了1.3.2版本,其实n2n有1.X 2.X

使用n2n网络

在家里的电脑上打开xshell然后ping测试



好悲催啊!VPS太慢了。

我执行ssh root@10.1.1.1,虽然能登录上去,但是明显感觉有非常大的延迟。不是说好的P2P么!!!

我家里的电脑和公司的电脑可是位于同一座城市啊!怎么可能这么慢!!!

n2n的各edge之间传输数据

在本次实验的拓扑里面,VPS主机就叫supernode,办公室和家里的电脑就是edge

edge之间的流量是否走 supernode完全取决于,两个 edge 节点所在的网络环境

1.如果是公网IP,则点对点传输数据,无需s-node介入

2.如果两端的路由器都是圆锥形NAT,注意「都是」圆锥形的NAT的话,两者之间可以直接传输数据,无需s-node介入

3.有一方面的设备在一个对称型的路由器后面,则无法完成点对点的直接传输,流量都需要superNode的中转。

虽然我不知道我是哪种情况,从实际效果来看,数据肯定是到洛杉矶绕了一圈回来的!!!

悲催啊!

难道还得整国内的VPS????

悲催!

补充:NAT类型



NAT分为两大类,基本的NAT和NAPT(Network Address/Port Translator)。 基本的NAT,它仅将内网主机的私有IP地址转换成公网IP地址,但并不将TCP/UDP端口信息进行转换,有动态与静态之区分。由于现在大部分都属于另一种类型,即NAPT,故这里不详细讨论基础NAT。 另外一种NAT叫做NAPT(Network Address/Port Translator),从名称上我们也可以看得出,NAPT不但会改变经过这个NAT设备的IP数据报的IP地址,还会改变IP数据报的TCP/UDP端口。

NAPT又分为锥型(Cone)和对称型(Symmetric),它们的区别在于,在NAT已分配端口号给Client A的情况下,如果Client A继续用1235端口与另一外网服务器通讯,锥型NAT还会继续用原来62000端口,即所分配的端口号不变。而对于对等型NAT,NAT将会分配另一端口号(如62001)给Client A的1235端口。也就是说,同一内网主机同一端口号,对于锥型NAT,无论与哪一外网主机通讯,都不改变所分配的端口号;而对于对等型NAT,同一内网主机同一端口号,每一次与不同的外网主机通讯,就重新分配另一个端口号。

目前比较常用的NAT类型是完全锥型NAT。

1.首先目前绝大多数的路由器都是非对称型NAT(Cone NAT),所以P2P技术才能正常使用。 对称/非对称的区别主要在于:网关设备在实现NAT时,对于内网某主机的若干个UDP连接请求,网关设备对应地在外网上所建立的UDP端口数量。

2.对称NAT是一个请求对应一个端口,非对称NAT是多个请求对应一个端口(象锥形,所以叫Cone NAT)。对称型NAT(Symmetric NAT)是无法实现P2P技术,流量必须经过supernode。

大部运营商提供的光猫上网服务都是锥形nat的。

而光纤入户,3g 4g网络,公共wifi登因为安全因素都是对称nat。

果然光纤入户不行啊!

后记

今天买了阿里云北京区的VPS一台用来测试,结果发现n2n还是不稳定,n2n这个软件降级为不推荐级别。请大家慎用。

n2n网络穿透内网的更多相关文章

  1. C#用UPnP穿透内网

    参考了网上的一篇文章,由于时间长了,具体地址不知道了. 引入了一个DLL: Interop.NATUPNPLib.dll,实现穿透局域网,进行Socket通信. using System; using ...

  2. 穿透内网,连接动态ip,内网ip打洞-----p2p实现原理(转)

    源: 穿透内网,连接动态ip,内网ip打洞-----p2p实现原理

  3. 1.使用frp穿透内网

    1.前因后果 1.1弃用ngrok 为节约服务器成本,花了500多块买了一个华为云得1G 1核心 5M得云服务器.然后用ngrok来穿透内网.一直用得还  但是今天在弄nginx得时候发现 ngrok ...

  4. centos7下使用n grok编译服务端和客户端穿透内网

    (发现博客园会屏蔽一些标题中的关键词,比如ngrok.内网穿透,原因不知,所以改了标题才能正常访问,) 有时候想在自己电脑.路由器或者树莓派上搭建一些web.vpn等服务让自己用,但是自己的电脑一般没 ...

  5. frp端口映射穿透内网

    前言 frp 是一个高性能的反向代理应用,可以轻松地进行内网穿透,对外网提供服务,支持 TCP.UDP.HTTP.HTTPS 等协议类型,并且 web 服务支持根据域名进行路由转发. Github: ...

  6. FtpServer穿透内网访问配置踩笔记

    FtpServer穿透内网访问配置踩笔记 引言 FtpServer是服务器文件远程管理常用方式. 以前在局域网配置Ftp服务器以及使用公网上的Ftp服务均未碰到问题,固未对Ftp传输进行深入了解. 然 ...

  7. frp穿透内网使用vsftpd服务

    本篇文章将会介绍如何使用frp穿透内网以及如何在centos8环境下安装和使用vsftpd,最后在公网通过frp穿透内网使用ftp. 一.内网穿透神器frp frp 是一个专注于内网穿透的高性能的反向 ...

  8. 网络打洞(P2P软件穿透内网进行通信) 原理

    http://www.cnblogs.com/gansc23/archive/2010/10/20/1857066.html 首先先介绍一些基本概念:NAT(Network Address Trans ...

  9. 【网络】内网穿透方案&FRP内网穿透实战(基础版)

    目录 前言 方案 方案1:公网 方案2:第三方内网穿透软件 花生壳 cpolar 方案3:云服务器做反向代理 FRP简介 FRP资源 FRP原理 FRP配置教程之SSH 前期准备 服务器配置 下载FR ...

随机推荐

  1. pymysql操作mysql的脚本示例

    #!/usr/bin/env python#-*- coding:UTF-8 -*- from multiprocessing import Process , Queuefrom queue imp ...

  2. 03MYSQL数据库

    mySQL 数据库 储存数据,属于中小型数据库   默认端口号 3306  密码root sql是一门编程语言 结构化查询语言  是强类型语言(定义变量时要指定变量类型) 字符串有两种类型:  定长: ...

  3. H3C_IRF

    1.IRF的优点: 跨设备负载均衡 规避环路 强大的网络扩展能力 带宽/可靠性增加 2.IRF域编号存在的意义: 域是一个逻辑概念,一个 IRF 对应一个 IRF 域 如果IRF 1 和IRF 2 之 ...

  4. Dotnetty 的心跳

    只要你不按照实例中使用libuv,就不会有问题了. 主要区别在于 WorkerEventLoopGroup 和 MultithreadEventLoopGroup 之间.

  5. IOS越狱插件汉化工具

    提取插件文件“*.plist"进行制作汉化文件plist文件路径查看方法:安装插件后在cydia中查看该插件页底部“文件系统内容”使用文件管理软件提取(filza;ifile.....) 如 ...

  6. Vue01

    1.vue.js库的下载 vue.js是目前前端web开发最流行的工具库,由尤雨溪在2014年2月发布的. 另外几个常见的工具库:react.js /angular.js 官方网站: 中文:https ...

  7. 手写SpringMVC实现

    设计自己的MVC架构 1.读取配置通过web.xml中加载我们自己写的MyDispatcherServlet和读取配置文件. 2.初始化九大组件只需实现基本的:1).加载配置文件:2).扫描用户配置包 ...

  8. 16.1 解决SecureCRT的Home+End+Del不好用使用方法

    有些时候 securecrt 的快捷键 与我们使用习惯不一致时,可以自己动手修改下映射文件. SecureCRT菜单 :工具→键映射编辑器,在弹出的键盘中点击“home”,会弹出一个窗口,在“发送字符 ...

  9. IPv6学习笔记

    IPv6简写规范: 1)  每个IPv6地址段起始的0可以被省略: 2)  如果一段为4个零,可以简写为一个0 3)  如果有连续的多个段全为0,则可以使用::表示 注:一个地址段中只能有一个::出现 ...

  10. 【java】多态

    多态:某一类事物的多种存在形态 如:动物中的猫和狗猫对象对象的类型是猫类型,即 cat c1= new cat()但同时猫也是动物中的一种,也可以把猫成为动物,即 animal c1= new cat ...