Files
Kubernetes/Helm/Helm部署Shadowsocks-Rust.md
2025-08-26 23:46:10 +08:00

6.9 KiB
Raw Blame History

本文作者:丁辉

Helm部署Shadowsocks-Rust

Github仓库 官网

介绍

shadowsocks-rust 是一个使用 Rust 编程语言实现的 Shadowsocks 协议,它提供了网络代理服务。与原始的 Shadowsocks 或基于 C 语言的 shadowsocks-libev 相比shadowsocks-rust 的目标是提供更好的性能和更高的安全性。

  • 使用 Rust 语言Rust 提供了内存安全性保证,这意味着使用 Rust 编写的程序在编译时就能排除很多可能的安全隐患,如缓冲区溢出等问题。

  • 兼容性shadowsocks-rust 完全兼容原始 Shadowsocks 协议,这意味着它可以与其他使用 Shadowsocks 协议的客户端和服务器互操作。

  • 支持多种加密算法:它支持多种加密方式,包括但不限于 AES-256-GCM、ChaCha20-Poly1305 等,这些加密算法旨在确保传输的安全性。

  • 跨平台支持shadowsocks-rust 可以运行在多种平台上,包括 Linux、macOS 和 Windows这使得它在不同环境中都可以部署和使用。

  • 性能:由于 Rust 语言的高效性shadowsocks-rust 在运行时通常表现出更低的延迟和更高的吞吐量。

  • 开源项目作为一个开源项目shadowsocks-rust 在 GitHub 上维护,允许社区贡献代码,同时用户可以自由地下载、修改和分发。

对外端口详解

  • TCP端口

    TCPTransmission Control Protocol这是最常见的协议类型用于大多数网络通信。Shadowsocks 默认使用 TCP 进行数据传输。大部分网络请求,如网页浏览、文件下载、邮件传输等,都使用 TCP 协议。

  • UDP端口

    UDPUser Datagram Protocol这是另一种协议通常用于需要低延迟的应用如视频流、实时游戏、语音通话等。UDP 不像 TCP 那样进行严格的数据校验和排序,因此在某些场景下可以提供更快的数据传输速率。

服务端开始安装

  1. 克隆代码

    git clone https://github.com/shadowsocks/shadowsocks-rust.git
    cd shadowsocks-rust
    
  2. 编写 values.yaml 文件

    vi shadowsocks-rust-values.yaml
    

    内容如下

    servers:
      - server: "0.0.0.0" # 对外允许访问地址
        server_port: 8388
        service_port: 80
        password: ""  # 填写你的密码
        method: "aes-256-gcm"  # 加密方法
        timeout: 60
        fast_open: true  # 允许数据在 TCP 三次握手的过程中开始传输
        mode: "tcp_and_udp"  # 同时支持 TCP 和 UDP
    
    # 使用本地网络
    hostPort: true
    
  3. 安装

    helm install \
      shadowsocks-rust ./k8s/chart \
      --namespace shadowsocks \
      --create-namespace \
      -f shadowsocks-rust-values.yaml
    

卸载

  1. 卸载 shadowsocks-rust

    helm uninstall shadowsocks-rust -n shadowsocks
    
  2. 删除命名空间

    kubectl delete ns shadowsocks
    

Kubernetes客户端安装

需要连接的服务端IP(假设) 连接密码(假设)
192.168.1.10 123456
  1. 创建命名空间

    kubectl create namespace shadowsocks
    
  2. 下载 Yaml 文件

    wget https://gitee.com/offends/Kubernetes/raw/main/File/Yaml/shadowsocks-rust-client.yaml
    
  3. 修改 Yaml 文件

    vi shadowsocks-rust-client.yaml
    

    修改如下内容

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: shadowsocks-rust-client
      namespace: shadowsocks
    data:
      config.json: |
        {
          "server": "192.168.1.10",
          "server_port": 8388,
          "password": "123456",
          "local_address": "0.0.0.0",
          "local_port": 1080,
          "timeout": 300,
          "method": "aes-256-gcm"
        }
    
  4. 安装

    kubectl apply -f shadowsocks-rust-client.yaml
    
  5. 访问地址

    • 容器内代理访问地址为

      shadowsocks-rust-client.shadowsocks.svc.cluster.local:1080
      
    • 本地访问代理为

      $(kubectl get svc -n shadowsocks | grep shadowsocks-rust-client | awk '{print $3}'):1080
      

卸载

  1. 卸载 shadowsocks-rust

    kubectl delete -f shadowsocks-rust-client.yaml
    
  2. 删除命名空间

    kubectl delete ns shadowsocks
    

Windows或Mac客户端安装

客户端安装

Github

打开软件 > 点击服务器 > 服务器设置 > 点击左下角 + 号 > 添加服务器信息并确定

Kubernetes客户端开启对外访问供其他终端使用

  1. 部署 Nginx 代理

    vi nginx.conf
    

    内容如下

    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log warn;
    pid /var/run/nginx.pid;
    
    events {
        worker_connections 1024;
        use epoll;
        multi_accept on;
    }
    
    stream {
        server {
            listen 1080 reuseport;
            proxy_pass shadowsocks:1080;
            proxy_connect_timeout 10s;
            proxy_timeout 1h;
            proxy_buffer_size 16k;
            tcp_nodelay on;
        }
    }
    
  2. 编辑 Dockerfile

    vi Dockerfile
    

    内容如下

    FROM nginx:alpine-slim
    
    RUN rm /etc/nginx/conf.d/default.conf
    
    COPY nginx.conf /etc/nginx/nginx.conf
    
    EXPOSE 1080
    
  3. 构建镜像

    docker build -t shadowsocks-gateway:v1.0 .
    
  4. 查看 Minio SVC IP

    kubectl get svc -n shadowsocks | grep shadowsocks-rust-client | awk '{print $3}'
    
  5. 编辑 Yaml

    vi shadowsocks-gateway.yaml
    

    内容如下

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      namespace: shadowsocks
      name: shadowsocks-gateway
      labels:
        app: shadowsocks-gateway
    spec:
      selector:
        matchLabels:
          app: shadowsocks-gateway
      template:
        metadata:
          labels:
            app: shadowsocks-gateway
        spec:
          hostNetwork: true
          hostAliases:
          - ip: "" #填入 Shadowsocks SVC IP
            hostnames:
            - "shadowsocks"
          containers:
            - name: shadowsocks-gateway
              image: shadowsocks-gateway:v1.0
              imagePullPolicy: IfNotPresent
              ports:
                - containerPort: 1080
                  protocol: TCP
              readinessProbe:
                failureThreshold: 3
                initialDelaySeconds: 5
                periodSeconds: 3
                successThreshold: 1
                tcpSocket:
                  port: 1080
                timeoutSeconds: 10
              resources:
                limits:
                  memory: 512Mi
    
  6. 部署

    kubectl apply -f shadowsocks-gateway.yaml
    
  7. 代理地址为 Nginx服务器地址:1080