#proxy-server #proxy #server #sock

app koblas

轻量级SOCKS5代理服务器

9个版本 (2个稳定版)

1.1.0 2024年2月11日
0.1.6 2024年1月16日
0.1.5 2023年10月20日
0.1.3 2023年7月15日
0.1.0 2023年1月21日

#423网络编程

MIT/Apache

21KB
376

Koblas

一个轻量级的SOCKS5代理服务器,用Rust编写。

  • 多用户
  • 可配置
  • IPv4 & IPv6
  • 黑名单 & 白名单
  • 无认证
  • 用户名/密码认证

安装

Cargo

确保已安装Rust的当前稳定版本。

注册表

cargo install koblas

手动

git clone https://github.com/ynuwenhof/koblas.git
cd koblas
cargo install --path .

运行以下命令以哈希密码

koblas hash "correct-horse-battery-staple"

这将返回一个Argon2id密码哈希。

安装后,您可以使用以下命令运行服务器

koblas -a 0.0.0.0 --auth -c /path/to/config.toml

这将使服务器绑定到0.0.0.0:1080

Docker

确保已安装Docker Engine

使用以下命令从Docker Hub注册表拉取最新镜像

docker pull ynuwenhof/koblas:latest

运行以下命令自行构建镜像

git clone https://github.com/ynuwenhof/koblas.git
cd koblas
docker build -t ynuwenhof/koblas:latest .

运行以下命令以哈希密码

docker run -it --rm ynuwenhof/koblas:latest hash "correct-horse-battery-staple"

这将返回一个Argon2id密码哈希。

拉取或构建镜像后,您可以使用以下命令运行服务器

docker run -d -p 1080:1080 \
  -v /path/to/config.toml:/etc/koblas/config.toml \
  -e RUST_LOG=debug \
  -e KOBLAS_NO_AUTHENTICATION=false \
  -e KOBLAS_ANONYMIZE=false \
  --name koblas ynuwenhof/koblas:latest

这将使服务器绑定到0.0.0.0:1080

使用Docker Compose部署服务器

version: "3.8"
services:
  koblas:
    image: ynuwenhof/koblas:latest
    container_name: koblas
    restart: unless-stopped
    ports:
      - 1080:1080
    environment:
      RUST_LOG: debug
      KOBLAS_LIMIT: 256
      KOBLAS_NO_AUTHENTICATION: false
      KOBLAS_ANONYMIZATION: true
    volumes:
      - /path/to/config.toml:/etc/koblas/config.toml

配置

Koblas可以通过环境变量或命令行参数进行配置。

缺失的键将回退到它们的默认值。

描述 默认
KOBLAS_ADDRESS 监听传入TCP连接的地址 127.0.0.1
KOBLAS_PORT 监听传入TCP连接的端口 1080
KOBLAS_LIMIT 一次可处理的最大客户端数量 255
KOBLAS_NO_AUTHENTICATION 不需要客户端使用用户名/密码组合进行认证 false
KOBLAS_ANONYMIZATION 从日志中排除敏感信息 false
KOBLAS_CONFIG_PATH 配置文件的文件路径 None

⚠️默认配置要求每个人都必须使用预先存在的用户名/密码组合连接。

Koblas没有默认的配置文件位置,但我们建议以下位置

  • Linux: /etc/koblas/config.toml
  • MacOS: /etc/koblas/config.toml
  • Windows: %ProgramData%\koblas\config.toml

示例

# All matching IPs will be automatically blocked
blacklist = [
    # Blacklist all IPs between
    # 192.168.2.0 and 192.168.2.255
    "192.168.2.0/24",
    # Blacklist a single IP
    "192.168.3.0/32",
]

# All non matching IPs will be automatically blocked
# Keep empty to disable the whitelist
whitelist = [
    # Whitelist all IPs between
    # 192.168.0.0 and 192.168.0.255
    "192.168.0.0/24",
    # Whitelist a single IP
    "192.168.1.0/32",
]

[users]
# Username = "alice", password = "QDuMGlxdhpZt"
alice = "$argon2id$v=19$m=8,t=2,p=1$bWUwSXl2M2pYNU9xcVBocw$f4gFaE7p0qWRKw"
# Username = "bob", password = "ceQvWaDGVeTv"
bob = "$argon2id$v=19$m=8,t=2,p=1$ZExzaTM3aks1WjU1a3g4UA$J+EiueHYuR/dlA"

许可证

该项目可以选择以下任一许可证进行授权:

依赖项

约10-20MB
~258K SLoC