Shadowsocks დოკუმენტაცია
ნავიგაცია
Shadowsocks კონფიგურაციის ფორმატი
ფაილის კონფიგურაცია
Shadowsocks იღებს JSON ფორმატის კონფიგურაციას:
{
"სერვერი": "my_server_ip",
"server_port":8388,
"local_port": 1080,
"პაროლი": "ბარფუ!",
"მეთოდი": "chacha20-ietf-poly1305"
}
JSON ფორმატი
- სერვერი: თქვენი ჰოსტის სახელი ან სერვერის IP (IPv4/IPv6).
- server_port: სერვერის პორტის ნომერი.
- local_port: ადგილობრივი პორტის ნომერი.
- პაროლი: პაროლი, რომელიც გამოიყენება გადაცემის დაშიფვრისთვის.
- მეთოდი: დაშიფვრის მეთოდი.
დაშიფვრის მეთოდი
ჩვენ ვაკონფიგურირებთ ჩვენს სერვერებს და გირჩევთ გამოიყენოთ chacha20-ietf-poly1305 AEAD შიფრი, რადგან ის დაშიფვრის უძლიერესი მეთოდია.
თუ თქვენ დააკონფიგურირებთ საკუთარ shadowsocks სერვერს, შეგიძლიათ აირჩიოთ „chacha20-ietf-poly1305“ ან „aes-256-gcm“.
URI და QR კოდი
Shadowsocks for Android/IOS ასევე იღებს BASE64 კოდირებულ URI ფორმატის კონფიგურაციებს:
ss://BASE64-ENCODED-STRING-WITHOUT-PADDING#TAG
უბრალო URI უნდა იყოს: ss://method:password@hostname:port
ზემოაღნიშნული URI არ მიჰყვება RFC3986-ს. პაროლი ამ შემთხვევაში უნდა იყოს უბრალო ტექსტი და არა პროცენტულად დაშიფრული.
მაგალითი: ჩვენ ვიყენებთ სერვერს 192.168.100.1:8888 გამოყენების bf-cfb დაშიფვრის მეთოდი და პაროლი ტესტი/!@#:.
შემდეგ, უბრალო URI-ით ss://bf-cfb:test/!@#:@192.168.100.1:8888, ჩვენ შეგვიძლია გენერირება BASE64 კოდირებული URI:
> console.log ("ss://" + btoa("bf-cfb:test/!@#:@192.168.100.1:8888") )
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg
ამ URI-ების ორგანიზებასა და იდენტიფიცირებისთვის, შეგიძლიათ დაამატოთ ტეგი BASE64 კოდირებული სტრიქონის შემდეგ:
ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server
მიმართვისას
Shadowsocks იყენებს SOCKS5 მისამართის ფორმატში ნაპოვნი მისამართებს:
[1-ბაიტი ტიპი][ცვლადი სიგრძის ჰოსტი][2-ბაიტი პორტი]
აქ არის განსაზღვრული მისამართის ტიპები:
- 0x01: ჰოსტი არის 4 ბაიტიანი IPv4 მისამართი.
- 0x03: ჰოსტი არის ცვლადი სიგრძის სტრიქონი, დაწყებული 1 ბაიტი სიგრძით, რასაც მოჰყვება მაქსიმუმ 255 ბაიტი დომენის სახელი.
- 0x04: ჰოსტი არის 16 ბაიტიანი IPv6 მისამართი.
პორტის ნომერი არის 2-ბაიტი დიდი-ენდიანის ხელმოუწერელი მთელი რიცხვი.
TCP
ss-local კლიენტი იწყებს კავშირს ss-remote-თან დაშიფრული მონაცემების გაგზავნით, დაწყებული სამიზნე მისამართით, რასაც მოჰყვება payload მონაცემები. დაშიფვრა განსხვავებული იქნება გამოყენებული შიფრის მიხედვით.
[სამიზნე მისამართი]
ss-remote იღებს დაშიფრულ მონაცემებს, შემდეგ შიფრავს და აანალიზებს სამიზნე მისამართს. შემდეგ ის ქმნის ახალ TCP კავშირს სამიზნესთან და გადასცემს მასზე დატვირთვის მონაცემებს. ss-remote იღებს პასუხს სამიზნედან, შემდეგ შიფრავს მონაცემებს და აგზავნის უკან ss-local-ზე, სანამ არ გათიშულია.
ბუნდოვანი მიზნებისათვის, ლოკალურმა და დისტანციურმა უნდა გაგზავნონ ხელის ჩამორთმევის მონაცემები გარკვეული დატვირთვით პირველ პაკეტში.
UDP
ss-local აგზავნის დაშიფრულ მონაცემთა პაკეტს, რომელიც შეიცავს სამიზნე მისამართს და დატვირთვას ss-remote-ზე.
[სამიზნე მისამართი]
დაშიფრული პაკეტის მიღების შემდეგ, ss-remote გაშიფვრავს და აანალიზებს სამიზნე მისამართს. შემდეგ ის აგზავნის მონაცემთა ახალ პაკეტს დატვირთვით სამიზნეზე. ss-remote იღებს მონაცემთა პაკეტებს სამიზნედან და აწვდის სამიზნე მისამართს თითოეულ პაკეტში დატვირთვას. დაშიფრული ასლები იგზავნება უკან ss-local-ში.
[სამიზნე მისამართი]
ეს პროცესი შეიძლება დაიხარჯოს ss-დისტანციურად, რომელიც ასრულებს ქსელის მისამართის თარგმნას ss-local-ისთვის.