学会内网穿透,看这篇就够了!
学会内网穿透,看这篇就够了!
内网穿透是一种通过公网服务器中转,实现外网设备访问内网设备的技术。通过内网穿透,用户可以远程访问NAS、部署私人服务、搭建网盘、控制家中设备等。本文将详细介绍内网穿透的原理和具体实现步骤。
内网穿透原理
内网穿透的基本原理是使用一台具备公网IP的服务器作为中转站,让外部设备通过它访问内网设备。具体来说,内网设备(如NAS、电脑等)通过内网穿透软件与公网服务器建立连接,然后公网设备通过服务器转发数据包,实现与内网设备的通信。
实现步骤
内网穿透的实现主要分为两大部分:云服务器配置和本地环境配置。
第一部分:云服务器配置
- SSH登录服务器
Windows用户:使用CMD或PowerShell
打开CMD:按下
Win+R
输入cmd
,然后回车打开PowerShell:按下
Win+X
,选择Windows PowerShellMac用户:使用终端(Terminal)
按下
Command+Space
打开 Spotlight,搜索“终端”并打开在终端输入以下命令后回车:
ssh 用户名@服务器IP地址
ssh和用户名之间有空格,用户名通常默认是root。可以通过浏览器搜索“我的IP”来找到提供查询IP地址的网站。
首次连接会提示确认,输入
yes
,回车。之后会来到密码输入页面,输入密码不会显示字符,输完直接回车即可。密码输入正确后,提示类似图示信息代表成功连接到服务器。
查看服务器信息
成功登录后可输入
uname -a
查看服务器信息。服务器运行的是 Ubuntu 操作系统,留意自己的,接下来会用到。安装1Panel管理面板
- 打开1Panel官网,点击下载安装
https://1panel.cn/index.html
- 下划找到安装部署,根据服务器系统获取安装命令
- 在终端中执行刚才拷贝好的安装命令
- 国内服务器用户:安装时需要选择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
按一下 `esc` 进入命令行模式,输入 `:wq`,回车。按 `esc` 切换到命令模式,输入 `:wq` 是告诉编辑器保存当前文件并退出。 输入 `vi frps.toml` 创建 frps.toml 文件,复制粘贴以下代码: ```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, error
这里需要修改三个地方,token、user 和 password,要修改成自己的,然后同样按下
esc
后输入:wq
,回车。启动FRP服务
输入
docker compose up -d
后回车,启动 FRP 服务,此时前面开放的 7000 端口也会变成已使用。
第二部分:本地环境配置
使用 Docker 快速运行 FRP 客户端(frpc),将本地服务映射到云服务器,完成内网与外网的安全连接,正式实现内网穿透。
安装Docker环境
按照自己系统的型号下载对应版本的 Docker:
https://www.docker.com/
如何区分电脑型号:
- 第一次打开 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 文件的目录,右键底部的地址栏拷贝为路径名称。如果 Mac 电脑不显示地址栏,则需保持访达为活跃窗口,点击“显示”,选择“显示路径栏”。Win 电脑的地址栏在窗口顶部。
启动服务
打开终端,输入指令
cd
+空格+刚刚拷贝的路径,进入到该目录中,然后输入docker compose up -d
进入程序,没有报错就代表成功运行。验证测试
验证一下,在浏览器地址栏输入
http://localhost:8080/
。打开刚才创建的
frpc
文件夹,然后使用 VS Code 编辑器编辑frpc.toml
文件:https://code.visualstudio.com/download
这里需要修改的就是配置的注释、name、和本地的端口以及服务器的端口。name 从
mac-vnc
改成mac-web
。本地 IP 就是 8080,远程的 IP 随意,例如我们就 +10000,改为 18080。然后保存(⌘command+s
)后退出。同样在终端中打开这个目录,运行
docker compose up -d
启动 frpc 客户端。因为我们是通过服务器的 18080 端口访问本地的 8080 端口的程序,所以还需要在服务器中开放 18080 端口,点击确认后退出即可。
我们在浏览器中访问服务器的 IP+:18080 端口,回车,现在所有人都可以访问这个网站。我们还可以修改网页代码,让这个网址呈现不一样的画面。