一、业务场景
装备情况如下:
一台腾讯云服务器(CentOS7.6) 有公网IP。
一台内网家庭版 Win7电脑
一个二级域名,已解析到公网IP。
需求:通过域名或IP可以通过远程桌面连接访问 家里内网的Win7电脑
二、为什么选择 frp
开源,维护频繁。
支持 TCP、UDP、HTTP、HTTPS、STCP 等协议。
GoLang开发占用内存小,代理稳定。
配置简单方便,自定义插件化配置以及可开发自己业务需求的插件。
提供安全地暴露内网服务、加密与压缩、底层通信可选 kcp 协议、端口复用、负载均衡、健康检查、URL 路由、范围端口映射、请求的 header处理等众多功能。
三、准备工作
首先你需要一个服务器,我的是腾讯云主机。
进行重装系统(为了避免不必要麻烦,非必须),选择CentOS。
然后设置域名(用在内网穿透)指向你的 服务器IP。
我的是使用了一个二级域名和多个三级域名,即 frp.****.com 和 *.frp.***.com (这里填你自己的域名) 都使用A记录指向***.***.***.***(这里填你自己的公网ip)。
四.服务端(腾讯云服务器)配置
(1)开始安装
先去GitHub看看最新版本:https://github.com/fatedier/frp/releases
当前教程使用版本为:v0.36.2。
cd /usr/download
# 下载frp可执行包
wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz
# 解压
tar -zxvf frp_0.36.2_linux_amd64.tar.gz
# 进入文件
cd frp_0.36.2_linux_amd64/
# 修改配置
vim frps.ini
# 内容如下:
[common]
# tunnel port通信管道
bind_port = 7000
# http和https转发配置
vhost_http_port = 80
vhost_https_port = 443
# 连接认证token,客户端与服务端必须保持一致
token = 123456
# 子域名 换成你自己的域名
subdomain_host = frp.****.com
# 自定义404 页面,要用绝对路径哦!
custom_404_page = /var/www/404.html
# dashboard图形管理页面
dashboard_port = 81
dashboard_user = admin
dashboard_pwd = admin
# ---设置完成----
# 启动
./frps -c frps.ini
更多参数请参考:Frp官方中文文档
(2)配置服务自启动
# 创建后台启动模版
vim /etc/systemd/system/frps.service
# 内容如下:
[Unit]
Description=frps
After=network.target
[Service]
ExecStart=/usr/download/frp_0.36.2_linux_amd64/frps -c /usr/download/frp_0.36.2_linux_amd64/frps.ini
[Install]
WantedBy=multi-user.target
# 启动测试
systemctl start frps.service
# 查看启动状态
systemctl status frps.service
# 开机自启
systemctl enable frps.service
五.客户端Win7电脑配置
解压frp_0.36.2_windows_amd64.zip
使用Notepad++打开 frpc.ini
# 修改内容如下:
[common]
#改成自己的域名
server_addr = frp.****.com
server_port = 7000
# 如果服务端设置了token,这里也要加上,两者保持一致
token = 123456
# 内网穿透名称
[web]
# 协议为http(即80端口)
type = http
# 内部映射的IP
local_ip =127.0.0.1
# 内部映射为80端口
local_port = 80
# 远程端口不用设置,只能沿用frps下vhost_http_port
# 映射域名为 http://wd.frp.****.com
subdomain = wd
# 或者直接指定全域名(你只需要将域名解析到服务器上)
# custom_domains = blog.****.com
[rdp1]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
# 远程端口
remote_port = 7089
#[ssh1]
#type = tcp
#local_ip = 127.0.0.1
#local_port = 22
# 远程端口
#remote_port =2201
OK cmd下启动服务,如下
测试一下,远程连接,连接成功!