Shadowsocks баримт бичиг
Жолоодлогын
Shadowsocks тохиргооны формат
Файлыг тохируулах
Shadowsocks нь JSON форматын тохиргоог авдаг:
{
“сервер”:”миний_серверийн_ip”,
"server_port": 8388,
"орон нутгийн_порт": 1080,
"нууц үг":"barfoo!",
"арга":"chacha20-ietf-poly1305"
}
JSON формат
- сервер: таны хостын нэр эсвэл серверийн IP (IPv4/IPv6).
- server_port: серверийн портын дугаар.
- local_port: локал портын дугаар.
- нууц үг: дамжуулалтыг шифрлэхэд ашигладаг нууц үг.
- арга: шифрлэлтийн арга.
Шифрлэлтийн арга
Бид серверүүдээ тохируулж, chacha20-ietf-poly1305 AEAD шифрийг ашиглахыг зөвлөж байна, учир нь энэ нь шифрлэлтийн хамгийн хүчтэй арга юм.
Хэрэв та өөрийн shadowsocks серверийг тохируулах бол "chacha20-ietf-poly1305" эсвэл "aes-256-gcm"-ийн аль нэгийг сонгох боломжтой.
URI ба QR код
Android / IOS-д зориулсан Shadowsocks нь мөн BASE64 кодлогдсон URI форматын тохиргоог авдаг:
ss://BASE64-КОДЧИЛСОН-СТРИНГ-ДҮҮРГЭЛГҮЙ#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 руу холболтыг эхлүүлдэг. Шифрлэлт нь ашигласан шифрээс хамаарч өөр өөр байх болно.
[зорилтот хаяг][ачаатай]
ss-алсын удирдлага нь шифрлэгдсэн өгөгдлийг хүлээн авч, дараа нь зорилтот хаягийг тайлж, задлан шинжилдэг. Дараа нь энэ нь зорилтот руу шинэ TCP холболт үүсгэж, түүнд ачааллын өгөгдлийг дамжуулдаг. ss-remote нь зорилтот хүнээс хариу хүлээн аваад өгөгдлийг шифрлээд, салгах хүртэл нь буцааж ss-local руу дамжуулдаг.
Төөрөгдлийн зорилгоор дотоод болон алсын удирдлага гар барих өгөгдлийг эхний багцад тодорхой хэмжээний ачаалалтай илгээх ёстой.
UDP
ss-local нь зорилтот хаяг болон ачааллыг агуулсан шифрлэгдсэн өгөгдлийн багцыг ss-remote руу илгээдэг.
[зорилтот хаяг][ачаатай]
Шифрлэгдсэн багцыг хүлээн авмагц ss-remote нь зорилтот хаягийн шифрийг тайлж, задлан шинжилдэг. Дараа нь зорилтот тал руугаа шинэ өгөгдлийн багц илгээдэг. ss-remote нь зорилтот цэгээс өгөгдлийн пакетуудыг хүлээн авч, багц бүрийн ачааллын өмнө зорилтот хаягийг бичнэ. Шифрлэгдсэн хуулбарыг ss-local руу буцааж илгээдэг.
[зорилтот хаяг][ачаатай]
Энэ процессыг ss-local-д сүлжээний хаягийн орчуулгыг гүйцэтгэхийн тулд ss-remote руу буцалгаж болно.