小铁的博客

FRP内网穿透、远程访问详细配置教程

前言

随着科技发展日新月异,我们越来越需要软件,越来越依赖互联网。但是全球IPv4地址池即将耗尽,各地运营商开始逐步收回IPv4地址。那么家庭宽带没有公网IP,同时又想发布本地服务到公网应该怎么办呢?本文就是为了解决这个问题,通过 内网穿透 技术,我们能够实现安全、稳定地发布本地服务到公网。不用担心,一切都很简单,请耐心一点继续往下看。

内网穿透简介

内网穿透(又称 NAT 穿透端口转发)是一种网络技术,用于解决处于内网(局域网)中的设备无法被公网直接访问的问题。
在传统网络架构中,内网设备通过路由器或防火墙连接到公网,这类设备通常只拥有私有 IP 地址(如 192.168.x.x、10.x.x.x),无法被公网直接识别和访问。
内网穿透的核心原理是通过一个具有公网 IP 的服务器(称为 穿透服务器中转服务器)作为中介,建立内网设备与公网之间的通信通道,使公网用户能够访问内网中的服务或设备。

适用场景:

常用的内网穿透工具:

以上工具各有优缺点,本人目前已经写了 ZerotierFrp 的配置教程,后续会把其他的内网穿透工具教程一个个全部补充上去。

内网穿透 通过 “中转” 机制打破了内网与公网的隔离,在开发、运维、物联网等场景中具有广泛应用。选择工具时需根据需求(如带宽、协议、安全性)权衡开源与商业方案,同时重视网络安全,避免因穿透导致内网暴露风险。

本文使用 FRP ,下面有对该软件的介绍,这个软件原生是需要配置conf文件的,比较麻烦,本文面向小白,所以采用 Frp-Panel 的方式。

力求零运维基础的小白看了也能直接配好,每行要执行的代码前面会标注执行原因。但是你如果连怎么连接云服务器都不清楚的话,你需要先搜一下怎么SSH连接云服务器。

首先我们得有一台拥有公网IP的云服务器,推荐雨云

雨云优惠注册地址:https://www.rainyun.com/

优惠码:xiaotie

使用优惠码注册后绑定微信可获得5折券。

其他云服务器推荐:
[post cid="29" /]

配置前提:

云服务器的推荐配置:

本文以 Ubuntu 22.04 LTS 为例。


1:FRP 介绍

Frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。

为什么选择 Frp?

通过在具有公网 IP 的节点上部署 Frp 服务端,您可以轻松地将内网服务穿透到公网,并享受以下专业特性:


2:服务器端配置

2.1:准备阶段

2.1.1:切换国内软件源

Ubantu/Debian的默认软件源很多是国外的,下载可能会中断或者速度很慢,所以切换软件源为国内阿里源(如果你的VPS是海外线路,那么这块不执行也可以):

cat > /etc/apt/sources.list << EOF
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
EOF

修改软件源配置文件以后,我们更新一下软件包索引,否则白改了:

apt update

2.1.2:安装 Docker

我们使用 Docker 将 Frp 服务隔离出来,更安全也更简洁。
这是docker的安装命令,默认选第一个一直回车就行。

curl -sSL https://linuxmirrors.cn/docker.sh -o docker.sh && bash docker.sh

配置docker加速镜像,跟修改软件源一样,用来加速下载docker镜像。

tee /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://docker.mirrors.aster.edu.pl",
        "https://docker.mirrors.imoyuapp.win"
    ]
}
EOF

应用docker配置。

systemctl daemon-reload

重启docker,使配置生效。

systemctl restart docker

2.2:创建 Frp-Panel 容器

2.2.1:创建 frp 文件夹并切换到 frp 目录
mkdir frp && cd frp

2.2.2:编辑 docker-compose.yml 文件(我习惯用 vim ,你也可以用 nano
vim docker-compose.yml

将以下内容修改后粘贴到文本中(可使用快捷键:SHIFT + INSERT),需要修改的部分加了注释( # 之后的内容),注释放进去不影响 docker 容器的编译和运行。

services:
  frpp-master:
    image: vaalacat/frp-panel:latest
    network_mode: host
    environment:
      APP_GLOBAL_SECRET: your_secret
      MASTER_RPC_HOST: 1.2.3.4 # 修改为服务器的外部IP或域名
      MASTER_RPC_PORT: 9001
      MASTER_API_HOST: 1.2.3.4 # 修改为服务器的外部IP或域名
      MASTER_API_PORT: 9000
      MASTER_API_SCHEME: http
    volumes:
      - ./data:/data
    restart: unless-stopped
    command: master

保存文件:手动打出:wq,然后按回车键。


2.2.3:编译并运行 Docker 容器
docker compose up -d

2.3:配置阶段

2.3.1:访问 Frp-Panel 管理后台
  1. 打开浏览器,地址栏输入 云服务器的公网IP:9000。

    如果访问不到,你需要检查云服务器的外部和内部防火墙是否打开了指定端口(9000 和 9001)
  2. 点击注册按钮,用户名、邮箱和密码随便填写,但是自己要记住。
  3. 输入刚刚注册的用户名和密码,点击登录按钮。

2.3.2:配置服务端
  1. 点击左侧菜单中 服务端 ,然后点击第一条信息中最右侧的 ··· ,最后点击 修改配置
  2. 下图中所有红框标记的是必须要填的,你可以填写和我一样的,也可以自己修改。红框中打码的内容是云服务器的公网IP地址。

    最后点击提交按钮。
  3. 刷新下页面,再次点击左侧 服务端 菜单,看到 配置状态 变为 已配置 即可。

3:客户端端配置

3.1:创建客户端(云服务器)

3.1.1:访问 Frp-Panel 网页端。

如果你忘了怎么访问和登录,请点击这里


3.1.2:配置客户端(云服务器)

3.2:配置客户端(本地)

3.2.1:配置客户端(Windows)

3.2.2:配置客户端(Linux)

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »