内网穿透
song

什么是内网穿透

内网穿透是一种网络技术,可以让处于局域网(比如你家里的网络)中的设备,通过互联网与外部设备进行通信。简单来说,就是让你家里的电脑、摄像头、服务器等设备,可以通过互联网从外面访问到。

方案 成本
frp
需要公网服务器 https://github.com/fatedier/frp
cpolar 免费版收费版 https://www.cpolar.com/
Cloudflare Tunnel 免费版

基于frp的内网穿透

frp 主要由两个组件组成:客户端(frpc) 和 服务端(frps)。通常情况下,服务端部署在具有公网 IP 地址的机器上,而客户端部署在需要穿透的内网服务所在的机器上。

由于内网服务缺乏公网 IP 地址,因此无法直接被非局域网内的用户访问。用户通过访问服务端的 frps,frp 负责根据请求的端口或其他信息将请求路由到相应的内网机器,从而实现通信。

官方教程文档:文档

在公网vps上部署frps

1
2
3
4
5
wget https://github.com/fatedier/frp/releases/download/v0.54.0/frp_0.54.0_linux_amd64.tar.gz
tar -zxvf frp_0.54.0_linux_amd64.tar.gz
cd frp_0.54.0_linux_amd64
# 服务端参数配置
vim ./frps.toml

frps.toml的参数设置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#frps监听端口
bindPort = 17000

# 配置 frp dashboard
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "password"

# 配置 token 认证,frpc 客户端也需指定一样的token
auth.method = "token"
auth.token = "password"

# 只允许frpc绑定指定ports.
allowPorts = [
{ start = 6000, end = 6500 }

使用systemd实现frps在后台长期运行:

1
vim /etc/systemd/system/frps.service

写入内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.toml

[Install]
WantedBy = multi-user.target

使用 systemd 命令管理 frps 服务

1
2
3
4
5
6
7
8
9
10
# 启动frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重启frp
systemctl restart frps
# 查看frp状态
systemctl status frps
#设置 frps 开机自启动
systemctl enable frps

在本地电脑部署frpc

我个人电脑用的是win11,下载了windows版的frp压缩包:
https://github.com/fatedier/frp/releases/download/v0.54.0/frp_0.54.0_windows_amd64.zip

客户端frpc.toml文件配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
serverAddr = "xxx.xxx.xxx.xxx"  #服务器公网ip
serverPort = 17000

auth.method = "token"
auth.token = "password"
loginFailExit = false

[[proxies]]
name = "rdp"
type = "tcp"
localIP = "127.0.0.1" #内网地址
localPort = 3389 #内网端口
remotePort = 6002 #表示在frp服务的监听的端口,访问此端口流量将被转发到本地服务器对应的localPort端口上

nssm设置frpc开启启动

下载nssm
https://www.nssm.cc/download
https://www.nssm.cc/ci/nssm-2.24-101-g897c7ad.zip
解压后,把64位版本的nssm复制到 C:\Users\用户名\AppData\Local\Microsoft\WindowsApps 目录下。
进入frp 目录 ,编写start.bat文件后保存。

1
2
3
4
5
6
@echo off
:: 启动 frpc.exe 并记录日志
C:\frp\frpc.exe -c C:\frp\frpc.toml >> C:\frp\frpc.log 2>&1

:: 退出批处理脚本
exit

打开管理员模式的命令提示符
执行命令

1
nssm install frpc

在弹出的nssm窗口选址执行文件路径 C:\frp\start.bat。点击保持。

nssm 一些管理命令:

1
2
3
4
5
6
7
8
# 启动任务
nssm start frpc
# 停止服务
nssm strop frpc
# 编辑任务
nssm edit frpc
# 删除任务
nssm remove frpc

基于cpolar的内网穿透

参考官网文档

  1. 下载与安装:首先,用户需要从Cpolar的官方网站(https://www.cpolar.com/)下载对应操作系统的安装包,并按照提示完成安装。
  2. 注册与登录:在安装完成后,用户需要注册一个Cpolar账号并登录。
  3. 配置隧道:登录后,用户可以通过Cpolar的Web UI界面或命令行界面来配置隧道。隧道配置包括选择协议类型、本地服务端口号以及域名类型等。
  4. 获取公网地址:配置完成后,Cpolar会自动分配一个公网地址给隧道,用户可以通过这个公网地址来访问内网服务。
  5. 测试与访问:用户可以在浏览器中输入公网地址加接口路径来测试访问内网服务。
由 Hexo 驱动 & 主题 Keep