赞
踩
内网穿透技术,简单理解就是将内网的服务映射到公网中,这样可以随时随地访问。
那什么是内网?什么是公网?先从这个基本概念来简单介绍吧
首先声明,公网、内网和外网这几个概念,不是专业名词,而是根据网络情况,给不同的网络定义个名称,是约定俗成的概念。
内网:也叫做局域网,通常指单一的网络环境。例如你家里的路由器网络、公司网络。网络大小不定,内网中的主机可以相互访问,一旦越出这个局域网访问,就无法访问该网络中的主机。
公网:就是我们可以冲浪【多多少少暴露一点年龄】的互联网,例如QQ、微信、爱奇艺,都是在公网的IP上,只要手机电脑有网络,都可以直接访问。
外网:指国外的网络,例如Github、YouTube,通常是无法访问的,个别能访问的,也是响应速度慢,网络带宽极低。
请大家做个遵纪守法好青年,这里撇开外网不谈,这里单独聊聊内网和公网。
一个路由器打开wifi功能,就是一个局域网,手机电脑就能链接。
路由器上接入网线,连接到公网,手机电脑就能访问公网。
那路由器是不是公网地址?网线直接接电脑上,那电脑是不是公网地址?
答案:路由器不是公网地址,运营商网线的那头,也是运营商的局域网,不是直接的公网地址。
区分公网和内网的唯一区别,是IP地址。
因为IPv4的物理限制,IP数量不够分,所以运营商通常是给某市某区的某一片区域划分一个IP。
虽然IPv6出来了这么多年,奈何展开慢,不然谁愁IP呀。
你现在可以去访问百度,搜索IP,会显示你的IP:xxx.xxx.xxx.xx 某某省某某市某某区 xx运营商
一个公网IP划分成很多个局域网,这技术叫做NAT(网络地址转换)。
因为公网IP因为少,所以很宝贵。
因为家庭用的是内网地址,并且运营商封了很多端口,并且下载不满速上载低速,所以家用带宽年费用很低。
相反,公司带宽啥都有,但是需要各种备案,并且费用那是真的贵。
抛开场景谈需求都是扯犊子,结合场景来理解内网穿透技术的适用范围。
先了解一下,内网有哪些限制?
IP不固定,一段时间会自动切换。
不能直接访问,只能在同一个网络中访问。
敏感端口被封,不能用。例如80 443端口。
网速不稳定,下载不满速,上载低速。
再说一下,公网的优缺点:
贵,服务器贵,带宽贵,IP贵。
IP固定,端口全开放。
带宽稳定,BGP多线路融合,响应速度快。
另外还要补充:
域名的注册和解析
大陆地区的域名需要ICP备案
服务器80端口的HTTP协议,web需要
服务器443端口的HTTPS协议,需要SSL证书
现在结合场景来介绍内网穿透的适用范围:
场景1:开发人员本地调试接口
描述:程序员给项目添加服务,例如短信服务,支付服务,需要在本地写代码、调试和测试。
特点:本地调试、网速要求低、需要HTTP或者HTTPS协议。
需求:必须本地,必须HTTP[S]网址。
场景2:远程办公,在家访问公司内部系统和存储服务
描述:疫情原因需要在家工作,又需要访问公司内部的系统。
特点:远程访问、具体协议不固定、远程时间不固定,可长可短。
特殊:出差的时候,手机上看家里电脑上的资料和视频。
场景3:公网访问局域网的私人存储
描述:家有私人存储,映射到公网,随时随地可以存取文件。
特点:网址或者IP地址都行,需要稳定的通道和传输带宽。
场景4:搭建私人游戏服务器,和伙伴开黑
描述:用自己的电脑做服务器,和小伙伴玩魔兽争霸、我的世界
特定:带宽要求不高,响应速度要求高,只需要IP
想起以前大学玩到宿舍熄灯后偷偷接电玩游戏的时光,想想就激动
既然内网主机不能直接访问,那就在公网弄个服务器。
因为内网主机可以访问公网主机,然后将内网主机和公网主机进行连接,并且保持连接。
如果公网主机接收到的请求,通过链接转发给内网主机即可。
将内网服务进行公网映射,服务通常从端口提供服务,例如:
ssh服务,端口好似22
web服务,端口是80和443
远程桌面服务,端口是3389,win专业版支持远程桌面
redis服务,端口是6379
jellyfin视频站,端口是8096
我的世界 游戏服务,端口是25565
如下图:
这个就是内网穿透的思路。
有了思路,怎么实现?实现的重点是主机连接并且保持长久连接。
实现的方法有几种,这里都来介绍一下:
基于TCP的Socket连接
基于SSH的反向代理
基于WebSocket连接
【当然除此之外,还有其他方法,不过不太了解,就不列出也不介绍。】
1. 基于TCP的Socket连接
Socket连接是计算机网络课程中的基础编程题,你们肯定都做过,《基于TCP的Socket连接做一个命令行版聊天室》
下图是Socket的通信模型
基于TCP的Socket连接,是一种可靠的连接形式,适合将两个主机的端口进行绑定并保持连接。
因为Socket需要客户端和服务端,所以Socket做内网穿透,需要客户端。
既然需要做客户端,通常各服务商的操作,是接入更多的处理,例如智能选择节点等,客户使用就更简单更智能。
优点:智能选择节点,操作完全可控
缺点:安装客户端,响应速度慢
2. 基于SSH的反向代理
SSH,全称Secure SHell,一个安全加密协议。
OpenSSH是遵循协议实现的一个免费开源工具,日常说的SSH,指的是这款软件。
几乎所有的Linux和Macos都自带这款软件,Win10和11都自带,Win7需要借助第三方终端。
SSH支持远程控制和代理,代理有正向代理、反向代理、socks5代理。
反向代理的操作,就是让远端启动端口,把远端端口数据转发到本地。
HostA 上启动一个 PortA 端口,通过 HostB 转发到 HostC:PortC上,在 HostA 上运行:
反向代理:
HostA$ ssh -R HostC:PortC:HostB:PortB user@HostC
使用SSH做内网穿透,好处是无客户端,基本上每个操作系统都内置了SSH。
优点:安全可靠,无客户端,响应速度快
缺点:单一节点
冲这超酷的无客户端,搞一个
3. 基于WebSocket连接
WebSocket 协议诞生于 2008 年,在 2011 年成为国际标准,并且 WebSocket 同样是 HTML 5 规范的组成部分之一。
WebSocket 是一种全新的协议。它应用在了 web page 上,从而使通信双方建立起一个保持在活动状态连接通道,并且属于全双工(双方同时进行双向通信)。
WebSocket和Socket的工作模式差不多,不同点是WebSocket工作在Web网页上。
WebSocket和Socket一样,需要客户端配合服务端工作,所以用户需要配置双端,才可以使用。
我当初做内网云也想到了这个,可惜实践的太少,又不想做客户端,所以放弃了.....
有利肯定就有弊,将本地服务器暴露在公网,也有不好的地方。
第一个:公网主机端口被扫描
网络上到处都有爬虫机器人抓数据和扫描接口【抓肉鸡】。
内网主机由于无法访问,所以你开放端口是没啥安全问题的。
但是部署到公网后,就要注意安全问题。
解决方法:
记录端口访问日志并定时检查
端口伪装,例如22->34423, 3306->42887
端口定时更换,或动态端口号
第二个:DDoS攻击
这个是针对服务器来说的,并非某个端口。
何为DDoS?一般来说是指攻击者利用“肉鸡”对目标网站在较短的时间内发起大量请求,大规模消耗目标网站的主机资源,让它无法正常服务。
自由服务器需要考虑下,解决方法很多,如下:
高防服务器,重点提高服务器的流量防御能力。
黑名单,统一封锁大量或区域IP,可能会关闭了正常流量。
DDoS清洗,实时检查请求,发现奇怪请求直接关闭链接。
学习知识点的,到此就可以止步了,下面是内网穿透服务介绍,需要请求继续观看,有给大家准备福利
服务:内网云——基于SSH安全协议的内网穿透服务
官网:内网云SSH
体验隧道:ssh -R 80:127.0.0.1:8000 sh@sh3.neiwangyun.net
体验隧道直接用,无密码无客户端,官网都不用去
命令解析:
ssh:ssh远程命令
-R:逆向绑定远程端口
80:固定端口
127.0.0.1:固定的本机网络
8000:你需要转发的网络端口,自行更改
sh:默认匿名账号,不需要密码验证
http://sh3.neiwangyun.net:内网云服务器节点的地址,固定值
隧道持久化:
screen + autossh
supervisor + autossh
福利:隧道兑换码 NEW-USER-ONE-PIECE
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。