TCP内网穿透的实现与原理(nodejs)

TCP内网穿透的实现与原理(nodejs),第1张

Nagent是TCP内网穿透实现,名称来源于Nat与Agent的组合。类似frp项目,可以在局域网与互联网提供桥梁。

前提是你要有一台流量服务器并且有一个公网IP。如果没有,也可以找服务商。

暂不能向frp那样为>内网机器:A

公网机器:B

1、内网机器(A)安装autossh

配置免密登录

启动端口(A)

参数解释:

注意:autossh只有三个命令,其他命令都是通过调用ssh提供的,autossh在这里只是起到了监听ssh是否断开并将其自动拉起的作用。执行完这条命令,将会在外网机器(B)123123123123上启动并监听8888端口,如下(外网机器查看)

可知,该端口是默认绑定在lo地址上的,所以在外网机器上反向登陆服务器时,可用localhost或者127001,但是不能使用真实网卡的地址去连接。

2、外网机器连接内网服务器

3、添加到系统服务,方便管理
cd /etc/systemd/system/ && vim autosshservice

启停autossh

最近由于网络问题,需要使用frp搭建内网穿透服务,在使用 /frpc  -c /frpcini 启动客户端时,一直提示:

[E] [servicego:273] token in login doesn't match token from configuration

百度一圈后,只得到了以下几点解决方案:

1 去掉token

2 将token修改为简单密码

但是试过很多次之后,还是不行,继续报同样的错,睡了一觉起来后,想到了通过

ps -aux|grep frp 命令查了一下公网服务器上frp服务的相关信息:
请注意重点: 你在启动frps服务时,使用的命令是:/fprs -c /frpsini, 你以为使用的配置文件是frp安装目录底下的frpsini, 而实际上使用的配置文件是  /etc/frp/frpsini

所以: 最终修改 内网服务器中的 frpcini 的token, 与 公网服务器  /etc/frp/frpsini中token保持一致

再重启frps以及frpc, 该问题成功解决

对于正常搭建一个常规的服务器来说,大概需要以下几个步骤:

一有服务器本体或者云服务器的IP,在服务器上安装os。然后需要嚷服务器能够在外部网络访问到,这时候就需要一个公网IP,但一般固定的公网IP是很贵的,向运营商申请也比较麻烦。

这时候能选择的另一种替代方案就是选择做内网穿透,映射公网IP,市面上也有很多内网穿透的软件可以选择。而内网穿透带来的问题一个是网络稳定性,延迟波动可能会很大,另一点就是域名不稳定,映射软件所有人公用的上级域名一旦被封禁,你的服务器所使用的下级域名也会随着封禁而也会无法连接。

但在校园内也许可以通过校园网实现校内服务器,这样做的好处如下,一是整个校园网被识别为同一局域网,这样我们在校内访问位于校园网上到服务器就不需要进行内网穿透,也不需要受制于软件的限速或者网络波动影响。二是比起云服务器,自己搭建的服务器本体可以直接放到寝室,功耗不会很大,也可利用ups实现不间断供电,保证服务器一直开启,检修也比较方便。

三是位于本地的服务器可以根据自己的需要改装,不仅局限于厂商提供的云服务器套餐限制,价格相对也会比较低。

一个免费的内网穿透工具Holer,它可以将局域网服务器代理到公网的内网穿透工具,支持转发基于TCP等协议的报文,作者现在服务端代码已经开源了,而且带Web管理面板,这里就大概说下,我们就可以拿来自建一个内网穿透服务器,使用效果还不错。

截图

Github地址: >可以申请一个单独IP,然后进行架设web网站,不过即使做网站发布,速度上也有不快(属于城域网,其他地区的用户访问起来比较慢)
如果不考虑那么高的,可以使用虚拟主机/vps主机等,性价比高些,最主要是有广域网IP,方便其他地区的访问。

   互联网在我国发展至今的20多年里,以技术带动经济渗透到了人们的生活、工作、社交的方方面面,互联网时代大数据、云计算、AI为代表的技术蓬勃发展的2021年,我们已经离不开互联网了。

   现在的时代是信息与知识的时代,互联网数字化信息交互,信息快速传递和共享,尤其在疫情当下,互联网数字化信息交互,快速弥补了信息的互联互通,在远程办公,远程教育,视频监控,FTP服务器,NAS私有云、水利监管,部署独立服务器上的ERP系统,微信公众号、小程序、开发测试、还是访问局域网电脑、网站、博客、FTP/SVN/MAC等服务器都离不了互联外网访问。

一直以来ipv4的ip就十分紧张,截止2019年11月25日15:35(欧洲时间)最后一批IPv4地址已经分配完毕。这意味着欧洲区的IPv4地址池已经清空,从此之后,RIPE NCC所负责的欧洲、中东、中亚部分地区将完全停止分配IPv4地址,所以,不是每个人都有公网ip。

对普通用户而言,IP地址可以理解为个人网络的门牌号,有了独一无二的门牌号,才能在互联网的汪洋大海里精准定位和识别出,从而正常收取和发送信息。而如果门牌号用光了,就意味着新加入互联网世界的网民,拿不到进入互联网的通行证。

