Shadowsocks-ը թեթև, SOCKS5-ի վրա հիմնված կոդավորված պրոքսի արձանագրություն է, որը սկզբնապես նախատեսված էր սովորական ցանցերում երթևեկության ձևավորման և արգելափակման շրջանցման համար: Ի տարբերություն լիարժեք VPN-ի, այն պրոքսի է ուղարկում միայն այն երթևեկությունը, որը ծրագիրը բացահայտորեն ուղարկում է դրան, գրեթե չունի արձանագրության վրա ծախսված ժամանակ և լավ է աշխատում նույնիսկ սահմանափակված կապերի վրա: Այն չի փորձում ընդօրինակել իրական TLS ձեռքսեղմումը այնպես, ինչպես դա անում է VLESS+Reality-ն. դրա ուժեղ կողմը պարզությունն է, լայն հաճախորդների աջակցությունը (ռաութերներ, հեռախոսներ, զննարկիչներ) և շատ ցածր լատենտությունը, չնայած այն հանգամանքին, որ այն որոշ չափով ավելի հեշտ է մատնահետք դնել երթևեկության ձևաչափով խիստ ստուգված ցանցում:
Կան երկու ակտիվորեն սպասարկվող սերվերի իրականացումներ՝
- shadowsocks-rust — shadowsocks կազմակերպության ժամանակակից հղման իրականացումը, գրված Rust լեզվով։ Այն աջակցում է AEAD-2022 գաղտնագրերի ավելի նոր ընտանիքին, ակտիվորեն մշակվում է և այս ուղեցույցը մանրամասն տեղադրում և կարգավորում է այն իրականացումը։
- shadowsocks-libev — C-ի ավելի հին իրականացումը։ Այն դեռևս պահպանվում է սխալների շտկման համար, առաքվում է որպես պատրաստի apt փաթեթ՝ իր սեփական systemd միավորներով, և լավ ընտրություն է, եթե ցանկանում եք ամենապարզ տեղադրումը՝ առանց ձեռքով երկուական ֆայլերի մշակման։ Այս ուղեցույցը այն ներկայացնում է որպես այլընտրանքային տեղադրման ուղի 3-րդ բաժնում։
Այս ուղեցույցը նկարագրում է, թե ինչպես ձեռքով կարգավորել սերվերը հրամանի տողի միջոցով՝ առանց վեբ վահանակի կամ Docker-ի օգտագործման: Որտեղ էլ որ հայտնվի «IP հասցե» դաշտը, այն փոխարինեք ձեր VPS-ի իրական IP հասցեով:
Ձեզ անհրաժեշտ է՝ Ubuntu 22.04/24.04 կամ Debian 11/12 օպերացիոն համակարգերով աշխատող VPS, root մուտք, ձեր VPS-ի IP հասցեն և անվճար UDP/TCP միացք (այս ուղեցույցն օգտագործում է 8388-ը՝ Shadowsocks-ի լռելյայն տարբերակը):
Դեռ սերվեր չունե՞ք։ Տեսեք, թե ինչպես պատվիրել սերվեր և վճարել դրա համար ։
Նախ համեմատո՞ւմ եք սա այլ ինքնահոսթինգի տարբերակների հետ։ TLS-քողարկման վրա հիմնված այլընտրանքի համար տե՛ս Xray VLESS Reality Guide-ը , WireGuard-ի վրա հիմնված տարբերակի համար՝ AmneziaWG Server Deployment Guide-ը , կամ երկու այլ ժամանակակից պրոքսի արձանագրությունների համար՝ Hysteria2-ը և TUIC կարգավորումը ։
Միացում սերվերին
Windows (PuTTY)
Բացեք PuTTY-ն, մուտքագրեք ձեր VPS IP հասցեն Host Name դաշտում, սահմանեք պորտը 22-ի վրա և մուտք գործեք որպես root՝ օգտագործելով ձեր VPS մատակարարի կողմից ձեզ ուղարկված գաղտնաբառը։
Սերվերի IP հասցե՝ ձեր IP հասցեն
մուտք գործել որպես՝ root
Գաղտնաբառ՝ ձեր գաղտնաբառը
PuTTY/SSH-ի միջոցով միանալու մանրամասն ուղեցույցի համար տե՛ս «Ինչպես միանալ Linux սերվերին SSH-ի միջոցով» բաժինը ։
Linux / macOS (տերմինալ)
ssh root@your_IP_address
Ստորև նշված բոլոր հրամանները կատարվում են սերվերի վրա՝ այս նույն SSH սեսիայում, որը ներառում է 2-ից 7 բաժինները, գումարած 13-րդ բաժնում սերվերի կողմից ստուգումները: 8-12 բաժինները (հաճախորդի հավելվածների տեղադրում և կարգավորում) տեղի են ունենում ձեր սեփական Windows/macOS/Linux/Android/iOS սարքի վրա, քանի որ դա այն սարքն է, որի վրա պետք է աշխատի պրոքսին. այդ բաժիններից յուրաքանչյուրը հստակ նշում է, թե որ տողերը, եթե կան, դեռևս շփվում են սերվերի հետ:
Սպասարկիչի պատրաստում
Թարմացրեք համակարգը
Նախքան որևէ բան տեղադրելը, թարմացրեք փաթեթների ցանկը և թարմացրեք տեղադրված փաթեթները։
apt update -y && apt upgrade -y
Եթե սա թարմացնում է միջուկը, շարունակելուց առաջ լավ միտք է վերագործարկել սարքը։ (apt-ի և Linux փաթեթների կառավարիչների աշխատանքի վերաբերյալ թարմացման համար տե՛ս Linux փաթեթների կառավարիչներ ): Ստուգեք՝
cat /var/run/reboot-required
Եթե ֆայլը գոյություն ունի, նախ վերագործարկեք «վերագործարկում» կոճակով, սպասեք մոտ 30 վայրկյան, ապա վերամիացեք։
Տեղադրեք այս ուղեցույցում օգտագործվող գործիքները
apt install -y curl wget tar xz-utils ufw qrencode
shadowsocks-rust թողարկման արխիվը ստանալու և բացելու համար անհրաժեշտ են curl/wget և tar/xz-utils հրամանները։ ufw-ն ստորև կարգավորված firewall-ն է։ qrencode-ը պատրաստի հաճախորդի հղումը վերածում է սկանավորվող QR կոդի՝ 7-րդ բաժնում։
Կարգավորեք firewall-ը (UFW)
UFW կանոնների մասին ավելին իմանալու համար տե՛ս Linux-ում Firewall-ի կարգավորումը ։
Բացեք ձեզ անհրաժեշտ երկու միացքները՝ 22/tcp SSH-ի համար (եթե բաց թողնեք այս կանոնը, կարող եք կորցնել սերվերին մուտքը) և 8388, և՛ tcp-ն, և՛ udp-ն։ Shadowsocks-ը պրոքսի է անում և՛ TCP կապերի, և՛ UDP ասոցիացիաների համար (օգտակար է DNS-ի և որոշ խաղերի/հավելվածների համար), ուստի միացքի երկու ուղղություններն էլ պետք է բաց լինեն։
ufw allow 22/tcp
ufw allow 8388/tcp
ufw allow 8388/udp
ufw --force enable
ufw status
ufw կարգավիճակի արտածման մեջ երեք կանոններն էլ պետք է ցուցադրվեն որպես ALLOW: Եթե հետագայում փոխեք config.json ֆայլում պորտը, թարմացրեք այս կանոնները՝ համապատասխանեցնելու համար:
Սերվերի ծրագրաշարի տեղադրում
Ընտրեք ստորև նշված երկու տարբերակներից մեկը։ Առաջարկվում է Ա տարբերակը (shadowsocks-rust). այն ակտիվորեն մշակված իրականացում է և աջակցում է ժամանակակից AEAD-2022 գաղտնագրերին, որոնք կօգտագործվեն այս ուղեցույցում ավելի ուշ։ Բ տարբերակը (shadowsocks-libev) լավ ընտրություն է, եթե նախընտրում եք օգտագործել պարզ apt փաթեթ՝ պատրաստի համակարգային միավորով և ձեզ AEAD-2022 պետք չէ։
Տարբերակ Ա — shadowsocks-rust (խորհուրդ է տրվում)
Shadowsocks-rust-ը չի մատակարարում apt փաթեթ ընթացիկ թողարկումների հետ, ուստի այն տեղադրվում է նախագծի GitHub թողարկումներից նախապես կառուցված ստատիկ բինար ֆայլը ներբեռնելով: Վերցրեք վերջին թողարկման թեգը GitHub API-ից և ներբեռնեք համապատասխան Linux x86_64 արխիվը.
SS_VER=$(curl -s https://api.github.com/repos/shadowsocks/shadowsocks-rust/releases/latest | grep -Po '"tag_name": "\K[^"]*')
echo "Latest version: $SS_VER"
cd /root
wget "https://github.com/shadowsocks/shadowsocks-rust/releases/download/${SS_VER}/shadowsocks-${SS_VER}.x86_64-unknown-linux-gnu.tar.xz"
Եթե ձեր VPS-ը arm64 է x86_64-ի փոխարեն (ստուգեք `uname -m`-ով), վերևում գտնվող ֆայլի անվան մեջ x86_64-unknown-linux-gnu-ն փոխարինեք aarch64-unknown-linux-gnu-ով։
Արխիվը արդյունահանեք և համակարգային եղանակով տեղադրեք երկուական ֆայլերը՝
tar -xf shadowsocks-*.tar.xz
install -m 755 ssserver ssservice ssmanager ssurl /usr/local/bin/
rm -f shadowsocks-*.tar.xz ssserver ssservice ssmanager ssurl sslocal 2>/dev/null
Ստուգեք, որ բինար ֆայլը տեղում է և ստուգեք տեղադրված տարբերակը՝
ssserver --version
Ստեղծեք այն գրացուցակը, որտեղ կտեղավորվի կարգավորման ֆայլը՝
mkdir -p /etc/shadowsocks-rust
Այս ուղեցույցը տեղադրում է ֆիքսված տարբերակ, այլ ոչ թե bash-ում տեղադրում է տեղադրողի սկրիպտ։ Հետագայում թարմացնելու համար վերագործարկեք վերը նշված երկու հրամանները՝ նոր SS_VER որոնմամբ, դադարեցրեք ծառայությունը, փոխարինեք բինար ֆայլը և վերագործարկեք այն (Բաժին 6):
Տարբերակ B — shadowsocks-libev (այլընտրանքային, apt փաթեթ)
Shadowsocks-libev-ը ներառված է Ubuntu-ի տիեզերքի պահոցում (Ubuntu 16.10+) և Debian-ի գլխավոր պահոցում (Debian 8+), ուստի 22.04/24.04 կամ Debian 11/12 տարբերակներում երրորդ կողմի PPA անհրաժեշտ չէ։
apt install -y shadowsocks-libev
Եթե apt-ը հայտնում է, որ փաթեթը չի գտնվել, universe repository-ն անջատված է։ Միացրեք այն և կրկին փորձեք։
add-apt-repository universe && apt update && apt install -y shadowsocks-libev
Փաթեթը տեղադրում է իր սեփական systemd միավորները (shadowsocks-libev.service-ը՝ լռելյայն կարգավորման համար, գումարած [email protected]-ը ՝ անվանված յուրաքանչյուր օրինակի կարգավորումների համար) և ավտոմատ կերպով ստեղծում է /etc/shadowsocks-libev/config.json ֆայլը։ 4-6 բաժիններում նշվում են libev-ի համար հատուկ հրամաններն ու ֆայլերի ուղիները՝ rust-ի հետ միասին։ Այս ուղեցույցի մնացած հաճախորդի բաժինները (7-13) նույնականորեն վերաբերում են երկու սերվերների իրականացմանը, քանի որ երկուսն էլ օգտագործում են նույն Shadowsocks/SIP002 արձանագրությունը։
Գաղտնաբառի ստեղծում և կոդի ընտրություն
Shadowsocks-ի նույնականացումը մեկ համատեղ օգտագործվող գաղտնաբառ է գումարած գաղտնագիր (կոդավորման մեթոդ), որի շուրջ պետք է համաձայնության գան երկու կողմերը՝ չկա առանձին UUID, բանալիների զույգ կամ վկայական կառավարելու կարիք։
Ծածկագրերի ընտանիքներ
- AEAD-2022 (խորհուրդ է տրվում, միայն shadowsocks-rust): 2022-blake3-aes-128-gcm, 2022-blake3-aes-256-gcm, 2022-blake3-chacha20-poly1305: Ավելի նոր դիզայն (SIP022)՝ ավելի ուժեղ կրկնության պաշտպանությամբ և մեկ պորտը համատեղ օգտագործող մի քանի օգտատերերի աջակցությամբ: Գաղտնաբառը պետք է լինի base64 տող՝ ճիշտ նույն բանալու երկարությամբ (16 բայթ՝ 128-բիթանոց տարբերակների համար, 32 բայթ՝ 256-բիթանոց տարբերակի համար):
- Դասական AEAD (աջակցվում է և՛ rust-ի, և՛ libev-ի կողմից). aes-256-gcm, aes-128-gcm, chacha20-ietf-poly1305: Լայնորեն համատեղելի է հին հաճախորդների և shadowsocks-libev-ի հետ. գաղտնաբառը կարող է լինել ցանկացած գաղտնաբառ, քանի որ այն մատակարարվում է բանալիի ստացման ֆունկցիայի միջոցով, այլ ոչ թե օգտագործվում է անմիջապես որպես բանալիի նյութ:
Այս ուղեցույցը shadowsocks-rust սերվերի համար օգտագործում է 2022-blake3-aes-256-gcm, քանի որ այն ամենաուժեղ և ամենաարդիական տարբերակն է, և հետագայում առաջարկվող բոլոր հաճախորդները (v2rayN, v2rayNG, Shadowrocket, Streisand, ShadowsocksX-NG) աջակցում են այն: Եթե դուք տեղադրել եք shadowsocks-libev-ը 3-րդ բաժնում, օգտագործեք chacha20-ietf-poly1305 կամ aes-256-gcm, քանի որ libev-ը չի իրականացնում AEAD-2022:
Ստեղծեք բանալի (shadowsocks-rust)
ssservice genkey -m "2022-blake3-aes-256-gcm"
Սա տպում է base64 տող՝ դա ձեր գաղտնաբառն է։ Պատճենեք այն անվտանգ տեղում. դուք այն կտեղադրեք և՛ սերվերի կարգավորումներում, որոնք ներկայացված են 5-րդ բաժնում, և՛ հաճախորդի հղումում, որոնք ներկայացված են 7-րդ բաժնում։
Ընտրեք գաղտնաբառ (shadowsocks-libev)
Shadowsocks-libev-ի կողմից օգտագործվող դասական AEAD գաղտնագրերի համար ցանկացած բավականաչափ երկար պատահական տող աշխատում է, քանի որ այն անցնում է PBKDF/HKDF-ի միջոցով, այլ ոչ թե օգտագործվում է որպես հում բանալի։ Ստեղծեք մեկը հետևյալ կերպ՝
openssl rand -base64 32
Սերվերի կոնֆիգուրացիայի գրառում
Shadowsocks-rust
Բացեք կարգավորման ֆայլը խմբագրման համար՝
nano /etc/shadowsocks-rust/config.json
Տեղադրեք ստորև բերված ձևանմուշը՝ փոխարինելով ձեր սեփական գաղտնաբառը 4-րդ բաժնից (և պորտը՝ 2-րդ բաժնից, եթե այն փոխել եք 8388-ից):
{
"server": "0.0.0.0",
"server_port": 8388,
"password": "YOUR-GENERATED-KEY-HERE",
"method": "2022-blake3-aes-256-gcm",
"mode": "tcp_and_udp",
"timeout": 300,
"nofile": 51200
}
Սեղմեք Ctrl+O (WriteOut)՝ ֆայլը պահպանելու համար, Enter՝ ֆայլի անունը հաստատելու համար, ապա Ctrl+X՝ nano ռեժիմից դուրս գալու համար։
Կարևոր դաշտեր՝ սերվերը լսում է բոլոր ինտերֆեյսները (0.0.0.0); server_port-ը Բաժին 2-ում բացված միացքն է; password/method-ը Բաժին 4-ի հավատարմագրերն ու գաղտնագրերն են; mode-ը միացնում է և՛ TCP, և՛ UDP վերահասցեավորումը; timeout-ը անգործուն կապի ժամկետի ավարտն է վայրկյաններով; nofile-ը բարձրացնում է ֆայլի նկարագրիչի սահմանաչափը զբաղված սերվերների համար:
Հաստատեք JSON-ը և համոզվեք, որ բինար ֆայլը ընդունում է այն, նախքան այն systemd-ին միացնելը։
ssserver -c /etc/shadowsocks-rust/config.json --help >/dev/null && echo "binary OK"
python3 -m json.tool /etc/shadowsocks-rust/config.json >/dev/null && echo "JSON OK"
Ստեղծեք համակարգային միավորը (shadowsocks-rust)
Երկուական թողարկումը չի մատակարարում համակարգային միավոր, ուստի ստեղծեք մեկը՝
nano /etc/systemd/system/ssserver.service
[Unit]
Description=Shadowsocks-Rust Server
Documentation=https://github.com/shadowsocks/shadowsocks-rust
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks-rust/config.json
Restart=on-failure
RestartSec=5s
LimitNOFILE=51200
User=root
[Install]
WantedBy=multi-user.target
Պահպանեք և դուրս եկեք վերևում նշվածի պես, ապա ասեք systemd-ին վերցնել նոր միավորի ֆայլը։
systemctl daemon-reload
Shadowsocks-libev
apt փաթեթն արդեն ստեղծել է /etc/shadowsocks-libev/config.json ֆայլը՝ լռելյայն (միայն loopback, պատահական գաղտնաբառ) կոնֆիգուրացիայով և իր սեփական systemd միավորով։ Բացեք այն խմբագրման համար։
nano /etc/shadowsocks-libev/config.json
Փոխարինեք բովանդակությունը հետևյալով.
{
"server":"0.0.0.0",
"server_port":8388,
"password":"YOUR-PASSPHRASE-HERE",
"method":"chacha20-ietf-poly1305",
"mode":"tcp_and_udp",
"timeout":300
}
Լռելյայն կարգավորումը օգտագործում է server: ["::1", "127.0.0.1"] (միայն loopback). այն «0.0.0.0»-ի փոխելն է, ինչը սերվերը հասանելի է դարձնում հանրային IP-ից. մի բաց թողեք սա, եթե վերևում նշված ձևանմուշի փոխարեն պատճենել եք պահեստային ֆայլը։
Ծառայության մեկնարկը և ավտոմատ մեկնարկի միացումը
Shadowsocks-rust
systemctl enable --now ssserver
systemctl status ssserver --no-pager
Կարգավիճակը պետք է ցույց տա ակտիվ (աշխատող): Հաստատեք, որ ինչ-որ բան իրականում լսում է միացքի վրա (երկու արձանագրություններն էլ):
ss -lntp | grep ':8388'
ss -lunp | grep ':8388'
Եթե ծառայությունը չի կարողանում մեկնարկել, պատճառը պարզելու ամենաարագ ճանապարհը systemd journal-ն է (Linux-ի գրանցամատյանները կարդալու ընդհանուր տեղեկատվության համար տե՛ս « Ինչպես կարդալ Linux-ի գրանցամատյանները և որտեղ գտնել դրանք » բաժինը):
journalctl -u ssserver -n 50 --no-pager
Shadowsocks-libev
systemctl restart shadowsocks-libev
systemctl enable shadowsocks-libev
systemctl status shadowsocks-libev --no-pager
Ստուգեք պորտը և լոգերը նույն կերպ, ինչպես shadowsocks-rust-ի դեպքում՝ փոխարինելով ծառայության անունը՝
ss -lntp | grep ':8388'
ss -lunp | grep ':8388'
journalctl -u shadowsocks-libev -n 50 --no-pager
Հաճախորդի միացման կապի կառուցում
Shadowsocks հաճախորդները ներմուծում են մեկ ss:// share հղում (SIP002 URL ձևաչափով), այլ ոչ թե կարգավորման ֆայլ: Հղումը կոդավորում է ծածկագիրը և գաղտնաբառը որպես base64 URL-ի userinfo բաժնում:
ss://base64(method:password)@your_IP_address:port#label
Կառուցեք base64 մասը սերվերի վրա (սա կանխում է ձեռքով կոդավորմամբ առաջացող ցանկացած տպագրական սխալ):
METHOD="2022-blake3-aes-256-gcm"
PASSWORD="YOUR-GENERATED-KEY-HERE"
USERINFO=$(echo -n "${METHOD}:${PASSWORD}" | base64 -w0)
echo "ss://${USERINFO}@your_IP_address:8388#My-SS-Server"
Օրինակ արդյունք (տեղապահի բանալիով):
ss://MjAyMi1ibGFrZTMtYWVzLTI1Ni1nY206eHl6X2V4YW1wbGVfa2V5X2hlcmU=@your_IP_address:8388#My-SS-Server
#-ից հետո գրված տեքստը պարզապես ցուցադրման պիտակ է, որը կարող եք ազատորեն վերանվանել ցանկացած հաճախորդում: shadowsocks-libev սերվերի համար փոխարինեք METHOD="chacha20-ietf-poly1305" (կամ aes-256-gcm) և դրա գաղտնաբառը՝ Բաժին 4-ից:
Վերածեք այն QR կոդի, որպեսզի բջջային հաճախորդները կարողանան այն անմիջապես սկանավորել։
qrencode -o ~/ss-client.png "ss://${USERINFO}@your_IP_address:8388#My-SS-Server"
Պատճենեք PNG-ն ձեր համակարգչին scp-ով, գործարկեք այն ձեր համակարգչի տերմինալից (կամ PowerShell-ից Windows-ի վրա), այլ ոչ թե սերվերից։
scp root@your_IP_address:~/ss-client.png .
Միացում Windows-ից
Այս բաժնում ամեն ինչ տեղի է ունենում ձեր Windows համակարգչի վրա, այլ ոչ թե SSH-ի միջոցով. հաճախորդը պետք է աշխատի այն սարքի վրա, որն իրականում կօգտագործի պրոքսին։
Տեղադրեք v2rayN-ը
v2rayN-ը անվճար, ակտիվորեն սպասարկվող GUI հաճախորդ է՝ Shadowsocks-ի բնիկ աջակցությամբ, ինչպես նաև VLESS, VMess, Trojan և այլն: Ներբեռնեք վերջին թողարկումը նախագծի էջից :
Վերցրեք Windows 64-բիթանոց .zip ֆայլը (վերջին v2rayN տարբերակների համեմատ, ինքնուրույն կառուցվածքը առանձին .NET runtime-ի կարիք չունի), արտածեք այն ցանկացած տեղից և գործարկեք v2rayN.exe-ը։
Ներմուծել սերվերը
Բաժին 7-ում ներկառուցված ss:// հղումը պատճենեք ձեր սեղմատախտակին (կամ պատճենեք QR PNG-ը scp-ով և բացեք այն), այնուհետև v2rayN-ում ընտրեք Սերվերներ → Ներմուծել զանգվածային URL-ը սեղմատախտակից (կամ սկանավորեք QR կոդը ներկառուցված սկաների միջոցով): Նոր սերվերի պրոֆիլը կհայտնվի ցանկում՝ # նշանից հետո ձեր կողմից սահմանված պիտակով:
Աջ սեղմեք պրոֆիլի վրա և ընտրեք այն որպես ակտիվ, այնուհետև գլխավոր պատուհանի գործիքագոտուց միացրեք համակարգի պրոքսին (կամ TUN ռեժիմը՝ ամբողջ մեքենան երթուղավորելու համար):
Միացում macOS-ից
Այս բաժնում ամեն ինչ տեղի է ունենում ձեր Mac-ի վրա, այլ ոչ թե SSH-ի միջոցով։
Տեղադրեք ShadowsocksX-NG-ն
ShadowsocksX-NG-ն Shadowsocks-ի համար երկար ժամանակ գործող macOS GUI հաճախորդն է։ Ներկայիս թողարկումների շարքը Intel-ի հետ միասին ներառում է նաև Apple Silicon-ի բնիկ տարբերակը։ Ներբեռնեք վերջին .dmg տարբերակը թողարկումների էջից։
Բացեք .dmg ֆայլը և քաշեք ShadowsocksX-NG-ը Applications-ի մեջ, այնուհետև գործարկեք այն. այն կհայտնվի որպես պատկերակ մենյուի տողում։
Ներմուծել սերվերը
Բաժին 7-ից պատճենեք ss:// հղումը ձեր սեղմատախտակին, այնուհետև սեղմեք ընտրացանկի վահանակի պատկերակը → Սերվերներ → Սերվերի կարգավորումներ → ներքևի ձախ անկյունում գտնվող + նշանը և ընտրեք «Ներմուծել ստվարաթղթից» (կամ PNG-ն բացելուց հետո սկանավորեք QR կոդը «Սկանավորել QR կոդը էկրանից» կոճակով): Ընտրեք նոր պրոֆիլը ընտրացանկի վահանակի իջնող ցանկից, այնուհետև միացրեք «Shadowsocks: On» կոճակը և նույն ցանկից ընտրեք «PAC Auto» կամ «Global» երթուղայնացման ռեժիմը:
Միացում Linux համակարգչից
Այս բաժնում ամեն ինչ տեղի է ունենում ձեր սեփական Linux մեքենայի վրա, այլ ոչ թե VPS-ի։
Տեղադրեք տեղական հաճախորդը
Եթե դուք սերվերի վրա տեղադրել եք shadowsocks-rust-ը 3-րդ բաժնում, նույն թողարկման արխիվը պարունակում է sslocal ֆայլը՝ SOCKS5/HTTP տեղական պրոքսի հաճախորդ: Ներբեռնեք և տեղադրեք այն նույն կերպ, ինչպես սերվերի բինար ֆայլը (կարգավորեք OS/arch վերջածանցը ձեր աշխատասեղանի համար, եթե այն x86_64-unknown-linux-gnu չէ):
SS_VER=$(curl -s https://api.github.com/repos/shadowsocks/shadowsocks-rust/releases/latest | grep -Po '"tag_name": "\K[^"]*')
wget "https://github.com/shadowsocks/shadowsocks-rust/releases/download/${SS_VER}/shadowsocks-${SS_VER}.x86_64-unknown-linux-gnu.tar.xz"
tar -xf shadowsocks-*.tar.xz
sudo install -m 755 sslocal /usr/local/bin/
Կարգավորել և գործարկել
Ստեղծեք փոքր տեղական կոնֆիգուրացիա, որը լսում է 127.0.0.1:1080-ը որպես SOCKS5 պրոքսի։
mkdir -p ~/.config/shadowsocks-rust
cat > ~/.config/shadowsocks-rust/local.json << 'EOF'
{
"server": "your_IP_address",
"server_port": 8388,
"password": "YOUR-GENERATED-KEY-HERE",
"method": "2022-blake3-aes-256-gcm",
"local_address": "127.0.0.1",
"local_port": 1080,
"mode": "tcp_and_udp"
}
EOF
sslocal -c ~/.config/shadowsocks-rust/local.json
Ձեր զննարկչի կամ համակարգի ցանցային կարգավորումները ուղղեք SOCKS5 պրոքսիի վրա՝ 127.0.0.1:1080-ի վրա: GUI-ի համար Nekoray կամ ShadowsocksX-Qt5 ոճի fork-երը կարող են ներմուծել նույն ss:// հղումը 7-րդ բաժնից և կառավարել sslocal-ը՝ այն ձեռքով գործարկելու փոխարեն:
Միանում է Android-ից
Այստեղ ամեն ինչ տեղի է ունենում ձեր Android սարքում, այլ ոչ թե SSH-ի միջոցով։
Հաճախորդի տեղադրում
Երկու լավ տարբերակ՝
- Shadowsocks Android-ի համար՝ shadowsocks կազմակերպության պաշտոնական հաճախորդը։ Տեղադրեք այն Google Play-ից (որոնեք «Shadowsocks») կամ ներբեռնեք APK-ն անմիջապես նախագծի թողարկումների էջից, եթե Play-ը հասանելի չէ ձեր սարքում։ տարածաշրջանում:
- v2rayNG — v2rayN-ի Android-ի համարժեքը, որը աջակցում է Shadowsocks-ին VLESS/VMess/Trojan-ի հետ մեկտեղ։ Օգտակար է, եթե ցանկանում եք մեկ հավելված բազմաթիվ արձանագրությունների համար։ տեսակները:
Ներմուծել սերվերը
Երկու հավելվածներում էլ՝ սեղմեք + կոճակը, 7-րդ բաժնից ss:// հղումը պատճենելուց հետո ընտրեք «Ներմուծել սեղմատախտակից» կամ «Սկանավորել QR կոդը» և ուղղեք տեսախցիկը PNG-ի վրա։ Սեղմեք ներմուծված պրոֆիլը՝ այն ընտրելու համար, ապա սեղմեք միանալու կոճակը։ Android-ը առաջին անգամ կպահանջի VPN թույլտվություն՝ հաստատել այն՝ թունել ստեղծելու համար։
Միանում է iOS-ից
Այստեղ ամեն ինչ տեղի է ունենում ձեր iPhone-ի կամ iPad-ի վրա, այլ ոչ թե SSH-ի միջոցով։
Տեղադրեք Shadowsocks-ի հետ համատեղելի հաճախորդ
Shadowrocket-ը ամենատարածված iOS հաճախորդն է, որն աջակցում է Shadowsocks-ին. այն վճարովի հավելված է խանութների մեծ մասում: Որոնեք այն App Store-ում կամ բացեք այն:
Streisand-ը անվճար, բաց կոդով այլընտրանք է, որը նաև աջակցում է Shadowsocks-ին VLESS-ի, Trojan-ի և այլ արձանագրությունների հետ մեկտեղ ։
App Store-ի կատալոգները տարբերվում են ըստ խանութի/տարածաշրջանի և կարող են ժամանակի ընթացքում փոխվել։ Եթե ձեր կատալոգներից ոչ մեկը տեսանելի չէ, App Store-ում որոնեք «Shadowsocks» կամ «V2Box»։
Ներմուծել սերվերը
Պատճենեք ss:// հղումը ձեր սեղմատախտակին, բացեք հաճախորդը և օգտագործեք դրա «Ավելացնել/ներմուծել սեղմատախտակից» տարբերակը, կամ սկանավորեք 7-րդ բաժնի QR կոդը հաճախորդի ներկառուցված սկաների միջոցով։ Միացրեք նոր պրոֆիլը. iOS-ը առաջին անգամ կպահանջի VPN կարգավորման թույլտվություն, որը դուք պետք է հաստատեք Face ID-ի, Touch ID-ի կամ ձեր գաղտնաբառի միջոցով։
Միացման ստուգում
Երբ թունելը ակտիվ է 8-րդ, 9-րդ, 10-րդ, 11-րդ կամ 12-րդ բաժիններից, վերադարձեք ձեր սեփական սարքին (ոչ թե SSH սեսիային) և բացեք ցանկացած «ի՞նչ է իմ IP-ն» ստուգիչ զննարկիչում. ցուցադրված հասցեն պետք է համընկնի ձեր VPS-ի IP հասցեի՝ your_IP_address-ի հետ։
Սերվերի կողմից ստուգելու համար ստուգեք systemd journal-ը՝ կապի ակտիվության համար և հաստատեք պորտում հաստատված սեսիաները (օգտագործեք ssserver-ը rust journal-ի համար կամ shadowsocks-libev-ը libev journal-ի համար):
journalctl -u ssserver -n 50 --no-pager
ss -tnp | grep ':8388'
Հղում
|
Դաշտ |
Արժեք |
|
հասցե |
ձեր VPS-ի հանրային IP հասցեն |
|
Նավահանգիստ |
8388 (նույն միացքը բացվել է 2-րդ բաժնում) |
|
Գաղտնաբառ |
Բաժին 4-ում ստեղծված բանալին/գաղտնաբառը |
|
Մեթոդ |
2022-blake3-aes-256-gcm (rust) կամ chacha20-ietf-poly1305 (libev) — պետք է ճշգրտորեն համընկնի երկու կողմերից էլ |
|
ռեժիմ |
tcp_and_udp — միացնում է և՛ TCP պրոքսիինգը, և՛ UDP ռելեը (DNS, որոշ խաղեր) |
|
Միացնել |
Այս ուղեցույցում ոչ մեկը չի օգտագործվել — Shadowsocks-ը գործելու համար կարիք չունի SNI-ի, վկայականի կամ տրանսպորտային հավելվածի |
Եզրափակում
Այս ուղեցույցին հետևելով՝ ձեր VPS-ը կաշխատի իր սեփական Shadowsocks սերվերով՝ կամ shadowsocks-rust-ը՝ ժամանակակից AEAD-2022 գաղտնագրով, կամ shadowsocks-libev-ը՝ Ubuntu/Debian-ի սեփական պահոցից՝ որպես systemd ծառայություն, որը գոյատևում է վերագործարկումից հետո՝ առանց ձեր կողմից որևէ գործողության:
Ավելի շատ օգտատերերի ավելացում.
- Ամենապարզը՝ ստեղծեք երկրորդ գաղտնաբառ (Բաժին 4) և գործարկեք ssserver/shadowsocks-libev-ի երկրորդ օրինակը այլ պորտի վրա՝ իր սեփական կարգավորման ֆայլով և systemd միավորով, այնուհետև կրկնեք 5-7 բաժինները այդ պորտի համար։
- AEAD-2022 գաղտնագրով shadowsocks-rust-ը նաև աջակցում է մի քանի օգտատերերի, որոնք համատեղ օգտագործում են մեկ պորտ և գաղտնաբառի ստացման բանալու կոդ config.json-ում (Ընդարձակվող նույնականացման վերնագրեր, SIP022) գտնվող «users» զանգվածի միջոցով։ Եթե ձեզ անհրաժեշտ է մեկ պորտում մեկ օգտատիրոջ տրաֆիկի հաշվառում, տե՛ս shadowsocks-rust README-ի «Կարգավորումներ» բաժինը ճշգրիտ շարահյուսության համար։
Մի քանի սովորություններ, որոնք արժե պահպանել սերվերի գործարկումից հետո.
- Պահեք սերվերը թարմացված։ Shadowsocks-rust-ի դեպքում պարբերաբար վերագործարկեք 3-րդ բաժնի ներբեռնման և տեղադրման քայլերը՝ նոր տարբերակի որոնմամբ, այնուհետև systemctl-ը վերագործարկեք ssserver-ը։ Shadowsocks-libev-ի դեպքում դա կատարվում է պարզ apt upgrade-ի միջոցով։
- Պահուստավորեք config.json ֆայլը սերվերից դուրս՝ որևէ մասնավոր տեղում։ Այն պարունակում է բոլոր հաճախորդների գաղտնաբառերը. դրա կորուստը նշանակում է վերականգնել բոլոր սարքերի մուտքի տվյալները։
- Փոխեք գաղտնաբառը, եթե սարքը կորել է կամ հաճախորդը վնասվել է. ստեղծեք նորը (Բաժին 4), թարմացրեք config.json ֆայլը, վերագործարկեք ծառայությունը և վերակառուցեք հաճախորդի հղումը (Բաժին 7) մնացած յուրաքանչյուր սարքի համար։
Եթե կապը չի հաստատվում, ստուգեք հերթականությունը՝
- ծառայության կարգավիճակը (systemctl status ssserver --no-pager, կամ shadowsocks-libev) և օրագիրը (journalctl -u ssserver -n 50 --no-pager)
- firewall-ի կանոնները (ufw կարգավիճակ՝ պորտը պետք է բաց լինի և՛ tcp-ի, և՛ udp-ի համար)
- որ պորտը արդեն կապված չէ մեկ այլ ծառայության հետ (ss -lntp | grep ':8388'-ը պետք է ցույց տա միայն ssserver/ss-server-ը)
- որ հաճախորդի գաղտնաբառը, մեթոդը և պորտը ճշգրտորեն համընկնում են config.json-ի հետ՝ մեկ անհամապատասխան նիշը լուռ ձախողվում է ձեռքսեղմման ժամանակ, սովորաբար ցույց տալով որպես կապի ժամկետի ավարտ, այլ ոչ թե որպես ակնհայտ սխալ։
- Այդ ռեժիմը սերվերի վրա սահմանված է tcp_and_udp-ի վրա, եթե հաճախորդին անհրաժեշտ է UDP (DNS-over-proxy, որոշ խաղեր/հավելվածներ) և ոչ միայն tcp_only:
Համեմատո՞ւմ եք Shadowsocks-ը այլ տարբերակների հետ: Տեսեք Xray VLESS Reality Guide-ը ՝ TLS-քողարկման վրա հիմնված արձանագրություն ստանալու համար, որը դժվար է մատնահետք գտնել խիստ ֆիլտրացված ցանցում, AmneziaWG սերվերի տեղակայման ուղեցույցը և ինչպես կարգավորել Wireguard VPN-ը ձեր սերվերի վրա ՝ WireGuard-ի վրա հիմնված այլընտրանքների համար, կամ Hysteria2 և TUIC կարգավորումը ՝ կորուստներով կամ խիստ ֆիլտրացված ցանցերի համար կառուցված երկու արձանագրությունների համար: Եթե ձեզ անհրաժեշտ է միայն պարզ պրոքսի, այլ ոչ թե ամբողջական թունելավորման կարգավորում, CentOS/ArchLinux-ի վրա 3proxy կարգավորումը շատ ավելի թեթև այլընտրանք է, իսկ Linux-ի վրա VPN սերվերի ավելի հին կարգավորումը՝ PPTP թե՞ OpenVPN?, ներառում է արձանագրություններ, որոնք ավելի պարզ են կարգավորելու համար, բայց շատ ավելի հեշտ է DPI-ի համար հայտնաբերել և արգելափակել: Պրոքսիի գործարկումից հետո սերվերի ընդհանուր կարծրացման համար տես՝ Linux օգտատերեր. կառավարում և թույլտվություններ :