Yufelix's Blog

Yufelix

【技术方案分享】一文搞定内网穿透 (2)

Nas
41
2025-02-24

本设置教程参考帖子地址:【Nas】无公网v4/v6, 一键回到家庭局域网 - Cane's Blog(自己模仿,配通后,发出来做个笔记,方便以后查阅,也方便小白抄作业。)

本教程完全参照大佬帖子内容和其想法配置,并会贴出部分大佬所使用的图片。

上次我们聊了如何使用 Frp 实现内网穿透,访问家里的设备。如果你还没看过那篇文章,强烈推荐你先读一下:

https://yufelix.xyz/archives/ji-shu-fang-an-fen-xiang-yi-wen-gao-ding-nei-wang-chuan-tou-1

今天,我们要更进一步,教你如何一键回到家庭局域网,访问整个家庭网络,而不是像之前那样一个服务一个服务地映射。听起来是不是很方便?那就跟着我一起往下看吧!

整体架构

这次的方案和上次有点不同。我们不仅要用到 Frp,还要加上一个叫 Nginx Proxy Manager 的工具。它可以帮助我们更方便地管理端口转发和 HTTPS 证书。

image.png

方案部署

服务器端

1. 安装 Frp 服务端 + NPM

我们可以用 Docker 来快速部署这两个服务。下面是 docker-compose.yml 的配置:

version: "3.5"
services:
  frp:
    image: snowdreamtech/frps
    ports:
      - "7000:7000"
      - '443:443' # HTTPS 端口
      - '80:80' # HTTP 端口
    volumes:
      - ./frps.toml:/etc/frp/frps.toml # 配置文件挂载
    restart: always
    container_name: frp
    networks: 
      - nginx
  nginx:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx
    ports:
      - "81:81"
      - "8888:8888"
    restart: always
    volumes:
      - /home/nginx/data:/data
    environment:
      - TZ=Asia/Shanghai
    networks:
      - nginx
networks:
  nginx:
    name: nginx

2. 配置 Frp 服务端

和上次一样,我们需要配置 Frp 服务端。创建一个 frps.toml 文件,内容如下:

bindAddr = "0.0.0.0"
bindPort = 7000

vhostHTTPPort = 80
vhostHTTPSPort = 443
subdomainHost = "yourdomain.com"  # 这里换成你的域名

webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"          # 管理界面用户名
webServer.password = "admin"     # 管理界面密码

auth.method = "token"
auth.token = "123456"            # 这里换成复杂度高的 token

maxPortsPerClient = 100          # 每个客户端允许的端口数量

客户端

1. 配置 Frp 客户端

Frp 客户端的配置文件 frpc.toml 如下:

serverAddr = "xxx.xxx.xxx.xxx"  # 你的服务器 IP 地址
serverPort = 7000
auth.method = "token"
auth.token = "123456"           # 和服务端的 token 保持一致

[[proxies]]
name = "tinyproxy"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8888
remotePort = 8888

使用方法及注意事项

重要的事情说三遍:

不用的时候一定要在 NPM 里面把转发关掉!

不用的时候一定要在 NPM 里面把转发关掉!

不用的时候一定要在 NPM 里面把转发关掉!

配置通过 浏览器 控制 NPM

如果你用的是 Chrome 系浏览器,推荐使用 SwitchyOmega 插件。新建一个情景模式,配置好后,你就可以一键回家了!

image.png

参考资料