参阅文档

基于Docker的FRP内网穿透部署

视频:B站

准备工作

  1. 一台轻量级云服务器,可所以腾讯云、阿里云、华为云等云厂商的,主要是能够获得一个公网IP;
  2. 一个内网服务器,比方旧电脑或许旧手机改装的;
  3. 配合 frp 来完结内网穿透

云服务器

咱们以阿里云服务器为例,购买一个轻量级的云服务器 ECS,然后在上面装置 docker,装置教程后续会增加一个链接到这儿。

装置好 docker 今后呢,咱们要在云服务器上装置 frp 的服务端。过程如下:

  1. 登录云服务器的 Workbench
  2. 创立寄存目录:sudo mkdir /etc/frp
  3. 创立 frps.ini 配置文件:sudo vim /etc/frp/frps.ini
  4. 然后履行 docker run --restart=always --network host -d -v /etc/frp/frps.ini:/etc/frp/frps.ini --name frps snowdreamtech/frps

frps.ini内容如下:

[common]
# 监听端口
bind_port = 7000
# 面板端口
dashboard_port = 7500
# 登录面板账号设置
dashboard_user = admin
dashboard_pwd = spoto1234
# 设置http及https协议下代理端口(非重要)
vhost_http_port = 7080
vhost_https_port = 7081
# 身份验证
token = 12345678

这儿说一下这些配置项的效果:

  • bind_port:frp 服务器的监听端口,后续设置 frp 客户端(内网中转服务器),需求公网IP 端口拜访 frp 服务;
  • dashboard_port:面板端口,是 frp 办理后台的一个端口,能够通过它来拜访 frp 的办理页面;
  • dashboard_user:登录 frp 的账号;
  • dashboard_pwd:登录 frp 的暗码:
  • vhost_http_port:在有域名绑定的情况下,拜访一些页面的端口
  • vhost_https_port:同上
  • token:身份验证,如果没有这个验证的话,所有的 frp 客户端多能够连接你的服务端

记录:

  • 服务端 frps 拜访地址:你的IP:7500/static/#/

内网服务器

AidLux 对外开放的 ssh 端口是 9022.

这儿运用的是旧的安卓手机上装置的 AidLux 软件,里边的 Linux 是 debian,然后 apt 的源是华为云的。不过在我将要在这个上面装置 docker 的时分,发现没有 yum,所以这儿我又得先装置一下 yum。

然后不出意外的话,意外呈现了,华为云的源缺少了一个 python 的啥东西,所以我需求先给 apt 换一个阿里云的源。

PS:个人认为阿里云的源资源是比较齐的

那怎么换呢?参阅以下过程:

  1. 备份 apt 配置文件:cp /etc/apt/sources.list /etc/apt/sources.list.bak
  2. 修改 apt 配置文件:vim /etc/apt/sources.list
  3. 替换里边的华为云地址为阿里云地址:实际上便是将域名上的 huaweicloud 替换为 aliyun 即可
  4. 然后保存退出后,更新软件列表:sudo apt-get update
  5. 最终更新软件包:sudo apt-get upgrade

完结上述操作后,再履行 sudo apt install yum就能够成功装置 yum 了。

装置 docker

比较艰辛,最靠谱的仍是官网,参阅 debian 装置 docker ,现在装置成功今后,报错了:

root@localhost:/home# docker version
Client: Docker Engine - Community
 Version:           23.0.1
 API version:       1.42
 Go version:        go1.19.5
 Git commit:        a5ee5b1
 Built:             Thu Feb  9 19:46:28 2023
 OS/Arch:           linux/arm64
 Context:           default
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

这是因为咱们没有发动 docker 的原因,在 debian 中要发动 docker,需求的指令是:service docker start

手动装置 frp

离大谱了,现在只有企业版的 aidlux 能够支撑装置 docker,精确的来说是让 docker 在手机上跑起来,个人版现在还不支撑,而在手机上跑 docker 也是一个百年难题,所以运用 docker 来装置 frp 客户端的操作只能停下来,另辟蹊径了。

ecs 的 ssh 限制只能是 22;

