在具有公网IP的服务器(一般是云主机)上安装frp服务

  • 拉取frp镜像

    docker pull snowdreamtech/frps
  • 新建配置文件目录并创建一个配置文件

    cd ~
    mkdir docker-vols
    cd docker-vols
    mkdir frp-server
    cd frp-server
    vim frps.ini
  • frps.ini 文件内容

    [common]
    
    #绑定端口,用户frp客户端连接用
    bind_port = 60000
    
    #用于穿透http服务用(如果需要的话)
    vhost_http_port = 60001
    
    #用于穿透https服务用(如果需要的话)
    #vhost_https_port = 60002
    
    #其他需要穿透的普通tcp或udp端口不需要在配置文件中写明,但需要在后面创建容器时做好映射
    
    #与客户端的token必须设置成一致
    token = 42974813dsadaqefaaa336c4eq9864bc
    
    #frp服务端管理页面端口,用户,密码
    dashboard_port = 60080
    dashboard_user = admin
    dashboard_pwd = admin
  • 创建并运行容器,-v 参数里要改成你上面创建的文件路径,-p 参数改成frps.ini中你定义的绑定端口和http穿透端口,另外,按照你的需要添加你想要映射的端口,比如这里我添加了一条10022用于ssh连接的端口。如果想映射的端口比较多,嫌一个一个设置麻烦也可以直接使用host网络模式自动映射所有端口到这个容器,但一般不建议这样使用。

    # 指定端口创建容器(其中10022-10032这个端口段就可用于后面的客户端内网穿透用)
    docker run --restart=always -p 60000:60000 -p 60001:60001 -p 60080:60080 -p 10022-10032:10022-10032 -d -v ~/docker-vols/frp-server/frps.ini:/etc/frp/frps.ini --name frps snowdreamtech/frps
    
    # 使用host模式自动映射所有端口(不建议)
    docker run --restart=always --network host -d -v ~/docker-vols/frp-server/frps.ini:/etc/frp/frps.ini --name frps snowdreamtech/frps
    
  • 执行上面的命令后,会返回一大串ID,不用管它。容器会在后台运行。此时可以访问 http://服务器IP:60080 来访问frp服务后台,用户密码是之前配置文件里面设置的user和pwd。

frp客户端设置(在内网的openwrt路由器上设置)

  • 首先需要你的路由器安装openwrt系统并且安装好Frp客户端插件,自行百度。
  • 进入 「Frp 内网穿透」菜单(不是Frps),进行基本设置,内容如下,令牌是服务器frps.ini中的token。Frp 内网穿透设置
  • 继续接下来就是添加具体的穿透源端口,目标内网设备的内网IP和端口了。内容如下。需要几条就配置几条。转发设置
  • 都配置好以后别忘了勾上「启用」。勾上 启用

完成

通过上面的设置,现在你可以从外网任何地方访问 yourdomain.com:10022 ,相当于直接访问内网 192.168.1.123 的 22 端口了,用这种方法就可以穿透内网直接访问内网设备提供的各种服务了。

Last modification:September 13, 2023
If you think my article is useful to you, please feel free to appreciate