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.sh

start_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."
fi

stop_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.sh

start_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."
fi

stop_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

注意,云服务器和本地服务器的对应端口防火墙与策略组均要正确配置开放。


FRP内网穿透
https://blog.waynews.top/archives/mhm2OkCP
作者
Bruce
发布于
2024年08月11日
许可协议