本文全文均为转载,原教程写的非常详细,在此附上原教程的链接,本文仅作留档,防止原教程网站意外关停无法回溯,如果存在侵权现象,本文将于24小时之内删除:#
https://www.xiaoyu.ing/article/net_traversal ↗ ↗
什么是内网穿透?简单来讲,就像给内网设备装了一扇外网设备可以进的门
家用设备,比如NAS、电脑,通常都躲在路由器分配的内网IP(如192.168.x.x)里,外网根本进不来。而内网穿透的原理就是用一台具备公网IP的服务器作为中转站,让外部设备通过它访问你的内网设备
搞定内网穿透,你可以远程访问NAS、部署私人服务、搭建网盘、控制家中设备、实现远程办公和娱乐:只要不断网,设备随时在线,资源随地可用

内网穿透原理
在教程正式开启前,你需要先准备一台自带公网IP的云服务器以及需要进行内网穿透的本地设备(我这里以Mac mini为例)
教程总共分为两大部分,第一部分是云服务器配置,第二部分是本地环境配置,只要你按照步骤来,大概率不会出现问题

内网穿透教程示意图
不喜欢看图文?点这里查看视频教程:
https://www.bilibili.com/video/BV1UHqrY8Evm/plaintext
↗第一部分:云服务器配置#
具备公网 IP 的云服务器将作为中转站,帮助转发内网和外网的数据流量
↗SSH登录服务器#
↗打开命令行窗口:#
- Windows 用户:使用 CMD 或 PowerShell
打开 CMD:按下 Win+R 输入 cmd,然后回车
打开 PowerShell:按下 Win+X,选择 Windows PowerShell
- Mac 用户:使用 终端(Terminal)
按下 Command+Space 打开 Spotlight,搜索“终端”并打开
↗SSH连接步骤:#
- 在终端输入以下命令后回车:ssh 用户名@服务器IP地址
用户名通常默认是root
浏览器搜索“我的IP”,可以找到提供查询IP地址的网站

- 首次连接会提示确认,输入
yes,回车

- 之后会来到密码输入页面,输入密码不会显示字符,输完直接回车即可

- 密码输入正确后,提示类似图示信息代表成功连接到服务器

↗查看服务器信息:#
- 成功登录后可输入
uname -a查看服务器信息
我这台服务器运行的是 Ubuntu 操作系统,留意自己的,接下来会用到

↗安装1Panel管理面板#
↗下载安装:#
- 打开1Panel官网,点击下载安装
https://1panel.cn/ plaintextJavaScript

- 下划找到安装部署,根据服务器系统获取安装命令

- 在终端中执行刚才拷贝好的安装命令,如图所示

↗配置说明:#
- 国内服务器用户:安装时需要选择
y设置Docker镜像
切换到国内加速源,可以解决访问国外镜像慢或失败的问题,加速安装流程

- 设置访问端口、安全入口和密码,也可以直接回车使用默认参数

- 如果忘记保存密码,可以使用
1pctl user-info命令获取安全入口,使用1pctl update password修改密码

- 跟前面一样,在命令行窗口中,输入密码的过程是看不到的,输入完直接回车即可

↗登录面板:#
- 将外网地址拷贝到浏览器地址栏中打开

- 进入到图示页面,输入我们刚刚设置好的面板用户账号和密码

- 成功登录之后的页面如图所示

↗容器配置#
- 点击“容器”后,点击“配置”,将
https://docker.1panel.live添加进去,然后手动输入“立即重启”后确认


↗安装配置FRP服务端#
↗配置防火墙:#
- 防火墙默认是关闭的,我们需要手动打开系统防火墙

- 新建端口规则,协议选择 TCP/UDP,端口输入7000,然后点击确认
配置 FRP 时,如果没有特别修改,7000 端口就是默认值

- 如图所示,代表创建端口规则成功

↗创建配置文件:#
- 回到命令行窗口,运行
mkdir -p dockers/frps,创建多级文件夹
然后cd dockers/frps进入frps文件夹
输入vi docker-compose.yml命令,创建docker-compose.yml文件

- 然后复制粘贴这段代码,编写
docker-compose.yml文件
version: '3'
services:
frps:
image: snowdreamtech/frps
container_name: frps
restart: always
network_mode: host
volumes:
- ./frps.toml:/etc/frp/frps.toml
environment:
- FRP_CONFIG_FILE=/etc/frp/frps.toml plaintextJavaScript
-
按一下
esc进入命令行模式,输入:wq,回车 -
输入
vi frps.toml创建frps.toml文件,复制粘贴下面这段代码
# frps.toml
# 基本配置
bindPort = 7000 # frps 监听的端口,用于接收 frpc 的连接
# 认证配置
[auth]
method = "token" # 认证方法,这里使用 token
token = "token1234xyz" # 用于验证 frpc 的 token,请使用安全的随机字符串
# Web 管理界面配置(如果不需要 Web 管理界面,可以删除这部分)
[webServer]
addr = "0.0.0.0" # Web 界面监听的地址,0.0.0.0 表示所有地址
port = 7500 # Web 界面的端口
user = "user" # Web 界面的登录用户名
password = "passwordxxx" # Web 界面的登录密码
# 日志配置
[log]
to = "console" # 日志输出位置,console 表示输出到控制台
level = "info" # 日志级别:debug, info, warn, errorplaintext
- 这里需要修改三个地方,
token、user和ppassword,要修改成自己的,然后同样按下esc后输入:wq, 回车

