您当前位置:网站首页 >> 互联网 >> 技术分享 >> 告别内网限制!实现远程访问本地服务,最主要免费、高效、稳定

告别内网限制!实现远程访问本地服务,最主要免费、高效、稳定

时间:2025-04-01 18:34:23  来源:高骥中文网    作者:Anonymous   浏览:202

 要想在互联网上访问本地文件,就需要通过内网穿透技术,将本地服务暴露到公网中,此时内网穿透工具就显得格外重要。

 

FRP(Fast Reverse Proxy)是一款优秀的内网穿透工具,能够帮助我们轻松地搭建内网穿透服务,实现本地文件的外网访问, 支持 TCP、UDP、HTTP、HTTPS 等多种协议。

部署过程包含两部分:

  1. 1. FRP 服务器端 (frps): 运行在一台具有公网 IP 地址的机器上(通常是云服务器 VPS)。
  2. 2. FRP 客户端 (frpc): 运行在你本地的 Windows 机器上,也就是运行着你想穿透的那个应用服务的机器。

假设:

  • • 你已经有一台具有公网 IP 地址的服务器(比如 Linux VPS),其公网 IP 为 your_server_public_ip
  • • 你本地 Windows 机器上有一个应用服务正在运行,监听在某个端口(例如,一个 Web 服务监听在 127.0.0.1:8080)。
  • • 你想通过公网访问这个本地服务。

步骤一:在公网服务器上部署 FRP 服务器端 (frps)

