'tag.htm'; break; case 'flag': $pre .= $default_pre .= 'flag.htm'; break; case 'my': $pre .= $default_pre .= 'my.htm'; break; case 'my_password': $pre .= $default_pre .= 'my_password.htm'; break; case 'my_bind': $pre .= $default_pre .= 'my_bind.htm'; break; case 'my_avatar': $pre .= $default_pre .= 'my_avatar.htm'; break; case 'home_article': $pre .= $default_pre .= 'home_article.htm'; break; case 'home_comment': $pre .= $default_pre .= 'home_comment.htm'; break; case 'user': $pre .= $default_pre .= 'user.htm'; break; case 'user_login': $pre .= $default_pre .= 'user_login.htm'; break; case 'user_create': $pre .= $default_pre .= 'user_create.htm'; break; case 'user_resetpw': $pre .= $default_pre .= 'user_resetpw.htm'; break; case 'user_resetpw_complete': $pre .= $default_pre .= 'user_resetpw_complete.htm'; break; case 'user_comment': $pre .= $default_pre .= 'user_comment.htm'; break; case 'single_page': $pre .= $default_pre .= 'single_page.htm'; break; case 'search': $pre .= $default_pre .= 'search.htm'; break; case 'operate_sticky': $pre .= $default_pre .= 'operate_sticky.htm'; break; case 'operate_close': $pre .= $default_pre .= 'operate_close.htm'; break; case 'operate_delete': $pre .= $default_pre .= 'operate_delete.htm'; break; case 'operate_move': $pre .= $default_pre .= 'operate_move.htm'; break; case '404': $pre .= $default_pre .= '404.htm'; break; case 'read_404': $pre .= $default_pre .= 'read_404.htm'; break; case 'list_404': $pre .= $default_pre .= 'list_404.htm'; break; default: $pre .= $default_pre .= theme_mode_pre(); break; } if ($config['theme']) { $conffile = APP_PATH . 'view/template/' . $config['theme'] . '/conf.json'; $json = is_file($conffile) ? xn_json_decode(file_get_contents($conffile)) : array(); } !empty($json['installed']) and $path_file = APP_PATH . 'view/template/' . $config['theme'] . '/htm/' . ($id ? $id . '_' : '') . $pre; (empty($path_file) || !is_file($path_file)) and $path_file = APP_PATH . 'view/template/' . $config['theme'] . '/htm/' . $pre; if (!empty($config['theme_child']) && is_array($config['theme_child'])) { foreach ($config['theme_child'] as $theme) { if (empty($theme) || is_array($theme)) continue; $path_file = APP_PATH . 'view/template/' . $theme . '/htm/' . ($id ? $id . '_' : '') . $pre; !is_file($path_file) and $path_file = APP_PATH . 'view/template/' . $theme . '/htm/' . $pre; } } !is_file($path_file) and $path_file = APP_PATH . ($dir ? 'plugin/' . $dir . '/view/htm/' : 'view/htm/') . $default_pre; return $path_file; } function theme_mode_pre($type = 0) { global $config; $mode = $config['setting']['website_mode']; $pre = ''; if (1 == $mode) { $pre .= 2 == $type ? 'portal_category.htm' : 'portal.htm'; } elseif (2 == $mode) { $pre .= 2 == $type ? 'flat_category.htm' : 'flat.htm'; } else { $pre .= 2 == $type ? 'index_category.htm' : 'index.htm'; } return $pre; } ?>Windows 配置 FRP 客户端并实现自启动和远程桌面连接
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Windows 配置 FRP 客户端并实现自启动和远程桌面连接

运维笔记admin0浏览0评论

FRP (Fast Reverse Proxy) 是一个高性能的反向代理应用,常用于内网穿透。通过 FRP,你可以将内网服务暴露到外部网络,实现远程访问。本文将介绍如何在 Windows 上配置 FRP 客户端、实现开机自启动,并通过远程桌面(RDP)连接到目标机器。

1. 下载和解压 FRP 客户端

  • 访问 FRP GitHub 或 FRP 官方网站 下载最新版本的 FRP 客户端和服务端。这里以 Windows 为例:

    • 下载 frp_x.x.x_windows_amd64.zip 文件(版本号根据实际情况选择)。
    • 解压文件到一个目录,如 C:\FRP
  • 在解压后的文件夹中,找到 frpc.exefrpc.ini 文件。

