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

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

一键脚本自建 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 方便。

参考资料

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

推荐文章

html5在客户端存储数据
2024-11-17 05:02:17 +0800 CST
Go 1.23 中的新包:unique
2024-11-18 12:32:57 +0800 CST
Dropzone.js实现文件拖放上传功能
2024-11-18 18:28:02 +0800 CST
MySQL 1364 错误解决办法
2024-11-19 05:07:59 +0800 CST
使用 sync.Pool 优化 Go 程序性能
2024-11-19 05:56:51 +0800 CST
浅谈CSRF攻击
2024-11-18 09:45:14 +0800 CST
java MySQL如何获取唯一订单编号?
2024-11-18 18:51:44 +0800 CST
纯CSS绘制iPhoneX的外观
2024-11-19 06:39:43 +0800 CST
php客服服务管理系统
2024-11-19 06:48:35 +0800 CST
GROMACS:一个美轮美奂的C++库
2024-11-18 19:43:29 +0800 CST
Vue3中如何实现国际化(i18n)?
2024-11-19 06:35:21 +0800 CST
Rust 与 sqlx:数据库迁移实战指南
2024-11-19 02:38:49 +0800 CST
对多个数组或多维数组进行排序
2024-11-17 05:10:28 +0800 CST
如何将TypeScript与Vue3结合使用
2024-11-19 01:47:20 +0800 CST
程序员茄子在线接单