(通常服务器是 Linux 系统,这里以 Linux 为例。如果你需要在 Windows 服务器上部署 frps,过程类似,只是文件名和运行方式略有不同)

  1. 1. 下载 FRP:
    • • 访问 FRP 的 GitHub Releases 页面: https://github.com/fatedier/frp/releases
    • • 根据你的服务器 操作系统 和 CPU 架构 (通常是 linux_amd64) 下载最新的 frp_..._linux_amd64.tar.gz 文件。
    • • 例如,使用 wget 下载 (版本号可能需要更新):
      wget https://github.com/fatedier/frp/releases/download/v0.58.1/frp_0.58.1_linux_amd64.tar.gz
  2. 2. 解压:
    tar -zxvf frp_0.58.1_linux_amd64.tar.gz
  3. 3. 配置 frps.ini (服务器配置文件):
    • • 进入解压后的目录,例如 cd frp_0.58.1_linux_amd64
    • • 编辑 frps.ini 文件(如果不存在则创建,但通常解压后会有一个 frps.toml 或 frps.ini 示例,新版本推荐 frps.toml,这里用 .ini 举例,语法类似)。
    • • 一个 最基本 的配置如下:
      [common]
      # frps 服务端监听的端口,用于接收 frpc 客户端的连接
      bind_port = 7000
      # 设置一个身份验证令牌,frpc 连接时需要提供此令牌
      token = YourSecretToken123

      # (可选) Dashboard 仪表盘,方便查看 frp 状态
      dashboard_port = 7500
      dashboard_user = admin
      dashboard_pwd = admin_password
    • • 重要参数说明:
      • • bind_port: frps 和 frpc 之间通信的端口,必须在服务器防火墙上允许外部访问。
      • • token: 用于身份验证,防止未经授权的 frpc 连接。请务必修改为你自己的复杂密码
      • • dashboard_port: 如果启用,这个端口也需要在服务器防火墙上放行,但建议只允许特定 IP 访问或配置反向代理增加安全性。
      • • 如果你想通过域名(如 http://web.yourdomain.com)访问 HTTP 服务,还需要配置 vhost_http_port = 80 和/或 vhost_https_port = 443,并在防火墙放行这些端口。
  4. 4. 防火墙设置:
    • • 确保你的服务器防火墙(如 ufwfirewalld) 以及云服务商的安全组规则允许 入站 流量访问你配置的 bind_port (例如 7000) 和 dashboard_port (例如 7500)。
    • • 如果配置了 vhost_http_port 或 vhost_https_port,也需要放行这些端口(通常是 80 和 443)。
    • • 示例 (UFW on Ubuntu):
      sudo ufw allow 7000/tcp
      sudo ufw allow 7500/tcp # 如果启用了 Dashboard
      # sudo ufw allow 80/tcp  # 如果使用 vhost_http_port
      # sudo ufw allow 443/tcp # 如果使用 vhost_https_port
      sudo ufw enable
      sudo ufw status
  5. 5. 运行 frps:
    • • 前台运行 (用于测试):
      ./frps -c ./frps.ini
      按 Ctrl+C 停止。
    • • 后台运行 (推荐):
      nohup ./frps -c ./frps.ini > frps.log 2>&1 &
      这会在后台运行 frps,并将日志输出到 frps.log 文件。
    • • 使用 systemd (更健壮的方式):
      可以创建一个 systemd service 文件来管理 frps 服务,实现开机自启和自动重启。具体方法可以搜索 "frps systemd service"。

步骤二:在本地 Windows 机器上部署 FRP 客户端 (frpc)

  1. 1. 下载 FRP:
    • • 再次访问 FRP 的 GitHub Releases 页面: https://github.com/fatedier/frp/releases
    • • 这次根据你的 Windows 系统和 CPU 架构 (通常是 windows_amd64) 下载 frp_..._windows_amd64.zip 文件。
  2. 2. 解压:
    • • 在你本地 Windows 机器上找一个合适的位置(例如 C:\frp)解压下载的 .zip 文件。你会看到 frpc.exe 和 frpc.ini (或 frpc.toml) 等文件。
  3. 3. 配置 frpc.ini (客户端配置文件):
    • • 使用文本编辑器(如 Notepad++ 或 VS Code)打开解压目录中的 frpc.ini 文件。
    • • 编辑配置,指定要连接的服务器和要穿透的本地服务。
    • • 一个 示例配置 如下 (假设穿透本地 8080 端口的 Web 服务和 RDP 远程桌面):
      [common]
      # frps 服务器的公网 IP 地址
      server_addr = your_server_public_ip
      # frps 服务器监听的端口 (必须与 frps.ini 中的 bind_port 一致)
      server_port = 7000
      # frps 服务器设置的身份验证令牌 (必须与 frps.ini 中的 token 一致)
      token = YourSecretToken123

      # --- 定义第一个要穿透的服务:本地 Web 服务 ---
      [web_service_http]
      # 类型:tcp, udp, http, https, stcp, xtcp 等
      type = tcp
      # 本地服务的 IP 地址 (通常是 127.0.0.1)
      local_ip = 127.0.0.1
      # 本地服务的端口号
      local_port = 8080
      # 在 frps 服务器上监听的端口,外部通过这个端口访问你的本地服务
      # 这个端口必须是你的 frps 服务器上未被占用的端口
      remote_port = 8081
      # (可选) 如果 frps 配置了 subdomain_host,可以用 http 类型和 subdomain
      # type = http
      # local_port = 8080
      # subdomain = mylocalweb # 访问地址将是 http://mylocalweb.yourdomain.com (需配置 DNS)

      # --- 定义第二个要穿透的服务:Windows 远程桌面 (RDP) ---
      [windows_rdp]
      type = tcp
      local_ip = 127.0.0.1
      # RDP 默认端口是 3389
      local_port = 3389
      # 在 frps 服务器上为 RDP 分配一个端口
      remote_port = 7001
    • • 重要参数说明:
      • • server_addr: 你的公网服务器 IP。
      • • server_port: 必须和服务器 frps.ini 中的 bind_port 相同。
      • • token: 必须和服务器 frps.ini 中的 token 相同。
      • • [<service_name>]: 每个方括号定义一个要穿透的服务,名称自定义(如 web_service_httpwindows_rdp)。
      • • type: 服务的协议类型。tcp 和 udp 是最通用的,会直接转发端口。http 和 https 通常用于 Web 服务,可以配合 subdomain 或 custom_domains 使用域名访问。
      • • local_iplocal_port: 你本地服务的监听地址和端口。
      • • remote_port公网服务器上用于接收外部访问的端口。外部用户将通过 your_server_public_ip:remote_port 来访问你的本地服务。确保这个端口在服务器防火墙上也是放行的!
      • • subdomain / custom_domains: 如果使用 http 或 https 类型,并且服务器配置了 vhost_http_port/vhost_https_port 和 subdomain_host,可以用这些参数通过域名访问,而不需要指定 remote_port。这需要你将域名或子域名解析到你的服务器 IP。
  4. 4. 防火墙设置 (Windows):
    • • 通常 Windows 防火墙会询问是否允许 frpc.exe 访问网络,选择“允许”。
    • • 确保 Windows 防火墙没有阻止你的本地应用服务 (例如,端口 8080 或 3389) 被 frpc.exe 访问(通常 127.0.0.1 之间的访问是被允许的)。
  5. 5. 运行 frpc:
    • • 打开 Windows 的命令提示符 (cmd) 或 PowerShell。
    • • 使用 cd 命令切换到你存放 frpc.exe 和 frpc.ini 的目录。例如:
      cd C:\frp
    • • 前台运行 (用于测试):
      .\frpc.exe -c .\frpc.ini
      观察输出。如果看到类似 "login to server success" 和 "start proxy success" 的信息,表示连接和代理设置成功。保持这个窗口打开,服务就在运行中。关闭窗口则停止 frpc。
    • • 后台运行/设置为 Windows 服务 (推荐):
      为了让 frpc 在后台稳定运行,并且开机自启,最好将其设置为 Windows 服务。推荐使用第三方工具 NSSM (Non-Sucking Service Manager)
      1. 1. 下载 NSSM: https://nssm.cc/download
      2. 2. 解压 NSSM,找到对应你系统架构(32位或64位)的 nssm.exe
      3. 3. 以 管理员身份 打开命令提示符 (cmd)。
      4. 4. 切换到 NSSM 所在的目录。
      5. 5. 执行安装命令: nssm install frpc
      6. 6. 会弹出一个 NSSM 服务安装界面:
        • • Path: 点击 ... 按钮,选择你的 frpc.exe 文件路径 (例如 C:\frp\frpc.exe)。
        • • Startup directory: 它通常会自动填充为 frpc.exe 所在的目录 (例如 C:\frp)。
        • • Arguments: 输入 -c frpc.ini (注意 frpc.ini 是相对于 Startup directory 的路径,如果它们在同一目录,这样写即可)。
        • • (可选) 在 I/O 标签页,可以设置日志文件路径,方便排查问题。
        • • 点击 Install service 按钮。
      7. 7. 安装成功后,启动服务: nssm start frpc 或在 Windows 服务管理器 (services.msc) 中找到名为 frpc 的服务,手动启动它,并可以设置其启动类型为“自动”。
      8. 8. 管理服务的常用 NSSM 命令: nssm start frpcnssm stop frpcnssm restart frpcnssm status frpcnssm edit frpcnssm remove frpc

步骤三:测试访问

  1. 1. 确保 frps 在服务器上运行,并且 frpc 在你的 Windows 电脑上运行且连接成功。
  2. 2. 根据你的 frpc.ini 配置进行访问:

安全注意事项:

  • • 使用强 Token: frps.ini 和 frpc.ini 中的 token 一定要设置复杂且保密。
  • • 防火墙精细化: 只开放必要的端口。对于 remote_port,只开放你确实需要从公网访问的那些。如果可能,限制访问 remote_port 的源 IP 地址。
  • • Dashboard 安全: 如果启用 Dashboard,务必修改默认用户名密码,并考虑使用 Nginx/Caddy 等反向代理增加 HTTPS 和访问控制。
  • • HTTPS: 对于暴露的 Web 服务,强烈建议配置 HTTPS 加密。可以在 frps 端使用 type=httpsplugin=https2http 等方式,或者在本地服务就启用 HTTPS 并使用 type=https 或 type=tcp 转发。
  • • STCP (Secret TCP): 对于像 RDP 或 SSH 这样敏感的服务,可以考虑使用 type = stcp。这需要在访问端也运行一个 frpc 客户端,提供更高的安全性,因为它不会在服务器上直接暴露端口。
  • • 本地服务安全: FRP 只是打通了网络路径,确保你本地的应用服务本身是安全的(例如,有身份验证、及时更新补丁)。
  • • 日志监控: 定期检查 frps 和 frpc 的日志,关注异常连接或错误。

按照以上步骤操作,你应该就能成功地在 Windows 上使用 FRP 将你的本地服务穿透到公网了。如果在过程中遇到问题,请仔细检查配置文件、防火墙设置以及 frps 和 frpc 的运行日志。

发表评论
网名:
评论:
验证:
共有0人对本文发表评论查看所有评论(网友评论仅供表达个人看法,并不表明本站同意其观点或证实其描述)
关注热点事件,尊重事实,追求公正,维护舆论的公正和公信力
关于我们 - 联系我们 - 广告合作 - 关于版权 - 网站地图 - 人才招聘 - 隐私条款 - 免责申明 - 信息举报 - RSS订阅 - 电子公告