Cjdns är ett krypterat IPv6-nätverk. Adresser i nätverket baseras på assymetrisk kryptografi och paket dirigeras i nätverket genom att använda en s.k. distribuerad hashtabell (DHT, eller Distributed Hash Table på engelska). Genom denna design uppnås ett nätverk som knappt kräver någon konfiguration. Vi blir också av med många skalnings- och säkerhetsproblem som andra nätverk har.
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
Avancerad konfiguration:
Tack för visat intresse,
Följande instruktioner är till för Debian-baserade Linux-distributioner eller för OS X. De bör vara tillräckligt informativa för att kunna anpassas till andra distributioner - förvänta dig dock inte att de kommer fungera rakt av.
Cjdns byggsystem beror av Node.js. Det är att föredra om du kan installera node.js på din maskin, men det är inte nödvändigt. Om node.js inte finns installerat eller om det är en oacceptabel version kommer node.js att laddas ner och installeras i kodträdet.
sudo apt-get install nodejs git build-essential
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
Installera med homebrew:
brew install cjdns
OpenBSD är tyvärr inte stabil just nu.
pkg_add git node gcc gmake bash
Välj gcc version 4.8.1p2 eller senare.
Allt du behöver finns tillgängligt i FreeBSD' ports.
pkg install gmake node
Clone'a repositoryt från GitHub och byt till katalogen cjdns:
git clone https://github.com/cjdelisle/cjdns.git cjdns
cd cjdns
./do
Vänta tills du ser följande meddelande Build completed successfully, type ./cjdroute to begin setup.
,
fortsätt sedan med följande:
Kör cjdroute utan argument för HJÄLP:
./cjdroute
cat /dev/net/tun
Om det står: cat: /dev/net/tun: File descriptor in bad state
Bra!
Om det står: cat: /dev/net/tun: No such file or directory
, skapa den med följande kommandon:
sudo mkdir -p /dev/net &&
sudo mknod /dev/net/tun c 10 200 &&
sudo chmod 0666 /dev/net/tun
Prova sedan cat /dev/net/tun
igen.
Om det står: cat: /dev/net/tun: Permission denied
så använder du troligen en VPS
baserad på OpenVZ's virtualiseringsplattform. Fråga din leverantör om de kan
tillåta/öppna upp TUN/TAP - denna terminologi är standard så de bör förstå vad du
ber dem om. Om du använder OS X kan du ignorera detta steg.
./cjdroute --genconf >> cjdroute.conf
Skydda din konfigurationsfil!
En borttappad konfigurationsfil innebär att du tappat bort både ditt lösenord och dina uppkopplingar och alla som någonsin varit uppkopplade mot dig, kan inte längre göra det. En komprometterad konfigurationsfil innebär att någon annan kan agera som dig på nätverket.
För att generera en konfigurationfil med rättigheter där bara du kan läsa och skriva till den:
(umask 077 && ./cjdroute --genconf > cjdroute.conf)
För att koppla upp dig mot ett redan existerande nätverk (t ex Hyperboria) måste du koppla upp dig till någon som redan tillhör nätverket. Detta är nödvändigt av ett antal orsaker:
För att hitta en vän, gå med i vår community. Kolla även in Hyperboria Map för att hitta peers nära dig.
För att skapa en utgående uppkoppling
Leta upp connectTo
-attributet i din konfigurationsfil:
// Nodes to connect to.
"connectTo":
{
// Add connection credentials here to join the network
// Ask somebody who is already connected.
}
En konfigurationsfil med flera utgående vän-noder, kan se ut:
// 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"
}
}
Du kan lägga till så många uppkopplingar du vill till connectTo
-attributet.
För att tillåta din vän att göra ingående uppkoppling
Leta upp authorizedPasswords
-attributet i din konfigurationsfil:
"authorizedPasswords":
[
// A unique string which is known to the client and server.
{"password": "thisisauniquestring_001"}
// More passwords should look like this.
// {"password": "thisisauniquestring_002"}
// {"password": "thisisauniquestring_003"}
// {"password": "thisisauniquestring_004"}
...
// "your.external.ip.goes.here:45678":{"password": "thisisauniquestring_001","publicKey":thisisauniqueKEY_001.k"}
],
En konfigurationsfil med flera vän-noder uppsatta som ingående kan se ut:
"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"}
],
Du behöver ge William Jevons (som kopplar upp sig mot dig) följande fyra saker:
Den port som finns i din konfigurationsfil här:
// Bind to this port.
"bind": "0.0.0.0:yourportnumberishere",
Deras unika lösenord som du kommenterade ut eller skapade: "password": "thisisauniquestring_002"
Din publika nyckel: "publicKey": "thisisauniqueKEY_001.k"
Hens loginuppgifter kommer då se ut som följer (med din IPv4-adress och port):
"1.2.3.4:56789": {
"login": "William Jevons",
"password": "thisisauniquestring_002",
"publicKey": "thisIsJustForAnExampleDoNotUseThisInYourConfFile_1.k"
}
Var vänlig notera att både du och din vän kan påbörja en uppkoppling outbound (från DIG --> VÄN) eller inbound (från VÄN --> DIG) men trafiken flödar i båda riktningarna så fort ni har kopplat upp er mot varandra.
Se doc/configure.md för mer information om konfigurering, inkluderat hur du kan koppla upp dig mot andra cjdns noder över ethernet och wifi.
När din nod är uppe och kör är den en IPv6 host. Operativsystemet kan automatiskt omkonfigurera nätverksservices att använda den nya adressen. Om detta inte är vad du ville borde du kontrollera att du inte erbjuder fler tjänster än vad du avsåg. ;)
Se doc/network-services.md för instruktioner.
sudo ./cjdroute < cjdroute.conf
Om du vill logga till fil:
sudo ./cjdroute < cjdroute.conf > cjdroute.log
För att avsluta cjdns:
sudo killall cjdroute
sudo killall cjdns
är också användbart om du får problem. Använd
pgrep cjdroute
eller top
för att kolla om cjdroute kör eller ej.
OBS!
Detta kör cjdns som användaren root så det kan konfigurera ditt system utan att behöva bry sig om rättigheter. För att starta cjdns utan root-rättigheter, se doc/non-root-user.md.
Välkommen till nätverket! Du är nu en nätverksadministrator och med det kommer vissa skyldigheter, som bl.a. innebär att du bör vara tillgänglig i händelse av att någonting inte stämmer med din utrustning. Enklast är att logga in på IRC så att andra kan nå dig.
När cjdroute är uppe och kör så finns det ett admingränssnitt tillgängligt
på udp://localhost:11234
(detta kan ändras i cjdroute.conf
).
Se doc/admin-api.md för mer information om admingränssnittet.
Det finns flera olika verktyg i contrib/
som kan interagera med det, bl.a.: