English Русская версия Hrvatski Svenska Deutsch 繁體中文 简体中文 Español Français Português brasileiro
Cjdns υλοποιεί ένα κρυπτογραφημένο δίκτυο IPV6 χρησιμοποιώντας κρυπτογραφία δημόσιου-κλειδιού για κατανομή διευθύνσεων και ένα κατανεμημένο πίνακα hash για δρομολόγηση. Αυτό προσφέρει σχεδόν-μηδενικής-ρύθμισης δικτύωση, και αποτρέπει πολλά ζητήματα ασφαλείας και επεκτασιμότητας που μαστίζουν τα υπάρχοντα δίκτυα.
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
- irc://irc.efnet.org/#cjdns
- Hyperboria the largest cjdns network, as of October 2015 there are 2100 nodes.
- /r/darknetplan
- #cjdns on Twitter
Προχωρημένες ρυθμίσεις:
Ευχαριστούμε για το χρόνο και το ενδιαφέρον σας,
Οι προγραμματιστές του cjdns.
Αυτές οι οδηγίες είναι για διανομές Debian-based Linux και macOS. Θα ήταν αρκετά πληροφοριακές για χρήση σε άλλες διανομές - απλά μην περιμένετε να δουλέψουν αυτολεξεί.
Και στις δύο πλατφόρμες, η εγκατάσταση του Node.js, αν και προτιμούμενη, δεν είναι αυστηρά απαραίτητη. Αν το Node.js δεν είναι διαθέσιμο ή δεν είναι αποδεκτής έκδοσης, θα κατέβει και θα εγκατασταθεί στο πηγαίο δέντρο.
sudo apt-get install nodejs git build-essential python2.7
sudo dnf install install nodejs git
sudo dnf install @development-tools
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
Εγκατάσταση με το Homebrew:
brew install cjdns
Εγκατάσταση με το MacPorts:
sudo port install cjdns
Δυστυχώς, το OpenBSD είναι λίγο πειραματικό αυτή τη στιγμή.
pkg_add git node gcc gmake bash
Διαλέξτε έκδοση gcc-4.8.1p2 ή πιο πρόσφατη.
Ό,τι χρειάζεστε είναι διαθέσιμο προκατασκευασμένο σε FreeBSD' ports.
pkg install gmake node bash
Μπορείτε να εγκαταστήσετε το 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
Το cjdns δεν βρίσκεται ακόμα στο κύριο εναποθετήριο του Gentoo, οπότε θα χρειαστεί να χρησιμοποιήσετε το ένα overlay. Ο ευκολότερος τρόπος είναι να χρησιμοποιήσετε το 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
Εξαρτήσεις:
sudo eopkg install nodejs git build-essential system.devel python gcc binutils kernal-headers xorg-server-devel
Ακολουθήστε τα βήματα παρακάτω:
Ζητούμε συγγνώμη για τα τόσα πολλά βήματα. Προετοιμάζεται ένα πακέτο
Κλωνοποίηστε το αποθετήριο από το GitHub και περάστε στο πηγαίο φάκελο:
git clone https://github.com/cjdelisle/cjdns.git cjdns
cd cjdns
./do
Κοιτάξτε για μήνυμα Build completed successfully, type ./cjdroute to begin setup.
, μετά
προχωρήστε παρακάτω:
Τρέξτε το cjdroute χωρίς επιλογές για ΒΟΗΘΕΙΑ:
./cjdroute
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, δε χρειάζεται να ανησυχείτε για αυτό το βήμα.
./cjdroute --genconf >> cjdroute.conf
Προστατέψτε το αρχείο επιλογών σας!
Ένα χαμένο αρχείο επιλογών σημαίνει πως χάσατε τον κωδικό και τις συνδέσεις και οποιοσδήποτε ήταν συνδεδεμένος σε εσάς δεν μπορεί πλέον να συνδεθεί. Ένα εκτεθειμένο αρχείο επιλογών σημαίνει πως άλλοι μπορούν να σας υποδηθούν στο δίκτυο.
Για να δημιουργήσετε ένα αρχείο επιλογών με άδειες όπου να είστε ο μόνος χρήστης που μπορεί να το διαβάσει και να γράψει σε αυτό:
(umask 077 && ./cjdroute --genconf > cjdroute.conf)
Για να μπείτε σε ένα υπάρχον δίκτυο (π.χ. το Hyperboria), χρειάζεται να συνδεθείτε με κάποιον που είναι ήδη στο δίκτυο. Αυτό απαιτείται για τους παρακάτω λόγους:
- Βοηθά στην αποτροπή της κατάχρησης γιατί οι κακοί άνθρωποι δε θα θέλουν και τόσο να καταχραστούν ένα σύστημα αφότου, ως κίνηση ανθρωπιάς, τους δόθηκε πρόσβαση σε αυτό το σύστημα.
- Δεν σκοπεύει να καλύψει το "Παλιό Internet", σκοπεύει να το αντικαταστήσει. Κάθε σύνδεση με τον καιρό θα αντικατασταθεί από καλώδιο, οπτικές ίνες, σύνδεση ασύρματης δικτύωσης.
- Σε οποιαδήποτε περίπτωση διαφωνίας, θα υπάρχει μια "αλυσίδα φίλων" που θα συνδέει τα άτομα που ασχολούνται οπότε θα υπάρχει ήδη μια βάση ώστε να βγει μια ανάλυση.
Για να βρείτε ένα φίλο, βγείτε εκεί έξω και μπείτε στην κοινότητα. Επίσης, ρίξτε μια ματιά στο Χάρτη του Hyperboria ώστε να βρείτε peers κοντά σας.
Ξεκινήστε μια εξερχόμενη σύνδεση
Στο αρχείο επιλογών, θα δείτε:
// 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 παρακάτω στοιχεία:
-
Την εξωτερική IPv4 σας
-
Την θύρα που θα βρείτε στο αρχείο επιλογών σας εδώ:
// Bind to this port. "bind": "0.0.0.0:οαριθμόςτηςθύραςείναιεδώ",
-
Τον μοναδικό κωδικό πρόσβασης που αποσχολιάσατε ή δημιουργήσατε:
"password": "thisisauniquestring_002"
-
Το δημόσιο κλειδί σας:
"publicKey": "thisisauniqueKEY_001.k"
-
Το όνομα χρήστη του: "William Jevons"
Το πιστοποιητικό εισόδου του θα μοιάζει κάπως έτσι (με την IPv4 και θύρα σας):
"1.2.3.4:56789": {
"login": "William Jevons",
"password": "thisisauniquestring_002",
"publicKey": "thisIsJustForAnExampleDoNotUseThisInYourConfFile_1.k"
}
Παρακαλούμε σημειώστε πως εσείς και ο φίλος σας μπορείτε να εκκινήσετε μία σύνδεση είτε εξερχόμενη (ΕΣΕΙΣ --> ΦΙΛΟΣ) ή εισερχόμενη (ΦΙΛΟ --> ΕΣΕΙΣ) αλλά η κίνηση είναι αμφίδρομη από τη στιγμή που γίνει η σύνδεση.
Δείτε το doc/configure.md για περισσότερες πληροφορίες πάνω στις ρυθμίσεις, συμπεριλαμβανομένου του πως να συνδεθείτε με άλλους κόμβους cjdns μέσω ethernet και wifi.
Με το που τρέξει ο κόμβος σας, είστε ένας φρεσκοκομμένος IPv6 host. Το λειτουργικό σας σύστημα ίσως αυτόματα επανερυθμίσει τις υπηρεσίες δικτύου για να χρησιμοποιήσει τη νέα σας διεύθυνση. Εαν αυτό δεν είναι επιθυμητό από εσάς, θα πρέπει να δείτε πως δεν προσφέρετε παραπάνω υπηρεσίες από αυτές που σκοπεύατε. ;)
Δείτε το doc/network-services.md για οδηγίες.
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.
Καλωσήρθατε στο δίκτυο! Πλέον είστε διαχειριστής δικτύου. Υπάρχουν ευθύνες που έρχονται με το να είσαι διαχειριστής δικτύου που συμπεριλαμβάνει το να είσαι διαθέσιμος σε περίπτωση που υπάρχει κάποιο πρόβλημα με τον εξοπλισμό σας. Θα πρέπει να μείνετε στο IRC να μπορεί να σας βρει ο κόσμος.
Όταν το cjdroute τρέχει, η διεπαφή διαχείρισης είναι διαθέσιμη στη
udp://localhost:11234
(αυτό μπορεί να αλλαχτεί στο cjdroute.conf
αρχείο επιλογών). Δείτε doc/admin-api.md για περισσότερες
πληροφορίες σχετικά με την διεπαφή διαχείρισης. Υπάρχουν διάφορα εργαλεία στο contrib/
που μπορούν να αλληλεπιδράσουν με αυτή.
Μπορείτε να έχετε πρόσβαση στο API διαχείρισης με:
- Μην αναφέρετε σε αυτό το εναποθετήριο, αντ' αυτού παρακαλούμε αναφέρετέ το στο https://github.com/hyperboria/bugs/issues
- Μπείτε στο IRC και μιλήστε με κάποιο
- Το τι μπορεί να συμβεί είναι είτε
- κάποιος μπορεί να το φτιάξει
- εσείς μπορείτε να το φτιάξετε
- κανείς δεν ασχολείτε και παραμένει ξεχασμένο μέχρι κάποιος να πέσει πάνω του αργότερα και το φτιάξει ή απλά θα χαθεί σε κάποιο ανασχεδιασμό
- κανείς δε μπορεί να το φτιάξει εκείνη τη στιγμή αλλά είναι σημαντικό να το θυμόμαστε γιατί έχει μεγάλη σημασία στον τρόπο που δημιουργείται ο κώδικας, σε αυτή την περίπτωση χρειάζεται να εξηγηθεί με τεχνικούς όρους από κάποιον που είναι οικείος με τον κώδικα. Μπορούν να κάνουν κάποιο pull request στο φάκελο docs/bugs.
Τα προβλήματα ασφαλείας θα πρέπει να αναφέρονται στο IRC όπως και τα υπόλοιπα bugs. Δεν έχουμε κάποιο κλειστό group ανθρώπων με εξειδικευμένη γνώση οπότε αυτό σημαίνει πως η προεπιλεγμένη μέθοδος αναφοράς προβλημάτων ασφαλείας είναι η πλήρης περιγραφή.
Δείτε: security_specification.md ώστε να καταλάβετε αν ένα πιθανό πρόβλημα ασφάλεια είναι πραγματικά πρόβλημα ασφάλειας.