Files
Kubernetes/Helm/Helm部署Shadowsocks-Rust.md
offends 6c64cfb505
All checks were successful
continuous-integration/drone Build is passing
更新Shadowsocks文档
2025-08-26 23:50:07 +08:00

303 lines
7.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

> 本文作者:丁辉
# Helm部署Shadowsocks-Rust
[Github仓库](https://github.com/shadowsocks/shadowsocks-rust) [官网](https://shadowsocks.org/)
## 介绍
`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. 克隆代码
```bash
git clone https://github.com/shadowsocks/shadowsocks-rust.git
cd shadowsocks-rust
```
2. 编写 values.yaml 文件
```bash
vi shadowsocks-rust-values.yaml
```
内容如下
```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. 安装
```bash
helm install \
shadowsocks-rust ./k8s/chart \
--namespace shadowsocks \
--create-namespace \
-f shadowsocks-rust-values.yaml
```
## 卸载
1. 卸载 shadowsocks-rust
```bash
helm uninstall shadowsocks-rust -n shadowsocks
```
2. 删除命名空间
```bash
kubectl delete ns shadowsocks
```
# Kubernetes客户端安装
| 需要连接的服务端IP(假设) | 连接密码(假设) |
| :----------------------: | :------------: |
| 192.168.1.10 | 123456 |
1. 创建命名空间
```bash
kubectl create namespace shadowsocks
```
2. 下载 Yaml 文件
```bash
wget https://gitee.com/offends/Kubernetes/raw/main/File/Yaml/shadowsocks-rust-client.yaml
```
3. 修改 Yaml 文件
```bash
vi shadowsocks-rust-client.yaml
```
修改如下内容
```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. 安装
```bash
kubectl apply -f shadowsocks-rust-client.yaml
```
5. 访问地址
- 容器内代理访问地址为
```bash
shadowsocks-rust-client.shadowsocks.svc.cluster.local:1080
```
- 本地访问代理为
```bash
$(kubectl get svc -n shadowsocks | grep shadowsocks-rust-client | awk '{print $3}'):1080
```
## 卸载
1. 卸载 shadowsocks-rust
```bash
kubectl delete -f shadowsocks-rust-client.yaml
```
2. 删除命名空间
```bash
kubectl delete ns shadowsocks
```
# Windows或Mac客户端安装
客户端安装
[Github](https://github.com/shadowsocks/ShadowsocksX-NG)
打开软件 > 点击服务器 > 服务器设置 > 点击左下角 + 号 > 添加服务器信息并确定
# Kubernetes客户端开启对外访问供其他终端使用
1. 部署 Nginx 代理
```bash
vi nginx.conf
```
内容如下
```nginx
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
```bash
vi Dockerfile
```
内容如下
```dockerfile
FROM nginx:alpine-slim
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 1080
```
3. 构建镜像
```bash
docker build -t shadowsocks-gateway:v1.0 .
```
4. 查看 Minio SVC IP
```bash
kubectl get svc -n shadowsocks | grep shadowsocks-rust-client | awk '{print $3}'
```
5. 编辑 Yaml
```bash
vi shadowsocks-gateway.yaml
```
内容如下
```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. 部署
```bash
kubectl apply -f shadowsocks-gateway.yaml
```
7. 代理地址为 Nginx服务器地址:1080
8. 测试
```bash
curl --socks5-hostname 服务器地址:1080 https://www.google.com
```