内网穿透的软件有很多,要免费,又要能点对点内网穿透,还要数据流量不经过服务器转发,这个要求就有点高了,不做些实验,怕是不敢轻易回答这个主题。
经过实测,答案是使用n2n,当然了,这并不是唯一的答案,在互联网时代,就没有唯一的答案。
frp的话,可以使用xtcp来做点对点的内网穿透,经实测,流量也不会经过服务器,但我研究了半天,也没办法映射端口范围,请注意,流量经服务器转发的话,是可以批量映射端口范围的,唯独xtcp流量不经服务器,就不行了,也许是我能力有限,在此希望有办法实现的大咖不吝赐教。
言归正传,n2n为什么能点对点穿透内网,而且不需要服务器转发?为什么不用考虑端口范围?那是因为n2n直接打通两端的网络,是用虚拟网卡来通讯的,简单来说,就是把公网服务器作为媒介,让两个内网的计算机通过虚拟卡组成了局域网,那么自然不用映射端口了。
配置步骤如下:
一、公网的服务器为电信云主机,拥有固定的公网IP,操作系统为CentOS,我下载的是n2n-2.8版本,编译之前,需要先安装依赖包:
yum install subversion gcc-c openssl-devel git cmake
cd n2n-2.8 *进入目录
mkdir build *创建目录
cd build *进入目录
cmake .. *编译
make & make install *编译成可执行文件,并且开始安装
supernode -l 60000 *运行n2n服务器端,后面可以加上 -v -f,显示详细信息,以便诊断故障、判断问题
二、内网服务器上的配置,操作系统为Debian,安装和配置过程略有不同:
im /etc/apt/sources.list *添加阿里云安装源,源地址就不贴出来了,自己搜索可得
更新源:
apt-get clean
apt-get update
安装依赖包:
apt-get install build-essential git cmake
cd n2n-2.8
mkdir build
cd build
编译和安装:
cmake ..
make & make install
运行n2n客户端
edge -d net0 -c n2n -a 192.168.66.6 -l 云主机公网IP:60000
*net0是自定义的虚拟网卡名称,-a后面是指定虚拟网卡的IP地址,:后面是端口号,注意在安全策略和防火墙内放行端口,后面同样可以-v -f,显示详细信息。
先ping一下自己设置的IP:192.168.66.6,能通,说明虚拟网卡起来了。
三、访客端是Windows10的电脑:
方法一:使用高手做的EasyN2N,图形界面配置直观方便;
方法二:命令行运行,方便打包在自己的安装程序包里,嘿嘿
edge -d tap0 -c n2n -a 192.168.66.1 -l 180.100.214.127:60000
tap0是安装tap-windows后生成的虚拟网卡,先将名称改为英文方便命令行输入。
在这台电脑上ping一下服务器192.18.66.6,速度挺快啊,看下图。
四、家里的电脑向公司内部的服务器传输大文件,测试传输速度,以及流量是否经过电信云主机转发:
1、finalshell连接服务器,上传光盘镜像,看下图,每秒6.7兆;
2、看内网服务器的接收速度,见下图,每秒7兆;
3、登录电信云主机,观察流量,见下图,流量很小,很明显,大文件传输的流量并没有走云主机转发,确实是点对点通信,文件直传的。