↗启动FRP服务:#
- 输入
docker compose up -d后回车,启动FRP服务,此时前面开放的7000端口也会变成已使用


↗第二部分:本地环境配置#
使用 Docker 快速运行 FRP 客户端(frpc),将本地服务映射到云服务器,完成内网与外网的安全连接,正式实现内网穿透
↗安装Docker环境:#
↗下载安装Docker Desktop:#
https://www.docker.com/products/docker-desktop/plaintext- 按照自己系统的型号下载对应版本的docker


如何区分电脑型号
- 第一次打开docker会让我们登录,直接按“skip”跳过就好


- 新建终端窗口,在命令行中输入
docker -v出现版本号就代表docker安装成功了

↗配置FRP客户端#
↗创建项目目录:#
- 在电脑上创建文件夹并命名为
docker_project,然后创建子文件夹并命名为frpc
并且将两个配置文件放进去:docker-compose.yml和frpc.toml

在文章底部,获取图中两个配置文件
↗配置文件准备:#
- 你需要修改的有
serverAddr(服务器的IP地址)、serverPort(服务器当时开放的端口)以及设置的token(验证信息),这几个都需要和自己服务器的实际信息保持一致

↗部署测试服务并验证#
↗创建测试网站:#
- 在刚才创建的存放
docker项目的文件夹,创建一个website-demo用于存放网站的文件夹,在里面创建一个docker-compose.yml文件,代码文件直接复制进去即可,然后创建一个存放网站的目录www同样将index.html的网页粘贴进去

在文章底部,获取图中两个配置文件
- 设置好后,可以直接通过浏览器打开
index.html

- 返回到有
docker-compose.yml文件的目录,右键底部的地址栏拷贝为路径名称

- 如果mac电脑不显示地址栏,则需保持访达为活跃窗口,点击“显示”,选择“显示路径栏”

win电脑的地址栏在窗口顶部
↗启动服务:#
- 打开终端,输入指令
cd+空格+刚刚拷贝的路径,进入到该目录中,然后输入docker compose up -d进入程序,没有报错就代表成功运行

↗验证测试:#
- 验证一下,在浏览器地址栏输入
http://localhost:8080/

- 打开刚才创建的frpc文件夹,然后使用vs code编辑器编辑
frpc.toml文件
https://code.visualstudio.com/downloadplaintext
- 这里需要修改的就是 配置的注释、name、和本地的端口以及服务器的端口
name从mac-vnc改成mac-web
本地IP就是8080, 远程的IP随意,例如我们就+10000,改为18080
然后保存(⌘command+s)后退出

- 同样在终端中打开这个目录,运行
docker compose up -d启动frpc客户端

- 因为我们是通过服务器的18080端口访问本地的8080端口的程序,所以还需要在服务器中开放18080端口,点击确认后退出即可

- 我们在浏览器中访问服务器的IP+:18080端口,回车,现在所有人都可以访问这个网站

- 我们还可以修改网页代码,让这个网址呈现不一样的画面
↗项目中使用到的文件:#
↗服务器相关资源:#
-
docker-compose.yml— 用于在服务器上部署和运行frp服务端的Docker配置文件 -
frps.toml— frp服务端的核心配置文件,包含端口、认证等重要设置
docker-compose.yml文件version: '3' # Docker Compose文件格式版本
services: # 定义服务
frpc: # 服务名称为frpc
image: snowdreamtech/frpc # 使用的Docker镜像
container_name: frpc # 容器名称
restart: always # 容器重启策略
network_mode: host # 网络模式
volumes: # 数据卷挂载
- ./frpc.toml:/etc/frp/frpc.toml # 配置文件映射
- ./logs:/var/log # 日志目录映射
environment: # 环境变量
- FRP_CONFIG_FILE=/etc/frp/frpc.toml # 指定配置文件路径plaintext# frpc.toml
# 服务器配置
serverAddr = "39.98.38.171" # 公网服务器的IP
serverPort = 7000
# 认证配置
auth.method = "token"
auth.token = "token1234xyz"
# 日志配置
log.to = "console"
log.level = "info"
# -----从这里开始都是,程序的信息-----
# SSH 服务配置
[[proxies]]
name = "mac-ssh"
type = "tcp"
localIP = "host.docker.internal"
localPort = 22
remotePort = 10022
# VNC 服务配置
[[proxies]]
name = "mac-vnc"
type = "tcp"
localIP = "host.docker.internal"
localPort = 5900
remotePort = 15900
plaintext