内网穿透原理和实现思路介绍
内网穿透技术,简单理解就是将内网的服务映射到公网中,这样可以随时随地访问。
那什么是内网?什么是公网?先从这个基本概念来简单介绍吧
1. 公网、内网和外网
首先声明,公网、内网和外网这几个概念,不是专业名词,而是根据网络情况,给不同的网络定义个名称,是约定俗成的概念。
内网:也叫做局域网,通常指单一的网络环境。例如你家里的路由器网络、公司网络。网络大小不定,内网中的主机可以相互访问,一旦越出这个局域网访问,就无法访问该网络中的主机。
公网:就是我们可以冲浪【多多少少暴露一点年龄】的互联网,例如QQ、微信、爱奇艺,都是在公网的IP上,只要手机电脑有网络,都可以直接访问。
外网:指国外的网络,例如Github、YouTube,通常是无法访问的,个别能访问的,也是响应速度慢,网络带宽极低。
请大家做个遵纪守法好青年,这里撇开外网不谈,这里单独聊聊内网和公网。
一个路由器打开wifi功能,就是一个局域网,手机电脑就能链接。
路由器上接入网线,连接到公网,手机电脑就能访问公网。
那路由器是不是公网地址?网线直接接电脑上,那电脑是不是公网地址?
答案:路由器不是公网地址,运营商网线的那头,也是运营商的局域网,不是直接的公网地址。
区分公网和内网的唯一区别,是IP地址。
因为IPv4的物理限制,IP数量不够分,所以运营商通常是给某市某区的某一片区域划分一个IP。
虽然IPv6出来了这么多年,奈何展开慢,不然谁愁IP呀。
你现在可以去访问百度,搜索IP,会显示你的IP:xxx.xxx.xxx.xx 某某省某某市某某区 xx运营商
一个公网IP划分成很多个局域网,这技术叫做NAT(网络地址转换)。
因为公网IP因为少,所以很宝贵。
因为家庭用的是内网地址,并且运营商封了很多端口,并且下载不满速上载低速,所以家用带宽年费用很低。
相反,公司带宽啥都有,但是需要各种备案,并且费用那是真的贵。
2. 为什么要内网穿透
抛开场景谈需求都是扯犊子,结合场景来理解内网穿透技术的适用范围。
先了解一下,内网有哪些限制?
IP不固定,一段时间会自动切换。
不能直接访问,只能在同一个网络中访问。
敏感端口被封,不能用。例如80 443端口。
网速不稳定,下载不满速,上载低速。
再说一下,公网的优缺点:
贵,服务器贵,带宽贵,IP贵。
IP固定,端口全开放。
带宽稳定,BGP多线路融合,响应速度快。
另外还要补充:
域名的注册和解析
大陆地区的域名需要ICP备案
服务器80端口的HTTP协议,web需要
服务器443端口的HTTPS协议,需要SSL证书
现在结合场景来介绍内网穿透的适用范围:
场景1:开发人员本地调试接口
描述:程序员给项目添加服务,例如短信服务,支付服务,需要在本地写代码、调试和测试。
特点:本地调试、网速要求低、需要HTTP或者HTTPS协议。
需求:必须本地,必须HTTP[S]网址。
场景2:远程办公,在家访问公司内部系统和存储服务
描述:疫情原因需要在家工作,又需要访问公司内部的系统。
特点:远程访问、具体协议不固定、远程时间不固定,可长可短。
特殊:出差的时候,手机上看家里电脑上的资料和视频。
场景3:公网访问局域网的私人存储
描述:家有私人存储,映射到公网,随时随地可以存取文件。
特点:网址或者IP地址都行,需要稳定的通道和传输带宽。
场景4:搭建私人游戏服务器,和伙伴开黑
描述:用自己的电脑做服务器,和小伙伴玩魔兽争霸、我的世界
特定:带宽要求不高,响应速度要求高,只需要IP
想起以前大学玩到宿舍熄灯后偷偷接电玩游戏的时光,想想就激动
3. 内网穿透原理和常用方法
既然内网主机不能直接访问,那就在公网弄个服务器。
因为内网主机可以访问公网主机,然后将内网主机和公网主机进行连接,并且保持连接。
如果公网主机接收到的请求,通过链接转发给内网主机即可。
将内网服务进行公网映射,服务通常从端口提供服务,例如:
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一样,需要客户端配合服务端工作,所以用户需要配置双端,才可以使用。
我当初做内网云也想到了这个,可惜实践的太少,又不想做客户端,所以放弃了.....
4. 内网转发的安全问题
有利肯定就有弊,将本地服务器暴露在公网,也有不好的地方。
第一个:公网主机端口被扫描
网络上到处都有爬虫机器人抓数据和扫描接口【抓肉鸡】。
内网主机由于无法访问,所以你开放端口是没啥安全问题的。
但是部署到公网后,就要注意安全问题。
解决方法:
记录端口访问日志并定时检查
端口伪装,例如22->34423, 3306->42887
端口定时更换,或动态端口号
第二个:DDoS攻击
这个是针对服务器来说的,并非某个端口。
何为DDoS?一般来说是指攻击者利用“肉鸡”对目标网站在较短的时间内发起大量请求,大规模消耗目标网站的主机资源,让它无法正常服务。
自由服务器需要考虑下,解决方法很多,如下:
高防服务器,重点提高服务器的流量防御能力。
黑名单,统一封锁大量或区域IP,可能会关闭了正常流量。
DDoS清洗,实时检查请求,发现奇怪请求直接关闭链接。
学习知识点的,到此就可以止步了,下面是内网穿透服务介绍,需要请求继续观看,有给大家准备福利
5. 简单易用的内网穿透服务推荐
服务:内网云——基于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
内网穿透原理和实现思路介绍相关推荐
- ngrok内网穿透原理分析和实现
转载: ngrok内网穿透原理分析和实现 在互联网终端急剧增长的今天,公网ip已经成为稀缺资源,对于国内垄断的电信运营商来讲,更是不可能随便免费给你一个公网ip,许多家庭宽带都无法分配到 公网ip,又 ...
- frp内网穿透原理及配置应用
1 Frp介绍 frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内网服务以安全.便捷的方式通过具有公网 IP 节点的中转暴露到公网. ...
- 内网穿透原理,以及用花生壳实现内网穿透
在做自学项目部署nginx的时候,nginx部署在阿里云服务器上,项目在本地,阿里云的nginx无法访问到本地的ip,所以需要做一下内网穿透.记录一下 什么是内网穿透? 内网和外网的概念: 内网:即所 ...
- 大白话告诉你内网穿透原理和验证
内网穿透到底干啥的这里不做详述,这篇文章主要是讲这玩意怎么做的 分析 网上有很多原理图,但是说实话鄙人天资愚钝没咋看懂,在网上疯狂百度和个人的验证之后,得出如下简图 其实很简单 想让我们内网的服务能被 ...
- 内网穿透实现原理及三种实现方式
1.操作系统 Deepin - 基于Linux的开源国产操作系统(软件生态好,缺点不够流畅) 官网 Ubuntu | 全球领先的用于个人电脑.平板及手机的操作系统 我使用的版本 Ubuntu乌班图-桌 ...
- 树莓派mjpg-streamer+内网穿透
树莓派mjpg-streamer+内网穿透 一.背景 二.你需要的材料 三.视频传送 四.内网穿透 五.应用及效果 一.背景 我相信很多小伙伴和我一样,对物联网很感兴趣,就算你的专业.工作不是物联网方 ...
- 推荐两款好用的企业级内网穿透软件
内网穿透技术:说到内网穿透,相信很多人肯定一知半解,到底什么是内网穿透呢!什么情况下需要内网穿透呢!接下来给大家简单的述说一下原理,内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特 ...
- 内网穿透技术有哪些(经验分享)
内网穿透技术:说到内网穿透,相信很多人肯定一知半解,到底什么是内网穿透呢!什么情况下需要内网穿透呢!接下来给大家简单的述说一下原理,内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特 ...
- 【Java】Socket网络编程实现内网穿透、端口映射转发、内网穿透上网工具的编写,设置IP白名单防火墙
这里写目录标题 简介 更新 一.背景 1.1 情景假设 1.2 想要达到的目的 1.3 局限 1.3 解决方案一(路由器NAT) 1.4 解决方案二(云服务器转发) 二.方案介绍 2.1 方案简介 2 ...
最新文章
- Java反射机制demo(四)—获取一个类的父类和实现的接口
- Android中的进程
- 2014 Super Training #7 F Power of Fibonacci --数学+逆元+快速幂
- VTK:可视化之RandomProbe
- springboot工具类
- [COCI2017-2018#5] Pictionary(并查集+dfs)
- ubuntu下解压缩zip,tar,tar.gz和tar.bz2文件
- Linux各发行版本简介
- todo项目开发_Facebook的TODO项目,巴西的Coursera,Drupal等
- float取小数点后几位_python Integer整型与Float浮点型操作
- mingw gcc mysql_Windows平台mingw编译器 mysql
- 基础物理-物质的组成
- JS数组ES3-ES6常用方法
- office宏病毒反弹shell实验
- Deepgreen/Greenplum 删除节点步骤
- 转 localStorage
- 外媒:三星确认Galaxy S10 5G版4月5日开始销售
- Airbnb、小猪短租等这类短租类产品发展前景如何?
- 采集存储板第218篇:基于5VFX70T的3U VPX 光纤数据采集存储板
- 本地HTML访问REST服务的实现
热门文章
- android 调取数字键盘,如何在android中的EditText上显示数字键盘?
- python下载手机app视频教程_Python实例教学app
- chrome主页被劫持,每天开机第一次启动,Chrome都会打开2345、360、hao123等网页
- linux创建用户使用密钥对登录
- phpstudy环境下连接mysql数据库
- 平价好用蓝牙耳机推荐,四款音质出众的蓝牙耳机
- C++装饰器模式的实现
- 《软件工程之美》打卡第五周
- 【C#】Hashtable哈希表及其与Dictionary字典的区别
- flutter获取Android照片,Flutter调用Android相机拍照及选取本地相册并渲染