frp 内网穿透
简介
官网文档地址:https://gofrp.org/docs/overview/
GitHub:https://github.com/fatedier/frp/releases
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网;
systemd 后台启动及开机自启
环境:
- 云服务器:centOS 7.9;
- 被穿透主机(本机):windows 10 64;
步骤:
服务端下载文件
frp_0.43.0_linux_amd64.tar.gz
,解压到/usr/local/frp
文件夹下,并删除frpc
开头的文件(服务端不需要);如果Linux服务端上没有安装
systemd
,可以使用yum
或apt
等命令安装systemd
;1
2
3
4# yum
yum install systemd
# apt
apt install systemd编辑
frps.service
文件,修改配置中的 frp 安装路径;1
vim /etc/systemd/system/frps.service
内容:
1
2
3
4
5
6
7
8
9
10
11
12
13[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/local/frp/frps -c /usr/local/frp/frps.ini
[Install]
WantedBy = multi-user.target大功告成,现在可以使用命令管理 frps;
1
2
3
4
5
6
7
8# 启动frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重启frp
systemctl restart frps
# 查看frp状态
systemctl status frps
远程访问 windows 桌面
客户端下载
frp_0.43.0_windows_amd64.zip
,解压到任意目录,删除frps
开头的文件;修改服务端的 frps.ini 文件,设置 frp 服务器用户接收客户端连接的端口;
1
2
3[common]
bind_port = 7000 //服务器监听端口,需要开启安全组和防火墙
token = 123456789 //用于验证客户端在需要被访问的内网机器上(SSH 服务通常监听在 22 端口)部署 frpc,修改 frpc.ini 文件,修改「server_addr」为服务器地址:
1
2
3
4
5
6
7
8
9
10[common]
server_addr = x.x.x.x
server_port = 7000
token = 123456789 //需要与上面服务器端配置的 token 一致,用于安全验证
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 3389 //windows 远程桌面端口,需要被访问主机防火墙开启 3389 端口,linux 的端口为 22
remote_port = 6000 //访问端口,需要开启安全组和防火墙分别开启服务端和客户端;
1
2
3nohup /etc/frp/frps -c /etc/frp/frps.ini & //服务端后台启动
systemctl start frps //或者以这种方式后台运行 frps
./frpc.exe -c ./frpc.ini //运行客户端程序远程连接输入
xxx.xxx.xxx.xxx:6000
端口访问;
注意:
- 云服务器需要开放 6000 和 7000 端口的安全组和防火墙;
- 被穿透的 windows 主机需要开启防火墙的 3389 端口;
- 被穿透的主机需要开启远程左桌面服务(设置→系统→远程桌面);
出现的问题
访问主机时,密码正确但是却提示「你的凭据不工作」
解决方案:
找到
组策略→计算机配置→管理模板→windows组件→远程桌面服务→远程桌面会话主机→安全
更改远程(rdp)连接要求使用指定的安全层
为启用 RDP;
参考来源:
访问内网web
服务器端修改 frps.ini 文件,设置监听 HTTP 请求端口为 4001;
1
2
3[common]
...
vhost_http_port = 4001服务器安全组和防火墙放行 4001 端口;
被穿透端修改 frpc.ini 文件,添加 web 节点,可以指定多个;
1
2
3
4
5
6
7
8
9
10
11
12
13[common]
server_addr = x.x.x.x
server_port = 7000
[web]
type = http
local_port = 4000
custom_domains = www.hahai.com //如果没有域名可以填写云服务器 ip 地址
[web2]
type = http
local_port = 8080
custom_domains = www.yourdomain2.com本地防火墙开放端口 4000,启动 web 应用映射到 4000 端口;
修改本机 host 记录,添加如下一行;
1
xxx.xxx.xxx.xxx www.hahai.com // xxx.xxx.xxx.xxx 为服务器地址
分别启动 frps 和 frpc 后,即可通过 域名:端口 访问;
为本地HTTP服务启动HTTPS
服务端修改 frps.ini;
1 | [common] |
被穿透端修改 frpc.ini(需要提前准备好 SSL 证书,即 server.crt,server.key);
1 | ... |
分别启动 frps 和 frpc 即可实现 https 访问;