frp-内网穿透
· 阅读需 5 分钟
frp是一个开源的反向代理/内网穿透软件程序,分为服务端程序frps和客户端程序frpc,其中frps需要部署在一台具有公网ip的服务器上,frpc部署在需要内网穿透服务的内网计算机上。
本文不涉及docker部署方式,仅介绍在debian/ubuntu系统下的二进制文件部署方式。
作者我的测试环境是root用户,所以下面的命令均以root用户执行,如使用非root用户,请根据实际情况在前面添加sudo。
前置条件
- 一台具有公网ip的服务器
- 内网服务器网络可达
frps部署
下载frp二进制文件
访问 frp releases 页面查看最新版本。
# 选择一个合适的目录放置frp程序,我习惯于把要开机运行的程序放在/opt目录下
cd /opt
# 下载对应的版本
# wget https://github.com/fatedier/frp/releases/download/{版本tag}/{文件名}
wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_amd64.tar.gz
# 解压
tar -xzvf frp_v0.65.0_linux_amd64.tar.gz
# 修改名称,显得整洁
mv frp_v0.65.0_linux_amd64 frps
做完以上操作后,frps程序位于 /opt/frps 目录下了,其中有frpc和frps两个可执行文件以及对应的toml配置文件,我们在服务端只需要留下frps和其配置文件即可。
配置frps.toml
修改配置文件:
nano /etc/frp/frps.toml
基础配置示例:
# frps.toml
bindPort = 7000
webServer.addr = "0.0.0.0"
webServer.port = 7500 # web管理面板端口
webServer.user = "admin" # web管理面板用户名,自行修改
webServer.password = "password" # web管理面板密码,自行修改
vhostHTTPPort = 7080
vhostHTTPSPort = 7081
auth.method = "token"
auth.token = "key" # 认证令牌,客户端连接服务器时需要用到,自行修改
配置开机自启
创建systemd服务文件:
nano /etc/systemd/system/frps.service
frps.service内容:
[Unit]
Description=FRP Server
After=network.target
[Service]
Type=simple
ExecStart=/opt/frps/frps -c /opt/frps/frps.toml
# 指定配置文件路径,根据实际情况修改
Restart=always
RestartSec=5s
User=root
WorkingDirectory=/opt/frps
# 工作路径,根据实际情况修改
[Install]
WantedBy=multi-user.target
启动frps服务
# 重载systemd配置
systemctl daemon-reload
# 启用开机自启
systemctl enable frps
# 启动服务
systemctl start frps
# 查看运行状态
systemctl status frps
# 查看日志
journalctl -u frps -f
接下来重启服务器,然后在shell输入systemctl status frps查看服务状态,确保服务已成功启动。
WEB管理面板
访问 http://your_server_ip:7500,使用上面配置的用户名和密码登录,可以看到当前连接的客户端和代理的服务信息。
frpc部署
下载frp二进制文件
同上frps的操作,在树莓派或内网Linux服务器上执行以下命令
# 选择一个合适的目录放置frp程序,我习惯于把要开机运行的程序放在/opt目录下
cd /opt
# 下载对应的版本
# wget https://github.com/fatedier/frp/releases/download/{版本tag}/{文件名}
wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_linux_arm64.tar.gz
# 解压
tar -xzvf frp_0.65.0_linux_arm64.tar.gz
# 修改名称,显得整洁
mv frp_0.65.0_linux_arm64 frpc
根据需要删除不必要的文件,只保留frpc和配置文件即可。
配置frpc.toml
配置示例(包含常用服务):
serverAddr = "{部署好frps的服务器的公网IP或域名}"
serverPort = 7000
auth.method = "token"
auth.token = "key" # 与frps配置的token保持一致
[[proxies]]
name = "Pi-SSH"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 30022 # 记得在云服务器的防火墙和安全组开放此端口
[[proxies]]
............. # 自行增加需要的代理服务
配置开机自启
创建systemd服务文件:
nano /etc/systemd/system/frpc.service
frpc.service内容:
[Unit]
Description=frpc server
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=10
WorkingDirectory=/opt/frpc
# 根据实际情况修改
ExecStart=/opt/frpc/frpc -c /opt/frpc/frpc.toml
# 指定配置文件路径,根据实际情况修改
[Install]
WantedBy=multi-user.target
启动frpc服务
# 重载systemd配置
systemctl daemon-reload
# 启用开机自启
systemctl enable frpc
# 启动服务
systemctl start frpc
# 查看运行状态
systemctl status frpc
# 查看日志
journalctl -u frps -f
接下来重启树莓派/Linux服务器,然后在shell输入systemctl status frpc查看服务状态,确保服务已成功启动。
常见问题
- 防火墙配置:确保服务器防火墙开和安全组放了7000端口(frps绑定端口)和7500端口(web管理面板端口),以及你计划用来代理的其他端口。
