FRP反向代理
转自https://jh9yp4k3of.feishu.cn/docs/doccn6fpMGQl6de02lRck6HP5xe,有小改动
介绍
frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。
- 正向代理
- 反向代理
应用场景
远程访问内网主机,可以暴露ssh, web, dns, socket等不同应用
准备
- 具备公网IP的服务器,例如云服务器
- 不具备公网IP的主机,例如自己的电脑
流程
服务器 (frps)
- 开放云服务器端口,例如8787
- 进入frp仓库,下载合适的release版本
tar -zxvf xxx
解压,mv xxx /usr/local/
移动目录- 在frp程序目录下编辑
frps.ini
,输入以下内容
[common]
bind_port = 8787
./frps -c ./frps.ini
即可启动服务端- 可配置成服务开机启动,
vim /etc/systemd/system/frps.service
输入以下内容
[Unit]
Description=frps daemon
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/usr/local/frp_0.38.0_linux_amd64/frps -c /usr/local/frp_0.38.0_linux_amd64/frps.ini
Restart=always
RestartSec=1min
[Install]
WantedBy=multi-user.target
使用systemctl 可以操作
# 启动服务
sudo systemctl start frps
# 状态查询
sudo systemctl status frps
# 重启服务
sudo systemctl restart frps
# 停止服务
sudo systemctl stop frps
主机 (frpc)
- 仿照服务器步骤下载程序
- 在frp程序目录下编辑
frpc.ini
,输入以下内容
[common]
server_addr = xxx
server_port = 8787
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = xxx
- server_add: 服务器IP
- server_port: 服务器frps监听的端口
- type: 数据传输协议
- local_ip: 客户端frpc对内访问的IP
- local_port: 客户端frpc对内访问的端口
- remote_port: 主机暴露给服务器的端口
./frpc -c frpc.ini
即可启动客户端
示例
ssh -p remote_port user@server_addr
即可在外部登陆内网主机,注意这里的user
是主机的用户名。
安全事项
- 端口号应该选比较大
- 主机密码要复杂
- 尽量不要暴露云服务器公网ip