1
0

README_GR.md 23 KB

cjdns

English Русская версия Hrvatski Svenska Deutsch 繁體中文 Español Français Português brasileiro

Η δικτύωση επανεφευρέθηκε

Cjdns υλοποιεί ένα κρυπτογραφημένο δίκτυο IPV6 χρησιμοποιώντας κρυπτογραφία δημόσιου-κλειδιού για κατανομή διευθύνσεων και ένα κατανεμημένο πίνακα hash για δρομολόγηση. Αυτό προσφέρει σχεδόν-μηδενικής-ρύθμισης δικτύωση, και αποτρέπει πολλά ζητήματα ασφαλείας και επεκτασιμότητας που μαστίζουν τα υπάρχοντα δίκτυα.

Build Status CII Best Practices tip for next commit irc License

Γνώμες πελατών

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

<DuoNoxSol> it's notably more reliable than the normal internet

09:46 < Kubuxu> I so love cjdns code base

<whyrusleeping> my internet is way better now.
​<whyrusleeping> thanks
<whyrusleeping> i'm really upset and sad that its better
<whyrusleeping> but also quite happy

Κοινότητα

Τεκμηρίωση

Προχωρημένες ρυθμίσεις:

Ευχαριστούμε για το χρόνο και το ενδιαφέρον σας,

Οι προγραμματιστές του cjdns.


Πώς να εγκαταστήσετε το cjdns

Αυτές οι οδηγίες είναι για διανομές Debian-based Linux και macOS. Θα ήταν αρκετά πληροφοριακές για χρήση σε άλλες διανομές - απλά μην περιμένετε να δουλέψουν αυτολεξεί.

0. Εγκατάσταση εξαρτήσεων

Και στις δύο πλατφόρμες, η εγκατάσταση του Node.js, αν και προτιμούμενη, δεν είναι αυστηρά απαραίτητη. Αν το 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:

brew install cjdns

Εγκατάσταση με το MacPorts:

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. Σε οποιαδήποτε περίπτωση διαφωνίας, θα υπάρχει μια "αλυσίδα φίλων" που θα συνδέει τα άτομα που ασχολούνται οπότε θα υπάρχει ήδη μια βάση ώστε να βγει μια ανάλυση.

Για να βρείτε ένα φίλο, βγείτε εκεί έξω και μπείτε στην κοινότητα. Επίσης, ρίξτε μια ματιά στο [Χάρτη του Hyperboria]() ώστε να βρείτε peers κοντά σας.

3. Συνδέστε τον κόμβο σας στον κόμβο του φίλου σας

Ξεκινήστε μια εξερχόμενη σύνδεση

Στο αρχείο επιλογών, θα δείτε:

// Nodes to connect to.
"connectTo":
{
    // Add connection credentials here to join the network
    // Ask somebody who is already connected.
}

Ένα αρχείο επιλογών με πολλαπλούς φιλικούς κόμβους, στις εξερχόμενες συνδέσεις, θα έμοιαζε κάπως έτσι:

// 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.

Για να επιτρέψετε στο φίλο σας να εκκινήσει μια εισερχόμενη σύνδεση

Στο αρχείο επιλογών, θα δείτε:

"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"}

],

Ένα αρχείο επιλογών με πολλαπλούς φιλικούς κόμβους, στις εισερχόμενες συνδέσεις, θα έμοιαζε κάπως έτσι:

"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 και θύρα σας):

"1.2.3.4:56789": {
    "login": "William Jevons",
    "password": "thisisauniquestring_002",
    "publicKey": "thisIsJustForAnExampleDoNotUseThisInYourConfFile_1.k"
}

Παρακαλούμε σημειώστε πως εσείς και ο φίλος σας μπορείτε να εκκινήσετε μία σύνδεση είτε εξερχόμενη (ΕΣΕΙΣ --> ΦΙΛΟΣ) ή εισερχόμενη (ΦΙΛΟ --> ΕΣΕΙΣ) αλλά η κίνηση είναι αμφίδρομη από τη στιγμή που γίνει η σύνδεση.

