English Русская версия Hrvatski Svenska Ελληνικά Deutsch 繁體中文 简体中文 Español Français
O Cjdns implementa uma rede IPv6 criptografada usando criptografia de chave pública para alocação de endereços e uma tabela de hash distribuída para roteamento. Isso fornece configuração de rede quase zero e evita muitos dos aspectos de segurança e problemas de escalabilidade que afetam as redes existentes.
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
21:01 <@grewalsat> this is amazing. with my workpalce speedtest.net results I get around 6+mb speed, and with my cjdns-gate as vpn network I'm getting like 11-15mb download speed in speedtest.net
21:01 <@grewalsat> :P
21:01 <@grewalsat> plus, access anything! :D
<davidar> Yeah, I have to admit I sort of avoided hypeirc because of stuff like that
- irc://irc.efnet.org/#cjdns
- Hyperboria a maior rede de cjdns, em outubro de 2015, havia 2100 nós.
- /r/darknetplan
- #cjdns no Twitter
- /r/CJDNS
Configuração avançada:
Obrigado por seu tempo e interesse,
Os desenvolvedores do cjdns.
Estas instruções são para distribuições Linux baseadas no Debian e macOS. Eles deveriam ser informativo o suficiente para uso em outras distribuições - apenas não espere que trabalhar literalmente. Se você quer saber qual é a base do sistema operacional, clique aqui.
Nas duas plataformas, a instalação do [Node.js] (https://nodejs.org/), embora seja preferível, não é estritamente necessário. Se o Node.js estiver indisponível ou uma versão inaceitável, ele será baixado e instalado na árvore de origem.
sudo apt-get install nodejs git build-essential python2.7
sudo dnf 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 nodejs git
sudo yum install @development-tools
sudo yum localinstall https://kojipkgs.fedoraproject.org//packages/cjdns/17.4/4.el6/src/cjdns-17.4-4.el6.src.rpm
Se você estiver em um laptop e o suspender ou hibernar, o cjdroute levará alguns minutos para fazer café e descobrir o que aconteceu quando acorda. Vocês pode acelerar drasticamente isso com:
systemctl enable cjdns-resume
O serviço de reinicialização reinicia o cjdns quando o sistema acorda do modo de suspensão.
emerge --ask nodejs sys-devel/gcc dev-lang/python:3.4 dev-vcs/git
Instale com Homebrew:
brew install cjdns
Instale com MacPorts:
sudo port install cjdns
pkg_add git node gcc gmake bash
Selecione a versão gcc-4.8.1p2 ou mais recente.
Tudo o que você precisa está disponível pré-compilado nas portas do FreeBSD.
pkg install gmake node
Você pode instalar cjdns executando:
pacman -S cjdns
Se você precisa construir a partir do código-fonte, tudo o que você precisa pode ser instalado assim:
pacman -S nodejs git base-devel
Como alternativa, você pode instalar via AUR a partir do pacote, cjdns-git
.
Após a instalação, o arquivo de configuração está localizado em /etc/cjdroute.conf
.
Para iniciar o serviço cjdns.service
, faça:
systemctl start cjdns
Para parar:
systemctl stop cjdns
O cjdns ainda não está no repositório principal do Gentoo, então você terá que usar uma sobreposição. A maneira mais fácil é usar o Layman, mas você também pode fazê-lo manualmente.
Primeiro, você precisa instalar layman.
emerge layman
Se o layman estiver instalado corretamente, você poderá adicionar a sobreposição
layman -f
layman -a weuxel
Para atualização futura da sobreposição, use
layman -S
Agora você pode instalar o cjdns
emerge cjdns
Você precisará clonar o repositório de sobreposições
cd /opt
git clone https://github.com/Weuxel/portage-weuxel.git
Agora diga ao portage para usar este repositório
cd /etc/portage/repos.conf/
Crie um arquivo portage-weuxel.conf
contendo
[weuxel]
location = /opt/portage-weuxel
masters = gentoo
auto-sync = yes
Agora sincronize
emerge --sync
E instale cjdns
emerge cjdns
Copie o script init openrc de contrib/openrc
para /etc/init.d/
e modifique o CONFFILE
e command
parâmetro para suas necessidades.
Em seguida, inicie o cjdns emitindo
/etc/init.d/cjdns start
Configure o sistema init para iniciar automaticamente cjdns
rc-update add cjdns default
Copie o script service_restart contrib/gentoo/service_restart.sh
para qualquer diretório conveniente em
seu sistema e modifique o endereço de e-mail. Se você não deseja ser notificado, comente toda a linha.
Agora adicione uma entrada crontab como esta
# Restart crashed Services
* * * * * root /path/to/script/service_restart.sh
Dependências:
sudo eopkg install nodejs git build-essential system.devel python gcc binutils kernal-headers xorg-server-devel
Siga as etapas abaixo:
- Desculpe por tantas etapas. Um pacote está sendo trabalhado atualmente *
Clone o repositório do GitHub e mude para o diretório de origem:
git clone https://github.com/cjdelisle/cjdns.git cjdns
cd cjdns
./do
Procure por Build completed successfully, type ./cjdroute to begin setup.
e, em seguida,
prossiga abaixo:
Execute cjdroute sem opções para HELP:
./cjdroute
Se você estiver no macOS, não se preocupe com esta etapa.
LANG=C cat /dev/net/tun
Se diz: cat: /dev/net/tun: File descriptor in bad state
Bom!
Se diz: cat: /dev/net/tun: No such file or directory
, crie usando:
sudo mkdir -p /dev/net &&
sudo mknod /dev/net/tun c 10 200 &&
sudo chmod 0666 /dev/net/tun
Então cat /dev/net/tun
novamente.
Se diz: cat: /dev/net/tun: Permission denied
Você provavelmente está usando um VPS
com base na plataforma de virtualização OpenVZ. Peça ao seu provedor para ativar o
Dispositivo TUN / TAP - este é o protocolo padrão para que eles saibam exatamente o que você
necessita.
./cjdroute --genconf >> cjdroute.conf
Proteja seu arquivo conf!
Um arquivo conf perdido significa que você perdeu sua senha e conexões e qualquer pessoa conectada a você não poderá mais se conectar. Um arquivo conf comprometido significa que outras pessoas podem se passar por você na rede.
Para gerar um arquivo conf com permissões definidas, para que somente seu usuário possa lê-lo e gravá-lo:
(umask 077 && ./cjdroute --genconf > cjdroute.conf)
Para entrar em uma rede existente (por exemplo, Hyperboria), você precisa se conectar a alguém que já esteja na rede. Isso é necessário por vários motivos:
- Ajuda a evitar abusos, porque as pessoas más terão menos probabilidade de abusar de um sistema depois de terem, em um ato de bondade humana, acesso a esse sistema.
- Não se destina a sobrepor a Internet antiga, mas a substituí-la. No momento oportuno, cada conexão será substituída por um fio, um cabo de fibra ótica ou uma conexão de rede sem fio.
- Em qualquer caso de desacordo, haverá uma "cadeia de amigos" ligando as pessoas envolvidas, para que já haja uma base para chegar a uma resolução.
Para encontrar um amigo, vá lá e participe de nossa [comunidade] (# comunidade). Além disso, dê uma olhada no [Mapa da Hyperboria] (https://www.fc00.org/) para encontrar colegas perto de você.
Você também pode usar a lista geograficamente variada de credenciais de emparelhamento público para ingressar no Hyperboria em [hyperboria / peers] (https://github.com/hyperboria/peers).
Para iniciar a conexão OUTbound
No seu arquivo conf, você verá:
// Nodes to connect to.
"connectTo":
{
// Add connection credentials here to join the network
// Ask somebody who is already connected.
}
Um arquivo conf com vários nós amigos, configuração OUTbound, deve se parecer com:
// 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"
}
}
Você pode adicionar quantas conexões desejar ao atributo connectTo
,
seguindo a sintaxe JSON.
Para permitir que seu amigo inicie a conexão INbound
No seu arquivo conf, você verá:
"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"}
],
Um arquivo conf com vários nós amigos, configuração INbound, deve se parecer com:
"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"}
],
Você precisa fornecer a William Jevons (que está fazendo a conexão de entrada) os seguintes 4 itens:
-
Seu IPv4 externo
-
A porta encontrada no seu arquivo conf aqui:
// Bind to this port. "bind": "0.0.0.0:yourportnumberishere",
-
A senha exclusiva deles que você descomentou ou criou:
"password": "thisisauniquestring_002"
-
Sua chave pública:
"publicKey": "thisisauniqueKEY_001.k"
-
O nome de usuário dele: "William Jevons"
Suas credenciais de login terão a seguinte aparência (com seu IPv4 e porta):
"1.2.3.4:56789": {
"login": "William Jevons",
"password": "thisisauniquestring_002",
"publicKey": "thisIsJustForAnExampleDoNotUseThisInYourConfFile_1.k"
}
Observe que você e seu amigo podem * iniciar * uma conexão de saída (de VOCÊ -> AMIGO) ou de entrada (de AMIGO -> VOCÊ), mas o tráfego flui para os dois lados quando a conexão é estabelecida.
Consulte doc/configure.md para obter mais detalhes sobre configuração, incluindo como fazer pares com outros nós cjdns por Ethernet e Wi-Fi.
Depois que o nó estiver em execução, você será um host IPv6 recém-criado. Seu sistema operacional pode reconfigurar automaticamente os serviços de rede para usar esse novo endereço. Se não é isso que você pretende, verifique se não está oferecendo mais serviços do que você pretendia. ;)
Consulte doc/network-services.md para obter instruções.
sudo ./cjdroute < cjdroute.conf
Se você deseja que seus logs sejam gravados em um arquivo:
sudo ./cjdroute < cjdroute.conf > cjdroute.log
Para parar cjdns:
sudo killall cjdroute
Se você estiver tendo problemas, use killall cjdroute
para retornar à sanidade. Use
pgrep cjdroute
ou top
para ver se está rodando.
NOTA!
Isso inicia o cjdns como usuário root, para que ele possa configurar seu sistema sem se preocupar com permissões. Para iniciar o cjdns como um usuário não root, consulte doc/non-root-user.md.
Bem-vindo à rede! Agora você é um administrador de rede. Existem responsabilidades inerentes ao administrador da rede, que incluem a disponibilidade, caso haja algo errado com o seu equipamento. Você deve permanecer no IRC para que as pessoas possam alcançá-lo.
Quando o cjdroute estiver em funcionamento, a interface administrativa estará disponível em
udp://localhost:11234
(isso pode ser alterado no arquivo de configuração cjdroute.conf
). Consulte doc/admin-api.md para mais
informações sobre a interface de administração. Existem várias ferramentas no contrib/
que pode interagir com ele.
Você pode acessar a API do administrador com:
- Não reporte neste repositório, em vez disso, https://github.com/hyperboria/bugs/issues
- Entre no IRC e converse com alguém
- O que vai acontecer é
- Alguém quer consertar
- Você quer consertá-lo
- Ninguém se importa com isso e será esquecido por um tempo e talvez alguém o acerte mais tarde e conserte-o, caso contrário ele será apagado em uma refatoração
- Ninguém pode consertá-lo no momento, mas é considerado digno de lembrança, porque possui ótimas importante para a maneira como o código é desenvolvido, nesse caso, ele precisa ser explicado em detalhes técnicos. termos por alguém com forte familiaridade com o código. Eles farão uma solicitação de recebimento para o diretório docs/bugs.
Os problemas de segurança devem ser relatados no IRC da mesma forma que outros bugs. Não temos um fechado grupo de pessoas com conhecimentos especiais, o que significa que o método padrão de relatório de segurança é transparência completa.
Consulte: security_specification.md para ver se um possível problema de segurança é realmente um problema de segurança.
Naquela época do ano novamente ... Hora de alguns projetos de código aberto!