欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

GOST:內網穿透、端口轉發、多級代理一站搞定!

admin
2025年3月11日 19:20 本文熱度 577

GOST是一個基于GO語言實現的多功能安全隧道工具,支持多端口監聽、多級轉發鏈、多協議支持、TCP/UDP端口轉發、反向代理、透明代理、DNS解析與代理、TUN/TAP設備、負載均衡、路由控制、限速限流、準入控制、插件系統、監控指標、動態配置、Web API和GUI/WebUI等功能。

特點 

GOST是一個由GO語言編寫的安全隧道軟件,具備以下特性:

  • 支持多端口監聽和多級轉發鏈。
  • 支持TCP/UDP端口轉發,可以實現正向代理和反向代理。
  • 提供TCP/UDP透明代理功能。
  • 支持DNS解析和代理。
  • 可以使用TUN/TAP設備。
  • 實現了負載均衡和路由控制。
  • 提供了限速限流和準入控制的功能。
  • 擁有一個插件系統,方便擴展。
  • 提供了監控指標,便于管理和調優。
  • 支持動態配置和Web API。
  • 提供了GUI/WebUI界面,方便用戶操作。

GOST作為隧道有三種主要使用方式。

正向代理

作為代理服務訪問網絡,可以組合使用多種協議組成轉發鏈進行轉發。

Proxy

端口轉發

將一個服務的端口映射到另外一個服務的端口,同樣可以組合使用多種協議組成轉發鏈進行轉發。

Forward

反向代理

利用隧道和內網穿透將內網服務暴露到公網訪問。

Reverse Proxy

下載安裝 

二進制文件

https://github.com/go-gost/gost/releases

源碼編譯

git clone https://github.com/go-gost/gost.git
cd gost/cmd/gost
go build

Docker

docker run --rm gogost/gost -V

還有GUI支持。

實用功能 

用戶級別的流量統計和動態限流方案

GOST 提供了一種用戶級別的流量統計和動態限流的解決方案,通過觀測器組件對服務的連接和流量進行周期性統計,同時通過限制器組件來限制服務的連接和流量。針對不同的認證處理器,可以結合認證器、觀測器和流量限制器來實現靈活的用戶級別動態限流。

Limiter

services:
  - name: service-0
    addr: :8080
    handler:
      type: http
      auther: auther-0
      observer: observer-0
      limiter: limiter-0
    listener:
      type: tcp
authers:
  - name: auther-0
    plugin:
      type: http
      addr: http://localhost:8000/auther
observers:
  - name: observer-0
    plugin:
      type: http
      addr: http://localhost:8001/observer
limiters:
  - name: limiter-0
    plugin:
      type: http
      addr: http://localhost:8002/limiter

利用反向代理隧道實現k8s中服務的本地調試

Kubernetes等云原生技術使服務部署和管理更加靈活和便利,然而當一個應用運行在Kubernetes集群中時,需要對其進行調試則會很麻煩。目前比較主流的解決方案是使用Telepresence等工具,將服務的流量攔截并轉發到本地服務,從而實現本地環境下的開發和調試。

通過gost的反向代理隧道將進入反向代理的流量通過隧道轉發到對端。具體的方案實施就是是在Nginx服務的前面運行一個反向代理隧道服務接管原本發給Nginx服務的所有流量,Nginx服務所在的Pod中通過Sidecar方式運行反向代理隧道客戶端,通過隧道連接到反向代理隧道服務。默認情況下所有流量會通過此隧道轉發給集群中的Nginx服務。

?
Traffic Split

配置如下:

apiVersion: v1
kind: Service
metadata:
  name: proxy
spec:
  selector:
    app: proxy
  ports:
    - name: tunnel
      protocol: TCP
      port: 8421
      targetPort: tunnel
    - name: entrypoint
      protocol: TCP
      port: 80
      targetPort: entrypoint
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: proxy
spec:
  replicas: 1
  selector:
    matchLabels:
      app: proxy
  template:
    metadata:
      name: proxy
      labels:
        app: proxy
    spec:
      restartPolicy: Always
      containers:
        - name: gost
          image: gogost/gost
          args:
            - "-L"
            - "tunnel+ws://:8421?entrypoint=:80&tunnel=nginx.local:10bc451e-59dc-4c70-999e-91a30813ac78&path=/proxy"
          ports:
            - name: tunnel
              containerPort: 8421
              protocol: TCP
            - name: entrypoint
              containerPort: 80
              protocol: TCP
          resources:
            limits:
              cpu: 1000m
              memory: 1000Mi
            requests:
              cpu: 10m
              memory: 10Mi
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 0
      maxSurge: 1
  minReadySeconds: 10
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      restartPolicy: Always
      containers:
        - name: gost
          image: gogost/gost
          args:
            - "-L"
            - "rtcp://:0/:80"
            - "-F"
            - "tunnel+ws://proxy:8421?tunnel.id=10bc451e-59dc-4c70-999e-91a30813ac78&tunnel.weight=1&path=/proxy"
          resources:
            limits:
              cpu: 1000m
              memory: 1000Mi
            requests:
              cpu: 10m
              memory: 10Mi
        - name: nginx
          image: nginx:alpine
          resources:
            limits:
              cpu: 1000m
              memory: 1000Mi
            requests:
              cpu: 10m
              memory: 10Mi
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 0
      maxSurge: 1
  minReadySeconds: 10
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx
spec:
  rules:
    - host: nginx.local
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: proxy
                port:
                  name: entrypoint
          - path: /proxy
            pathType: Prefix
            backend:
              service:
                name: proxy
                port:
                  name: tunnel

反向代理隧道支持高可用性,可以通過權重參數weight來控制流量分流,實現對流量的精細管理。通過配置 Deployment 和 Ingress 資源,可以將流量通過 Websocket 協議分流到本地的 Nginx 服務。此方法與 Telepresence 相比,具有簡單、侵入性低、動態無縫流量切換和對本地系統無限制等優點。

挺有意思的小工具,你也可以試試。

項目地址: https://github.com/go-gost/gost


閱讀原文:原文鏈接


該文章在 2025/3/12 11:18:23 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved