Shadowsocks ದಸ್ತಾವೇಜನ್ನು
ಸಂಚರಣೆ
Shadowsocks ಕಾನ್ಫಿಗರೇಶನ್ ಫಾರ್ಮ್ಯಾಟ್
ಫೈಲ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ
Shadowsocks JSON ಫಾರ್ಮ್ಯಾಟ್ ಕಾನ್ಫಿಗರೇಶನ್ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ:
{
“ಸರ್ವರ್”:”my_server_ip”,
"ಸರ್ವರ್_ಪೋರ್ಟ್":8388,
"ಲೋಕಲ್_ಪೋರ್ಟ್":1080,
"ಪಾಸ್ವರ್ಡ್":"ಬಾರ್ಫೂ!",
"ವಿಧಾನ":"chacha20-ietf-poly1305"
}
JSON ಫಾರ್ಮ್ಯಾಟ್
- ಸರ್ವರ್: ನಿಮ್ಮ ಹೋಸ್ಟ್ ಹೆಸರು ಅಥವಾ ಸರ್ವರ್ IP (IPv4/IPv6).
- ಸರ್ವರ್_ಪೋರ್ಟ್: ಸರ್ವರ್ ಪೋರ್ಟ್ ಸಂಖ್ಯೆ.
- ಲೋಕಲ್_ಪೋರ್ಟ್: ಸ್ಥಳೀಯ ಪೋರ್ಟ್ ಸಂಖ್ಯೆ.
- ಗುಪ್ತಪದ: ವರ್ಗಾವಣೆಯನ್ನು ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಲು ಬಳಸುವ ಪಾಸ್ವರ್ಡ್.
- ವಿಧಾನ: ಗೂಢಲಿಪೀಕರಣ ವಿಧಾನ.
ಗೂಢಲಿಪೀಕರಣ ವಿಧಾನ
ನಾವು ನಮ್ಮ ಸರ್ವರ್ಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುತ್ತೇವೆ ಮತ್ತು ನೀವು 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-ರಿಮೋಟ್ಗೆ ಸಂಪರ್ಕವನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ಡೇಟಾವನ್ನು ಗುರಿ ವಿಳಾಸದಿಂದ ಪ್ರಾರಂಭಿಸಿ ಪೇಲೋಡ್ ಡೇಟಾ ನಂತರ ಕಳುಹಿಸುತ್ತದೆ. ಬಳಸಿದ ಸೈಫರ್ ಅನ್ನು ಅವಲಂಬಿಸಿ ಎನ್ಕ್ರಿಪ್ಶನ್ ವಿಭಿನ್ನವಾಗಿರುತ್ತದೆ.
[ಗುರಿ ವಿಳಾಸ][ಪೇಲೋಡ್]
ss-ರಿಮೋಟ್ ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾದ ಡೇಟಾವನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ, ನಂತರ ಗುರಿ ವಿಳಾಸವನ್ನು ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಪಾರ್ಸ್ ಮಾಡುತ್ತದೆ. ನಂತರ ಅದು ಗುರಿಗೆ ಹೊಸ TCP ಸಂಪರ್ಕವನ್ನು ರಚಿಸುತ್ತದೆ ಮತ್ತು ಅದಕ್ಕೆ ಪೇಲೋಡ್ ಡೇಟಾವನ್ನು ಫಾರ್ವರ್ಡ್ ಮಾಡುತ್ತದೆ. ss-remote ಗುರಿಯಿಂದ ಪ್ರತ್ಯುತ್ತರವನ್ನು ಪಡೆಯುತ್ತದೆ ನಂತರ ಡೇಟಾವನ್ನು ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಸಂಪರ್ಕ ಕಡಿತಗೊಳ್ಳುವವರೆಗೆ ಅದನ್ನು ss-local ಗೆ ಹಿಂತಿರುಗಿಸುತ್ತದೆ.
ಅಸ್ಪಷ್ಟ ಉದ್ದೇಶಗಳಿಗಾಗಿ, ಸ್ಥಳೀಯ ಮತ್ತು ರಿಮೋಟ್ ಮೊದಲ ಪ್ಯಾಕೆಟ್ನಲ್ಲಿ ಕೆಲವು ಪೇಲೋಡ್ನೊಂದಿಗೆ ಹ್ಯಾಂಡ್ಶೇಕ್ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಬೇಕು.
UDP
ss-local ಗುರಿ ವಿಳಾಸ ಮತ್ತು ಪೇಲೋಡ್ ಅನ್ನು ಹೊಂದಿರುವ ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾದ ಡೇಟಾ ಪ್ಯಾಕೆಟ್ ಅನ್ನು ss-ರಿಮೋಟ್ಗೆ ಕಳುಹಿಸುತ್ತದೆ.
[ಗುರಿ ವಿಳಾಸ][ಪೇಲೋಡ್]
ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ಪ್ಯಾಕೆಟ್ ಅನ್ನು ಸ್ವೀಕರಿಸಿದ ನಂತರ, ss-ರಿಮೋಟ್ ಗುರಿ ವಿಳಾಸವನ್ನು ಡೀಕ್ರಿಪ್ಟ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಪಾರ್ಸ್ ಮಾಡುತ್ತದೆ. ಇದು ನಂತರ ಗುರಿಗೆ ಪೇಲೋಡ್ನೊಂದಿಗೆ ಹೊಸ ಡೇಟಾ ಪ್ಯಾಕೆಟ್ ಅನ್ನು ಕಳುಹಿಸುತ್ತದೆ. ss-remote ಗುರಿಯಿಂದ ಡೇಟಾ ಪ್ಯಾಕೆಟ್ಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಪ್ರತಿ ಪ್ಯಾಕೆಟ್ನಲ್ಲಿರುವ ಪೇಲೋಡ್ಗೆ ಗುರಿ ವಿಳಾಸವನ್ನು ಪೂರ್ವಭಾವಿಯಾಗಿ ಮಾಡುತ್ತದೆ. ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ಪ್ರತಿಗಳನ್ನು ss-local ಗೆ ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ.
[ಗುರಿ ವಿಳಾಸ][ಪೇಲೋಡ್]
ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ss-remote ಗೆ ಕುದಿಸಿ ss-local ಗಾಗಿ ನೆಟ್ವರ್ಕ್ ವಿಳಾಸ ಅನುವಾದವನ್ನು ನಿರ್ವಹಿಸಬಹುದು.