Dies ist eine Portierung von Shadowsocks.
Shadowsocks ist ein schneller Tunnel-Proxy, der Ihnen hilft, Firewalls zu umgehen.
Bibliothek | Beschreibung |
---|---|
Schattensocken | Shadowsocks-Kernprotokoll |
Shadowsocks-Service | Dienstleistungen zum Servieren von Shadowsocks |
Schattensocken-Rost | Binärdateien, die gängige Shadowsocks-Dienste ausführen |
Verwandte Projekte:
sslocal
mit GTK, Diskussionsslocal
, Diskussion hickory-dns
– Verwendet hickory-resolver
als DNS-Resolver anstelle des integrierten tokio
-Resolvers.
local-http
– Ermöglicht die Verwendung des HTTP-Protokolls für sslocal
local-http-native-tls
– Unterstützt HTTPS mit native-tls
local-http-rustls
– Unterstützt HTTPS mit rustls
local-tunnel
– Ermöglicht die Verwendung des Tunnelprotokolls für sslocal
local-socks4
– Ermöglicht die Verwendung des SOCKS4/4a-Protokolls für sslocal
local-redir
– Ermöglicht die Verwendung des Redir-Protokolls (transparenter Proxy) für sslocal
local-dns
– Ermöglicht die Verwendung des DNS-Protokolls für sslocal
und dient als Proxy für Abfragen an lokale oder Remote-DNS-Server mithilfe von ACL-Regeln
local-fake-dns
– FakeDNS, das jeder einzelnen Anfrage eine IP-Adresse aus einem bestimmten IP-Pool zuweist
local-tun
– TUN-Schnittstellenunterstützung für sslocal
local-online-config
– SIP008 Online-Konfigurationsbereitstellung
stream-cipher
– Veraltete Stream-Chiffren aktivieren. WARNUNG: Stream-Chiffren sind UNSICHER!
aead-cipher-extra
– Aktivieren Sie nicht standardmäßige AEAD-Chiffren
aead-cipher-2022
– AEAD-2022-Chiffren aktivieren (SIP022)
aead-cipher-2022-extra
– AEAD-2022-Zusatzchiffren aktivieren (nicht standardmäßige Chiffren)
Dieses Projekt verwendet die Systemspeicherzuweisung (libc) (Rusts Standard). Sie können damit aber auch andere bekannte Allokatoren nach Funktionen verwenden:
jemalloc
– Verwendet jemalloc als globale Speicherzuweisungmimalloc
– Verwendet mi-malloc als globale Speicherzuweisungtcmalloc
– Verwendet TCMalloc als globalen Speicherzuweiser. Es wird standardmäßig versucht, systemweites tcmalloc zu verknüpfen, wobei „vendored from source“ mit tcmalloc-vendored
verwendet wird.snmalloc
– Verwendet snmalloc als globale Speicherzuweisungrpmalloc
– Verwendet rpmalloc als globalen SpeicherzuweiserVon crates.io installieren:
# Install from crates.io
cargo install shadowsocks-rust
dann finden Sie sslocal
und ssserver
in $CARGO_HOME/bin
.
Für macOS und Linux können Sie es mit Homebrew installieren:
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
Laden Sie hier den statisch verknüpften Build herunter.
build-windows
: Build für x86_64-pc-windows-msvc
build-linux
: Build für x86_64-unknown-linux-gnu
, Debian 9 (Stretch), GLIBC 2.18build-docker
: Build für x86_64-unknown-linux-musl
, x86_64-pc-windows-gnu
, ... (statisch verknüpft) Dieses Projekt stellte Docker-Images für die Architekturen linux/i386
und linux/amd64
sowie linux/arm64/v8
bereit.
⚠️ Docker-Container haben standardmäßig keinen Zugriff auf IPv6 : Stellen Sie sicher, dass Sie die IPv6-Route im Client deaktivieren oder den IPv6-Zugriff auf Docker-Container aktivieren.
Docker ruft das Image der entsprechenden Architektur aus unseren GitHub-Paketen ab.
docker pull ghcr.io/shadowsocks/sslocal-rust:latest
docker pull ghcr.io/shadowsocks/ssserver-rust:latest
Wenn Sie das Docker-Image selbst erstellen möchten, müssen Sie BuildX verwenden.
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 .
Sie müssen die Konfigurationsdatei in den Container einbinden und eine externe Portzuordnung erstellen, damit der Container eine Verbindung herstellen kann.
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
Dieses Projekt stellte Yaml-Manifeste für die Bereitstellung auf Kubernetes bereit.
Sie können den k8s-Dienst nutzen, um Datenverkehr nach außen freizugeben, z. B. LoadBalancer oder NodePort, der im Vergleich zu festen Hosts oder Ports eine feinere Granularität aufweist.
Für einen interessanteren Anwendungsfall können Sie einen Ingress (Istio, Nginx usw.) verwenden, der den passenden Datenverkehr zusammen mit dem echten Webdienst an Shadowsocks weiterleitet.
kubectl
kubectl apply -f https://github.com/shadowsocks/shadowsocks-rust/raw/master/k8s/shadowsocks-rust.yaml
Sie können die Konfiguration ändern, indem Sie die ConfigMap mit dem Namen shadowsocks-rust
bearbeiten.
Für eine detailliertere Steuerung verwenden Sie helm
.
helm
helm install my-release k8s/chart -f my-values.yaml
Nachfolgend finden Sie die allgemeinen Standardwerte, die Sie ändern können:
# 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 "
Verwenden Sie Fracht zum Bauen. HINWEIS: RAM >= 2GiB
cargo build --release
Dann erscheinen sslocal
und ssserver
in ./target/(debug|release)/
, es funktioniert ähnlich wie die beiden Binärdateien in der offiziellen ShadowSocks-Implementierung.
make install TARGET=release
Dann werden sslocal
, ssserver
, ssmanager
und ssurl
in /usr/local/bin
(Variable PREFIX) installiert.
Für Windows-Benutzer: Wenn Sie beim Erstellen auf ein Problem gestoßen sind, überprüfen und besprechen Sie es in Nr. 102.
Wenn Sie für Ihre aktuelle CPU-Plattform erstellen (z. B. auf Ihrem PC erstellen und ausführen), wird empfohlen, die Funktion target-cpu=native
festzulegen, damit rustc
Code für die CPU generieren und optimieren kann, auf der der Compiler läuft.
export RUSTFLAGS= " -C target-cpu=native "
Anforderungen:
./build/build-release
Dann werden sslocal
, ssserver
, ssmanager
und ssurl
eingepackt
./build/shadowsocks-${VERSION}-stable.x86_64-unknown-linux-musl.tar.xz
./build/shadowsocks-${VERSION}-stable.x86_64-pc-windows-gnu.zip
Weitere Informationen finden Sie in Cargo.toml
.
Generieren Sie ein sicheres Passwort für eine bestimmte Verschlüsselungsmethode (im Beispiel aes-128-gcm
) mit:
ssservice genkey -m " aes-128-gcm "
Erstellen Sie eine ShadowSocks-Konfigurationsdatei. Beispiel
{
"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
}
Eine ausführliche Erläuterung der Konfigurationsdatei finden Sie in der Dokumentation von Shadowsocks. (Link zum Originalprojekt, wird nicht mehr gepflegt!)
⚠️ Bei Snap-Installationen befindet sich die Konfigurationsdatei höchstwahrscheinlich in/var/snap/shadowsocks-rust/common/etc/shadowsocks-rust/config.json
(siehe #621 / #1146)
In Shadowsocks-Rust verfügen wir außerdem über ein erweitertes Konfigurationsdateiformat, das mehr als einen Server definieren kann. Sie können auch einzelne Server deaktivieren.
{
"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
wählt automatisch den besten Server mit der niedrigsten Latenz und der höchsten Verfügbarkeit aus.
Starten Sie den Shadowsocks-Client und -Server mit:
sslocal -c config.json
ssserver -c config.json
Wenn Sie es mit Fracht bauen:
cargo run --bin sslocal -- -c config.json
cargo run --bin ssserver -- -c config.json
Listen Sie alle verfügbaren Argumente mit -h
auf.
Starten Sie den lokalen Client mit der Konfigurationsdatei
# 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 "
Alle Parameter sind mit denen des Socks5-Clients identisch, außer --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
aktiviert den lokalen Client-Tunnelmodus-f "127.0.0.1:8080
legt die Tunnelzieladresse festHINWEIS : Derzeit wird nur unterstützt
iptables
Zielen REDIRECT
und TPROXY
)pf
), wie 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 "
Leitet Verbindungen mit iptables
-Konfigurationen an den Port um, den sslocal
überwacht.
--protocol redir
aktiviert den lokalen Client-Redir-Modus--tcp-redir
setzt den TCP-Modus auf REDIRECT
(Linux)--udp-redir
setzt den UDP-Modus auf TPROXY
(Linux)HINWEIS : Derzeit wird nur unterstützt
Erstellen Sie eine Tun-Schnittstelle mit dem Namen tun0
ip tuntap add mode tun tun0
ifconfig tun0 inet 10.255.0.1 netmask 255.255.255.0 up
Starten Sie sslocal
mit --protocol tun
und binden Sie es an 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
Es wird eine Tun-Schnittstelle mit der Adresse 10.255.0.1
und der Netzmaske 255.255.255.0
erstellt.
Laden Sie wintun.dll
von Wintun herunter und platzieren Sie es im Ordner mit den ausführbaren Binärdateien von Shadowsocks oder im Systempfad.
sslocal -- protocol tun - s " [::1]:8388 " - m " aes-256-gcm " - k " hello-kitty " -- outbound - bind - interface " Ethernet 0 " -- tun - interface - name " shadowsocks "
Kompilieren Sie es, indem Sie --features "winservice"
aktivieren (nicht im Standard-Build enthalten):
cargo build --release --bin " sswinservice " --features " winservice "
Installieren Sie es als Windows-Dienst (PowerShell):
New-Service - Name " shadowsocks-local-service " ` - DisplayName " Shadowsocks Local Service " ` - BinaryPathName "sswinservice.exe local -c local_config.json "
Es gibt andere Möglichkeiten, sswinservice
als Windows-Dienst zu installieren, beispielsweise den sc
-Befehl.
Wie Sie vielleicht bemerkt haben, enthält -BinaryPathName
nicht nur sswinservice.exe
, sondern auch local -c local_config.json
. Diese Befehlszeilenparameter werden als Standardparameter verwendet, wenn der Windows-Dienst gestartet wird. Sie können den Dienst auch mit benutzerdefinierten Parametern starten.
Erfahren Sie mehr im Microsoft-Dokument.
Der Parameter von sswinservice
funktioniert genauso wie ssservice
. Es unterstützt local
, server
und manager
Unterbefehle.
# 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 "
Unterstützte API zum Verwalten mehrerer Benutzer:
add
– Startet eine Serverinstanzremove
– Löscht eine vorhandene Serverinstanzlist
– Listet alle derzeit laufenden Server aufping
– Listet die Statistikdaten aller Server auf HINWEIS: Der Befehl stat
wird nicht unterstützt. Weil Server im selben Prozess wie der Manager selbst ausgeführt werden.
# 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 '
Weitere Details zur Manager-Benutzeroberfläche finden Sie im Projekt „shadowsocks-manager“.
Beispielkonfiguration:
{
// 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
}
}
Die Konfigurationsdatei wird durch socks5_auth_config_path
in locals
festgelegt.
{
// Password/Username Authentication (RFC1929)
"password" : {
"users" : [
{
"user_name" : "USERNAME in UTF-8" ,
"password" : "PASSWORD in UTF-8"
}
]
}
}
SS_SERVER_PASSWORD
: Ein Standardkennwort für Server, die über das Befehlszeilenargument ( --server-addr
) erstellt wurden.SS_SYSTEM_DNS_RESOLVER_FORCE_BUILTIN
: "system"
DNS-Resolver erzwingt die Verwendung der integrierten Systemfunktionen ( getaddrinfo
in *NIX) 2022-blake3-aes-128-gcm
, 2022-blake3-aes-256-gcm
2022-blake3-chacha20-poly1305
, 2022-blake3-chacha8-poly1305
Diese Chiffren erfordern, dass "password"
eine Base64-Schlüsselfolge ist, die genau die gleiche Länge wie die Schlüsselgröße des Cipher hat. Es wird empfohlen ssservice genkey -m "METHOD_NAME"
zu verwenden, um einen sicheren Schlüssel zu generieren.
chacha20-ietf-poly1305
aes-128-gcm
, aes-256-gcm
plain
oder none
(Keine Verschlüsselung, wird nur zum Debuggen oder mit Plugins verwendet, die die Transportsicherheit gewährleisten)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
und ssmanager
unterstützen ACL-Dateien mit einer Syntax wie Shadowsocks-Libev. Einige Beispiele finden Sie hier.
sslocal
, ssredir
, ...)[bypass_all]
– ACL wird im BlackList
-Modus ausgeführt. Umgeht alle Adressen, die keiner Regel entsprechen.[proxy_all]
– ACL wird im WhiteList
-Modus ausgeführt. Leitet alle Adressen weiter, die keiner Regel entsprachen.[bypass_list]
– Regeln für die direkte Verbindung[proxy_list]
– Regeln für die Verbindung über Proxysssserver
)[reject_all]
– ACL wird im BlackList
-Modus ausgeführt. Lehnt alle Clients ab, die keiner Regel entsprechen.[accept_all]
– ACL wird im WhiteList
-Modus ausgeführt. Akzeptiert alle Clients, die keiner Regel entsprechen.[white_list]
– Regeln für akzeptierte Kunden[black_list]
– Regeln für abgelehnte Kunden[outbound_block_list]
– Regeln zum Blockieren ausgehender Adressen. # 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
dient zum Kodieren und Dekodieren von ShadowSocks-URLs (SIP002). Beispiel: ss://[email protected]:8388/?plugin=obfs-local%3Bobfs%3Dhttp%3Bobfs-host%3Dwww.baidu.com
Es unterstützt die folgenden Funktionen:
libcrypto
abhängig zu sein (warten Sie auf eine akzeptable Rust-Krypto-Lib-Implementierung) rustc
crypto2
)Die MIT-Lizenz (MIT)
Copyright (c) 2014 YT CHUNG
Hiermit wird jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die „Software“) erhält, kostenlos die Erlaubnis erteilt, mit der Software ohne Einschränkung zu handeln, einschließlich und ohne Einschränkung der Rechte zur Nutzung, zum Kopieren, Ändern und Zusammenführen , Kopien der Software zu veröffentlichen, zu verteilen, unterzulizenzieren und/oder zu verkaufen und Personen, denen die Software zur Verfügung gestellt wird, dies zu gestatten, vorbehaltlich der folgenden Bedingungen:
Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
DIE SOFTWARE WIRD „WIE BESEHEN“ ZUR VERFÜGUNG GESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHT-INHABER HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE HAFTUNG, WEDER AUS EINER VERTRAGLICHEN HANDLUNG, AUS unerlaubter Handlung ODER ANDERWEITIG, DIE SICH AUS, AUS ODER IN ZUSAMMENHANG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN HANDELN IN DER SOFTWARE ERGEBEN SOFTWARE.