目 录CONTENT

文章目录

内网穿透

解小风
2025-01-15 / 0 评论 / 2 点赞 / 34 阅读 / 8199 字

一般来说,个人本地服务器处于私有网络(局域网或内网)环境,使用的是私有 IP 地址,且被路由器等网络设备保护,其提供的服务(如个人笔记、个人博客等)往往无法被公网直接访问。

若想从公网访问部署在私有网络中的服务,则需要使用 内网穿透 技术。

方式一、公网服务器中继转发

选择一台处在公网环境的服务器,作为中转站,形成 内网服务器 - 中转站 - 公网 的连接方式。中转站多为免费公益机场、具有公网IP的云服务器等。

优点:配置简单,只需要内网服务器配置即可,外网多设备无需配置,直接访问。

缺点:需要额外建设中转服务器;网速取决于内网服务器、中转站、公网的最差者。

此方式的典型代表:

FRP:专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

注:FRP 内网穿透内置的传输协议是加密传输。

frp工作原理.png


方案 1、FRP

(Step1)获取 FRP

FRP_v0.46-linux-amd64.tar

或从此处下载

链接:http://www.jusdot.cn:9765/#s/_MT7Fjkg

密码:faramita

FRP 软件包中包含:

(1)FRPc:客户端软件包(内网服务器,c 代表 client)

(2)FRPs:服务端软件包(公网服务器中转站,s 代表 server)

也可通过下面网址获取最新 frp服务 软件包,根据实际情况选择 linux端 或 windows端 等

https://github.com/fatedier/frp/release


(Step2)编辑配置文件

配置服务端(公网服务器中转站)

# 将 FRPs 文件夹放至 公网服务器 的指定目录,如
/home/faramita/FRPs
# 然后按需自行编辑配置文件 frps.ini

######### frps.ini 文件内容开始 #########
[common]
# 监听端口(可自定义,建议保持默认)
bind_port = 7000
# 控制面板端口(可自定义,建议保持默认)
dashboard_port = 7500
# 控制面板账号密码(可自定义)
dashboard_user = faramita
dashboard_pwd = jshJDfi324fssKSi
# 身份验证,防止任意客户端都可连接此服务端(可自定义)
token = faramita
# 设置 http 和 https 协议下代理端口(可自定义)
# 原理就像 nginx,可以多个网站共同使用这两个端口
vhost_http_port = 80
vhost_https_port = 443
######### frps.ini 文件内容结束 #########

# 【注意】
# 按照上述配置,需要开放公网服务器防火墙的 7000、7500、80、443 端口,并注意是否有端口冲突

配置客户端(内网服务器)

# 将 FRPc 文件夹放至 本地内网服务器 的指定目录,如
/home/faramita/FRPc
# 然后按需自行编辑配置文件 frpc.ini

######### frpc.ini 文件内容开始 #########
[common]
# 公网服务器中转站 的 IP
server_addr = 43.xxx.183.xxx
# 公网服务器中转站 的 监听端口(即 frps.ini 中的 bind_port)
server_port = 7000
# 身份验证(即 frps.ini 中的 token)
token = faramita

# 各种服务配置
# 服务名
[faramita-ssh]
# 服务类型
type = tcp
# 内网服务器IP(也可使用 127.0.0.1)
local_ip = 192.168.xx.100
# 内网服务器服务端口
local_port = 22
# 公网服务器中转站的对外端口
remote_port = 333
# 此时访问公网 http://43.xxx.183.xxx:333 等同于访问内网 http://192.168.xx.100:22
######### frpc.ini 文件内容结束 #########

# 【注意】
# 按照上述配置,需要开放公网服务器防火墙的 333 端口,并注意是否有端口冲突

内网穿透的服务类型 type 主要有如下几种:
(1)type = tcp:适用于大多数服务,如 ssh、个人网页等,访问方式如 http://ip:9080
(2)type = http:需公网IP+域名;访问方式如 http://www.xxx.cn:9080
(3)type = https:需公网IP+域名+SSL证书;访问方式如 https://www.jusdot.cn:9080
(4)type = udp:适用于域名解析,和部分基于 UDP 协议的游戏等(如手游Minecraft)
(5)type = xtcp:客户端之间点对点(P2P)连接协议,流量不经过服务器,适合大流量传输场景,需两台设备间都运行同一个客户端
(6)type = stcp:安全交换 TCP 连接协议,基于 tcp,访问此服务的用户需要运行客户端才能建立连接,流量由服务器转发
个人绝大部分情况下,只使用 type = tcp 即可,如需域名访问,可再使用 Nginx 进行代理。


(Step3)运行 FRP

启动 服务端(公网服务器中转站)
# 环境需求
Docker
docker-image-FRPs_latest.tar

# 导入镜像
sudo docker load --input docker-image-FRPs_latest.tar

# 安装 FRPs
sudo docker run -d --name Faramita-FRPs --privileged=true --restart=always --network host -v /home/faramita/FRPs/frps.ini:/etc/frp/frps.ini snowdreamtech/frps

docker-image-FRPs_latest.tar

或从此处下载

链接:http://www.jusdot.cn:9765/#s/_MT9ssTg

密码:faramita


启动 客户端(内网服务器)
# 环境需求
Docker
docker-image-FRPc_latest.tar

# 导入镜像
sudo docker load --input docker-image-FRPc_latest.tar

# 安装 FRPc
sudo docker run -d --name Faramita-FRPc --privileged=true --restart=always --network host -v /home/faramita/FRPc/frpc.ini:/etc/frp/frpc.ini snowdreamtech/frpc

docker-image-FRPc_latest.tar

或从此处下载

链接:http://www.jusdot.cn:9765/#s/_MT-Xk_Q

密码:faramita


公网访问

当 服务端 和 客户端 均启动成功后,此时访问 公网服务器IP:7500 并再输入账户密码,即可进入 frp 控制面板看板,如下图所示,其中 Proxies 栏目下为当前所代理的所有类型的服务,点击即可查看详细信息。

frp控制面板看板.png

此时使用 frpc.ini 中配置的 IP:端口号 即可公网访问内网服务,至此内网穿透成功。


方式二、虚拟局域网

将所有想要访问内网服务器的设备,都虚拟在一个大局域网内,自然也就没有内网、公网之分

优点:无需中转服务器,几乎是 P2P 直连

缺点:配置繁琐,所有想要访问内网服务器的设备,都需要安装软件,方可加入大局域网

此方式典型代表有:

ZeroTier:开源免费不限流量,但可能存在连接延迟高不稳定的问题
花生壳:贝锐旗下产品,稳定但收费


方案 2、ZeroTier

# 网址注册登录
https://www.zerotier.com/

# 点击 Create A Network - 点击 NETWORK ID 下面的 ID 链接 - 进入界面后,保存好 Network ID(d3ecf5726d3b6916) - Name(zxcserver) - 手机端安装好 zerotier 后打开,点击添加网络 - 设置里允许使用蜂窝数据 - 点击启动 - 返回到网页端 - 在 Members 里,允许手机加入局域网(其他添加网络ID的设备同理,都允许) - 此时手机与 PC 已经在虚拟大局域网内了,Managed IP 列为公网虚拟 IP,之后再公网环境输入服务器的 虚拟IP:端口 ,即可访问本地服务器
# ubuntu 安装 zerotier
sudo aptitude update
sudo aptitude install curl
curl -s https://install.zerotier.com | sudo bash
# 添加网络 ID
sudo zerotier-cli join 网络ID
# 在访问设备(如 windows 和 android)上安装 zerotier
# 访问官网 https://www.zerotier.com/ 下载安装对应版本即可

2
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区