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 руу буцалгаж болно.

5 өдрийн үнэгүй туршилтаа эхлүүлээрэй