目录
一.内网穿透
1.1 什么是内网穿透
内网穿透(Intranet Penetration)是一种网络技术,它的目标是实现外部网络用户通过公网访问内部(或私有)网络中的主机、服务或资源。通常情况下,内部网络(内网)处于由防火墙或网络地址转换(NAT)等安全设备保护的局域网环境,对外部网络(公网)是不可见的。内网穿透技术允许在不需修改内部网络设置或绕过安全设备的情况下,将外部网络的请求转发到内部网络中的指定主机或服务。
内网穿透技术可以解决以下问题:
-
外部访问内部服务器:内网穿透使得外部用户可以通过公网访问内部网络中的服务器、应用程序等资源,实现远程访问和共享。
-
简化远程管理:对于需要进行远程管理的服务器或网络设备,内网穿透技术可以简化管理过程,方便管理员进行远程操作和维护。
-
分布式办公和云服务:内网穿透可以支持分布式办公环境下的协同工作和资源共享,也可以为云服务提供商提供对内部网络的连接和访问。
常见的内网穿透技术包括端口转发、反向代理、虚拟专用网络(VPN)、隧道技术(如SSH隧道、HTTP隧道)等。这些技术通过建立加密通道、使用中间代理或路由器,将外部网络的请求转发到内部网络中的指定主机或服务。
内网穿透涉及到网络安全问题,应妥善设置访问权限和加密保护措施,确保只有授权用户能够进行访问,并避免潜在风险和安全漏洞的利用。
1.2 实现内网穿透的原理
内网穿透的基本原理是在公网和内网之间建立一个安全的连接通道,让公网用户可以通过这个通道访问内网的资源。
跨越公网和内网的数据传输需要经过路由器和防火墙等设备进行管理和控制,通常来说,内部网络中的主机和服务会被保护在网络地址转换(NAT)设备或防火墙之内,无法直接从公网进行访问。
1.3 实现内网穿透的几种方式
内网穿透可以使用以下几种方式实现:
-
端口转发:通过路由器或防火墙进行端口映射,将公网的请求转发到内网中指定的主机和端口。这是最常见也是最基本的内网穿透方式。
-
反向代理:在公网上搭建一个反向代理服务器,将公网请求转发到内网服务器。通过反向代理可以隐藏内网服务器的真实IP地址,提供负载均衡和高可用性。
-
VPN(虚拟专用网络):建立安全的加密通道,连接公网和内网。通过VPN客户端连接到VPN服务器,就可以访问内部网络中的资源。VPN可以提供较高的安全性和灵活性。
-
隧道技术:如SSH隧道、HTTP隧道等,通过在公网和内网之间建立加密通道,将公网请求封装在隧道中传输到内网服务器。
-
UPnP(通用即插即用):通过使用支持UPnP协议的设备,可以自动配置路由器进行端口映射,实现内网穿透。
-
中间服务器:在公网和内网之间架设一个中间服务器,公网请求先发送到中间服务器,然后再由中间服务器将请求转发到内网中的目标服务器。
这些方式各有特点,适合不同的场景和需求。在选择和使用内网穿透方式时,需要考虑网络安全、性能、易用性等因素,并根据具体情况进行配置和部署。
二.反向代理
2.1 什么是反向代理
反向代理是一种服务器配置和部署方式,用于将请求从客户端发送到目标服务器。与传统的正向代理不同,正向代理是代表客户端发送请求到其他服务器,而反向代理则代表服务器接收请求并将其转发到内部的目标服务器。
具体来说,当客户端发送请求时,它们并不直接发送给目标服务器,而是发送给反向代理服务器。反向代理服务器根据预先定义的规则和配置,将请求转发到内部的目标服务器上,并将接收到的响应返回给客户端。客户端并不知道真实的目标服务器,而只与反向代理服务器进行通信。
反向代理的主要功能包括:
1. 负载均衡:反向代理可以根据负载均衡算法将请求分发到多个内部服务器上,以提高系统的整体性能和可靠性。比如,通过轮询、最少连接数或权重等策略来选择目标服务器。
2. 高可用性:通过在反向代理服务器后面配置多个目标服务器,当其中一个服务器出现故障时,反向代理服务器可以将请求转发到其他正常工作的服务器上,确保服务的持续可用性。
3. 缓存与加速:反向代理服务器可以缓存和压缩来自目标服务器的响应,以减少对目标服务器的请求压力,并加快响应速度。特别是对于静态资源的请求,反向代理可以直接返回缓存的结果,减少数据传输的时间和带宽消耗。
4. 安全性与隐藏:反向代理可以提供安全性增强功能,如SSL加密、身份验证等,保护内部服务器免受直接被公网访问的风险。同时,反向代理也可以隐藏内部网络的拓扑结构和真实IP地址。
反向代理常用于Web应用程序、负载均衡集群、API网关、CDN加速等场景,为系统提供更高效、可靠和安全的服务。
2.2 实现反向代理的工具
2.2.1 Frp
frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。
项目地址:
https://github.com/fatedier/frp
使用步骤:
1.下载和安装:在服务端和客户端上分别下载并安装适合的FRP软件。你可以在FRP的官方网站。
2.配置服务端:在服务端上编辑FRP的配置文件,指定服务端的IP地址、监听的端口以及需要转发的协议和端口等信息。
3.配置客户端:在内网中的客户端上编辑FRP的配置文件,指定服务端的IP地址和端口,以及需要映射的内网服务和端口等信息。
4.启动服务:分别在服务端和客户端上启动FRP服务,确保服务正常运行。
2.2.2 Ngrok
ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。
官网地址:
https://ngrok.com
使用步骤:
1.进入ngrok官网,注册一个账号,并下载客户端;
2.在本地服务器上,运行ngrok;
./ngrok authoken 授权码
3. 添加映射,将HTTP映射转发到本地80端口。
./ngrok http 80
2.2.3.蜻蜓映射
蜻蜓映射是一款完全免费的端口映射工具,集成了动态域名解析和内网穿透。 支持多种类型的应用程序服务(办公OA、ERP、视频监控、微信开发等)。蜻蜓映射可以轻松的实现外网访问内网服务器,而无需运营商分配的公网IP地址,也无需动态域名。
官网地址
https://flynat.51miaole.com
使用步骤:
1.下载客户端到目标主机,并运行;
2.添加映射,设置映射协议和本地端口;
3.复制访问地址,在浏览器测试访问。
2.2.4 natapp
基于ngrok的内网映射工具,免费版本提供http,tcp,udp全隧道穿透、随机域名/随机TCP,UDP端口、不定时强制更换域名/端口和自定义本地端口。
官网地址:
https://natapp.cn
使用步骤:
1.进入官网,下载客户端到目标主机,并运行;
2.购买隧道并设置隧道协议和端口。
2.2.5 StarryFrp
星空内网穿透是一个免费的内网穿透,她可以将局域网个人电脑、服务器映射到公网,所有基于TCP协议的应用及协议,包括:访问内网网站、本地支付接口调试、微信小程序调试、ssh访问、远程桌面等等,她都能胜任,UDP、HTTP、HTTPS、STCP这些协议也不在话下。
官网地址:
https://frp.starryfrp.com/
使用步骤:
1.进入官网,注册账号;
2.创建隧道并设置隧道协议、IP以及端口;
3.下载客户端软件;
4.复制配置文件并修改启动文件frpc.ini;
5.启动隧道服务。
2.2.6 花生壳
花生壳是一款内网穿透工具,它可以将位于内网中的设备通过互联网访问。内网穿透是为了解决内网无法直接访问互联网的问题,比如公司内部的服务器或者家庭网络中的摄像头、NAS等设备,通过内网穿透可以实现外网直接访问这些设备的功能。
官方网址:
https://hsk.oray.com/
使用步骤:
1.注册花生壳账号并下载客户端。
2.安装花生壳客户端,并登录账号。
3.添加需要进行内网穿透的设备,并设置相应的端口号。
4.花生壳会生成一个公网IP和端口号,内网设备可以通过该公网IP和端口号访问。
三.Frp实现内网穿透
3.1 Frp简介
FRP(Fast Reverse Proxy)是一个开源的内网穿透工具,它可以将内部网络中的服务暴露给外部网络进行访问。通过FRP,你可以在公共互联网上访问内部的HTTP、HTTPS、TCP等服务。
FRP的工作原理如下:
- FRP分为服务端和客户端两部分。服务端位于公网上,客户端位于内网中。
- 在服务端上配置FRP服务器,并指定监听的端口。
- 在客户端上配置FRP客户端,指定需要映射的内网服务及其对应的端口。
- 当外部用户通过服务端指定的端口访问时,FRP会将请求转发给客户端并最终传递到内网中的对应服务。
3.2 Frp实现内网穿透
下载源文件
https://github.com/fatedier/frp/releases
树莓派对应的是客户端,阿里云服务器对应的是服务端。
Frp参考文档
https://gofrp.org/docs/
服务端配置 -frps
frp 的服务器端,一般名为 frps,配置文件是 frps.ini。可以在 frp 官方页面 获取到最新版本的下载链接(当然也可以再windows上下载zip文件然后通过ssh工具复制文件到服务端)。接着使用 ssh 登录 vps 端操作,命令行如下:
wget https://github.com/fatedier/frp/releases/download/v0.17.0/frp_0.17.0_linux_amd64.tar.gz
tar -zxvf frp_0.17.0_linux_amd64.tar.gz
cd frp_0.17.0_linux_amd64
nano frps.ini
配置文件内容如下:
[common]
bind_port = 7000
vhost_http_port = 80
dashboard_port = dashboard_port_number
dashboard_user = dashboard_user_name
dashboard_pwd = dashboard_pwd_value
privilege_token = privilege_token_value
ctrl+o 保存,之后 回车 确认,然后 ctrl+x 退出。
参数说明
- bind_port:绑定的端口,需要与客户端配置参数server_port保持一致
- vhost_http_port:虚拟主机运行在本机的端口,如果 vps 有服务占用了端口,应当更换
- dashboard_port:frp 后台服务页面的端口,如果设置 8000,便可通过 http://yourip:8000 来访问 frps 的后台页面
- dashboard_user:frp 后台服务页面的管理员用户名
- dashboard_pwd:frp 后台服务页面的管理员密码
- privilege_token:自定义值,必须与客户端中的 privilege_token 保持一致
配置完成之后,便可以通过如下命令启动 frps:
./frps -c ./frps.ini
为了让服务器一直运行 frp 服务,这里还可以将它添加到开机自启脚本中,命令行如下:
sudo nano /etc/rc.local
在 exit 0
前一行,写上命令,其中 <your_frp_path> 为你 frp 存放的目录位置,即:
<your_frp_path>/frps -c <your_frp_path>/frps.ini
ctrl+o 保存,之后 回车 确认,然后 ctrl+x 退出。
客户端配置 - frpc
frp 的客户端,一般名为 frpc,配置文件是 frpc.ini。同样可以在 frp 官方页面 获取到最新版本的下载链接(当然也可以再windows上下载zip文件然后通过ssh工具复制文件到客户端)。接着使用 ssh 登录 vps 端操作,命令行如下:
wget https://github.com/fatedier/frp/releases/download/v0.17.0/frp_0.17.0_linux_arm.tar.gz
tar -zxvf frp_0.17.0_linux_arm.tar.gz
cd frp_0.17.0_linux_arm
nano frpc.ini
配置文件内容如下:
[common]
server_addr = your_server_ip
server_port = 7000
privilege_token = privilege_token_value
login_fail_exit = false
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = remote_port_number
ctrl+o 保存,之后 回车 确认,然后 ctrl+x 退出。
参数说明
- server_addr:服务器端的 ip
- server_port:服务器端的端口,与服务器配置参数bind_port保持一致
- privilege_token:同服务器端的 privilege_token 保持一致
- login_fail_exit:失败时自动重连
- type:连接类型,可以是tcp、http
- local_ip:内网计算机的IP地址
- local_port:内网计算机的服务端口,如ssh就是22,vnc是5900
- remote_port:远程端口,即 ssh 连接树莓派时的端口
配置完成之后,便可以通过如下命令启动 frps:
./frpc -c ./frpc.ini
为了让树莓派一直运行 frp 服务,这里还可以将它添加到开机自启脚本中,命令行如下:
sudo nano /etc/rc.local
在 exit 0
前一行,写上命令,其中 <your_frp_path> 为你 frp 存放的目录位置,即:
<your_frp_path>/frps -c <your_frp_path>/frps.ini
ctrl+o 保存,之后 回车 确认,然后 ctrl+x 退出。
最后在服务器上开放上述所提到的三个端口,bind_port 、vhost_http_port (server_port )、remote_port 。
在我们访问客户端时,输入your_server_ip以及remote_port两个参数就可以进行访问了。
四.StarryFry内网穿透
星空内网穿透是一个免费的内网穿透,她可以将局域网个人电脑、服务器映射到公网,所有基于TCP协议的应用及协议,包括:访问内网网站、本地支付接口调试、微信小程序调试、ssh访问、远程桌面等等,她都能胜任,UDP、HTTP、HTTPS、STCP这些协议也不在话下。
登录网址:
https://github.com/fatedier/frp/releases
创建隧道:
下载客户端软件:
根据自己的电脑下载
启动客户端:
启动方式有两种,一种是启动命令启动,另一种是配置文件启动。
方式一:获取启动命令->[启动命令]启动->粘贴启动命令
获取启动命令
【启动命令】启动 :
粘贴启动命令:
方式二 :复制配置文件->修改frpc.ini文件->【配置文件】启动
复制配置文件:
修改启动文件:
用Notepad++打开frpc.ini文件,并复制配置文件内容到frpc.ini文件中
【配置文件】启动:
五.花生壳内网穿透
花生壳是一款内网穿透工具,它可以将位于内网中的设备通过互联网访问。内网穿透是为了解决内网无法直接访问互联网的问题,比如公司内部的服务器或者家庭网络中的摄像头、NAS等设备,通过内网穿透可以实现外网直接访问这些设备的功能。它还提供了多种不同的内网穿透方案,包括 TCP 端口映射、UDP 端口映射、HTTP/HTTPS 代理等等。用户可以根据自己的需要选择相应的方案进行部署。
登陆网址:
https://hsk.oray.com/
下载客户端:
客户端可选择四个系统进行安装,分别是Windows、Mac、Linux、树莓派。
添加映射:
登录客户端软件->添加映射->填写映射信息->点击确定
访问https://oray:hsk.top:443就相当于访问了192.168.30.33:80