ca227156 de28 41d9 a7d6 681743c0f63a

使用内网穿透工具FRP访问内网NAS

FRP(Fast Reverse Proxy)是一款开源的内网穿透工具,适用于将内网服务暴露到公网。它通过一个具有公网IP的服务器(如VPS)作为中转,将外部请求转发到内网设备(如家内群晖)。以下是使用FRP实现内网穿透的详细步骤:


1. FRP 的工作原理

  • FRP 服务端(frps):运行在具有公网IP的服务器(如VPS)上,负责接收外部请求并将其转发到内网设备。
  • FRP 客户端(frpc):运行在内网设备(如家内群晖)上,负责与服务端建立连接,并将服务端的请求转发到内网服务。

2. 准备工作

  • VPS:一台具有公网IPv4地址的服务器。
  • 家内群晖:确保群晖NAS可以通过内网访问。
  • 域名(可选):如果需要通过域名访问,建议准备一个域名并解析到VPS的公网IP。

3. 在VPS上配置FRP服务端(frps)

3.1 下载FRP

访问FRP的GitHub发布页面,下载适合VPS操作系统的版本:
https://github.com/fatedier/frp/releases

例如,下载Linux版本:

wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz
tar -zxvf frp_0.51.3_linux_amd64.tar.gz
cd frp_0.51.3_linux_amd64

3.2 配置FRP服务端

编辑frps.ini文件:

[common]
bind_port = 7000  # FRP服务端监听的端口
token = your_token  # 客户端连接时的认证令牌(可选但推荐)
  • bind_port:FRP服务端与客户端通信的端口。
  • token:用于客户端和服务端之间的认证,增加安全性。

3.3 启动FRP服务端

运行以下命令启动FRP服务端:

./frps -c frps.ini

3.4 设置FRP服务端开机自启(可选)

编辑系统服务文件(如/etc/systemd/system/frps.service):

[Unit]
Description=FRP Server
After=network.target

[Service]
ExecStart=/path/to/frps -c /path/to/frps.ini
Restart=on-failure

[Install]
WantedBy=multi-user.target

启用并启动服务:

sudo systemctl enable frps
sudo systemctl start frps

4. 在家内群晖上配置FRP客户端(frpc)

4.1 下载FRP客户端

在群晖NAS上下载适合的FRP版本(如Linux ARM版本):

wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_arm.tar.gz
tar -zxvf frp_0.51.3_linux_arm.tar.gz
cd frp_0.51.3_linux_arm

4.2 配置FRP客户端

编辑frpc.ini文件:

[common]
server_addr = your_vps_ip  # VPS的公网IP
server_port = 7000  # FRP服务端的端口
token = your_token  # 与服务端一致的认证令牌

[synology]  # 自定义名称
type = http  # 协议类型
local_ip = 192.168.1.100  # 家内群晖的内网IP
local_port = 5000  # 家内群晖的服务端口
remote_port = 8080  # 在VPS上暴露的端口
custom_domains = yourdomain.com  # 绑定的域名(可选)
  • server_addr:VPS的公网IP。
  • server_port:与服务端bind_port一致。
  • local_iplocal_port:家内群晖的内网IP和服务端口。
  • remote_port:在VPS上暴露的端口,外部通过该端口访问。
  • custom_domains:如果使用域名,将其解析到VPS的公网IP。

4.3 启动FRP客户端

运行以下命令启动FRP客户端:

./frpc -c frpc.ini

4.4 设置FRP客户端开机自启(可选)

在群晖NAS上,可以通过计划任务或Docker容器实现FRP客户端的开机自启。


5. 配置Nginx反向代理(可选)

如果希望通过域名访问,可以在VPS上配置Nginx反向代理:

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:8080;  # FRP暴露的端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
  • yourdomain.com:替换为你的域名。
  • 8080:FRP客户端配置中remote_port的值。

6. 测试访问

  • 通过浏览器访问http://yourdomain.comhttp://your_vps_ip:8080,确保能够访问家内群晖。

7. 安全性增强

  1. 启用HTTPS
  • 使用Let’s Encrypt为域名配置SSL证书。
  • 在Nginx中启用HTTPS监听。
  1. 限制访问
  • 在VPS上配置防火墙,仅允许必要的端口(如80、443、7000)。
  • 使用FRP的token认证,确保只有合法的客户端可以连接。
  1. 日志监控
  • 定期检查FRP服务端和客户端的日志,排查异常连接。

总结

通过FRP实现内网穿透,可以安全地将家内群晖暴露到公网。FRP配置简单、灵活,适合没有公网IPv4或IPv6的家庭网络。结合Nginx反向代理和SSL/TLS加密,可以进一步提升安全性和访问体验。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部