هذا هو ميناء الظلال.
Shadowsocks هو وكيل نفق سريع يساعدك على تجاوز جدران الحماية.
مكتبة | وصف |
---|---|
com.shadowsocks | بروتوكول Shadowsocks الأساسي |
com.shadowsocks-service | خدمات لخدمة Shadowsocks |
Shadowsocks-الصدأ | الثنائيات التي تقوم بتشغيل خدمات Shadowsocks الشائعة |
المشاريع ذات الصلة:
sslocal
باستخدام GTK، مناقشةsslocal
، مناقشة hickory-dns
- يستخدم hickory-resolver
كمحلل DNS بدلاً من tokio
المدمج.
local-http
- السماح باستخدام بروتوكول HTTP لـ sslocal
local-http-native-tls
- دعم HTTPS مع native-tls
local-http-rustls
- دعم HTTPS مع rustls
local-tunnel
- السماح باستخدام بروتوكول النفق لـ sslocal
local-socks4
- السماح باستخدام بروتوكول SOCKS4/4a لـ sslocal
local-redir
- السماح باستخدام بروتوكول redir (الوكيل الشفاف) لـ sslocal
local-dns
- السماح باستخدام بروتوكول DNS لـ sslocal
، ويعمل بمثابة خادم DNS يقوم بإرسال استعلامات إلى خوادم DNS المحلية أو البعيدة من خلال قواعد ACL
local-fake-dns
- FakeDNS، يخصص عنوان IP لكل استعلام فردي من مجموعة IP محددة
local-tun
- دعم واجهة TUN لـ sslocal
local-online-config
- تسليم التكوين عبر الإنترنت SIP008
stream-cipher
- تمكين تشفير الدفق المهمل. تحذير: الأصفار الدفق غير آمنة!
aead-cipher-extra
- تمكين تشفير AEAD غير القياسي
aead-cipher-2022
- تمكين تشفير AEAD-2022 (SIP022)
aead-cipher-2022-extra
- تمكين الأصفار الإضافية AEAD-2022 (الأصفار غير القياسية)
يستخدم هذا المشروع مخصص ذاكرة النظام (libc) (الافتراضي لـ Rust). ولكنه يسمح لك أيضًا باستخدام المخصصات الشهيرة الأخرى حسب الميزات:
jemalloc
- يستخدم jemalloc كمخصص للذاكرة العامةmimalloc
- يستخدم mi-malloc كمخصص للذاكرة العامةtcmalloc
- يستخدم TCMalloc كمخصص للذاكرة العامة. يحاول ربط tcmalloc على مستوى النظام بشكل افتراضي، استخدم بائع من المصدر مع tcmalloc-vendored
.snmalloc
- يستخدم snmalloc كمخصص للذاكرة العامةrpmalloc
- يستخدم rpmalloc كمخصص للذاكرة العامةالتثبيت من صناديق.io:
# Install from crates.io
cargo install shadowsocks-rust
ثم يمكنك العثور على sslocal
و ssserver
في $CARGO_HOME/bin
.
بالنسبة لنظامي التشغيل macOS وLinux، يمكنك تثبيته باستخدام 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
قم بتنزيل البناء المرتبط الثابت هنا.
build-windows
: تصميم لـ x86_64-pc-windows-msvc
build-linux
: إنشاء لـ x86_64-unknown-linux-gnu
، Debian 9 (Stretch)، GLIBC 2.18build-docker
: إنشاء لـ x86_64-unknown-linux-musl
، x86_64-pc-windows-gnu
، ... (مرتبط بشكل ثابت) قدم هذا المشروع صور Docker لمعماريات linux/i386
و linux/amd64
و linux/arm64/v8
.
⚠️ لا تتمتع حاويات Docker بإمكانية الوصول إلى IPv6 بشكل افتراضي : تأكد من تعطيل مسار IPv6 في العميل أو تمكين وصول IPv6 إلى حاويات عامل الإرساء.
سوف يقوم Docker بسحب صورة البنية المناسبة من حزم GitHub الخاصة بنا.
docker pull ghcr.io/shadowsocks/sslocal-rust:latest
docker pull ghcr.io/shadowsocks/ssserver-rust:latest
إذا كنت ترغب في إنشاء صورة Docker بنفسك، فأنت بحاجة إلى استخدام 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 .
تحتاج إلى تحميل ملف التكوين في الحاوية وإنشاء خريطة منفذ خارجي للحاوية للاتصال بها.
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
قدم هذا المشروع بيانات yaml للنشر في Kubernetes.
يمكنك الاستفادة من خدمة k8s لكشف حركة المرور في الخارج، مثل LoadBalancer أو NodePort الذي يكتسب المزيد من التفاصيل الدقيقة مقارنة بالمضيف أو المنفذ الثابت.
للحصول على حالة استخدام أكثر إثارة للاهتمام، يمكنك استخدام Ingress(Istio، nginx، وما إلى ذلك) الذي يوجه حركة المرور المطابقة إلى Shadowsocks جنبًا إلى جنب مع خدمة الويب الحقيقية.
kubectl
kubectl apply -f https://github.com/shadowsocks/shadowsocks-rust/raw/master/k8s/shadowsocks-rust.yaml
يمكنك تغيير التكوين من خلال تحرير ConfigMap المسمى shadowsocks-rust
.
لمزيد من التحكم الدقيق، استخدم helm
.
helm
helm install my-release k8s/chart -f my-values.yaml
فيما يلي القيم الافتراضية الشائعة التي يمكنك تغييرها:
# 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 "
استخدام البضائع للبناء. ملاحظة: ذاكرة الوصول العشوائي>= 2 جيجا بايت
cargo build --release
ثم سيظهر sslocal
و ssserver
في ./target/(debug|release)/
، ويعملان بشكل مشابه للثنائيين في تطبيق ShadowSocks الرسمي.
make install TARGET=release
بعد ذلك سيتم تثبيت sslocal
و ssserver
و ssmanager
و ssurl
على /usr/local/bin
(بادئة متغيرة).
بالنسبة لمستخدمي Windows، إذا واجهت أي مشكلة في البناء، راجع وناقش في رقم 102.
إذا كنت تقوم بالإنشاء لمنصة وحدة المعالجة المركزية الحالية لديك (على سبيل المثال، الإنشاء والتشغيل على جهاز الكمبيوتر الشخصي الخاص بك)، فمن المستحسن تعيين ميزة target-cpu=native
للسماح rustc
بإنشاء التعليمات البرمجية وتحسينها لوحدة المعالجة المركزية التي تقوم بتشغيل المترجم.
export RUSTFLAGS= " -C target-cpu=native "
متطلبات:
./build/build-release
ثم سيتم تجميع sslocal
و ssserver
و ssmanager
و ssurl
في
./build/shadowsocks-${VERSION}-stable.x86_64-unknown-linux-musl.tar.xz
./build/shadowsocks-${VERSION}-stable.x86_64-pc-windows-gnu.zip
اقرأ Cargo.toml
لمزيد من التفاصيل.
قم بإنشاء كلمة مرور آمنة ومؤمنة لطريقة تشفير معينة ( aes-128-gcm
في المثال) باستخدام:
ssservice genkey -m " aes-128-gcm "
قم بإنشاء ملف تكوين ShadowSocks. مثال
{
"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
}
يمكن العثور على شرح تفصيلي لملف التكوين في وثائق Shadowsocks. (رابط للمشروع الأصلي، لم يعد يحتفظ به!)
⚠️ بالنسبة لعمليات التثبيت المفاجئة، من المرجح أن يكون ملف التكوين موجودًا في/var/snap/shadowsocks-rust/common/etc/shadowsocks-rust/config.json
(انظر #621 / #1146)
في Shadowsocks-rust، لدينا أيضًا تنسيق ملف تكوين موسع، قادر على تعريف أكثر من خادم واحد. يمكنك أيضًا تعطيل الخوادم الفردية.
{
"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
تلقائيًا باختيار أفضل خادم يتمتع بأقل زمن وصول وأعلى مستوى توافر.
ابدأ تشغيل عميل وخادم Shadowsocks باستخدام:
sslocal -c config.json
ssserver -c config.json
إذا قمت ببنائه مع البضائع:
cargo run --bin sslocal -- -c config.json
cargo run --bin ssserver -- -c config.json
قم بإدراج جميع الوسائط المتاحة باستخدام -h
.
ابدأ تشغيل العميل المحلي بملف التكوين
# 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 "
جميع المعلمات هي نفسها لعميل Socks5، باستثناء --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
وضع نفق العميل المحلي-f "127.0.0.1:8080
يضبط عنوان هدف النفقملاحظة : إنه يدعم حاليًا فقط
iptables
REDIRECT
و TPROXY
)pf
)، مثل 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 "
يعيد توجيه الاتصالات بتكوينات iptables
إلى المنفذ الذي يستمع إليه sslocal
.
--protocol redir
يمكّن وضع Redir للعميل المحلي--tcp-redir
يضبط وضع TCP على REDIRECT
(Linux)--udp-redir
يضبط وضع UDP على TPROXY
(Linux)ملاحظة : إنه يدعم حاليًا فقط
قم بإنشاء واجهة Tun بالاسم tun0
ip tuntap add mode tun tun0
ifconfig tun0 inet 10.255.0.1 netmask 255.255.255.0 up
ابدأ sslocal
بـ --protocol tun
ويرتبط بـ 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
سيتم إنشاء واجهة Tun بعنوان 10.255.0.1
وقناع الشبكة 255.255.255.0
.
قم بتنزيل wintun.dll
من Wintun، ثم ضعه في المجلد الذي يحتوي على الثنائيات القابلة للتشغيل الخاصة بـ Shadowsocks، أو في PATH الخاص بالنظام.
sslocal -- protocol tun - s " [::1]:8388 " - m " aes-256-gcm " - k " hello-kitty " -- outbound - bind - interface " Ethernet 0 " -- tun - interface - name " shadowsocks "
قم بتجميعها عن طريق تمكين --features "winservice"
(غير مضمن في البنية الافتراضية):
cargo build --release --bin " sswinservice " --features " winservice "
قم بتثبيته كخدمة Windows (PowerShell):
New-Service - Name " shadowsocks-local-service " ` - DisplayName " Shadowsocks Local Service " ` - BinaryPathName "sswinservice.exe local -c local_config.json "
هناك طرق أخرى لتثبيت sswinservice
كخدمة Windows، على سبيل المثال، الأمر sc
.
كما لاحظت أن -BinaryPathName
لا يحتوي فقط على sswinservice.exe
، بل يحتوي local -c local_config.json
. سيتم استخدام معلمات سطر الأوامر هذه كمعلمة افتراضية عند بدء تشغيل خدمة Windows. يمكنك أيضًا بدء الخدمة بمعلمات مخصصة.
تعرف على المزيد من مستند Microsoft.
تعمل معلمة sswinservice
تمامًا مثل ssservice
. وهو يدعم الأوامر الفرعية local
server
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 "
دعم إدارة واجهة برمجة تطبيقات المستخدمين المتعددين:
add
- يبدأ مثيل الخادمremove
- يحذف مثيل الخادم الموجودlist
- تسرد كافة الخوادم قيد التشغيل الحاليةping
- يسرد كافة البيانات الإحصائية للخوادم ملاحظة: الأمر stat
غير مدعوم. لأن الخوادم تعمل في نفس العملية مع المدير نفسه.
# 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 '
بالنسبة لواجهة مستخدم المدير، تحقق من المزيد من التفاصيل في مشروع Shadowsocks-manager.
تكوين المثال:
{
// 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
}
}
يتم تعيين ملف التكوين بواسطة socks5_auth_config_path
في locals
.
{
// Password/Username Authentication (RFC1929)
"password" : {
"users" : [
{
"user_name" : "USERNAME in UTF-8" ,
"password" : "PASSWORD in UTF-8"
}
]
}
}
SS_SERVER_PASSWORD
: كلمة المرور الافتراضية للخوادم التي تم إنشاؤها من وسيطة سطر الأوامر ( --server-addr
)SS_SYSTEM_DNS_RESOLVER_FORCE_BUILTIN
: فرض محلل DNS "system"
استخدام النظام المدمج ( getaddrinfo
في * NIX) 2022-blake3-aes-128-gcm
, 2022-blake3-aes-256-gcm
2022-blake3-chacha20-poly1305
, 2022-blake3-chacha8-poly1305
تتطلب هذه الأصفار "password"
لتكون سلسلة مفاتيح Base64 لها نفس طول حجم مفتاح التشفير تمامًا . يوصى باستخدام ssservice genkey -m "METHOD_NAME"
لإنشاء مفتاح آمن ومؤمن.
chacha20-ietf-poly1305
aes-128-gcm
، aes-256-gcm
plain
أو none
(لا يوجد تشفير، يستخدم فقط لتصحيح الأخطاء أو مع المكونات الإضافية التي تضمن أمان النقل)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
و ssmanager
ملف ACL بصيغة مثل Shadowsocks-libev. يمكن العثور على بعض الأمثلة هنا.
sslocal
، ssredir
، ...)[bypass_all]
- يتم تشغيل قائمة التحكم بالوصول (ACL) في وضع BlackList
. يتجاوز كافة العناوين التي لا تتطابق مع أي قواعد.[proxy_all]
- يتم تشغيل قائمة التحكم بالوصول (ACL) في وضع WhiteList
. وكلاء جميع العناوين التي لا تتطابق مع أي قواعد.[bypass_list]
- قواعد الاتصال المباشر[proxy_list]
- قواعد الاتصال عبر الوكلاءssserver
)[reject_all]
- يتم تشغيل قائمة التحكم بالوصول (ACL) في وضع BlackList
. يرفض جميع العملاء الذين لم يتطابقوا مع أي قواعد.[accept_all]
- يتم تشغيل قائمة التحكم بالوصول (ACL) في وضع WhiteList
. يقبل جميع العملاء الذين لم يتطابقوا مع أي قواعد.[white_list]
- قواعد العملاء المقبولين[black_list]
- قواعد العملاء المرفوضين[outbound_block_list]
- قواعد حظر العناوين الصادرة. # 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
مخصص لتشفير وفك تشفير عناوين URL الخاصة بـ ShadowSocks (SIP002). مثال: ss://[email protected]:8388/?plugin=obfs-local%3Bobfs%3Dhttp%3Bobfs-host%3Dwww.baidu.com
وهو يدعم الميزات التالية:
libcrypto
(في انتظار تنفيذ مقبول لـ Rust crypto lib) rustc
مستقرةcrypto2
)رخصة معهد ماساتشوستس للتكنولوجيا (MIT)
حقوق الطبع والنشر (ج) 2014 YT CHUNG
يُمنح الإذن مجانًا لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة به ("البرنامج")، للتعامل في البرنامج دون قيود، بما في ذلك، على سبيل المثال لا الحصر، حقوق الاستخدام والنسخ والتعديل والدمج. ونشر و/أو توزيع وترخيص من الباطن و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين تم توفير البرنامج لهم بالقيام بذلك، وفقًا للشروط التالية:
يجب تضمين إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الكبيرة من البرنامج.
يتم توفير البرنامج "كما هو"، دون أي ضمان من أي نوع، صريحًا أو ضمنيًا، بما في ذلك، على سبيل المثال لا الحصر، ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. لا يتحمل المؤلفون أو أصحاب حقوق الطبع والنشر بأي حال من الأحوال المسؤولية عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء في إجراء العقد أو الضرر أو غير ذلك، الناشئة عن أو خارج أو فيما يتعلق بالبرنامج أو الاستخدام أو المعاملات الأخرى في برمجة.