FRP内网穿透
在日常开发和运维过程中,我们经常需要访问位于内网的服务或资源,比如远程访问内网中的服务器、部署在内网的 Web 应用等。然而,由于内网的服务通常无法直接被外网访问,因此我们需要借助内网穿透工具来实现这一目的。FRP(Fast Reverse Proxy)是一款非常流行且高效的内网穿透工具,支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,能够帮助我们轻松地将内网服务暴露到公网。
本文将介绍如何在 Linux 系统下使用 FRP 实现内网穿透。
准备工作
1、本地内网服务器(版本Ubuntu22.04)
2、云端服务器(带公网IP/域名)以阿里云免费服务器为例
可以访问云服务器ECS_阿里云获取一定时间的阿里云免费服务器
服务器操作系统版本建议同样选择Ubuntu22.04,架构建议选择amd64/x64,链接方式选择SSH链接
3、Frp For Linux_amd64
提供百度云下载链接:frp_0.59.0_linux_amd64.zip
4、远程连接程序:xshell/xftp
官网下载:XSHELL - NetSarang Website
百度云下载链接:
配置 FRP 服务端(云服务器)
假设我们的云服务器IP为:x.x.x.x
在用户目录下新建下载目录并进入:
mkdir downloads
cd downloads通过xftp将压缩文件上传到downloads文件夹
解压frp.zip并进入压缩后的目录
unzip frp.zip
cd frp_0.59.0_linux_amd64将其中的frps程序和frps.toml文件移动到/usr/local/frp目录下
sudo mv frps /usr/local/frp/frps
sudo mv frps.toml /usr/local/frp/frps.toml编辑frps.toml文件
sudo vim /usr/local/frp/frps.toml[common]
bind_port = 7000为frps配置运行权限
sudo chmod +x /usr/loacl/frp/frps安装多会话运行程序screen
sudo apt update
sudo apt install screen返回用户目录建立运行程序和停止程序start_frps.sh、stop_frps.sh
cd ~
mkdir /frp
cd frp
vim start_frps.sh
vim stop_frps.shstart_frps.sh
#!/bin/bash
# 定义FRP安装路径和配置文件路径
FRP_PATH="/usr/local/frp"
FRP_CONFIG_FILE="$FRP_PATH/frps.toml"
SESSION_NAME="frps_session"
# 启动FRPS服务
echo "Starting frps in screen session $SESSION_NAME..."
screen -dmS $SESSION_NAME $FRP_PATH/frps -c $FRP_CONFIG_FILE
# 检查服务是否启动成功
sleep 2
if screen -list | grep -q "$SESSION_NAME"; then
echo "frps started successfully in screen session $SESSION_NAME."
else
echo "Failed to start frps."
fistop_frps.sh
#!/bin/bash
SESSION_NAME="frps_session"
# 停止FRPS服务
echo "Stopping frps in screen session $SESSION_NAME..."
screen -S $SESSION_NAME -X quit
# 检查服务是否停止成功
sleep 2
if screen -list | grep -q "$SESSION_NAME"; then
echo "Failed to stop frps."
else
echo "frps stopped successfully."
fi配置权限并运行
sudo chmod +x start_frps.sh
sudo chmod +x stop_frps.sh
./start_frps.sh配置FRP本地端(本地服务器)
Frp压缩包中有frpc,frpc.toml两个文件,具体指令同上,将这两个文件移动到/usr/local/frp目录下
编辑frpc.toml文件
[common]
server_addr = "x.x.x.x" #云服务器IP地址
server_port = 7000 #frp默认监控端口,建议更改
[ssh] #任务名称
name ="ssh" #任务名称
type = "tcp" #连接类型
local_ip = "localhost" #本地IP地址
local_port = "22" #本地端口
remote_port = "10000" #投射端口为frpc配置运行权限
sudo chmod +x /usr/loacl/frp/frpc安装多会话运行程序screen
sudo apt update
sudo apt install screen返回用户目录建立运行程序和停止程序start_frpc.sh、stop_frpc.sh
cd ~
mkdir /frp
cd frp
vim start_frpc.sh
vim stop_frpc.shstart_frpc.sh
#!/bin/bash
# 定义FRP安装路径和配置文件路径
FRP_PATH="/usr/local/frp"
FRP_CONFIG_FILE="$FRP_PATH/frpc.toml"
SESSION_NAME="frpc_session"
# 启动FRPC客户端
echo "Starting frpc in screen session $SESSION_NAME..."
screen -dmS $SESSION_NAME $FRP_PATH/frpc -c $FRP_CONFIG_FILE
# 检查客户端是否启动成功
sleep 2
if screen -list | grep -q "$SESSION_NAME"; then
echo "frpc started successfully in screen session $SESSION_NAME."
else
echo "Failed to start frpc."
fistop_frpc.sh
#!/bin/bash
SESSION_NAME="frpc_session"
# 停止FRPC客户端
echo "Stopping frpc in screen session $SESSION_NAME..."
screen -S $SESSION_NAME -X quit
# 检查客户端是否停止成功
sleep 2
if screen -list | grep -q "$SESSION_NAME"; then
echo "Failed to stop frpc."
else
echo "frpc stopped successfully."
fi配置权限并运行
sudo chmod +x start_frpc.sh
sudo chmod +x stop_frpc.sh
./start_frpc.sh注意,云服务器和本地服务器的对应端口防火墙与策略组均要正确配置开放。