通知 欢迎关注我的店铺天天软件圆

frp 内网穿透实现公网访问教程:零成本实现公网访问内网服务

2025-06-02
0评论
/
阅读
爱搜啊

最近在家里搭建了个人NAS服务,但很快遇到了一个棘手的问题:在外网环境下无法访问家中的资源。尝试过各种方案后,终于通过frp解决了这个痛点。今天我就把这段实践经历整理成教程,手把手教你如何通过frp实现公网访问内网服务。

什么是frp?

frp是一个专注于内网穿透的高性能反向代理工具,支持TCP、UDP、HTTP、HTTPS等多种协议,甚至还能实现P2P通信。它的核心功能是通过公网服务器中转,将内网服务安全地暴露到公网。与Tailscale、ZeroTier等组网工具不同,frp专注于服务暴露,可以让任何人都能访问你的内网服务。

frp 内网穿透实现公网访问教程

重要提示: 部署frp必须有一台具备公网IP的服务器(VPS),这是整个方案的基础。我使用的是腾讯云的轻量应用服务器,性价比很高。

下载与准备

首先到 Github发布页 下载最新版本。这里有个小技巧:使用uname -a命令查看系统架构,确保下载正确版本(常见amd64/arm64)。解压后你会看到两个关键文件:

  • frps - 服务端程序(用于公网服务器)

  • frpc - 客户端程序(用于内网设备)

从v0.52.0开始,frp改用toml/yaml/json配置文件,ini格式已被废弃。建议新手从最新版本开始学习。

服务端配置

基础配置

  1. 上传frps到服务器/opt/frp目录

  2. 添加执行权限:chmod +x frps

  3. 创建配置文件frps.yaml

bindPort: 7000 
auth:
  token: your_secure_password  # 建议使用强密码
webServer:
  addr: 0.0.0.0
  port: 7500                  # 管理面板端口
  user: admin                 # 面板用户名
  password: dashboard_password # 面板密码

配置说明:

  • bindPort:客户端连接端口

  • token:客户端认证密钥,相当于密码

  • webServer:内置监控面板配置

启动测试:./frps -c ./frps.yaml :一般只用于测试,实际使用还需要使用 systemd 来让 frp 在后台运行,方法在下面

看到"frps started successfully"提示表示启动成功

frp 内网穿透实现公网访问教程

后台运行(生产环境)

正式使用时需要配置systemd服务:

  1. 创建/etc/systemd/system/frps.service

[Unit]
Description=frps service
After=network.target

[Service]
Type=simple
Restart=always
ExecStart=/opt/frp/frps -c /opt/frp/frps.yaml

[Install]
WantedBy=multi-user.target
  1. 启用服务:

systemctl enable frps
systemctl start frps
systemctl status frps  # 检查运行状态

客户端配置

基础配置

  1. 上传frpc到内网设备/opt/frp

  2. 添加执行权限:chmod +x frpc

  3. 创建配置文件frpc.yaml

serverAddr: 你的服务器IP  # 公网服务器IP
serverPort: 7000        # 与服务端bindPort一致
auth:
  token: your_secure_password # 与服务端token相同

proxies:
  - name: AList         # 服务名称(自定义)
    type: tcp           # 传输协议
    localPort: 5244     # 内网服务端口
    remotePort: 5244    # 公网暴露端口

启动客户端:./frpc -c ./frpc.yaml :一般只用于测试,实际使用还需要使用 systemd 来让 frp 在后台运行,方法在下面

看到"start proxy success"提示表示穿透成功

frp 内网穿透实现公网访问教程

多服务配置技巧

如果需要暴露多个服务,只需在proxies下追加配置:

proxies:
  - name: WebService
    type: http           # HTTP协议
    localPort: 8080
    customDomains: ["your.domain.com"]  # 绑定域名
    
  - name: SSH
    type: tcp
    localPort: 22
    remotePort: 2222     # 通过2222端口访问SSH

后台运行(生产环境)

与服务端类似,创建systemd服务:

  1. 创建/etc/systemd/system/frpc.service

[Unit]
Description=frpc service
After=network.target

[Service]
Type=simple
Restart=always
ExecStart=/opt/frp/frpc -c /opt/frp/frpc.yaml

[Install]
WantedBy=multi-user.target
  1. 启用服务:

systemctl enable frpc
systemctl start frpc

安全加固建议

  • 防火墙配置:只开放必要的端口(7000/7500)

  • 定期更新:关注Github发布页,及时升级版本

  • 访问控制:通过面板IP白名单限制管理访问

  • HTTPS加密:对Web服务启用HTTPS加密传输

经验分享: 我在实际使用中将remotePort设置为非常用端口(如52000+范围),有效减少了端口扫描攻击。

进阶应用场景

除了基础穿透,frp还能实现:

  1. 远程桌面连接(Windows/macOS)

  2. 家庭监控摄像头访问

  3. 本地开发环境临时外网测试

  4. IoT设备远程管理

经过一周的稳定运行,我的AList服务通过frp实现了完美的公网访问,传输速度达到带宽上限。整个过程从配置到上线只用了不到30分钟,frp的学习曲线非常平缓。

最终效果: 现在无论身在何处,我都能通过公网IP:5244访问家中的NAS服务,手机端也能流畅播放4K影片,彻底解决了远程访问的痛点。


点击链接加入群聊四群:722808830
点击链接加入群聊三群:751529538(已满)
点击链接加入群聊二群:376877156(已满)
点击链接加入群聊一群:622891808(已满)

饿了么红包
饿了么红包


本站附件分享,如果附件失效,可以去找找看

诚通网盘附件百度网盘附件

标签: frp 内网穿透
于2025-06-02发布