• 热门搜索 热门搜索
菜单

您现在的位置是:博客 > 文章详情文章详情

Docker 部署FastTunnel,实现内网穿透

原创
时间2024/02/05 17:48:59 发布 预览数量418
分类: 其它 标签: 内网穿透

一、前言

最近在学习搭建Elasticsearch集群,但是发现云服务(2核4G)资源根本就不够用,部署上去就直接宕机了。想着服务器资源太贵, 家里刚好有一台64G内存的闲置电脑。不如做一个内网穿透,可以远程访问。工作学习两不误。其实目前市面上已经有很多穿透工具了,比如向日葵~~ ,但是奈何带宽太小了,免费的才1M~~~

二、什么是 FastTunnel

FastTunnel 是用.net core开发的一款跨平台内网穿透工具,它可以实现将内网服务暴露到公网供自己或任何人访问。

与其他穿透工具不同的是:FastTunnel项目致力于打造一个易于扩展、易于维护的内网穿透框架,任何人都可以基于该框架二次开发,你可以直接通过nuget安装依赖进行开发,当然它也是开箱即用的工具。使用起来很方便。gitee源码地址如下:

gitee / FastTunnel

三、开始内网穿透

1、前置环境

本次搭建使用的环境是 linux 平台下,Centos7.9 操作系统。流程如下:

Docker 部署FastTunnel,显示内网穿透

假设云服务器IP是(100.100.100.100),家庭主机的内网iP是(192.168.1.1),我们想通过访问 云服务器IP+端口 实现对 家庭主机:22 linux 远程连接的访问。

2、云服务器安装FastTunnel.Server

# 1、创建目录(存放配置文件)
mkdir -f /root/FastTunnel/config

# 2、将 appsettings.json 放在 /root/FastTunnel/config 目录下,文件的内容下面会贴出。

# 3、运行
docker run -d \
--name fasttunnel.server  \
--restart always \
--volume /root/FastTunnel/config:/app/config \
--volume /root/FastTunnel/Logs:/app/Logs \
-p 1270:1270  -p 1271:1271  registry.cn-hangzhou.aliyuncs.com/converts/fasttunnel.server:20240205

appsettings.json 文件内容如下:

