FRP反向代理

2021-12-24 Views 网络 | 教程493字3 min read

转自https://jh9yp4k3of.feishu.cn/docs/doccn6fpMGQl6de02lRck6HP5xe,有小改动

介绍

frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。

  • 正向代理
  • 反向代理

应用场景

远程访问内网主机,可以暴露ssh, web, dns, socket等不同应用

准备

  • 具备公网IP的服务器,例如云服务器
  • 不具备公网IP的主机,例如自己的电脑

流程

服务器 (frps)

  1. 开放云服务器端口,例如8787
  2. 进入frp仓库,下载合适的release版本
  3. tar -zxvf xxx解压,mv xxx /usr/local/移动目录
  4. 在frp程序目录下编辑frps.ini,输入以下内容
[common]
bind_port = 8787
  1. ./frps -c ./frps.ini即可启动服务端
  2. 可配置成服务开机启动,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)

  1. 仿照服务器步骤下载程序
  2. 在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: 主机暴露给服务器的端口
  1. ./frpc -c frpc.ini即可启动客户端

示例

ssh -p remote_port user@server_addr即可在外部登陆内网主机,注意这里的user是主机的用户名。

安全事项

  • 端口号应该选比较大
  • 主机密码要复杂
  • 尽量不要暴露云服务器公网ip
EOF