Ceci est un portage de shadowsocks.
shadowsocks est un proxy tunnel rapide qui vous aide à contourner les pare-feu.
Bibliothèque | Description |
---|---|
chaussettes d'ombre | protocole principal shadowsocks |
service shadowsocks | Services pour servir des shadowsocks |
shadowsocks-rouille | Binaires exécutant des services shadowsocks communs |
Projets connexes :
sslocal
utilisant GTK, discussionsslocal
, discussion hickory-dns
- Utilise hickory-resolver
comme résolveur DNS au lieu du résolveur intégré de tokio
.
local-http
- Autoriser l'utilisation du protocole HTTP pour sslocal
local-http-native-tls
- Prise en charge de HTTPS avec native-tls
local-http-rustls
- Prise en charge de HTTPS avec rustls
local-tunnel
- Autoriser l'utilisation du protocole tunnel pour sslocal
local-socks4
- Autoriser l'utilisation du protocole SOCKS4/4a pour sslocal
local-redir
- Autoriser l'utilisation du protocole redir (proxy transparent) pour sslocal
local-dns
- Autoriser l'utilisation du protocole DNS pour sslocal
, sert de serveur DNS proxy des requêtes vers des serveurs DNS locaux ou distants par des règles ACL
local-fake-dns
- FakeDNS, attribuant une adresse IP pour chaque requête individuelle à partir d'un pool IP spécifique
local-tun
- Prise en charge de l'interface TUN pour sslocal
local-online-config
- Livraison de configuration en ligne SIP008
stream-cipher
- Active les chiffrements de flux obsolètes. AVERTISSEMENT : les chiffrements de flux ne sont PAS SÉCURISÉS !
aead-cipher-extra
- Activer les chiffrements AEAD non standard
aead-cipher-2022
- Activer les chiffrements AEAD-2022 (SIP022)
aead-cipher-2022-extra
- Activer les chiffrements supplémentaires AEAD-2022 (chiffrements non standard)
Ce projet utilise l'allocateur de mémoire système (libc) (valeur par défaut de Rust). Mais il vous permet également d'utiliser d'autres allocateurs célèbres par fonctionnalités :
jemalloc
- Utilise jemalloc comme allocateur de mémoire globalmimalloc
- Utilise mi-malloc comme allocateur de mémoire globaltcmalloc
- Utilise TCMalloc comme allocateur de mémoire global. Il essaie de lier tcmalloc à l'échelle du système par défaut, en utilisant le fournisseur à partir des sources avec tcmalloc-vendored
.snmalloc
- Utilise snmalloc comme allocateur de mémoire globalrpmalloc
- Utilise rpmalloc comme allocateur de mémoire globalInstaller depuis crates.io :
# Install from crates.io
cargo install shadowsocks-rust
alors vous pouvez trouver sslocal
et ssserver
dans $CARGO_HOME/bin
.
Pour macOS et Linux, vous pouvez l'installer à l'aide de 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
Téléchargez la version à lien statique ici.
build-windows
: Build pour x86_64-pc-windows-msvc
build-linux
: Build pour x86_64-unknown-linux-gnu
, Debian 9 (Stretch), GLIBC 2.18build-docker
: Build pour x86_64-unknown-linux-musl
, x86_64-pc-windows-gnu
, ... (lié statiquement) Ce projet a fourni des images Docker pour les architectures linux/i386
et linux/amd64
et linux/arm64/v8
.
⚠️ Les conteneurs Docker n'ont pas accès à IPv6 par défaut : assurez-vous de désactiver la route IPv6 dans le client ou d'activer l'accès IPv6 aux conteneurs Docker.
Docker extraira l'image de l'architecture appropriée de nos packages GitHub.
docker pull ghcr.io/shadowsocks/sslocal-rust:latest
docker pull ghcr.io/shadowsocks/ssserver-rust:latest
Si vous souhaitez créer vous-même l'image Docker, vous devez utiliser 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 .
Vous devez monter le fichier de configuration dans le conteneur et créer une carte de port externe pour que le conteneur puisse s'y connecter.
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
Ce projet a fourni des manifestes yaml pour le déploiement sur Kubernetes.
Vous pouvez tirer parti du service k8s pour exposer le trafic extérieur, comme LoadBalancer ou NodePort, qui gagne en précision par rapport à un hôte ou un port fixe.
Pour un cas d'utilisation plus intéressant, vous pouvez utiliser un Ingress (Istio, nginx, etc.) qui achemine le trafic correspondant vers shadowsocks avec le vrai service Web.
kubectl
kubectl apply -f https://github.com/shadowsocks/shadowsocks-rust/raw/master/k8s/shadowsocks-rust.yaml
Vous pouvez modifier la configuration en éditant le ConfigMap nommé shadowsocks-rust
.
Pour un contrôle plus précis, utilisez helm
.
helm
helm install my-release k8s/chart -f my-values.yaml
Vous trouverez ci-dessous les valeurs par défaut courantes que vous pouvez modifier :
# 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 "
Utilisez la cargaison pour construire. REMARQUE : RAM >= 2 Gio
cargo build --release
Ensuite, sslocal
et ssserver
apparaîtront dans ./target/(debug|release)/
, cela fonctionne de la même manière que les deux binaires dans l'implémentation officielle de ShadowSocks.
make install TARGET=release
Ensuite, sslocal
, ssserver
, ssmanager
et ssurl
seront installés dans /usr/local/bin
(variable PREFIX).
Pour les utilisateurs de Windows, si vous avez rencontré un problème lors de la construction, vérifiez et discutez-en au point 102.
Si vous construisez pour votre plate-forme CPU actuelle (par exemple, construisez et exécutez sur votre ordinateur personnel), il est recommandé de définir la fonctionnalité target-cpu=native
pour permettre rustc
de générer et d'optimiser le code pour le CPU exécutant le compilateur.
export RUSTFLAGS= " -C target-cpu=native "
Exigences:
./build/build-release
Ensuite, sslocal
, ssserver
, ssmanager
et ssurl
seront empaquetés dans
./build/shadowsocks-${VERSION}-stable.x86_64-unknown-linux-musl.tar.xz
./build/shadowsocks-${VERSION}-stable.x86_64-pc-windows-gnu.zip
Lisez Cargo.toml
pour plus de détails.
Générez un mot de passe sûr et sécurisé pour une méthode de cryptage spécifique ( aes-128-gcm
dans l'exemple) avec :
ssservice genkey -m " aes-128-gcm "
Créez un fichier de configuration ShadowSocks. Exemple
{
"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
}
Une explication détaillée du fichier de configuration peut être trouvée dans la documentation de shadowsocks. (Lien vers le projet original, plus maintenu !)
⚠️ Pour les installations instantanées, le fichier de configuration se trouve très probablement dans/var/snap/shadowsocks-rust/common/etc/shadowsocks-rust/config.json
(voir #621 / #1146)
Dans shadowsocks-rust, nous disposons également d'un format de fichier de configuration étendu, capable de définir plusieurs serveurs. Vous pouvez également désactiver des serveurs individuels.
{
"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
sélectionne automatiquement le meilleur serveur avec la latence la plus faible et la disponibilité la plus élevée.
Démarrez le client et le serveur Shadowsocks avec :
sslocal -c config.json
ssserver -c config.json
Si vous le construisez avec Cargo :
cargo run --bin sslocal -- -c config.json
cargo run --bin ssserver -- -c config.json
Répertoriez tous les arguments disponibles avec -h
.
Démarrer le client local avec le fichier de configuration
# 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 "
Tous les paramètres sont les mêmes que ceux du client Socks5, à l'exception de --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
active le mode tunnel du client local-f "127.0.0.1:8080
définit l'adresse cible du tunnelREMARQUE : Il ne prend actuellement en charge que
iptables
REDIRECT
et TPROXY
)pf
), tels que 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 les connexions avec les configurations iptables
vers le port sur lequel sslocal
écoute.
--protocol redir
active le mode Redir du client local--tcp-redir
définit le mode TCP sur REDIRECT
(Linux)--udp-redir
définit le mode UDP sur TPROXY
(Linux)REMARQUE : Il ne prend actuellement en charge que
Créez une interface Tun avec le nom tun0
ip tuntap add mode tun tun0
ifconfig tun0 inet 10.255.0.1 netmask 255.255.255.0 up
Démarrez sslocal
avec --protocol tun
et se lie à 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
Cela créera une interface Tun avec l'adresse 10.255.0.1
et le masque de réseau 255.255.255.0
.
Téléchargez wintun.dll
depuis Wintun et placez-le dans le dossier contenant les binaires exécutables de shadowsocks, ou dans le PATH du système.
sslocal -- protocol tun - s " [::1]:8388 " - m " aes-256-gcm " - k " hello-kitty " -- outbound - bind - interface " Ethernet 0 " -- tun - interface - name " shadowsocks "
Compilez-le en activant --features "winservice"
(non inclus dans la version par défaut) :
cargo build --release --bin " sswinservice " --features " winservice "
Installez-le en tant que service Windows (PowerShell) :
New-Service - Name " shadowsocks-local-service " ` - DisplayName " Shadowsocks Local Service " ` - BinaryPathName "sswinservice.exe local -c local_config.json "
Il existe d'autres moyens d'installer sswinservice
en tant que service Windows, par exemple la commande sc
.
Comme vous l'avez peut-être remarqué, le -BinaryPathName
contient non seulement le sswinservice.exe
, mais aussi local -c local_config.json
. Ces paramètres de ligne de commande seront utilisés comme paramètre par défaut au démarrage du service Windows. Vous pouvez également démarrer le service avec des paramètres personnalisés.
Apprenez-en davantage dans le document de Microsoft.
Le paramètre sswinservice
fonctionne exactement de la même manière que ssservice
. Il prend en charge les sous-commandes local
, server
et 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 gestion de plusieurs utilisateurs prise en charge :
add
- Démarre une instance de serveurremove
- Supprime une instance de serveur existantelist
- Répertorie tous les serveurs en cours d'exécutionping
- Répertorie les données statistiques de tous les serveurs REMARQUE : la commande stat
n'est pas prise en charge. Parce que les serveurs s'exécutent selon le même processus que le gestionnaire lui-même.
# 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 '
Pour l'interface utilisateur du gestionnaire, vérifiez plus de détails dans le projet shadowsocks-manager.
Exemple de configuration :
{
// 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
}
}
Le fichier de configuration est défini par socks5_auth_config_path
dans locals
.
{
// Password/Username Authentication (RFC1929)
"password" : {
"users" : [
{
"user_name" : "USERNAME in UTF-8" ,
"password" : "PASSWORD in UTF-8"
}
]
}
}
SS_SERVER_PASSWORD
: un mot de passe par défaut pour les serveurs créés à partir d'un argument de ligne de commande ( --server-addr
)SS_SYSTEM_DNS_RESOLVER_FORCE_BUILTIN
: le résolveur DNS "system"
force l'utilisation du système intégré ( getaddrinfo
dans *NIX) 2022-blake3-aes-128-gcm
, 2022-blake3-aes-256-gcm
2022-blake3-chacha20-poly1305
, 2022-blake3-chacha8-poly1305
Ces chiffrements nécessitent que "password"
soit une chaîne de clé Base64 ayant exactement la même longueur que la taille de la clé de chiffrement. Il est recommandé d'utiliser ssservice genkey -m "METHOD_NAME"
pour générer une clé sécurisée et sécurisée.
chacha20-ietf-poly1305
aes-128-gcm
, aes-256-gcm
plain
ou none
(Pas de cryptage, utilisé uniquement pour le débogage ou avec des plugins qui assurent la sécurité du transport)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
et ssmanager
prennent en charge le fichier ACL avec une syntaxe telle que shadowsocks-libev. Quelques exemples pourraient être trouvés ici.
sslocal
, ssredir
, ...)[bypass_all]
- ACL s'exécute en mode BlackList
. Contourne toutes les adresses qui ne correspondent à aucune règle.[proxy_all]
: ACL s'exécute en mode WhiteList
. Proxy toutes les adresses qui ne correspondent à aucune règle.[bypass_list]
- Règles pour se connecter directement[proxy_list]
- Règles de connexion via des proxysssserver
)[reject_all]
- L'ACL s'exécute en mode BlackList
. Rejette tous les clients qui ne correspondent à aucune règle.[accept_all]
- L'ACL s'exécute en mode WhiteList
. Accepte tous les clients qui ne correspondent à aucune règle.[white_list]
- Règles pour les clients acceptés[black_list]
- Règles pour les clients rejetés[outbound_block_list]
- Règles de blocage des adresses sortantes. # 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
sert à encoder et décoder les URL ShadowSocks (SIP002). Exemple: ss://[email protected]:8388/?plugin=obfs-local%3Bobfs%3Dhttp%3Bobfs-host%3Dwww.baidu.com
Il prend en charge les fonctionnalités suivantes :
libcrypto
(en attendant une implémentation acceptable de Rust crypto lib) rustc
stablecrypto2
)La licence MIT (MIT)
Copyright (c) 2014 YT CHUNG
L'autorisation est accordée par la présente, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le « Logiciel »), d'utiliser le Logiciel sans restriction, y compris, sans limitation, les droits d'utilisation, de copie, de modification, de fusion. , publier, distribuer, accorder des sous-licences et/ou vendre des copies du Logiciel, et permettre aux personnes à qui le Logiciel est fourni de le faire, sous réserve des conditions suivantes :
L'avis de droit d'auteur ci-dessus et cet avis d'autorisation doivent être inclus dans toutes les copies ou parties substantielles du logiciel.
LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS LIMITATION LES GARANTIES DE QUALITÉ MARCHANDE, D'ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. EN AUCUN CAS LES AUTEURS OU LES TITULAIRES DES DROITS D'AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGES OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS UNE ACTION CONTRACTUELLE, DÉLIT OU AUTRE, DÉCOULANT DE, DE OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU D'AUTRES TRANSACTIONS DANS LE LOGICIEL.