2. 配置 FRP 客户端

2.1 编辑 frpc.toml 配置文件

C:\FRP 目录下,创建一个 frpc.toml 配置文件(或修改已有的 frpc.ini 文件),并填写以下内容:

[common]
server_addr = "your_server_ip"      # FRP 服务器公网 IP 地址
server_port = 7000                         # FRP 服务器端口
auth_method = 'token'                    # 验证方式:token
auth_token = 'your_secret_token'  # 客户端验证秘钥,确保与服务端一致

[[proxies]]
name = "RDP"                               # 随意取一个名字(例如:RDP)
type = "tcp"                                    # 协议类型:TCP
local_ip = "127.0.0.1"                    # 本地 RDP 服务地址
local_port = 3389                          # 本地 RDP 服务端口
remote_port = 3389                      # 映射到云服务器的端口,确保 FRP 服务器防火墙放行

解释:

  • server_addrserver_port 是你的 FRP 服务器的公网 IP 和端口。
  • auth_token 是客户端和服务端之间的认证秘钥,必须保持一致。
  • proxies 部分配置了将本地 3389 端口映射到服务器的 3389 端口,实现远程桌面连接。

2.2 启动 FRP 客户端

打开命令提示符或 PowerShell,进入 FRP 客户端所在目录,并运行以下命令启动 FRP 客户端:

.\frpc.exe -c .\frpc.toml

如果配置正确,FRP 客户端会连接到 FRP 服务器,并通过 3389 端口进行远程桌面映射。

3. 配置 FRP 客户端自启动

为了确保 FRP 客户端在 Windows 启动时自动运行,可以使用 NSSM(Non-Sucking Service Manager)将 FRP 客户端配置为 Windows 服务。

3.1 下载并安装 NSSM

  • 访问 NSSM 官网 下载最新版本的 NSSM。
  • 解压后,将 nssm.exe 放在一个目录中(例如:C:\NSSM)。

3.2 使用 NSSM 安装 FRP 客户端为服务

  • 打开命令提示符(以管理员身份)并进入 NSSM 的目录。

  • 使用以下命令安装 FRP 客户端为服务:

nssm install FRP

  • 在弹出的 NSSM 配置窗口中,进行如下设置:

    • Path: 设置为 FRP 客户端的路径(例如 C:\FRP\frpc.exe)。
    • Arguments: 设置为 FRP 启动命令(例如 -c C:\FRP\frpc.toml)。
    • Startup directory: 设置为 FRP 客户端的目录(例如 C:\FRP)。
  • 点击 Install Service 完成服务的安装。

3.3 启动并设置为开机自启

  • 服务管理器 中,找到名为 FRP 的服务,右键点击并选择 启动
  • 右键点击该服务,选择 属性,将 启动类型 设置为 自动,确保 FRP 客户端在每次启动时自动运行。

4. 配置 FRP 服务器

确保 FRP 服务器端已经正确配置,尤其是端口设置和认证信息。以下是 FRP 服务器配置的关键部分:

[common]
bind_port = 7000  # FRP 服务器监听端口

确保服务器的防火墙开放了 7000 端口,允许客户端连接。

5. 远程桌面连接

  • 打开 远程桌面连接(RDP) 工具:按 Win + R,输入 mstsc,然后按 Enter
  • 计算机 字段中,输入 FRP 服务器的公网 IP 和远程端口(3389),格式为:

your_server_ip:3389

  • 输入远程计算机的用户名和密码,点击 连接

如果一切正常,你应该能够通过 RDP 连接到目标计算机。

6. 排查常见问题

如果无法连接,请按照以下步骤排查:

  • 检查防火墙:确保 FRP 客户端和 FRP 服务器的防火墙没有阻止连接。
  • 查看日志:检查 FRP 客户端和服务端的日志,确认是否有错误信息。
  • 确认端口映射:确保 FRP 配置文件中的端口映射设置正确,并且 FRP 服务器端防火墙已经放行所需端口。

结语

通过上述步骤,你可以在 Windows 系统上成功配置 FRP 客户端,实现远程桌面连接,并设置 FRP 客户端为开机自启动。通过 FRP 反向代理,你可以轻松访问内网服务,解决防火墙和 NAT 等问题。如果遇到任何问题,记得检查 FRP 配置和日志,确保每个步骤都正确无误。

发布评论

评论列表(0)

  1. 暂无评论