# cjdns [English](README.md) [Русская версия](README_RU.md) [Hrvatski](README_HR.md) [Svenska](README_SV.md) [Deutsch](README_DE.md) [繁體中文](README_ZHT.md) [Español](README_ES.md) [Français](README_FR.md) [Português brasileiro](README_PT-BR.md) #### *Η δικτύωση επανεφευρέθηκε* Cjdns υλοποιεί ένα κρυπτογραφημένο δίκτυο IPV6 χρησιμοποιώντας κρυπτογραφία δημόσιου-κλειδιού για κατανομή διευθύνσεων και ένα κατανεμημένο πίνακα hash για δρομολόγηση. Αυτό προσφέρει σχεδόν-μηδενικής-ρύθμισης δικτύωση, και αποτρέπει πολλά ζητήματα ασφαλείας και επεκτασιμότητας που μαστίζουν τα υπάρχοντα δίκτυα. [![Build Status](https://api.travis-ci.org/cjdelisle/cjdns.svg?branch=master)](https://travis-ci.org/cjdelisle/cjdns) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/387/badge)](https://bestpractices.coreinfrastructure.org/projects/387) [![tip for next commit](https://tip4commit.com/projects/941.svg)](https://tip4commit.com/github/cjdelisle/cjdns) [![irc](https://img.shields.io/badge/irc%20chat-%23cjdns-blue.svg)](https://kiwiirc.com/client/irc.efnet.org/?nick=visitor|?#cjdns) ![License](https://img.shields.io/github/license/cjdelisle/cjdns.svg) ## Γνώμες πελατών 23:26 <@jercos> well, cjdns is now officially more reliable than the open internet for getting to my cheaper VPSes :| 12:52 < mariner> so i don't know if it's been done before, and i assume it's obvious, but I think it's neat. Currently on hype from an airplane 00:36 < tester> man sites take so long to load on i2p 00:36 < tester> i value speed over anonymity any day it's notably more reliable than the normal internet 09:46 < Kubuxu> I so love cjdns code base my internet is way better now. ​ thanks i'm really upset and sad that its better but also quite happy ## Κοινότητα * [irc://irc.efnet.org/#cjdns][IRC Web] * [Hyperboria][] the largest cjdns network, as of October 2015 there are 2100 nodes. * [/r/darknetplan][] * [#cjdns on Twitter][] ## Τεκμηρίωση * [Project Goals](doc/projectGoals.md) * [Cjdns Whitepaper](doc/Whitepaper.md) * [Cjdns στο Wikipedia]() Προχωρημένες ρυθμίσεις: * [Στήστε μια cjdns NAT πύλη για το LAN σας](doc/nat-gateway.md) * [Εγκατάσταση του cjdns σε OpenIndiana](doc/open-indiana.md) Ευχαριστούμε για το χρόνο και το ενδιαφέρον σας, Οι προγραμματιστές του cjdns. -------------------------------------------------------------------------------- ## Πώς να εγκαταστήσετε το cjdns Αυτές οι οδηγίες είναι για διανομές Debian-based Linux και macOS. Θα ήταν αρκετά πληροφοριακές για χρήση σε άλλες διανομές - απλά μην περιμένετε να δουλέψουν αυτολεξεί. ### 0. Εγκατάσταση εξαρτήσεων Και στις δύο πλατφόρμες, η εγκατάσταση του [Node.js](https://nodejs.org/en), αν και προτιμούμενη, δεν είναι αυστηρά απαραίτητη. Αν το Node.js δεν είναι διαθέσιμο ή δεν είναι αποδεκτής έκδοσης, θα κατέβει και θα εγκατασταθεί στο πηγαίο δέντρο. #### Debian-based διανομή: sudo apt-get install nodejs git build-essential python2.7 #### Fedora 22+ based διανομή: sudo dnf install install nodejs git sudo dnf install @development-tools #### RHEL based διανομή (προσθέτει το EPEL αποθετήριο): sudo yum localinstall https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo yum install install nodejs git sudo yum install @development-tools #### macOS: Εγκατάσταση με το [Homebrew](https://brew.sh/): brew install cjdns Εγκατάσταση με το [MacPorts](https://www.macports.org/): sudo port install cjdns #### OpenBSD: Δυστυχώς, το OpenBSD είναι λίγο πειραματικό αυτή τη στιγμή. pkg_add git node gcc gmake bash Διαλέξτε έκδοση gcc-4.8.1p2 ή πιο πρόσφατη. #### FreeBSD: Ό,τι χρειάζεστε είναι διαθέσιμο προκατασκευασμένο σε FreeBSD' ports. pkg install gmake node bash #### Arch: Μπορείτε να εγκαταστήσετε το cjdns τρέχοντας pacman -S cjdns Αν χρείαζεται να χτίσετε από τον πηγαίο κώδικα, όλα όσα χρείαζεστε μπορούν να εγκατασταθούν έτσι pacman -S nodejs git base-devel Εναλλακτικά, μπορείτε να το εγκαταστήσετε μέσω του AUR από το πακέτο, `cjdns-git`. Μετά την εγκατάσταση, το αρχείο ρυθμίσεων βρίσκεται στην τοποθεσία `/etc/cjdroute.conf`. Για να ξεκινήσετε το service `cjdns.service`, κάντε: systemctl start cjdns Για να το σταματήσετε: systemctl stop cjdns #### Gentoo: Το cjdns δεν βρίσκεται ακόμα στο κύριο εναποθετήριο του Gentoo, οπότε θα χρειαστεί να χρησιμοποιήσετε το ένα overlay. Ο ευκολότερος τρόπος είναι να χρησιμοποιήσετε το Layman αλλά μπορείτε και χειροκίνητα επίσης. ##### Layman: Πρώτα, θα χρειαστεί να εγκαταστήσετε το layman. emerge layman Αν το layman εγκαταστάθηκε σωστά, μπορείτε να προσθέσετε το overlay layman -f layman -a weuxel Για μελλοντικές αναβαθμίσεις του overlay χρησιμοποιήστε layman -S Τώρα μπορείτε να εγκαταστήσετε το cjdns emerge cjdns ##### Χειροκίνητα: Κλωνοποιήστε το εναποθετήριο του overlay cd /opt git clone https://github.com/Weuxel/portage-weuxel.git Πείτε στο portage να χρησιμοποιήσει το εναποθετήριο cd /etc/portage/repos.conf/ Δημιουργήστε ένα αρχείο με όνομα `portage-weuxel.conf` που να περιέχει [weuxel] location = /opt/portage-weuxel masters = gentoo auto-sync = yes Τώρα συγχρονίστε emerge --sync Και εγκαταστήστε το cjdns emerge cjdns #### Αυτόματος έλεγχος διακοπής λειτουργίας και επανεκκίνηση Αντιγράψτε το openrc init script από `contrib/openrc` στο φάκελο `/etc/init.d/` και αλλάξτε τις παραμέτρους `CONFFILE` και `command` σύμφωνα με τις ανάγκες σας. Μετά ξεκινήστε το cjdns πληκτρολογώντας /etc/init.d/cjdns start Ρυθμίστε το init system ώστε να ξεκινά το cjdns αυτόματα rc-update add cjdns default Αντιγράψτε το service_restart script `contrib/gentoo/service_restart.sh` σε οποιονδήποτε φάκελο πιστεύτε πως θα έπρεπε να βρίσκεται στο σύστημά σας και αλλάξτε τη διεύθυνση eMail. Αν δε θέλετε να ειδοποιήστε, μαρκάρετε τη γραμμή ως σχόλιο. Τώρα προσθέστε μια εγγραφή στο crontab με αυτό τον τρόπο # Restart crashed Services * * * * * root /path/to/script/service_restart.sh #### Solus: Εξαρτήσεις: sudo eopkg install nodejs git build-essential system.devel python gcc binutils kernal-headers xorg-server-devel Ακολουθήστε τα βήματα παρακάτω: *Ζητούμε συγγνώμη για τα τόσα πολλά βήματα. Προετοιμάζεται ένα πακέτο* ### 1. Ανακτήστε το cjdns από το GitHub Κλωνοποίηστε το αποθετήριο από το GitHub και περάστε στο πηγαίο φάκελο: git clone https://github.com/cjdelisle/cjdns.git cjdns cd cjdns ### 2. Χτίστε ./do Κοιτάξτε για μήνυμα `Build completed successfully, type ./cjdroute to begin setup.`, μετά προχωρήστε παρακάτω: -------------------------------------------------------------------------------- ## Στήσιμο Τρέξτε το cjdroute χωρίς επιλογές για ΒΟΗΘΕΙΑ: ./cjdroute ### 0. Βεβαιωθείτε πως έχετε το πράμα. LANG=C cat /dev/net/tun Αν λέει: `cat: /dev/net/tun: File descriptor in bad state` Καλώς! Αν λέει: `cat: /dev/net/tun: No such file or directory`, φτιάξτε το κάνοντας: sudo mkdir -p /dev/net && sudo mknod /dev/net/tun c 10 200 && sudo chmod 0666 /dev/net/tun Μετά εκτελέστε `cat /dev/net/tun` ξανά. Αν λέει: `cat: /dev/net/tun: Permission denied` Πιθανώς χρησιμοποιείται κάποιο VPS βασισμένο στην OpenVZ πλατφόρμα εικονικοποίησης. Ζητήστε από τον παροχό σας να ενεργοποιήσει τη TUN/TAP συσκευή - αυτό είναι στάνταρ πρωτόκολλο ώστε να ξέρουν ακριβώς τι χρειάζεστε. Αν εργάζεστε σε macOS, δε χρειάζεται να ανησυχείτε για αυτό το βήμα. ### 1. Δημιουργήστε ένα νέο αρχείο επιλογών ./cjdroute --genconf >> cjdroute.conf **Προστατέψτε το αρχείο επιλογών σας!** Ένα χαμένο αρχείο επιλογών σημαίνει πως χάσατε τον κωδικό και τις συνδέσεις και οποιοσδήποτε ήταν συνδεδεμένος σε εσάς δεν μπορεί πλέον να συνδεθεί. Ένα εκτεθειμένο αρχείο επιλογών σημαίνει πως άλλοι μπορούν να σας υποδηθούν στο δίκτυο. Για να δημιουργήσετε ένα αρχείο επιλογών με άδειες όπου να είστε ο μόνος χρήστης που μπορεί να το διαβάσει και να γράψει σε αυτό: (umask 077 && ./cjdroute --genconf > cjdroute.conf) ### 2. Βρείτε ένα φίλο Για να μπείτε σε ένα υπάρχον δίκτυο (π.χ. το Hyperboria), χρειάζεται να συνδεθείτε με κάποιον που είναι ήδη στο δίκτυο. Αυτό απαιτείται για τους παρακάτω λόγους: 1. Βοηθά στην αποτροπή της κατάχρησης γιατί οι κακοί άνθρωποι δε θα θέλουν και τόσο να καταχραστούν ένα σύστημα αφότου, ως κίνηση ανθρωπιάς, τους δόθηκε πρόσβαση σε αυτό το σύστημα. 2. Δεν σκοπεύει να καλύψει το "Παλιό Internet", σκοπεύει να το αντικαταστήσει. Κάθε σύνδεση με τον καιρό θα αντικατασταθεί από καλώδιο, οπτικές ίνες, σύνδεση ασύρματης δικτύωσης. 3. Σε οποιαδήποτε περίπτωση διαφωνίας, θα υπάρχει μια "αλυσίδα φίλων" που θα συνδέει τα άτομα που ασχολούνται οπότε θα υπάρχει ήδη μια βάση ώστε να βγει μια ανάλυση. Για να βρείτε ένα φίλο, βγείτε εκεί έξω και μπείτε στην [κοινότητα](#community). Επίσης, ρίξτε μια ματιά στο [Χάρτη του Hyperboria]() ώστε να βρείτε peers κοντά σας. ### 3. Συνδέστε τον κόμβο σας στον κόμβο του φίλου σας **Ξεκινήστε μια εξερχόμενη σύνδεση** Στο αρχείο επιλογών, θα δείτε: ``` javascript // Nodes to connect to. "connectTo": { // Add connection credentials here to join the network // Ask somebody who is already connected. } ``` Ένα αρχείο επιλογών με πολλαπλούς φιλικούς κόμβους, στις εξερχόμενες συνδέσεις, θα έμοιαζε κάπως έτσι: ``` javascript // Nodes to connect to. "connectTo": { //friend_1 (IPv4: 0.1.2.3; IPv6 fcaa:5bac:66e4:713:cb00:e446:c317:fc39) "0.1.2.3:45678": { "login": "k.alexander" "password": "thisIsNotARealConnection_1", "publicKey": "thisIsJustForAnExampleDoNotUseThisInYourConfFile_1.k" } //friend_2 (IPv4: 5.1.2.3; IPv6 fcbb:5bac:66e4:713:cb00:e446:c317:fc39) "5.1.2.3:5678": { "login": "k.alexander" "password": "thisIsNotARealConnection_2", "publicKey": "thisIsJustForAnExampleDoNotUseThisInYourConfFile_2.k" } } ``` Μπορείτε να προσθέσετε όσες συνδέσεις θέλετε στην `connectTo` ιδιότητα, ακολουθώντας σύνταξη JSON. **Για να επιτρέψετε στο φίλο σας να εκκινήσει μια εισερχόμενη σύνδεση** Στο αρχείο επιλογών, θα δείτε: ``` javascript "authorizedPasswords": [ // A unique string which is known to the client and server. {"password": "password001", "login": "default-login"} // More passwords should look like this. // {"password": "password002", "login": "my-second-peer"} // {"password": "password003", "login": "my-third-peer} // {"password": "password004", "login": "my-fourth-peer"} ... // "your.external.ip.goes.here:45678":{"login": "default-login", "password": "password001","publicKey":thisisauniqueKEY_001.k"} ], ``` Ένα αρχείο επιλογών με πολλαπλούς φιλικούς κόμβους, στις εισερχόμενες συνδέσεις, θα έμοιαζε κάπως έτσι: ``` javascript "authorizedPasswords": [ // A unique string which is known to the client and server. {"password": "thisisauniquestring_001", "user": "k.alexander"} // More passwords should look like this. //William Jevons (IPv4: 0.1.2.3; IPv6 fcaa:5bac:66e4:713:cb00:e446:c317:fc39) {"password": "thisisauniquestring_002", "user": "William Jevons"} //Marilyn Patel (IPv4: 5.1.2.3; IPv6 fcbb:5bac:66e4:713:cb00:e446:c317:fc39) {"password": "thisisauniquestring_003", "user": "Marilyn Patel"} // {"password": "thisisauniquestring_004"} ... // "your.external.ip.goes.here:45678":{"password": "thisisauniquestring_001","publicKey":thisisauniqueKEY_001.k"} ], ``` Χρειάζεται να δώσετε στον William Jevons (που θέλει να κάνει μια εισερχόμενη σύνδεση) τα 4 παρακάτω στοιχεία: 1. Την εξωτερική IPv4 σας 2. Την θύρα που θα βρείτε στο αρχείο επιλογών σας εδώ: `// Bind to this port. "bind": "0.0.0.0:οαριθμόςτηςθύραςείναιεδώ",` 3. Τον μοναδικό κωδικό πρόσβασης που αποσχολιάσατε ή δημιουργήσατε: `"password": "thisisauniquestring_002"` 4. Το δημόσιο κλειδί σας: `"publicKey": "thisisauniqueKEY_001.k"` 5. Το όνομα χρήστη του: "William Jevons" Το πιστοποιητικό εισόδου του θα μοιάζει κάπως έτσι (με την IPv4 και θύρα σας): ```javascript "1.2.3.4:56789": { "login": "William Jevons", "password": "thisisauniquestring_002", "publicKey": "thisIsJustForAnExampleDoNotUseThisInYourConfFile_1.k" } ``` Παρακαλούμε σημειώστε πως εσείς και ο φίλος σας μπορείτε να *εκκινήσετε* μία σύνδεση είτε εξερχόμενη (ΕΣΕΙΣ --> ΦΙΛΟΣ) ή εισερχόμενη (ΦΙΛΟ --> ΕΣΕΙΣ) αλλά η κίνηση είναι αμφίδρομη από τη στιγμή που γίνει η σύνδεση. Δείτε το [doc/configure.md](doc/configure.md) για περισσότερες πληροφορίες πάνω στις ρυθμίσεις, συμπεριλαμβανομένου του πως να συνδεθείτε με άλλους κόμβους cjdns μέσω ethernet και wifi. ### 4. Διασφαλίστε το σύστημά σας - ελέγξτε για υπηρεσίες Με το που τρέξει ο κόμβος σας, είστε ένας φρεσκοκομμένος IPv6 host. Το λειτουργικό σας σύστημα ίσως αυτόματα επανερυθμίσει τις υπηρεσίες δικτύου για να χρησιμοποιήσει τη νέα σας διεύθυνση. Εαν αυτό δεν είναι επιθυμητό από εσάς, θα πρέπει να δείτε πως δεν προσφέρετε παραπάνω υπηρεσίες από αυτές που σκοπεύατε. ;) Δείτε το [doc/network-services.md](doc/network-services.md) για οδηγίες. ### 5. Ξεκινήστε το! sudo ./cjdroute < cjdroute.conf Αν θέλετε τα καταγραφόμενα να περαστούν σε αρχείο: sudo ./cjdroute < cjdroute.conf > cjdroute.log Για να σταματήσετε το cjdns: sudo killall cjdroute Αν έχετε προβλήματα χρησιμοποιήστε `killall cjdroute` για να επιστρέψετε στη λογική. Χρησιμοποιήστε `pgrep cjdroute` ή `top` για να δείτε αν τρέχει. **ΣΗΜΕΙΩΣΗ!** Αυτό ξεκινά το cjdns ως χρήστης root ώστε να μπορεί να ρυθμίσει το σύστημά σας χωρίς ανησυχίες για τα δικαιώματα. Για να ξεκινήσετε το cjdns ως μη-root χρήστης, δείτε [doc/non-root-user.md](doc/non-root-user.md). ### 6. Μπείτε στο IRC Καλωσήρθατε στο δίκτυο! Πλέον είστε διαχειριστής δικτύου. Υπάρχουν ευθύνες που έρχονται με το να είσαι διαχειριστής δικτύου που συμπεριλαμβάνει το να είσαι διαθέσιμος σε περίπτωση που υπάρχει κάποιο πρόβλημα με τον εξοπλισμό σας. Θα πρέπει να μείνετε στο [IRC](#community) να μπορεί να σας βρει ο κόσμος. ## Διεπαφή διαχείρισης Όταν το cjdroute τρέχει, η διεπαφή διαχείρισης είναι διαθέσιμη στη `udp://localhost:11234` (αυτό μπορεί να αλλαχτεί στο `cjdroute.conf` αρχείο επιλογών). Δείτε [doc/admin-api.md](doc/admin-api.md) για περισσότερες πληροφορίες σχετικά με την διεπαφή διαχείρισης. Υπάρχουν διάφορα εργαλεία στο `contrib/` που μπορούν να αλληλεπιδράσουν με αυτή. Μπορείτε να έχετε πρόσβαση στο API διαχείρισης με: * την **Python library**; δείτε [εδώ](contrib/python/README.md). * την **Perl library**, συντηρείται από τον Mikey; δείτε [εδώ](contrib/perl/CJDNS/README). ## Αναφορά προβλημάτων 1. Μην αναφέρετε σε αυτό το εναποθετήριο, αντ' αυτού παρακαλούμε αναφέρετέ το στο https://github.com/hyperboria/bugs/issues 2. Μπείτε στο IRC και μιλήστε με κάποιο 3. Το τι μπορεί να συμβεί είναι είτε * κάποιος μπορεί να το φτιάξει * εσείς μπορείτε να το φτιάξετε * κανείς δεν ασχολείτε και παραμένει ξεχασμένο μέχρι κάποιος να πέσει πάνω του αργότερα και το φτιάξει ή απλά θα χαθεί σε κάποιο ανασχεδιασμό * κανείς δε μπορεί να το φτιάξει εκείνη τη στιγμή αλλά είναι σημαντικό να το θυμόμαστε γιατί έχει μεγάλη σημασία στον τρόπο που δημιουργείται ο κώδικας, σε αυτή την περίπτωση χρειάζεται να εξηγηθεί με τεχνικούς όρους από κάποιον που είναι οικείος με τον κώδικα. Μπορούν να κάνουν κάποιο pull request στο φάκελο docs/bugs. ### Ασφάλεια Τα προβλήματα ασφαλείας θα πρέπει να αναφέρονται στο IRC όπως και τα υπόλοιπα bugs. Δεν έχουμε κάποιο κλειστό group ανθρώπων με εξειδικευμένη γνώση οπότε αυτό σημαίνει πως η προεπιλεγμένη μέθοδος αναφοράς προβλημάτων ασφαλείας είναι η πλήρης περιγραφή. Δείτε: [security_specification.md](https://github.com/cjdelisle/cjdns/blob/master/doc/security_specification.md) ώστε να καταλάβετε αν ένα πιθανό πρόβλημα ασφάλεια είναι πραγματικά πρόβλημα ασφάλειας. [IRC Web]: http://chat.efnet.org/irc.cgi?chan=%23cjdns [Hyperboria]: https://hyperboria.net [/r/darknetplan]: https://www.reddit.com/r/darknetplan [#cjdns on Twitter]: https://twitter.com/hashtag/cjdns [Hyperboria Map]: https://www.fc00.org/ [Buildbots]: https://buildbot.meshwith.me/cjdns/waterfall [Cjdns on Wikipedia]: https://en.wikipedia.org/wiki/Cjdns [Distributed Hash Table]: https://en.wikipedia.org/wiki/Distributed_hash_table [Beyond Pain]: https://lists.torproject.org/pipermail/tor-dev/2012-October/004063.html [Kademlia]: https://en.wikipedia.org/wiki/Kademlia [Tor]: https://www.torproject.org [I2P]: https://geti2p.net/en/ [Freenet]: https://freenetproject.org