终究选择抛弃运用 docker 的方法,手动在服务端和客户端来配置 frp,最终一试,不可就算了。

  • 在客户端咱们现已装置了 0.38.0 的 arm64 的 linux 版本

    1. home 目录下新建一个 frp 目录,然后进入到 frp 目录

    2. 再拉取 frp 的装置包:wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_arm64.tar.gz

    3. 对装置包进行解压 tar xvf frp_0.38.0_linux_arm64.tar.gz

    4. 进入到解压出来的目录中去,设置_客户端指令_ frpc 环境变量-即将 frps 放到 path 目录下:cp frpc /usr/bin/

    5. 然后树立寄存配置文件的目录:mkdir /etc/frp

    6. 再将配置文件复制到对应的目录:cp frpc.ini /etc/frp

    7. 修改对应的配置文件:vim /etc/frp/frpc.ini

    8. 最终一步把 frpc.servicesystemd 文件复制到 /etc/systemd/system/目录下,这样咱们就能够通过 systemctl 来设置发动和敞开自发动了

      • 发动:systemctl start frpc

      • 重启:systemctl restart frpc

      • 开机自发动:systemctl enable frps

      • 中止:systemctl stop frps

      • 查看状况日志:systemctl status frps

    • 咱们的 frpc.ini 配置文件的内容会改变一下
    [common]
    # server_addr为FRPS服务器IP地址
    server_addr = 你的 ip 地址
    # server_port为服务端监听端口,bind_port
    server_port = 7000
    # 用户
    user = admin
    # 身份验证
    token = 你的自定义 token
    [ssh]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 9022
    remote_port = 2289
    [http]
    type=tcp
    local_ip = 127.0.0.1
    local_port = 30818
    remote_port = 2288
    # [ssh] 为服务名称,下方此处设置为,拜访frp服务段的2288端口时,等同于通过中转服务器拜访127.0.0.1的22端口。
    # type 为连接的类型,此处为tcp
    # local_ip 为中转客户端实际拜访的IP 
    # local_port 为方针端口
    # remote_port 为远程端口
    
    • 咱们也能够暂时进行发动,在解压后的 frp 目录里履行 ./frpc -c /etc/frp/frpc.ini,会有对应的日志透出
  • 而云服务器是 amd64 架构的,所以这儿需求装置 0.38.0-amd64 的 frp

    1. home 目录下新建一个 frp 目录,然后进入到 frp 目录

    2. 再拉取 frp 的装置包:wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz

    3. 对装置包进行解压 tar xvf frp_0.38.0_linux_amd64.tar.gz

    4. 进入到解压出来的目录中去,设置_服务端指令_ frps 环境变量-即将 frps 放到 path 目录下:cp frps /usr/bin/

    5. 然后树立寄存配置文件的目录:mkdir /etc/frp

    6. 再将配置文件复制到对应的目录:cp frps.ini /etc/frp

    7. 修改对应的配置文件:vim /etc/frp/frps.ini

    8. 最终一步把 frps.servicesystemd 文件复制到 /etc/systemd/system/目录下,这样咱们就能够通过 systemctl 来设置发动和敞开自发动了

      • 发动:systemctl start frps

      • 重启:systemctl restart frps

      • 开机自发动:systemctl enable frps

      • 中止:systemctl stop frps

      • 查看状况日志:systemctl status frps

    • 咱们的 frps.ini 配置文件的内容仍是不变的,在保存之后紧接着进行下一步
    • 咱们也能够暂时进行发动,在解压后的 frp 目录里履行 ./frps -c /etc/frps.ini,会有对应的日志透出

这儿弥补一下阐明:

frps 这最终一个 s 代表 server 服务端,所以咱们在服务端履行的是 frps 指令;

而 frpc 里的 c 便是 client 客户端,所以要在客户端履行 frpc 指令

当服务端 frps 和客户端 frpc 都发动时,翻开咱们的 frp 控制台,上面有链接,就能够看到下面的状况了:

自建内网穿透服务器 | Coder 小站

这个时分咱们去拜访公网的 2288 端口就能够连到咱们的内网服务器了,而运用 ssh 链接公网的 2289 也能够连到内网服务器的指令行(这儿如果提示输入暗码,记得输入内网服务器暗码)。