Τεκμηρίωση Shadowsocks

Μορφή διαμόρφωσης Shadowsocks

Διαμόρφωση αρχείου

Το Shadowsocks παίρνει διαμορφώσεις μορφής JSON:

{

    “server”:”my_server_ip”,

    "server_port":8388,

    "local_port":1080,

    “password”: “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

Το Shadowsocks για Android / IOS λαμβάνει επίσης διαμορφώσεις μορφής URI με κωδικοποίηση BASE64:

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, μπορούμε να δημιουργήσουμε το κωδικοποιημένο URI BASE64: 

 

> console.log( "ss://" + btoa("bf-cfb:test/!@#:@192.168.100.1:8888") )

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg

 

Για να οργανώσετε και να αναγνωρίσετε αυτά τα URI, μπορείτε να προσθέσετε μια ετικέτα μετά την κωδικοποιημένη συμβολοσειρά BASE64:

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server

Αντιμετώπιση

Το Shadowsocks χρησιμοποιεί τις διευθύνσεις που βρίσκονται στη μορφή διεύθυνσης SOCKS5:

[τύπος 1 byte][κεντρικός υπολογιστής μεταβλητού μήκους][θύρα 2 byte]

 

Ακολουθούν οι τύποι διευθύνσεων που έχουν οριστεί:

  • 0x01 : ο κεντρικός υπολογιστής είναι μια διεύθυνση IPv4 4 byte.
  • 0x03 : ο κεντρικός υπολογιστής είναι μια συμβολοσειρά μεταβλητού μήκους, που ξεκινά με μήκος 1 byte, ακολουθούμενο από ένα μέγιστο όνομα τομέα 255 byte.
  • 0x04 : ο κεντρικός υπολογιστής είναι μια διεύθυνση IPv16 6 byte.

 

Ο αριθμός θύρας είναι ένας ανυπόγραφος ακέραιος αριθμός 2 byte big-endian.

TCP

Ο τοπικός πελάτης ss ξεκινά μια σύνδεση με το ss-remote στέλνοντας κρυπτογραφημένα δεδομένα ξεκινώντας από τη διεύθυνση προορισμού που ακολουθείται από τα δεδομένα ωφέλιμου φορτίου. Η κρυπτογράφηση θα είναι διαφορετική ανάλογα με τον κρυπτογράφηση που χρησιμοποιείται.

[διεύθυνση στόχος][ωφέλιμο φορτίο]

Το τηλεχειριστήριο ss λαμβάνει τα κρυπτογραφημένα δεδομένα, στη συνέχεια αποκρυπτογραφεί και αναλύει τη διεύθυνση προορισμού. Στη συνέχεια, δημιουργεί μια νέα σύνδεση TCP στον στόχο και προωθεί τα δεδομένα ωφέλιμου φορτίου σε αυτόν. Το ss-remote λαμβάνει μια απάντηση από τον στόχο, στη συνέχεια κρυπτογραφεί τα δεδομένα και τα προωθεί πίσω στο ss-local μέχρι να αποσυνδεθεί.

Για λόγους συσκότισης, το τοπικό και το απομακρυσμένο θα πρέπει να στέλνουν τα δεδομένα χειραψίας με κάποιο ωφέλιμο φορτίο στο πρώτο πακέτο.

UDP

Το ss-local στέλνει το κρυπτογραφημένο πακέτο δεδομένων που περιέχει τη διεύθυνση στόχο και το ωφέλιμο φορτίο στο ss-remote.

[διεύθυνση στόχος][ωφέλιμο φορτίο]

Μόλις ληφθεί το κρυπτογραφημένο πακέτο, το ss-remote αποκρυπτογραφεί και αναλύει τη διεύθυνση προορισμού. Στη συνέχεια στέλνει ένα νέο πακέτο δεδομένων με το ωφέλιμο φορτίο στον στόχο. Το ss-remote λαμβάνει τα πακέτα δεδομένων από τον στόχο και προσαρτά τη διεύθυνση προορισμού στο ωφέλιμο φορτίο σε κάθε πακέτο. Τα κρυπτογραφημένα αντίγραφα αποστέλλονται πίσω στο ss-local.

[διεύθυνση στόχος][ωφέλιμο φορτίο]

Αυτή η διαδικασία μπορεί να συνοψιστεί στο ss-remote εκτελώντας μια μετάφραση διεύθυνσης δικτύου για ss-local.

Ξεκινήστε τη δωρεάν δοκιμή 5 ημερών