Ini adalah pelabuhan Shadowsocks.
shadowocks adalah proksi terowongan cepat yang membantu Anda melewati firewall.
Perpustakaan | Keterangan |
---|---|
kaus kaki bayangan | protokol inti shadowocks |
layanan shadowocks | Layanan untuk menyajikan kaus kaki bayangan |
bayangan kaus kaki-karat | Biner yang menjalankan layanan shadowocks umum |
Proyek Terkait:
sslocal
menggunakan GTK, diskusisslocal
, diskusi hickory-dns
- Menggunakan hickory-resolver
sebagai pemecah DNS, bukan bawaan tokio
.
local-http
- Izinkan penggunaan protokol HTTP untuk sslocal
local-http-native-tls
- Mendukung HTTPS dengan native-tls
local-http-rustls
- Mendukung HTTPS dengan rustls
local-tunnel
- Izinkan penggunaan protokol terowongan untuk sslocal
local-socks4
- Izinkan penggunaan protokol SOCKS4/4a untuk sslocal
local-redir
- Izinkan penggunaan protokol redir (proxy transparan) untuk sslocal
local-dns
- Izinkan penggunaan protokol dns untuk sslocal
, berfungsi sebagai server DNS yang memproksi kueri ke server DNS lokal atau jarak jauh dengan aturan ACL
local-fake-dns
- FakeDNS, mengalokasikan alamat IP untuk setiap Kueri individu dari kumpulan IP tertentu
local-tun
- dukungan antarmuka TUN untuk sslocal
local-online-config
- Pengiriman Konfigurasi Online SIP008
stream-cipher
- Mengaktifkan stream cipher yang tidak digunakan lagi. PERINGATAN: stream cipher TIDAK AMAN!
aead-cipher-extra
- Mengaktifkan cipher AEAD non-standar
aead-cipher-2022
- Aktifkan cipher AEAD-2022 (SIP022)
aead-cipher-2022-extra
- Mengaktifkan sandi tambahan AEAD-2022 (sandi non-standar)
Proyek ini menggunakan pengalokasi memori sistem (libc) (default Rust). Namun ini juga memungkinkan Anda untuk menggunakan pengalokasi terkenal lainnya berdasarkan fitur:
jemalloc
- Menggunakan jemalloc sebagai pengalokasi memori globalmimalloc
- Menggunakan mi-malloc sebagai pengalokasi memori globaltcmalloc
- Menggunakan TCMalloc sebagai pengalokasi memori global. Ia mencoba menghubungkan tcmalloc seluruh sistem secara default, gunakan vendored dari sumber dengan tcmalloc-vendored
.snmalloc
- Menggunakan snmalloc sebagai pengalokasi memori globalrpmalloc
- Menggunakan rpmalloc sebagai pengalokasi memori globalInstal dari crates.io:
# Install from crates.io
cargo install shadowsocks-rust
maka Anda dapat menemukan sslocal
dan ssserver
di $CARGO_HOME/bin
.
Untuk macOS dan Linux, Anda dapat menginstalnya menggunakan 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
Unduh build tertaut statis di sini.
build-windows
: Dibuat untuk x86_64-pc-windows-msvc
build-linux
: Dibuat untuk x86_64-unknown-linux-gnu
, Debian 9 (Stretch), GLIBC 2.18build-docker
: Membangun untuk x86_64-unknown-linux-musl
, x86_64-pc-windows-gnu
, ... (tertaut secara statis) Proyek ini menyediakan image Docker untuk arsitektur linux/i386
dan linux/amd64
dan linux/arm64/v8
.
⚠️ Kontainer Docker tidak memiliki akses ke IPv6 secara default : Pastikan untuk menonaktifkan Rute IPv6 di klien atau mengaktifkan akses IPv6 ke kontainer buruh pelabuhan.
Docker akan mengambil gambar arsitektur yang sesuai dari Paket GitHub kami.
docker pull ghcr.io/shadowsocks/sslocal-rust:latest
docker pull ghcr.io/shadowsocks/ssserver-rust:latest
Jika Anda ingin membuat image Docker sendiri, Anda perlu menggunakan 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 .
Anda perlu memasang file konfigurasi ke dalam container dan membuat peta port eksternal agar container dapat terhubung dengannya.
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
Proyek ini menyediakan manifes yaml untuk diterapkan ke Kubernetes.
Anda dapat memanfaatkan Layanan k8s untuk mengekspos lalu lintas di luar, seperti LoadBalancer atau NodePort yang memperoleh keuntungan lebih detail dibandingkan dengan host atau port tetap.
Untuk kasus penggunaan yang lebih menarik, Anda dapat menggunakan Ingress (Istio, nginx, dll.) yang merutekan lalu lintas yang cocok ke shadowocks bersama dengan layanan web sebenarnya.
kubectl
kubectl apply -f https://github.com/shadowsocks/shadowsocks-rust/raw/master/k8s/shadowsocks-rust.yaml
Anda dapat mengubah konfigurasi melalui pengeditan ConfigMap bernama shadowsocks-rust
.
Untuk kontrol yang lebih halus, gunakan helm
.
helm
helm install my-release k8s/chart -f my-values.yaml
Di bawah ini adalah nilai default umum yang dapat Anda ubah:
# 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 "
Gunakan kargo untuk membangun. CATATAN: RAM >= 2GiB
cargo build --release
Kemudian sslocal
dan ssserver
akan muncul di ./target/(debug|release)/
, cara kerjanya sama seperti dua biner dalam implementasi resmi ShadowSocks.
make install TARGET=release
Kemudian sslocal
, ssserver
, ssmanager
dan ssurl
akan diinstal ke /usr/local/bin
(PREFIX variabel).
Untuk pengguna Windows, jika Anda menemui masalah dalam membangun, periksa dan diskusikan di #102.
Jika Anda membangun untuk platform CPU Anda saat ini (misalnya, membangun dan menjalankan di komputer pribadi Anda), disarankan untuk menyetel fitur target-cpu=native
agar rustc
dapat menghasilkan dan mengoptimalkan kode untuk CPU yang menjalankan kompiler.
export RUSTFLAGS= " -C target-cpu=native "
Persyaratan:
./build/build-release
Kemudian sslocal
, ssserver
, ssmanager
dan ssurl
akan dikemas dalam
./build/shadowsocks-${VERSION}-stable.x86_64-unknown-linux-musl.tar.xz
./build/shadowsocks-${VERSION}-stable.x86_64-pc-windows-gnu.zip
Baca Cargo.toml
untuk lebih jelasnya.
Hasilkan kata sandi yang aman dan terlindungi untuk metode enkripsi tertentu ( aes-128-gcm
dalam contoh) dengan:
ssservice genkey -m " aes-128-gcm "
Buat file konfigurasi ShadowSocks. Contoh
{
"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
}
Penjelasan rinci tentang file konfigurasi dapat ditemukan di dokumentasi shadowocks. (Tautan ke proyek asli, tidak dikelola lagi!)
⚠️ Untuk instalasi snap, file konfigurasi kemungkinan besar terletak di/var/snap/shadowsocks-rust/common/etc/shadowsocks-rust/config.json
(lihat #621 / #1146)
Di shadowocks-rust, kami juga memiliki format file konfigurasi yang diperluas, yang mampu mendefinisikan lebih dari satu server. Anda juga dapat menonaktifkan server individual.
{
"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
secara otomatis memilih server terbaik dengan latensi terendah dan ketersediaan tertinggi.
Mulai klien dan server Shadowsocks dengan:
sslocal -c config.json
ssserver -c config.json
Jika Anda Membangunnya dengan Cargo:
cargo run --bin sslocal -- -c config.json
cargo run --bin ssserver -- -c config.json
Daftar semua argumen yang tersedia dengan -h
.
Mulai klien lokal dengan file konfigurasi
# 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 "
Semua parameter sama dengan klien Socks5, kecuali --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
mengaktifkan mode Terowongan klien lokal-f "127.0.0.1:8080
menetapkan alamat target terowonganCATATAN : Saat ini hanya mendukung
iptables
REDIRECT
dan TPROXY
)pf
), seperti 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 "
Mengalihkan koneksi dengan konfigurasi iptables
ke port tempat sslocal
mendengarkan.
--protocol redir
mengaktifkan mode Redir klien lokal--tcp-redir
menyetel mode TCP ke REDIRECT
(Linux)--udp-redir
menyetel mode UDP ke TPROXY
(Linux)CATATAN : Saat ini hanya mendukung
Buat antarmuka Tun dengan nama tun0
ip tuntap add mode tun tun0
ifconfig tun0 inet 10.255.0.1 netmask 255.255.255.0 up
Mulai sslocal
dengan --protocol tun
dan ikat ke 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
Ini akan membuat antarmuka Tun dengan alamat 10.255.0.1
dan netmask 255.255.255.0
.
Unduh wintun.dll
dari Wintun, dan letakkan di folder dengan binari yang dapat dijalankan shadowocks, atau di PATH sistem.
sslocal -- protocol tun - s " [::1]:8388 " - m " aes-256-gcm " - k " hello-kitty " -- outbound - bind - interface " Ethernet 0 " -- tun - interface - name " shadowsocks "
Kompilasi dengan mengaktifkan --features "winservice"
(tidak termasuk dalam build default):
cargo build --release --bin " sswinservice " --features " winservice "
Instal sebagai Layanan Windows (PowerShell):
New-Service - Name " shadowsocks-local-service " ` - DisplayName " Shadowsocks Local Service " ` - BinaryPathName "sswinservice.exe local -c local_config.json "
Ada cara lain untuk menginstal sswinservice
sebagai Layanan Windows, misalnya perintah sc
.
Seperti yang mungkin Anda perhatikan bahwa -BinaryPathName
tidak hanya berisi sswinservice.exe
, tetapi juga local -c local_config.json
. Parameter baris perintah ini akan digunakan sebagai parameter default ketika Layanan Windows dimulai. Anda juga dapat memulai layanan dengan parameter khusus.
Pelajari lebih lanjut dari Dokumen Microsoft.
Parameter sswinservice
bekerja sama persis dengan ssservice
. Ini mendukung subperintah local
, server
dan 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 Kelola Banyak Pengguna yang Didukung:
add
- Memulai instance serverremove
- Menghapus contoh server yang adalist
- Mencantumkan semua server yang sedang berjalanping
- Mencantumkan data statistik semua server CATATAN: perintah stat
tidak didukung. Karena server berjalan dalam proses yang sama dengan pengelolanya sendiri.
# 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 '
Untuk UI manajer, periksa detail lebih lanjut di proyek shadowocks-manager.
Contoh konfigurasi:
{
// 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
}
}
File konfigurasi disetel oleh socks5_auth_config_path
di locals
.
{
// Password/Username Authentication (RFC1929)
"password" : {
"users" : [
{
"user_name" : "USERNAME in UTF-8" ,
"password" : "PASSWORD in UTF-8"
}
]
}
}
SS_SERVER_PASSWORD
: Kata sandi default untuk server yang dibuat dari argumen baris perintah ( --server-addr
)SS_SYSTEM_DNS_RESOLVER_FORCE_BUILTIN
: Penyelesai DNS "system"
memaksa menggunakan bawaan sistem ( getaddrinfo
di *NIX) 2022-blake3-aes-128-gcm
, 2022-blake3-aes-256-gcm
2022-blake3-chacha20-poly1305
, 2022-blake3-chacha8-poly1305
Cipher ini memerlukan "password"
berupa string kunci Base64 yang memiliki panjang yang persis sama dengan Ukuran Kunci Cipher. Disarankan untuk menggunakan ssservice genkey -m "METHOD_NAME"
untuk menghasilkan kunci yang aman dan terjamin.
chacha20-ietf-poly1305
aes-128-gcm
, aes-256-gcm
plain
atau none
(Tanpa enkripsi, hanya digunakan untuk debugging atau dengan plugin yang menjamin keamanan transportasi)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
, dan ssmanager
mendukung file ACL dengan sintaks seperti shadowocks-libev. Beberapa contoh dapat ditemukan di sini.
sslocal
, ssredir
, ...)[bypass_all]
- ACL berjalan dalam mode BlackList
. Melewati semua alamat yang tidak sesuai dengan aturan apa pun.[proxy_all]
- ACL berjalan dalam mode WhiteList
. Proksi semua alamat yang tidak sesuai dengan aturan apa pun.[bypass_list]
- Aturan untuk menghubungkan secara langsung[proxy_list]
- Aturan untuk terhubung melalui proxyssserver
)[reject_all]
- ACL berjalan dalam mode BlackList
. Menolak semua klien yang tidak sesuai dengan aturan apa pun.[accept_all]
- ACL berjalan dalam mode WhiteList
. Menerima semua klien yang tidak sesuai dengan aturan apa pun.[white_list]
- Aturan untuk klien yang diterima[black_list]
- Aturan untuk klien yang ditolak[outbound_block_list]
- Aturan untuk memblokir alamat keluar. # 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
untuk menyandikan dan mendekode URL ShadowSocks (SIP002). Contoh: ss://[email protected]:8388/?plugin=obfs-local%3Bobfs%3Dhttp%3Bobfs-host%3Dwww.baidu.com
Ini mendukung fitur-fitur berikut:
libcrypto
(menunggu implementasi Rust crypto lib yang dapat diterima) rustc
yang stabilcrypto2
)Lisensi MIT (MIT)
Hak Cipta (c) 2014 YT CHUNG
Izin dengan ini diberikan, secara gratis, kepada siapa pun yang memperoleh salinan perangkat lunak ini dan file dokumentasi terkait ("Perangkat Lunak"), untuk menggunakan Perangkat Lunak tanpa batasan, termasuk tanpa batasan hak untuk menggunakan, menyalin, memodifikasi, menggabungkan , mempublikasikan, mendistribusikan, mensublisensikan, dan/atau menjual salinan Perangkat Lunak, dan mengizinkan orang yang menerima Perangkat Lunak untuk melakukan hal tersebut, dengan tunduk pada ketentuan berikut:
Pemberitahuan hak cipta di atas dan pemberitahuan izin ini akan disertakan dalam semua salinan atau sebagian besar Perangkat Lunak.
PERANGKAT LUNAK INI DISEDIAKAN "APA ADANYA", TANPA JAMINAN APA PUN, TERSURAT MAUPUN TERSIRAT, TERMASUK NAMUN TIDAK TERBATAS PADA JAMINAN KELAYAKAN UNTUK DIPERDAGANGKAN, KESESUAIAN UNTUK TUJUAN TERTENTU, DAN TIDAK ADA PELANGGARAN. DALAM KEADAAN APA PUN PENULIS ATAU PEMEGANG HAK CIPTA TIDAK BERTANGGUNG JAWAB ATAS KLAIM, KERUSAKAN, ATAU TANGGUNG JAWAB LAINNYA, BAIK DALAM TINDAKAN KONTRAK, HUKUM ATAU LAINNYA, YANG TIMBUL DARI, ATAU SEHUBUNGAN DENGAN PERANGKAT LUNAK ATAU PENGGUNAAN ATAU HAL-HAL LAIN DALAM PERANGKAT LUNAK.