基于这样的情况,IPv6就因此诞了,IPv6的出现,主要是解决IPv4地址空间耗尽的问题,同时其他方面也比IPv4也精进了很多,但是,要真正用上IPV6,需要满足一系列先决条件,从终端设备、网卡、系统到路由器、光猫,以及对应的网站等等,最关键的,其实还是运营商和内容服务商,都要支持或对IPV6做相应的适配,目前ipv6还没有广泛围普及应用,我们还是要面临没有公网IP的问题。

目前局域网环境中主流的外网访问内网分DDNS和内网穿透两种方式,以下将分别介绍:

外网访问内网设备的基础是通过IP来通讯,而且运营商提供的公网IP为动态IP,IP地址会定时变更,所以我们需要使用DDNS服务来使域名绑定随时变化的动态公网IP。

动态域名解析DDNS作为互联网尤其是古早期风靡一时的连接技术,资深网虫网络达人一定不会陌生,在拨号上网、建站风潮迭起的年代,通过DDNS人们可以将本地搭建的个人网站、FTP、管理软件、视频监控等映射到外网进行远程访问。

DDNS不需要用户注册公网固定IP地址,只需要能上网就可以(通常普通用户都是拨号上网这种浮动IP的模式),这种上网方式就决定了每次上网IP都是变化,然后通过DDNS将这个变化的IP与域名绑定,用户只需要记住绑定的动态域名即可,这样就可以通过对应的域名直接访问服务。

DDNS是通过用一个固定的域名绑定动态的公网IP地址,外网只需要使用这个固定域名就可以对内网的服务实现远程访问,服务器端由DDNS服务商负责运营,用户只需安装DDNS客户端即可成功实现动态域名解析,因简单易用、成本低,DDNS迅速得到普及和应用。

借助路由器DDNS绑定域名,可以把电脑当作服务器来使用,帮你在公司或家里构建虚拟主机,而不用花高额费用去付虚拟主机租金,通过域名可以让全球其他互联网用户,访问指定的文件或者网页程序及服务器,并且还可以和用户进行交互;

因为环境和设备及需求不一样,DDNS的解决方案也不一样,主流的有:

①集成DDNS的路由器

具体的说就是采用集成DDNS的路由器,通过申请其域名和服务,把申请所得用户名密码填入路由器DDNS模块相关项,再由路由器上作映射指向所需访问的服务及设备即可,外网通过访问域名即可访问到当前内网相关服务及设备。

②集成DDNS的设备

对于无人值守路由器的状况下,也可采用集成DDNS的网络设备,把申请DDNS服务得到的用户名密码填入相关项,通过一条ADSL等宽带线路直接相连,就可以实现外网通过域名直接局域网的服务及设备。

③运行DDNS客户端软件

在局域网内部的任一PC或服务器上运行DDNS客户端软件,此时域名解析到的IP地址是局域网网关出口处的公网IP地址,再在网关处作端口映射指向即可实现外网访问本地服务及设备。

    如果你无法通过DDNS的方式来实现,那么还是可以选择内网穿透的方式来访问内网设备。

内网是相对外网来说的概念,穿透是在跨网(外网访问内网)下的互通,比如访问搭建在内网服务器上的办公软件(OA、ERP)、网站,甚至内网的个人计算机桌面,如果内网没有公网IP,无法点对点连接,就需要内网穿透。

在实际生活中,我们所在的网络环境其实是很复杂的,可能需要接入的设备连一个公网IP也没有,仿佛在复杂的网络里是会迷失自我,在一层层网络中找不到所寻的路由,最终无法通过路由器连入互联网,这样断开的网络就变成了孤岛,无法接收也无法传送数据。

内网穿透即是内网映射,内网(IP)端口映射外网(IP或域名),进行地址转换,也就是把公网的地址进行翻译,转成为一种私有的地址,然后再采用路由的方式ADSL的宽带路由器,这样就具有一个动态或者是固定的公网IP,最后ADSL直接在交换机 上,以实现将内网服务器、网站、和应用发布到外网访问的目的。

可以自己搭建内网穿透服务,也可以直接借助第三方软件或硬件内网穿透服务器,由服务器代理访问内网安装过客户端的设备,类似有花生壳、金万维等都可以直接在网上找到,通过穿透软件进行端口映射,外网通过映射后生成的域名就可以访问内网应用,基本功能大同小异,结合自己使用场景需求选择。

所以本质上DDNS和内网穿透都在干一件事,但是记录的东西有所不同,前者记录的是公网地址,后者记录的是公网地址和端口号等。

DDNS这功能通常在路由器里实现,穿透是指外来访问经路由器再到具体的一台主机上,这个过程就是穿透,这个也需要本地软件/硬件配合实现。

DDNS 的主要作用就是捕获用户每次变化的 IP 地址,然后将其与域名相对应,这样其他上网用户就可以通过域名来与用户交互了。

选择哪种实现外网内网服务,具体可结合实际环境及设备来选择适合的方案,这样一来,在外也能随时随地访问内网环境下的应用和网站。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10563752.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存