Shadowsocks құжаттамасы
навигация
Shadowsocks конфигурация пішімі
Файлды конфигурациялау
Shadowsocks JSON пішімінің конфигурацияларын қабылдайды:
{
“сервер”:”менің_серверім_ip”,
«Server_port»: 8388,
«жергілікті_порт»:1080,
«пароль»:«барфу!»,
“әдіс”:”chacha20-ietf-poly1305”
}
JSON пішімі
- сервер: хост атауы немесе сервер IP (IPv4/IPv6).
- server_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-жергілікті клиент мақсатты мекенжайдан бастап пайдалы жүктеме деректерінен кейін шифрланған деректерді жіберу арқылы ss-remote қосылымын бастайды. Қолданылатын шифрға байланысты шифрлау әртүрлі болады.
[мақсатты мекенжай][пайдалы жүк]
ss қашықтан басқару пульті шифрланған деректерді қабылдайды, содан кейін мақсатты мекенжайды шифрын шешеді және талдайды. Содан кейін ол мақсатқа жаңа TCP қосылымын жасайды және пайдалы жүктеме деректерін оған жібереді. ss-remote нысанадан жауап алады, содан кейін деректерді шифрлайды және ажыратылғанша оны ss-local ішіне қайта жібереді.
Анықтау мақсатында жергілікті және қашықтан басқару құрылғысы бірінші пакетте кейбір пайдалы жүктемемен қол алысу деректерін жіберуі керек.
UDP
ss-local мақсатты мекенжай мен пайдалы жүктемені қамтитын шифрланған деректер пакетін ss-қашықтан жібереді.
[мақсатты мекенжай][пайдалы жүк]
Шифрланған пакетті алғаннан кейін ss-қашықтан басқару құралы мақсатты мекенжайдың шифрын шешеді және талдайды. Содан кейін ол мақсатқа пайдалы жүктемесі бар жаңа деректер пакетін жібереді. ss-remote мақсаттан деректер пакеттерін алады және мақсатты мекенжайды әр пакеттегі пайдалы жүктемеге қосады. Шифрланған көшірмелер ss-local ішіне қайта жіберіледі.
[мақсатты мекенжай][пайдалы жүк]
Бұл процесті ss-local үшін желілік мекенжай аудармасын орындау арқылы ss-қашықтан басқаруға дейін қайнатуға болады.