Este es un puerto de calcetines de sombra.
Shadowsocks es un proxy de túnel rápido que te ayuda a evitar los firewalls.
Biblioteca | Descripción |
---|---|
calcetines de sombra | Protocolo central de Shadowsocks. |
servicio-shadowsocks | Servicios para servir calcetines de sombra. |
calcetines de sombra-óxido | Binarios que ejecutan servicios comunes de Shadowsocks |
Proyectos relacionados:
sslocal
usando GTK, discusiónsslocal
, discusión hickory-dns
: utiliza hickory-resolver
como solucionador de DNS en lugar del integrado de tokio
.
local-http
: permite el uso del protocolo HTTP para sslocal
local-http-native-tls
: admite HTTPS con native-tls
local-http-rustls
- Soporte HTTPS con rustls
local-tunnel
: permite el uso del protocolo de túnel para sslocal
local-socks4
- Permitir el uso del protocolo SOCKS4/4a para sslocal
local-redir
: permite el uso del protocolo redir (proxy transparente) para sslocal
local-dns
: permite el uso del protocolo dns para sslocal
, sirve como servidor DNS que envía consultas a servidores DNS locales o remotos mediante reglas ACL.
local-fake-dns
: FakeDNS, que asigna una dirección IP para cada consulta individual de un grupo de IP específico
local-tun
- Soporte de interfaz TUN para sslocal
local-online-config
- Entrega de configuración en línea SIP008
stream-cipher
: habilita cifrados de flujo obsoletos. ADVERTENCIA: ¡los cifrados de flujo NO son SEGUROS!
aead-cipher-extra
: habilita cifrados AEAD no estándar
aead-cipher-2022
: habilita los cifrados AEAD-2022 (SIP022)
aead-cipher-2022-extra
: habilita cifrados adicionales AEAD-2022 (cifrados no estándar)
Este proyecto utiliza el asignador de memoria del sistema (libc) (el valor predeterminado de Rust). Pero también te permite utilizar otros asignadores famosos por características:
jemalloc
: utiliza jemalloc como asignador de memoria globalmimalloc
: utiliza mi-malloc como asignador de memoria globaltcmalloc
: utiliza TCMalloc como asignador de memoria global. Intenta vincular tcmalloc en todo el sistema de forma predeterminada, utilice el proveedor desde la fuente con tcmalloc-vendored
.snmalloc
: utiliza snmalloc como asignador de memoria globalrpmalloc
: utiliza rpmalloc como asignador de memoria globalInstalar desde crates.io:
# Install from crates.io
cargo install shadowsocks-rust
entonces puedes encontrar sslocal
y ssserver
en $CARGO_HOME/bin
.
Para macOS y Linux, puedes instalarlo usando Homebrew:
brew install shadowsocks-rust
# Install from snapstore
snap install shadowsocks-rust
# List services
snap services shadowsocks-rust
# Enable and start shadowsocks-rust.sslocal-daemon snap service
snap start --enable shadowsocks-rust.sslocal-daemon
# Show generated systemd service status
systemctl status snap.shadowsocks-rust.sslocal-daemon.service
# Override generated systemd service (configure startup options)
systemctl edit snap.shadowsocks-rust.sslocal-daemon.service
# # NOTE: you can pass args to sslocal:
# # [Service]
# # ExecStart=
# # ExecStart=/usr/bin/snap run shadowsocks-rust.sslocal-daemon -b "127.0.0.1:1080" --server-url "ss://...."
# Restart generated systemd service to apply changes
systemctl restart snap.shadowsocks-rust.sslocal-daemon.service
# ... and show service status
systemctl status snap.shadowsocks-rust.sslocal-daemon.service
Descargue la compilación vinculada estáticamente aquí.
build-windows
: compilación para x86_64-pc-windows-msvc
build-linux
: Compilación para x86_64-unknown-linux-gnu
, Debian 9 (Stretch), GLIBC 2.18build-docker
: compilación para x86_64-unknown-linux-musl
, x86_64-pc-windows-gnu
, ... (vinculado estáticamente) Este proyecto proporcionó imágenes de Docker para las arquitecturas linux/i386
y linux/amd64
y linux/arm64/v8
.
⚠️ Los contenedores Docker no tienen acceso a IPv6 de forma predeterminada : asegúrese de deshabilitar la ruta IPv6 en el cliente o habilitar el acceso IPv6 a los contenedores Docker.
Docker extraerá la imagen de la arquitectura apropiada de nuestros paquetes de GitHub.
docker pull ghcr.io/shadowsocks/sslocal-rust:latest
docker pull ghcr.io/shadowsocks/ssserver-rust:latest
Si desea crear la imagen de Docker usted mismo, debe utilizar BuildX.
docker buildx build -t shadowsocks/ssserver-rust:latest -t shadowsocks/ssserver-rust:v1.15.2 --target ssserver .
docker buildx build -t shadowsocks/sslocal-rust:latest -t shadowsocks/sslocal-rust:v1.15.2 --target sslocal .
Debe montar el archivo de configuración en el contenedor y crear un mapa de puerto externo para que el contenedor se conecte a él.
docker run --name sslocal-rust
--restart always
-p 1080:1080/tcp
-v /path/to/config.json:/etc/shadowsocks-rust/config.json
-dit ghcr.io/shadowsocks/sslocal-rust:latest
docker run --name ssserver-rust
--restart always
-p 8388:8388/tcp
-p 8388:8388/udp
-v /path/to/config.json:/etc/shadowsocks-rust/config.json
-dit ghcr.io/shadowsocks/ssserver-rust:latest
Este proyecto proporcionó manifiestos yaml para implementar en Kubernetes.
Puede aprovechar el servicio k8s para exponer el tráfico externo, como LoadBalancer o NodePort, que se vuelve más detallado en comparación con el host o puerto fijo.
Para un caso de uso más interesante, puede utilizar Ingress (Istio, nginx, etc.) que enruta el tráfico coincidente a Shadowsocks junto con el servicio web real.
kubectl
kubectl apply -f https://github.com/shadowsocks/shadowsocks-rust/raw/master/k8s/shadowsocks-rust.yaml
Puede cambiar la configuración editando el ConfigMap llamado shadowsocks-rust
.
Para un control más detallado, utilice helm
.
helm
helm install my-release k8s/chart -f my-values.yaml
A continuación se muestran los valores predeterminados comunes que puede cambiar:
# This is the shadowsocks config which will be mount to /etc/shadowocks-rust.
# You can put arbitrary yaml here, and it will be translated to json before mounting.
servers :
- server : " :: "
server_port : 8388
service_port : 80 # the k8s service port, default to server_port
password : mypassword
method : aes-256-gcm
fast_open : true
mode : tcp_and_udp
# plugin: v2ray-plugin
# plugin_opts: server;tls;host=github.com
# Whether to download v2ray and xray plugin.
downloadPlugins : false
# Name of the ConfigMap with config.json configuration for shadowsocks-rust.
configMapName : " "
service :
# Change to LoadBalancer if you are behind a cloud provider like aws, gce, or tke.
type : ClusterIP
# Bind shadowsocks port port to host, i.e., we can use host:port to access shawdowsocks server.
hostPort : false
replicaCount : 1
image :
repository : ghcr.io/shadowsocks/ssserver-rust
pullPolicy : IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag : " latest "
Utilice carga para construir. NOTA: RAM >= 2GiB
cargo build --release
Luego, sslocal
y ssserver
aparecerán en ./target/(debug|release)/
, funciona de manera similar a los dos binarios en la implementación oficial de ShadowSocks.
make install TARGET=release
Luego, sslocal
, ssserver
, ssmanager
y ssurl
se instalarán en /usr/local/bin
(prefijo variable).
Para los usuarios de Windows, si han encontrado algún problema en la construcción, consulte y analice el punto 102.
Si está compilando para su plataforma de CPU actual (por ejemplo, compilando y ejecutando en su computadora personal), se recomienda configurar la característica target-cpu=native
para permitir que rustc
genere y optimice el código para la CPU que ejecuta el compilador.
export RUSTFLAGS= " -C target-cpu=native "
Requisitos:
./build/build-release
Luego sslocal
, ssserver
, ssmanager
y ssurl
se empaquetarán en
./build/shadowsocks-${VERSION}-stable.x86_64-unknown-linux-musl.tar.xz
./build/shadowsocks-${VERSION}-stable.x86_64-pc-windows-gnu.zip
Lea Cargo.toml
para obtener más detalles.
Genere una contraseña segura para un método de cifrado específico ( aes-128-gcm
en el ejemplo) con:
ssservice genkey -m " aes-128-gcm "
Cree un archivo de configuración de ShadowSocks. Ejemplo
{
"server" : "my_server_ip" ,
"server_port" : 8388 ,
"password" : "rwQc8qPXVsRpGx3uW+Y3Lj4Y42yF9Bs0xg1pmx8/+bo=" ,
"method" : "aes-256-gcm" ,
// ONLY FOR `sslocal`
// Delete these lines if you are running `ssserver` or `ssmanager`
"local_address" : "127.0.0.1" ,
"local_port" : 1080
}
Se puede encontrar una explicación detallada del archivo de configuración en la documentación de Shadowsocks. (Enlace al proyecto original, ¡ya no se mantiene!)
⚠️ Para instalaciones instantáneas, el archivo de configuración probablemente esté ubicado en/var/snap/shadowsocks-rust/common/etc/shadowsocks-rust/config.json
(ver #621 / #1146)
En Shadowsocks-rust, también tenemos un formato de archivo de configuración extendido, que es capaz de definir más de un servidor. También puede desactivar servidores individuales.
{
"servers" : [
{
"server" : "127.0.0.1" ,
"server_port" : 8388 ,
"password" : "rwQc8qPXVsRpGx3uW+Y3Lj4Y42yF9Bs0xg1pmx8/+bo=" ,
"method" : "aes-256-gcm" ,
"timeout" : 7200
} ,
{
"server" : "127.0.0.1" ,
"server_port" : 8389 ,
"password" : "/dliNXn5V4jg6vBW4MnC1I8Jljg9x7vSihmk6UZpRBM=" ,
"method" : "chacha20-ietf-poly1305"
} ,
{
"disabled" : true ,
"server" : "eg.disable.me" ,
"server_port" : 8390 ,
"password" : "mGvbWWay8ueP9IHnV5F1uWGN2BRToiVCAWJmWOTLU24=" ,
"method" : "chacha20-ietf-poly1305"
}
] ,
// ONLY FOR `sslocal`
// Delete these lines if you are running `ssserver` or `ssmanager`
"local_port" : 1080 ,
"local_address" : "127.0.0.1"
}
sslocal
selecciona automáticamente el mejor servidor con la latencia más baja y la mayor disponibilidad.
Inicie el cliente y servidor Shadowsocks con:
sslocal -c config.json
ssserver -c config.json
Si lo construyes con Cargo:
cargo run --bin sslocal -- -c config.json
cargo run --bin ssserver -- -c config.json
Enumere todos los argumentos disponibles con -h
.
Iniciar cliente local con archivo de configuración
# Read local client configuration from file
sslocal -c /path/to/shadowsocks.json
# Pass all parameters via command line
sslocal -b " 127.0.0.1:1080 " -s " [::1]:8388 " -m " aes-256-gcm " -k " hello-kitty " --plugin " v2ray-plugin " --plugin-opts " server;tls;host=github.com "
# Pass server with SIP002 URL
sslocal -b " 127.0.0.1:1080 " --server-url " ss://[email protected]:8388/?plugin=v2ray-plugin%3Bserver%3Btls%3Bhost%3Dgithub.com "
sslocal -b " 127.0.0.1:3128 " --protocol http -s " [::1]:8388 " -m " aes-256-gcm " -k " hello-kitty "
Todos los parámetros son los mismos que los del cliente Socks5, excepto --protocol http
.
# Set 127.0.0.1:8080 as the target for forwarding to
sslocal --protocol tunnel -b " 127.0.0.1:3128 " -f " 127.0.0.1:8080 " -s " [::1]:8388 " -m " aes-256-gcm " -k " hello-kitty "
--protocol tunnel
habilita el modo de túnel del cliente local-f "127.0.0.1:8080
establece la dirección de destino del túnelNOTA : Actualmente solo admite
iptables
apunta REDIRECT
y TPROXY
)pf
), como OS X 10.10+, FreeBSD, ... sslocal -b " 127.0.0.1:60080 " --protocol redir -s " [::1]:8388 " -m " aes-256-gcm " -k " hello-kitty " --tcp-redir " redirect " --udp-redir " tproxy "
Redirige las conexiones con configuraciones iptables
al puerto en el que escucha sslocal
.
--protocol redir
habilita el modo Redir del cliente local--tcp-redir
establece el modo TCP en REDIRECT
(Linux)--udp-redir
establece el modo UDP en TPROXY
(Linux)NOTA : Actualmente solo admite
Crea una interfaz Tun con nombre tun0
ip tuntap add mode tun tun0
ifconfig tun0 inet 10.255.0.1 netmask 255.255.255.0 up
Inicie sslocal
con --protocol tun
y se vincula a tun0
sslocal --protocol tun -s " [::1]:8388 " -m " aes-256-gcm " -k " hello-kitty " --outbound-bind-interface lo0 --tun-interface-name tun0
sslocal --protocol tun -s " [::1]:8388 " -m " aes-256-gcm " -k " hello-kitty " --outbound-bind-interface lo0 --tun-interface-address 10.255.0.1/24
Creará una interfaz Tun con dirección 10.255.0.1
y máscara de red 255.255.255.0
.
Descargue wintun.dll
de Wintun y colóquelo en la carpeta con los archivos binarios ejecutables de Shadowsocks o en la RUTA del sistema.
sslocal -- protocol tun - s " [::1]:8388 " - m " aes-256-gcm " - k " hello-kitty " -- outbound - bind - interface " Ethernet 0 " -- tun - interface - name " shadowsocks "
Compílelo habilitando --features "winservice"
(no incluido en la compilación predeterminada):
cargo build --release --bin " sswinservice " --features " winservice "
Instálelo como un servicio de Windows (PowerShell):
New-Service - Name " shadowsocks-local-service " ` - DisplayName " Shadowsocks Local Service " ` - BinaryPathName "sswinservice.exe local -c local_config.json "
Hay otras formas de instalar sswinservice
como servicio de Windows, por ejemplo, el comando sc
.
Como habrás notado, -BinaryPathName
contiene no solo sswinservice.exe
, sino también local -c local_config.json
. Estos parámetros de línea de comando se utilizarán como parámetro predeterminado cuando se inicie el servicio de Windows. También puede iniciar el servicio con parámetros personalizados.
Obtenga más información en el documento de Microsoft.
El parámetro de sswinservice
funciona exactamente igual que ssservice
. Admite subcomandos local
, server
y manager
.
# Read server configuration from file
ssserver -c /path/to/shadowsocks.json
# Pass all parameters via command line
ssserver -s " [::]:8388 " -m " aes-256-gcm " -k " hello-kitty " --plugin " v2ray-plugin " --plugin-opts " server;tls;host=github.com "
API de administración de múltiples usuarios admitida:
add
: inicia una instancia de servidorremove
: elimina una instancia de servidor existentelist
: enumera todos los servidores en ejecución actualmenteping
: enumera los datos estadísticos de todos los servidores NOTA: el comando stat
no es compatible. Porque los servidores se ejecutan en el mismo proceso que el propio administrador.
# Start it just with --manager-address command line parameter
ssmanager --manager-address " 127.0.0.1:6100 "
# For *nix system, manager can bind to unix socket address
ssmanager --manager-address " /tmp/shadowsocks-manager.sock "
# You can also provide a configuration file
#
# `manager_address` key must be provided in the configuration file
ssmanager -c /path/to/shadowsocks.json
# Create one server by UDP
echo ' add: {"server_port":8388,"password":"hello-kitty"} ' | nc -u ' 127.0.0.1 ' ' 6100 '
# Close one server by unix socket
echo ' remove: {"server_port":8388} ' | nc -Uu ' /tmp/shadowsocks-manager.sock '
Para la interfaz de usuario del administrador, consulte más detalles en el proyecto Shadowsocks-Manager.
Configuración de ejemplo:
{
// Required option
// Address that ssmanager is listening on
"manager_address" : "127.0.0.1" ,
"manager_port" : 6100 ,
// Or bind to a Unix Domain Socket
"manager_address" : "/tmp/shadowsocks-manager.sock" ,
"servers" : [
// These servers will be started automatically when ssmanager is started
] ,
// Outbound socket binds to this IP address
// For choosing different network interface on the same machine
"local_address" : "xxx.xxx.xxx.xxx" ,
// Other options that may be passed directly to new servers
}
{
// LOCAL: Listen address. This is exactly the same as `locals[0]`
// SERVER: Bind address for remote sockets, mostly used for choosing interface
// Don't set it if you don't know what's this for.
"local_address" : "127.0.0.1" ,
"local_port" : 1080 ,
// Extended multiple local configuration
"locals" : [
{
// Basic configuration, a SOCKS5 local server
"local_address" : "127.0.0.1" ,
"local_port" : 1080 ,
// OPTIONAL. Setting the `mode` for this specific local server instance.
// If not set, it will derive from the outer `mode`
"mode" : "tcp_and_udp" ,
// OPTIONAL. Authentication configuration file
// Configuration file document could be found in the next section.
"socks5_auth_config_path" : "/path/to/auth.json" ,
// OPTIONAL. Instance specific ACL
"acl" : "/path/to/acl/file.acl" ,
// OPTIONAL. macOS launchd activate socket
"launchd_tcp_socket_name" : "TCPListener" ,
"launchd_udp_socket_name" : "UDPListener"
} ,
{
// SOCKS5, SOCKS4/4a local server
"protocol" : "socks" ,
// Listen address
"local_address" : "127.0.0.1" ,
"local_port" : 1081 ,
// OPTIONAL. Enables UDP relay
"mode" : "tcp_and_udp" ,
// OPTIONAL. Customizing the UDP's binding address. Depending on `mode`, if
// - TCP is enabled, then SOCKS5's UDP Association command will return this address
// - UDP is enabled, then SOCKS5's UDP server will listen to this address.
"local_udp_address" : "127.0.0.1" ,
"local_udp_port" : 2081 ,
// OPTIONAL. macOS launchd activate socket
"launchd_tcp_socket_name" : "TCPListener" ,
"launchd_udp_socket_name" : "UDPListener"
} ,
{
// Tunnel local server (feature = "local-tunnel")
"protocol" : "tunnel" ,
// Listen address
"local_address" : "127.0.0.1" ,
"local_port" : 5353 ,
// Forward address, the target of this tunnel
// In this example, this will build a `127.0.0.1:5353` -> `8.8.8.8:53` tunnel
"forward_address" : "8.8.8.8" ,
"forward_port" : 53 ,
// OPTIONAL. Customizing whether to start TCP and UDP tunnel
"mode" : "tcp_only" ,
// OPTIONAL. macOS launchd activate socket
"launchd_tcp_socket_name" : "TCPListener" ,
"launchd_udp_socket_name" : "UDPListener"
} ,
{
// HTTP local server (feature = "local-http")
"protocol" : "http" ,
// Listen address
"local_address" : "127.0.0.1" ,
"local_port" : 3128 ,
// OPTIONAL. macOS launchd activate socket
"launchd_tcp_socket_name" : "TCPListener"
} ,
{
// DNS local server (feature = "local-dns")
// This DNS works like China-DNS, it will send requests to `local_dns` and `remote_dns` and choose by ACL rules
"protocol" : "dns" ,
// Listen address
"local_address" : "127.0.0.1" ,
"local_port" : 53 ,
// OPTIONAL. DNS local server uses `tcp_and_udp` mode by default
"mode" : "udp_only" ,
// Local DNS address, DNS queries will be sent directly to this address
"local_dns_address" : "114.114.114.114" ,
// OPTIONAL. Local DNS's port, 53 by default
"local_dns_port" : 53 ,
// Remote DNS address, DNS queries will be sent through ssserver to this address
"remote_dns_address" : "8.8.8.8" ,
// OPTIONAL. Remote DNS's port, 53 by default
"remote_dns_port" : 53 ,
// OPTIONAL. dns client cache size for fetching dns queries.
"client_cache_size" : 5 ,
// OPTIONAL. macOS launchd activate socket
"launchd_tcp_socket_name" : "TCPListener" ,
"launchd_udp_socket_name" : "UDPListener"
} ,
{
// Tun local server (feature = "local-tun")
"protocol" : "tun" ,
// Tun interface name
"tun_interface_name" : "tun0" ,
// Tun interface address
//
// It has to be a host address in CIDR form
"tun_interface_address" : "10.255.0.1/24"
} ,
{
// Transparent Proxy (redir) local server (feature = "local-redir")
"protocol" : "redir" ,
// OPTIONAL: TCP type, may be different between platforms
// Linux/Android: redirect (default), tproxy
// FreeBSD/OpenBSD: pf (default), ipfw
// NetBSD/macOS/Solaris: pf (default), ipfw
"tcp_redir" : "tproxy" ,
// OPTIONAL: UDP type, may be different between platforms
// Linux/Android: tproxy (default)
// FreeBSD/OpenBSD: pf (default)
"udp_redir" : "tproxy"
} ,
{
// FakeDNS local server (feature = "local-fake-dns")
// FakeDNS is a DNS server that allocates an IPv4 / IPv6 address in a specific pool for each queries.
// Subsequence requests from the other local interfaces that the target addresses includes those allocated IP addresses,
// will be substituted back to their original domain name addresses.
// This feature is useful mostly for transparent proxy, which will allow the proxied domain names to be resolved remotely.
"protocol" : "fake-dns" ,
// Listen address
"local_address" : "127.0.0.1" ,
"local_port" : 10053 ,
// IPv4 address pool (for A records)
"fake_dns_ipv4_network" : "10.255.0.0/16" ,
// IPv6 address pool (for AAAA records)
"fake_dns_ipv6_network" : "fdf2:e786:ab40:9d2f::/64" ,
// Persistent storage for all allocated DNS records
"fake_dns_database_path" : "/var/shadowsocks/fakedns.db" ,
// OPTIONAL: Record expire duration in seconds, 10s by default
"fake_dns_record_expire_duration" : 10
}
] ,
// Server configuration
// listen on :: for dual stack support, no need add [] around.
"server" : "::" ,
// Change to use your custom port number
"server_port" : 8388 ,
"method" : "aes-256-gcm" ,
"password" : "your-password" ,
"plugin" : "v2ray-plugin" ,
"plugin_opts" : "mode=quic;host=github.com" ,
"plugin_args" : [
// Each line is an argument passed to "plugin"
"--verbose"
] ,
"plugin_mode" : "tcp_and_udp" , // SIP003u, default is "tcp_only"
// Server: TCP socket timeout in seconds.
// Client: TCP connection timeout in seconds.
// Omit this field if you don't have specific needs.
"timeout" : 7200 ,
// Extended multiple server configuration
// LOCAL: Choosing the best server to connect dynamically
// SERVER: Creating multiple servers in one process
"servers" : [
{
// Fields are the same as the single server's configuration
// Individual servers can be disabled
// "disabled": true,
"address" : "0.0.0.0" ,
"port" : 8389 ,
"method" : "aes-256-gcm" ,
"password" : "your-password" ,
"plugin" : "..." ,
"plugin_opts" : "..." ,
"plugin_args" : [ ] ,
"plugin_mode" : "..." ,
"timeout" : 7200 ,
// Customized weight for local server's balancer
//
// Weight must be in [0, 1], default is 1.0.
// The higher weight, the server may rank higher.
"tcp_weight" : 1.0 ,
"udp_weight" : 1.0 ,
// OPTIONAL. Instance specific ACL
"acl" : "/path/to/acl/file.acl" ,
} ,
{
// Same key as basic format "server" and "server_port"
"server" : "0.0.0.0" ,
"server_port" : 8388 ,
"method" : "chacha20-ietf-poly1305" ,
// Read the actual password from environment variable PASSWORD_FROM_ENV
"password" : "${PASSWORD_FROM_ENV}"
} ,
{
// AEAD-2022
"server" : "::" ,
"server_port" : 8390 ,
"method" : "2022-blake3-aes-256-gcm" ,
"password" : "3SYJ/f8nmVuzKvKglykRQDSgg10e/ADilkdRWrrY9HU=" ,
// For Server (OPTIONAL)
// Support multiple users with Extensible Identity Header
// https://github.com/Shadowsocks-NET/shadowsocks-specs/blob/main/2022-2-shadowsocks-2022-extensible-identity-headers.md
"users" : [
{
"name" : "username" ,
// User's password must have the same length as server's password
"password" : "4w0GKJ9U3Ox7CIXGU4A3LDQAqP6qrp/tUi/ilpOR9p4="
}
] ,
// For Client (OPTIONAL)
// If EIH enabled, then "password" should have the following format: iPSK:iPSK:iPSK:uPSK
// - iPSK is one of the middle relay servers' PSK, for the last `ssserver`, it must be server's PSK ("password")
// - uPSK is the user's PSK ("password")
// Example:
// "password": "3SYJ/f8nmVuzKvKglykRQDSgg10e/ADilkdRWrrY9HU=:4w0GKJ9U3Ox7CIXGU4A3LDQAqP6qrp/tUi/ilpOR9p4="
}
] ,
// Global configurations for UDP associations
"udp_timeout" : 300 , // Timeout for UDP associations (in seconds), 5 minutes by default
"udp_max_associations" : 512 , // Maximum UDP associations to be kept in one server, unlimited by default
// Options for Manager
"manager_address" : "127.0.0.1" , // Could be a path to UNIX socket, /tmp/shadowsocks-manager.sock
"manager_port" : 5300 , // Not needed for UNIX socket
// DNS server's address for resolving domain names
// For *NIX and Windows, it uses system's configuration by default
//
// Value could be IP address of DNS server, for example, "8.8.8.8".
// DNS client will automatically request port 53 with both TCP and UDP protocol.
//
// - system, uses system provided API (`getaddrinfo` on *NIX)
//
// It also allows some pre-defined well-known public DNS servers:
// - google (TCP, UDP)
// - cloudflare (TCP, UDP)
// - cloudflare_tls (TLS), enable by feature "dns-over-tls"
// - cloudflare_https (HTTPS), enable by feature "dns-over-https"
// - quad9 (TCP, UDP)
// - quad9_tls (TLS), enable by feature "dns-over-tls"
//
// The field is only effective if feature "hickory-dns" is enabled.
"dns" : "google" ,
// Configure `cache_size` for "hickory-dns" ResolverOpts. Set to "0" to disable DNS cache.
"dns_cache_size" : 0 ,
// Mode, could be one of the
// - tcp_only
// - tcp_and_udp
// - udp_only
"mode" : "tcp_only" ,
// TCP_NODELAY
"no_delay" : false ,
// Enables `SO_KEEPALIVE` and set `TCP_KEEPIDLE`, `TCP_KEEPINTVL` to the specified seconds
"keep_alive" : 15 ,
// Soft and Hard limit of file descriptors on *NIX systems
"nofile" : 10240 ,
// Try to resolve domain name to IPv6 (AAAA) addresses first
"ipv6_first" : false ,
// Set IPV6_V6ONLY for all IPv6 listener sockets
// Only valid for locals and servers listening on `::`
"ipv6_only" : false ,
// Outbound socket options
// Linux Only (SO_MARK)
"outbound_fwmark" : 255 ,
// FreeBSD only (SO_USER_COOKIE)
"outbound_user_cookie" : 255 ,
// `SO_BINDTODEVICE` (Linux), `IP_BOUND_IF` (BSD), `IP_UNICAST_IF` (Windows) socket option for outbound sockets
"outbound_bind_interface" : "eth1" ,
// Outbound socket bind() to this IP (choose a specific interface)
"outbound_bind_addr" : "11.22.33.44" ,
// Balancer customization
"balancer" : {
// MAX Round-Trip-Time (RTT) of servers
// The timeout seconds of each individual checks
"max_server_rtt" : 5 ,
// Interval seconds between each check
"check_interval" : 10 ,
// Interval seconds between each check for the best server
// Optional. Specify to enable shorter checking interval for the best server only.
"check_best_interval" : 5
} ,
// SIP008 Online Configuration Delivery
// https://shadowsocks.org/doc/sip008.html
"online_config" : {
"config_url" : "https://path-to-online-sip008-configuration" ,
// Optional. Seconds between each update to config_url. Default to 3600s
"update_interval" : 3600
} ,
// Service configurations
// Logger configuration
"log" : {
// Equivalent to `-v` command line option
"level" : 1 ,
"format" : {
// Euiqvalent to `--log-without-time`
"without_time" : false ,
} ,
// Equivalent to `--log-config`
// More detail could be found in https://crates.io/crates/log4rs
"config_path" : "/path/to/log4rs/config.yaml"
} ,
// Runtime configuration
"runtime" : {
// single_thread or multi_thread
"mode" : "multi_thread" ,
// Worker threads that are used in multi-thread runtime
"worker_count" : 10
}
}
El archivo de configuración lo establece socks5_auth_config_path
en locals
.
{
// Password/Username Authentication (RFC1929)
"password" : {
"users" : [
{
"user_name" : "USERNAME in UTF-8" ,
"password" : "PASSWORD in UTF-8"
}
]
}
}
SS_SERVER_PASSWORD
: una contraseña predeterminada para los servidores creados a partir del argumento de la línea de comando ( --server-addr
)SS_SYSTEM_DNS_RESOLVER_FORCE_BUILTIN
: "system"
El solucionador de DNS fuerza el uso del sistema integrado ( getaddrinfo
en *NIX) 2022-blake3-aes-128-gcm
, 2022-blake3-aes-256-gcm
2022-blake3-chacha20-poly1305
, 2022-blake3-chacha8-poly1305
Estos cifrados requieren que "password"
sea una cadena de clave Base64 que tenga exactamente la misma longitud que el tamaño de clave del cifrado. Se recomienda utilizar ssservice genkey -m "METHOD_NAME"
para generar una clave segura y protegida.
chacha20-ietf-poly1305
aes-128-gcm
, aes-256-gcm
plain
o none
(sin cifrado, solo se usa para depuración o con complementos que garantizan la seguridad del transporte)table
aes-128-cfb
, aes-128-cfb1
, aes-128-cfb8
, aes-128-cfb128
aes-192-cfb
, aes-192-cfb1
, aes-192-cfb8
, aes-192-cfb128
aes-256-cfb
, aes-256-cfb1
, aes-256-cfb8
, aes-256-cfb128
aes-128-ctr
aes-192-ctr
aes-256-ctr
camellia-128-cfb
, camellia-128-cfb1
, camellia-128-cfb8
, camellia-128-cfb128
camellia-192-cfb
, camellia-192-cfb1
, camellia-192-cfb8
, camellia-192-cfb128
camellia-256-cfb
, camellia-256-cfb1
, camellia-256-cfb8
, camellia-256-cfb128
rc4-md5
chacha20-ietf
sslocal
, ssserver
y ssmanager
admiten archivos ACL con sintaxis como shadowsocks-libev. Algunos ejemplos se pueden encontrar aquí.
sslocal
, ssredir
, ...)[bypass_all]
: ACL se ejecuta en modo BlackList
. Omite todas las direcciones que no coincidieron con ninguna regla.[proxy_all]
: ACL se ejecuta en modo WhiteList
. Proxy todas las direcciones que no coincidieron con ninguna regla.[bypass_list]
- Reglas para conectarse directamente[proxy_list]
- Reglas para conectarse a través de servidores proxyssserver
)[reject_all]
- ACL se ejecuta en modo BlackList
. Rechaza a todos los clientes que no coincidieron con ninguna regla.[accept_all]
- ACL se ejecuta en modo WhiteList
. Acepta todos los clientes que no cumplieron con ninguna regla.[white_list]
- Reglas para clientes aceptados[black_list]
- Reglas para clientes rechazados[outbound_block_list]
- Reglas para bloquear direcciones salientes. # SERVERS
# For ssserver, accepts requests from all clients by default
[accept_all]
# Blocks these clients
[black_list]
1.2.3.4
127.0.0.1/8
# Disallow these outbound addresses
[outbound_block_list]
127.0.0.1/8
::1
# Using regular expression
^[a-z]{5}.baidu.com
# Match exactly
|baidu.com
# Match with subdomains
||google.com
# An internationalized domain name should be converted to punycode
# |☃-⌘.com - WRONG
|xn----dqo34k.com
# ||джpумлатест.bрфa - WRONG
||xn--p-8sbkgc5ag7bhce.xn--ba-lmcq
# CLIENTS
# For sslocal, ..., bypasses all targets by default
[bypass_all]
# Proxy these addresses
[proxy_list]
||google.com
8.8.8.8
ssurl
sirve para codificar y decodificar las URL de ShadowSocks (SIP002). Ejemplo: ss://[email protected]:8388/?plugin=obfs-local%3Bobfs%3Dhttp%3Bobfs-host%3Dwww.baidu.com
Admite las siguientes características:
libcrypto
(esperando una implementación aceptable de Rust crypto lib) rustc
estable.crypto2
)La licencia MIT (MIT)
Copyright (c) 2014 YT CHUNG
Por el presente se otorga permiso, sin cargo, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados (el "Software"), para operar con el Software sin restricciones, incluidos, entre otros, los derechos de uso, copia, modificación, fusión. , publicar, distribuir, sublicenciar y/o vender copias del Software, y permitir que las personas a quienes se les proporciona el Software lo hagan, sujeto a las siguientes condiciones:
El aviso de derechos de autor anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGÚN RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN CONTRACTUAL, AGRAVIO O DE OTRA MANERA, QUE SURJA DE, FUERA DE O EN RELACIÓN CON EL SOFTWARE O EL USO U OTRAS NEGOCIOS EN EL SOFTWARE.