内网穿透实例:在 NAT 环境下通过 FRP 配置 ThinLinc 远程桌面 实现外网登录
文章目录
- 背景
- 配置步骤
- 步骤 1:在腾讯云服务器上安装并配置 FRP 服务端(frps)
- 步骤 2:在 ThinLinc 服务器上安装并配置 FRP 客户端(frpc)
- 步骤 3:配置 ThinLinc Agent 主机名
- 步骤 4:配置 ThinLinc 客户端(外部访问)
- 总结
ThinLinc 是一个强大的 Linux 远程桌面解决方案,在外网可使用公司单位的 VPN 进行访问,另一种办法是配置内网穿透 NAT 环境,但在 NAT 环境下配置外部访问可能会有挑战。
本文将详细介绍如何通过经典内网穿透解决方案 FRP(Fast Reverse Proxy)在腾讯云服务器上实现 ThinLinc 的 NAT 穿透,基于实际案例(云服务器公网 IP:101.34.xx.209
,内网 ThinLinc 服务器 IP:10.101.xx.21
)。
背景
ThinLinc 服务器运行在内网(私有 IP:10.101.xx.21
),依赖 SSH(端口 22)提供远程桌面服务。由于内网环境无法直接暴露公网 IP,我们使用腾讯云服务器(公网 IP:101.34.xx.209
)运行 FRP 服务端(frps
),通过 FRP 客户端(frpc
)将内网服务映射到公网。
以下是实现外部访问和解决内网登录问题的完整步骤,基于以下环境:
- 云服务器:腾讯云,公网 IP
101.34.xx.209
,运行frps
,开放端口 6001(SSH)。 - 内网 ThinLinc 服务器:Ubuntu,IP
10.101.xx.21
,运行frpc
和 ThinLinc(VSM Server、VSM Agent)。
配置步骤
步骤 1:在腾讯云服务器上安装并配置 FRP 服务端(frps)
-
安装 frps:
- 下载 FRP:
wget https://github.com/fatedier/frp/releases/download/v0.58.1/frp_0.58.1_linux_amd64.tar.gz tar -zxvf frp_0.58.1_linux_amd64.tar.gz cd frp_0.58.1_linux_amd64 sudo mkdir /etc/frp sudo cp frps /usr/local/bin/ sudo cp frps.ini /etc/frp/
- 编辑
frps.ini
:
配置:sudo vim /etc/frp/frps.ini
[common] bind_port = 7000 authentication_method = token token = 1xxxx...xxxxd #保密且重要
bind_port
:FRP 服务端管理端口(默认 7000)。token
:设置一个安全令牌,防止未经授权的连接。
- 下载 FRP:
-
开放云服务器端口:
- 在腾讯云控制台的安全组中,添加规则允许以下端口:
- TCP 7500(FRP 管理端口)
- TCP 7000(FRP 服务端口)
- TCP 6001(SSH 映射端口)
- 如使用运维工具宝塔面板等,要确保 宝塔面板 和 腾讯云控制台 均开放了端口
- 在腾讯云控制台的安全组中,添加规则允许以下端口:
-
运行 frps 并设置开机自启(也可使用容器):
- 创建 systemd 服务:
添加:sudo vim /etc/systemd/system/frps.service
[Unit] Description=FRP Server Service After=network.target[Service] ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini Restart=always User=nobody[Install] WantedBy=multi-user.target
- 启动并启用服务:
sudo systemctl start frps sudo systemctl enable frps
- 验证:
sudo systemctl status frps
- 创建 systemd 服务:
步骤 2:在 ThinLinc 服务器上安装并配置 FRP 客户端(frpc)
-
安装 frpc:
- 在内网 ThinLinc 服务器(
10.101.xx.21
)上下载并安装 FRP:wget https://github.com/fatedier/frp/releases/download/v0.58.1/frp_0.58.1_linux_amd64.tar.gz tar -zxvf frp_0.58.1_linux_amd64.tar.gz cd frp_0.58.1_linux_amd64 sudo mkdir /etc/frp sudo cp frpc /usr/local/bin/ sudo cp frpc.ini /etc/frp/
- 在内网 ThinLinc 服务器(
-
配置 frpc.ini:
- 编辑配置文件:
添加:sudo vim /etc/frp/frpc.ini
[common] server_addr = 101.34.xx.209 server_port = 7000 auth.method = "token" auth.token = "12345678" transport.tls.enable = true[[proxies]] name = "ssh" type = "tcp" localIP = 127.0.0.1 localPort = 22 remotePort = 6001
server_addr
和server_port
:指向云服务器的 FRP 服务端。token
:与frps.ini
中的令牌一致。ssh
:将内网 SSH(端口 22)映射到云服务器的 6001 端口。
- 编辑配置文件:
-
运行 frpc 并设置开机自启:
- 创建 systemd 服务:
添加:sudo vim /etc/systemd/system/frpc.service
[Unit] Description=FRP Client Service After=network.target[Service] ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.ini Restart=always User=nobody[Install] WantedBy=multi-user.target
- 启动并启用服务:
sudo systemctl start frpc sudo systemctl enable frpc
- 验证:
sudo systemctl status frpc
- 创建 systemd 服务:
步骤 3:配置 ThinLinc Agent 主机名
- 修改 agent_hostname:
- 在 ThinLinc 服务器上编辑配置文件:
设置:sudo vim /opt/thinlinc/etc/conf.d/vsmagent.hconf
[/vsmagent] agent_hostname = 101.34.xx.209
- 保存并重启 VSM Agent:
sudo systemctl restart vsmagent sudo systemctl status vsmagent #检查服务状态
- 在 ThinLinc 服务器上编辑配置文件:
步骤 4:配置 ThinLinc 客户端(外部访问)
-
外部客户端配置:
- 下载并安装 ThinLinc 客户端(支持 Windows、macOS、Linux)。
- 配置:
- 服务器:
101.34.xx.209
- 端口:6001(FRP 映射的 SSH 端口,在
Options
中更改) - 用户名:
myname
(替换为你的用户名) - 密码:对应密码
- 服务器:
-
测试连接:
- SSH 测试:
ssh -p 6001 myname@101.34.xx.209
- ThinLinc 客户端测试:
- 启动客户端,如上图所示连接到
101.34.xx.209:6001
,确认登录成功。
- 启动客户端,如上图所示连接到
- SSH 测试:
总结
通过 FRP 和 ThinLinc 的配置,成功实现了 NAT 环境下的远程桌面访问:
- 外部访问:通过云服务器的公网 IP(
101.34.xx.209:6001
)访问 ThinLinc。 - 安全优化建议:配置 TLS 证书、限制访问来源、禁用弱认证方式。
- 参考:
frp配置详解
ThinLinc 官方:如何在NAT后面使ThinLinc服务器