代码 一键脚本搭建Frp服务,并配置NAS和OpenWrt软路由,最后设置反向代理以便通过子域名访问内网服务

2024-11-19 05:14:20 +0800 CST views 1551

一键脚本自建 Frp 内网穿透访问家里 NAS 和软路由

最近,我购入了一台二手的群晖 NAS,虽然群晖自带的 QuickConnect 功能可以免费实现内网穿透,但由于网络带宽限制,体验并不理想。因此,我再次尝试使用 Frp 来实现内网穿透。在之前的文章中,我已经记录了 Frp 的搭建过程,这次我新增了访问 NAS 的部分内容,并通过反向代理子域名来访问内网服务,使其更加便捷。

Frp 的搭建

  1. SSH 进入 VPS 后台:

    创建一个文件夹并进入:

    mkdir ~/data/frp
    cd ~/data/frp
    
  2. 一键脚本进行搭建:

    wget https://raw.githubusercontent.com/mvscode/frps-onekey/master/install-frps.sh -O ./install-frps.sh
    chmod 700 ./install-frps.sh
    ./install-frps.sh install
    
  3. 按照脚本引导完成安装:

    例如:

    Please select frps download url:
    [1].gitee
    [2].github (default)
    Enter your choice (1, 2 or exit. default [github]): 2
    -----------------------------------
           Your select: 2     
    -----------------------------------
    

    在此过程中,你可以根据需求调整 frps 的端口配置及相关参数。完成安装后,通过浏览器访问 http://<IP>:<dashboard_port> 即可打开 Frp 的面板。

NAS 设置

  1. 配置文件:

    进入群晖 NAS,创建一个文件夹用于存放配置文件,例如 /docker_data/frp。然后,在本地创建一个 frpc.toml 配置文件,内容如下:

    [common]
    server_addr = 000.111.222.333  # VPS 的 IP
    server_port = 5443  # VPS 上设置的 bind_port
    token = 你的token
    
    [NAS]
    type = tcp
    local_ip = 192.168.1.10  # NAS 的局域网 IP
    local_port = 5000  # 群晖默认端口
    remote_port = 9001  # 与 VPS 通信的端口
    
    [emby]
    type = tcp
    local_ip = 192.168.1.23
    local_port = 8096
    remote_port = 9002
    

    将配置文件上传到 /docker_data/frp 目录下。

  2. 下载并运行 Frpc 容器:

    在群晖的 Container Manager 中搜索 Frpc,找到 stilleshan/frpc 并下载。在运行容器时,确保以下配置:

    • 开启自动重新启动。
    • 在存储空间设置中,添加 /docker_data/frp/frpc.toml 文件到容器内 /frp/frpc.toml 路径。

    现在,可以在 Frp 面板中看到连接信息,并通过 http://<VPS IP>:<remote_port> 访问 NAS。

OpenWrt 软路由设置

  1. 进入 OpenWrt 后台:

    选择服务 - Frp 内网穿透,按照以下步骤填写配置:

    • 服务器:填写 VPS 的 IP 地址。
    • 端口:填写 binding_port
    • HTTP 穿透服务端口:填写 vhost_http_port
    • HTTPS 穿透服务端口:填写 vhost_https_port
  2. 添加服务配置:

    在服务列表下方点击添加,根据需求配置 Frp 协议类型、远端端口(如 9003),并填写内网主机地址和端口(如软路由后台地址的 IP 和端口 80)。

  3. 保存并应用:

    完成后,可以在 Frp 面板中看到新的连接信息,通过 http://<VPS IP>:<远端端口> 访问软路由后台。

反向代理一个域名

虽然使用 IP+端口号 的方式可以远程访问,但通过反向代理后使用子域名访问内网服务会更方便。

  1. 解析子域名到 VPS:

    例如,将 nas.example.com 解析到 VPS。

  2. 配置反向代理:

    通过宝塔面板、1Panel 或 NPM 对子域名进行反向代理,代理地址为 http://127.0.0.1:9001(与前面 NAS 配置文件中的 remote_port 一致),并配置 SSL 证书。完成后即可通过 nas.example.com 直接访问内网服务。

注意事项

  • 确保端口号不冲突,可以通过 lsof -i:<端口号> 检查端口是否被占用。
  • 在防火墙中放行所有用到的端口,特别是使用阿里云或腾讯云的 VPS 时。

后记

我使用的是阿里云香港服务器,测试时内网 emby 的电影速度可以达到 3M/s,足够日常使用。另外,我也尝试过搭建 Tailscale 进行内网穿透,尽管 Tailscale 更安全,但使用不如 Frp 方便。

参考资料

复制全文 生成海报 网络 技术 教程 云计算 家庭网络

推荐文章

Vue3中如何处理权限控制?
2024-11-18 05:36:30 +0800 CST
Vue3中的事件处理方式有何变化?
2024-11-17 17:10:29 +0800 CST
mysql删除重复数据
2024-11-19 03:19:52 +0800 CST
Vue3中的自定义指令有哪些变化?
2024-11-18 07:48:06 +0800 CST
Vue 3 中的 Fragments 是什么?
2024-11-17 17:05:46 +0800 CST
PHP 微信红包算法
2024-11-17 22:45:34 +0800 CST
Vue3中如何实现插件?
2024-11-18 04:27:04 +0800 CST
Golang实现的交互Shell
2024-11-19 04:05:20 +0800 CST
微信小程序热更新
2024-11-18 15:08:49 +0800 CST
Nginx 反向代理 Redis 服务
2024-11-19 09:41:21 +0800 CST
一些好玩且实用的开源AI工具
2024-11-19 09:31:57 +0800 CST
Git 常用命令详解
2024-11-18 16:57:24 +0800 CST
前端项目中图片的使用规范
2024-11-19 09:30:04 +0800 CST
Java环境中使用Elasticsearch
2024-11-18 22:46:32 +0800 CST
Linux 常用进程命令介绍
2024-11-19 05:06:44 +0800 CST
html流光登陆页面
2024-11-18 15:36:18 +0800 CST
程序员茄子在线接单