使用FRP实现内网穿透
使用FRP实现内网穿透

Warning: Trying to access array offset on value of type null in /www/wwwroot/cennum_top/wp-content/themes/bravada/includes/loop.php on line 341

使用FRP实现内网穿透

目标:

在本地没有任何公网ip的情况下实现对内网的访问

前言:

本教程将带你使用frp反向代理,实现具备公网 IP 的云服务器将作为中转站,帮助转发内网和外网的数据流量。

在教程正式开启前,你需要先准备一台自带公网IP的云服务器以及需要进行内网穿透的本地设备。

教程总共分为两大部分,第一部分是云服务器配置,第二部分是本地环境配置。

步骤:

1.云端服务器上部署frp服务端

  • ssh登陆你的云服务器

在终端中输入

ssh <user>@<ipv4地址>

上面的user是你的服务器的用户名,阿里云服务器一般来说是root,ipv4地址填服务器的公网ipv4地址就行

回车输入密码,注意密码不会显示,首次连接会提示确认,输入yes ,回车就可以

用户名和ipv4地址和密码都正确的情况下会进入服务器的终端

输入命令查看服务器系统

uname -a

我这里是ubuntu,下面的教程会按照ubuntu来操作,win和macos都差不多

  • 安装docker

进入docker官网

www.docker.com

按照你服务器的系统下载对应的docker

我这里选择linux下载,然后会跳到linux下载的教程文档,在选择ubuntu发行版,按照该教程可完成docker的安装

这里是ubuntu系统的docker官方安装教程地址

https://docs.docker.com/desktop/setup/install/linux/ubuntu/

下载安装完成后会在你的应用列表里面显示一个docker desktop的程序

第一次打开docker会让我们登录,直接按“skip”跳过就好

  • 确定docker是否安装成功

在终端输入docker -v出现版本号就代表docker安装成功了

  • 创建配置文件:

回到命令行窗口,运行mkdir -p dockers/frps命令,创建多级文件夹

然后cd dockers/frps进入frps文件夹

输入vi docker-compose.yml命令,创建docker-compose.yml文件

然后在docker-compose.yml粘贴这段代码

version: '3'
services:
  frps:    
    image: snowdreamtech/frps    
    container_name: frps    
    restart: always    
    network_mode: host    
    volumes:      
      - ./frps.toml:/etc/frp/frps.toml    
    environment:      
      - FRP_CONFIG_FILE=/etc/frp/frps.toml   

按一下 esc进入命令行模式,输入:wq,回车

输入vi frps.toml创建frps.toml文件,复制粘贴下面这段代码

# frps.toml
# 基本配置
bindPort = 7000    # frps 监听的端口,用于接收 frpc 的连接
# 认证配置
[auth]
method = "token"          # 认证方法,这里使用 token
token = "token1234xyz"  # 用于验证 frpc 的 token,
# Web 管理界面配置(如果不需要 Web 管理界面,可以删除这部分)[webServer]
addr = "0.0.0.0" # Web 界面监听的地址,0.0.0.0 表示所有地址
port = 7500               # Web 界面的端口
user = "user"            # Web 界面的登录用户名
password = "passwordxxx"  # Web 界面的登录密码
# 日志配置
[log]to = "console" # 日志输出位置,console 表示输出到控制台
level = "info"       # 日志级别:debug, info, warn,error

这里需要修改三个地方,token、user和password,要修改成自己的,记住后面要用到,然后同样按下esc后输入:wq, 回车

  • 启动FRP服务:

在终端中cd到docker-compose.yml的同级文件夹下然后输入docker compose up -d后回车,启动FRP服务

docker compose up -d #启动docker

这样,frp的服务端就部署好了,请注意在防火墙中开启对应的端口,不然会无法访问到frp服务器

在阿里云ecs服务器中,关闭系统防火墙,然后在阿里云ecs管理页面,找到安全组,点击手动添加

添加下面两条规则,注意与上面的docker-compose.yml文件里面配置的端口一致,我这里是7000与7500的端口

这样才能从外部访问到7000和7500的端口,frp才可以正常运行

现在就完成了对frp服务端的配置

可以使用服务器的ip地址加端口号访问frp的管理网站看看是否部署成功

127.0.0.0:7500

2.frp客户端的配置:

客户端的配置过程与服务端类似

安装docker

这里和服务端一样可以进入docker官网安装,

还可以使用鱼香肉丝fishros的一键安装脚本,特别方便

wget http://fishros.com/install -O fishros && . fishros

输入后选择【5】一键安装docker

docker安装完成后就可以来创建容器和frpc配置文件了

创建专门用于存放dockers的文件夹,并在dockers下创建frpc文件夹

mkdir -p docker/frpc

进入frpc文件夹

创建docker-compose.yml文件与frpc.toml文件

touch docker-compose.yml
touch frpc.toml

使用nano编辑.yml文件

nano docker-compose.yml

粘贴以下配置,不用修改

version: '3'  # Docker Compose文件格式版本

services:     # 定义服务
  frpc:       # 服务名称为frpc
    image: snowdreamtech/frpc   # 使用的Docker镜像
    container_name: frpc        # 容器名称
    restart: always            # 容器重启策略
    network_mode: host         # 网络模式
    volumes:                   # 数据卷挂载
      - ./frpc.toml:/etc/frp/frpc.toml  # 配置文件映射
      - ./logs:/var/log               # 日志目录映射
    environment:              # 环境变量
      - FRP_CONFIG_FILE=/etc/frp/frpc.toml  # 指定配置文件路径

编辑.toml文件

# frpc.toml

# 服务器配置
serverAddr = "39.98.38.171"  # 公网服务器的IP
serverPort = 7000

# 认证配置
auth.method = "token"
auth.token = "token1234xyz"

# 日志配置
log.to = "console"
log.level = "info"

# -----从这里开始都是,程序的信息-----
# SSH 服务配置
[[proxies]]
name = "mac-ssh"
type = "tcp"
localIP = "host.docker.internal"
localPort = 22
remotePort = 10022

# VNC 服务配置
[[proxies]]
name = "mac-vnc"
type = "tcp"
localIP = "host.docker.internal"
localPort = 5900
remotePort = 15900

修改服务器公网ip为你自己的公网ip,服务端口默认是7000,token要注意保持与服务端一致,最下面是你可以配置的服务

注意:localIP = “host.docker.internal” 只有在你的电脑上有docker desktop软件时才可以使用这条命令,表示你真实的ip地址,当你电脑上没有docker desktop软件时次命令不会生效,此时应该用本机的真实ip,这个地方困扰了我好久,好不容易才找到原因

两个文件配置好之后,就可以使用命令创建容器了

docker compose up -d

报错误的话试一下加sudo执行

这样客户端也就配置好了

测试

在浏览器输入

<服务器公网ip>:7500

输入之前在服务端配置的用户名和密码

出现这样子的页面就成功了

恭喜实现frp内网穿透

一条评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注