Δείτε το doc/configure.md για περισσότερες πληροφορίες πάνω στις ρυθμίσεις, συμπεριλαμβανομένου του πως να συνδεθείτε με άλλους κόμβους cjdns μέσω ethernet και wifi.

4. Διασφαλίστε το σύστημά σας - ελέγξτε για υπηρεσίες

Με το που τρέξει ο κόμβος σας, είστε ένας φρεσκοκομμένος IPv6 host. Το λειτουργικό σας σύστημα ίσως αυτόματα επανερυθμίσει τις υπηρεσίες δικτύου για να χρησιμοποιήσει τη νέα σας διεύθυνση. Εαν αυτό δεν είναι επιθυμητό από εσάς, θα πρέπει να δείτε πως δεν προσφέρετε παραπάνω υπηρεσίες από αυτές που σκοπεύατε. ;)

Δείτε το 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.

6. Μπείτε στο IRC

Καλωσήρθατε στο δίκτυο! Πλέον είστε διαχειριστής δικτύου. Υπάρχουν ευθύνες που έρχονται με το να είσαι διαχειριστής δικτύου που συμπεριλαμβάνει το να είσαι διαθέσιμος σε περίπτωση που υπάρχει κάποιο πρόβλημα με τον εξοπλισμό σας. Θα πρέπει να μείνετε στο IRC να μπορεί να σας βρει ο κόσμος.

Διεπαφή διαχείρισης

Όταν το cjdroute τρέχει, η διεπαφή διαχείρισης είναι διαθέσιμη στη udp://localhost:11234 (αυτό μπορεί να αλλαχτεί στο cjdroute.conf αρχείο επιλογών). Δείτε doc/admin-api.md για περισσότερες πληροφορίες σχετικά με την διεπαφή διαχείρισης. Υπάρχουν διάφορα εργαλεία στο contrib/ που μπορούν να αλληλεπιδράσουν με αυτή.

Μπορείτε να έχετε πρόσβαση στο API διαχείρισης με:

  • την Python library; δείτε εδώ.
  • την Perl library, συντηρείται από τον Mikey; δείτε εδώ.

Αναφορά προβλημάτων

  1. Μην αναφέρετε σε αυτό το εναποθετήριο, αντ' αυτού παρακαλούμε αναφέρετέ το στο https://github.com/hyperboria/bugs/issues
  2. Μπείτε στο IRC και μιλήστε με κάποιο
  3. Το τι μπορεί να συμβεί είναι είτε
    • κάποιος μπορεί να το φτιάξει
    • εσείς μπορείτε να το φτιάξετε
    • κανείς δεν ασχολείτε και παραμένει ξεχασμένο μέχρι κάποιος να πέσει πάνω του αργότερα και το φτιάξει ή απλά θα χαθεί σε κάποιο ανασχεδιασμό
    • κανείς δε μπορεί να το φτιάξει εκείνη τη στιγμή αλλά είναι σημαντικό να το θυμόμαστε γιατί έχει μεγάλη σημασία στον τρόπο που δημιουργείται ο κώδικας, σε αυτή την περίπτωση χρειάζεται να εξηγηθεί με τεχνικούς όρους από κάποιον που είναι οικείος με τον κώδικα. Μπορούν να κάνουν κάποιο pull request στο φάκελο docs/bugs.

Ασφάλεια

Τα προβλήματα ασφαλείας θα πρέπει να αναφέρονται στο IRC όπως και τα υπόλοιπα bugs. Δεν έχουμε κάποιο κλειστό group ανθρώπων με εξειδικευμένη γνώση οπότε αυτό σημαίνει πως η προεπιλεγμένη μέθοδος αναφοράς προβλημάτων ασφαλείας είναι η πλήρης περιγραφή.

Δείτε: security_specification.md ώστε να καταλάβετε αν ένα πιθανό πρόβλημα ασφάλεια είναι πραγματικά πρόβλημα ασφάλειας.