{
  "Logging": {
    "LogLevel": {
      // Trace Debug Information Warning Error
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  // Http&客户端通讯端口
  "urls": "http://*:1270",
  // 是否启用文件日志输出
  "EnableFileLog": false,
  "FastTunnel": {
    // 可选,绑定的根域名,
    // 客户端需配置SubDomain,实现 ${SubDomain}.${WebDomain}访问内网的站点,注意:需要通过域名访问网站时必选。
    "WebDomain": "domin.cn",

    // 可选,访问白名单,为空时:所有人有权限访问,不为空时:不在白名单的ip拒绝。
    "WebAllowAccessIps": [],

    // 可选,是否开启端口转发代理,禁用后不处理Forward类型端口转发.默认false。
    "EnableForward": true,

    // 可选,当不为空时,客户端也必须携带Tokens中的任意一个token,否则拒绝登录。
    "Tokens": [ "37A5CBAA-AB1E-49A4-8B6E-1D041087458C" ],

    /**
    * 访问api接口的JWT配置
    */
    "Api": {
      "JWT": {
        "ClockSkew": 10,
        "ValidAudience": "https://suidao.io",
        "ValidIssuer": "FastTunnel",
        "IssuerSigningKey": "This is IssuerSigningKey",
        "Expires": 120
      },
      "Accounts": [
        {
          "Name": "admin",
          "Password": "admin123"
        }
      ]
    }
  }
}

这里需要对配置文件做些修改,如下所示:

Docker 部署FastTunnel,显示内网穿透

3、家庭主机安装FastTunnel.Client

# 1、创建目录(存放配置文件)
mkdir -f /root/FastTunnel/config

# 2、将 appsettings.json 放在 /root/FastTunnel/config 目录下,文件的内容下面会贴出。

# 3、运行
docker run -d \
--name fasttunnel.client  \
--restart always \
--volume /root/FastTunnel/config/appsettings.json:/app/appsettings.json \
--volume /root/FastTunnel/Logs:/app/Logs \
-p 1270:1270  -p 1271:1271  registry.cn-hangzhou.aliyuncs.com/converts/fasttunnel.client:20240205

appsettings.json 文件内容如下:

{
  "Logging": {
    "LogLevel": {
      // Trace Debug Information Warning Error
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  // 是否启用文件日志输出
  "EnableFileLog": true,
  "ClientSettings": {
    "Server": {
      // [必选] 服务端ip/域名(来自服务端配置文件的urls参数)
      "ServerAddr": "domin.cn",
      // [必选] 服务端监听的通信端口(来自服务端配置文件的urls参数)
      "ServerPort": 1270
    },

    // [可选],服务端Token,必须与服务端配置一致,否则拒绝登录。
    "Token": "37A5CBAA-AB1E-49A4-8B6E-1D041087458C",
    /**
     * [可选] 内网web节点配置
     */
    "Webs": [
    ],

    /**
     * [可选] 端口转发 通过专用端口代理,不需要有自己的域名
     * 可穿透所有TCP上层协议
     * 远程linux示例:#ssh -oPort=12701 {root}@{ServerAddr} ServerAddr 填入服务端ip,root对应内网用户名
     * 通过服务端返回的访问方式进行访问即可
     */
    "Forwards": [
      {
        // [必选] 内网服务所在主机ip
        "LocalIp": "127.0.0.1",
        // [必选] 内网服务监听端口 windows远程桌面端口为3389
        "LocalPort": 22,
        // [必选] 服务端端口 访问 服务端ip:1274 即可实现远程window桌面
        "RemotePort": 1271,
        // [可选] 通讯协议,可选值TCP,UDP,默认值TCP
        "Protocol": "TCP"
      }
    ]
  }
}

4、官方文档

FastTunnel 官方文档

版权声明:本文为Converts的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://www.converts.cn/article/8930245.html

暂无评论

暂无评论

目录

推荐阅读

  • 对比MySQL不同版本下表结构和数据存储的差异

    一、前言 在开始之前, 我们需要先了解一下 MySQL 的存储引擎有哪些。 MySQL常用的存储引擎有 InnoDB 和 MyISAM,而且两者都有各自的特点,适用于不同的场景。下面是对这两种存储引擎的简要对比: InnoDB存储引擎 支持事务处理 支持行级锁 支持外键约束 可以根据事务日志实现数据恢复 MyISAM存储引擎 MyISAM 的读取性能要高于 InnoDB(无事务) 支持全文索引

  • Linux系统定时任务 -- crontab命令

    一、前言 有时候需要在 Linux 系统中定时执行一些任务,我们就需要使用 crontab 命令创建定时任务。crontab 是“cron table”的缩写,其功能是管理定时计划任务。在Linux系统中的crond是一个定时计划任务服务,用户只要能够按照正确的格式(分、时、日、月、星期、命令)写入到配置文件中,那么就会按照预定的周期时间自动地执行下去,而crontab命令则是用于配置的工具名称

  • Js验证身份证号码是否正确

    一、前言 一般情况下,提交数据时, 会对要提交的数据进行各种验证,其他的验证我这里就不讲了,现在网上有很多, 我要讲的是对身份证的验证, 我看大部分对身份证的验证都是对身份证的位数进行验证(例如:15位或者18位), 这个其实是不太准确地,在一些系统中, 以身份证为唯一标识的话, 身份证错误会造成很大的问题, 所以我们要增加身份证的验证。接下来我们先普及一下我们国家对 身份证的产生规则 做一下了

  • Docker容器的资源大小限制(CPU、内存、磁盘)

    一、前言 Docker 容器的资源分配往往是最容易被人忽略的参数点,一般情况下不会有太大问题,但是只要出现问题就是灾难性的。 如果 Docker 容器在创建时没有明确设置 memory 参数,那么它的内存限制将取决于操作系统和 Docker 引擎的默认配置。在某些情况下,如果没有明确设置内存限制,容器可能会尝试使用尽可能多的可用内存,这可能会导致性能问题或资源争用。 这似乎看上去并没有什么太

  • Docker 部署FastTunnel,实现内网穿透

    一、前言 最近在学习搭建Elasticsearch集群,但是发现云服务(2核4G)资源根本就不够用,部署上去就直接宕机了。想着服务器资源太贵, 家里刚好有一台64G内存的闲置电脑。不如做一个内网穿透,可以远程访问。工作学习两不误。其实目前市面上已经有很多穿透工具了,比如向日葵~~ ,但是奈何带宽太小了,免费的才1M~~~ 二、什么是 FastTunnel FastTunnel 是用.net

  • 解决:“The configured user limit (128) on the number of inotify instances has been reached....” 错误

    一、场景再现 在linux系统上运行着10个微服务,突然发现某个服务挂了。遇到这种情况,一般就使用命令docker start 就可以解决。 然而发现命令无法使服务起来。根据跟踪容器日志发现是出现了异常,如下所示: shell Unhandled exception. System.IO.IOException: The configured user limit (128) on the nu

  • Docker 安装mysql

    一、创建mysql 容器 shell docker run \d \ 后台运行-restart=always \总是跟随docker启动-privileged=true\获取宿主机root权限p 13306:3306 name mysql \ 容器与主机映射端口为,主机13306,容器3306v /mysql/log:/var/log/mysql \ 容器运行后的名称v /mysql/data:

  • validate service connection: CRI v1 runtime API is not implemented for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService

    一、问题 安装k8s集群, Node节点加入主节点的时候(kubeadm join...),报错,报错信息如下: shell [root@node1 ~] kubeadm join k8s-master:6443 token 4nm8cy.jgxw8go95c1uqt6c discovery-token-ca-cert-hash sha256:f1c08bce4ebeb8deb531b950

  • k8s 安装ingress,并解决拉取镜像失败的问题

    一、前言 Service 是将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法,但是Service 只能在内网间访问(NodePort方式用的较少), 那么外网的路由请求如何发送到 Service 上呢? k8s 为我们提供了 Ingress 网关服务。 二、什么是Ingress ? Ingress 公开从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ing

  • ssh 免密登录

    一、前言 SSH(Secure Shell)免密登录是一种安全便捷的远程登录方式,允许用户在不输入密码的情况下连接到远程Linux服务器。它通过密钥认证来实现登录,这种方法可以提高工作效率,同时加强系统的安全性。 二、秘钥的存放位置 一般秘钥都存放在用户的根目录下 ~/.ssh,如下图所示 ! .ssh 目录下一般会有两个文件 idrsa:私钥 、 idrsa.pub:公钥。 !

加载中