1# cjdns 2 3[Русская версия](README_RU.md) 4[Hrvatski](README_HR.md) 5[Svenska](README_SV.md) 6[Ελληνικά](README_GR.md) 7[Deutsch](README_DE.md) 8[繁體中文](README_ZHT.md) 9[Español](README_ES.md) 10[Français](README_FR.md) 11[Português brasileiro](README_PT-BR.md) 12 13#### *Rede Reinventada* 14 15O Cjdns implementa uma rede IPv6 criptografada usando criptografia de chave pública para 16alocação de endereços e uma tabela de hash distribuída para roteamento. Isso fornece 17rede de configuração quase zero e evita muitos dos aspectos de segurança e 18problemas de escalabilidade que afetam as redes existentes. 19 20[![Build Status](https://api.travis-ci.org/cjdelisle/cjdns.svg?branch=master)](https://travis-ci.org/cjdelisle/cjdns) 21[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/387/badge)](https://bestpractices.coreinfrastructure.org/projects/387) 22[![tip for next commit](https://tip4commit.com/projects/941.svg)](https://tip4commit.com/github/cjdelisle/cjdns) 23[![irc](https://img.shields.io/badge/irc%20chat-%23cjdns-blue.svg)](https://kiwiirc.com/client/irc.efnet.org/?nick=visitor|?#cjdns) 24![License](https://img.shields.io/github/license/cjdelisle/cjdns.svg) 25 26## Depoimentos 27 28 23:26 <@jercos> well, cjdns is now officially more reliable than the open 29 internet for getting to my cheaper VPSes :| 30 31 12:52 < mariner> so i don't know if it's been done before, and i assume it's 32 obvious, but I think it's neat. Currently on hype from an 33 airplane 34 35 00:36 < tester> man sites take so long to load on i2p 36 00:36 < tester> i value speed over anonymity any day 37 38 <DuoNoxSol> it's notably more reliable than the normal internet 39 40 09:46 < Kubuxu> I so love cjdns code base 41 42 <whyrusleeping> my internet is way better now. 43 <whyrusleeping> thanks 44 <whyrusleeping> i'm really upset and sad that its better 45 <whyrusleeping> but also quite happy 46 47 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 48 21:01 <@grewalsat> :P 49 21:01 <@grewalsat> plus, access anything! :D 50 51 <davidar> Yeah, I have to admit I sort of avoided hypeirc because of stuff like that 52 53## Comunidade 54 55* [irc://irc.efnet.org/#cjdns][IRC Web] 56* [Hyperboria][] a maior rede de cjdns, em outubro de 2015, havia 2100 nós. 57* [/r/darknetplan][] 58* [#cjdns no Twitter][] 59* [/r/CJDNS](https://www.reddit.com/r/cjdns/) 60 61 62## Documentação 63 64* [Objetivos do projeto](doc/projectGoals.md) 65* [Cjdns Whitepaper](doc/Whitepaper.md) 66* [Cjdns na Wikipedia][] 67 68Configuração avançada: 69 70* [Configure um gateway NAT cjdns para sua LAN](doc/nat-gateway.md) 71* [Instale cjdns no OpenIndiana](doc/open-indiana.md) 72 73Obrigado por seu tempo e interesse, 74 75Os desenvolvedores do cjdns. 76 77-------------------------------------------------------------------------------- 78 79## Como instalar o cjdns 80 81Estas instruções são para distribuições Linux baseadas no Debian e macOS. Eles deveriam ser 82informativo o suficiente para uso em outras distribuições - apenas não espere que 83trabalhar literalmente. Se você quer saber qual é a [base do sistema operacional, clique aqui](https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg). 84 85### 0. Instalar dependências 86 87Nas duas plataformas, a instalação do [Node.js] (https://nodejs.org/), embora seja preferível, 88não é estritamente necessário. Se o Node.js estiver indisponível ou uma versão inaceitável, 89ele será baixado e instalado na árvore de origem. 90 91#### Distribuição baseada no Debian: 92 93 sudo apt-get install nodejs git build-essential python2.7 94 95#### Distro baseado no Fedora 22+: 96 97 sudo dnf install nodejs git 98 sudo dnf install @development-tools 99 100#### Distribuição baseada em RHEL (adiciona o repositório EPEL): 101 102 sudo yum localinstall https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 103 sudo yum install nodejs git 104 sudo yum install @development-tools 105 106#### Construção a partir do pacote: 107 108 sudo yum localinstall https://kojipkgs.fedoraproject.org//packages/cjdns/17.4/4.el6/src/cjdns-17.4-4.el6.src.rpm 109 110Se você estiver em um laptop e o suspender ou hibernar, o cjdroute levará alguns 111minutos para fazer café e descobrir o que aconteceu quando acorda. Vocês 112pode acelerar drasticamente isso com: 113 114 systemctl enable cjdns-resume 115 116O serviço de reinicialização reinicia o cjdns quando o sistema acorda do modo de suspensão. 117 118#### Gentoo 119 120 emerge --ask nodejs sys-devel/gcc dev-lang/python:3.4 dev-vcs/git 121 122#### macOS: 123 124Instale com [Homebrew](https://brew.sh/): 125 126 brew install cjdns 127 128Instale com [MacPorts](https://www.macports.org/): 129 130 sudo port install cjdns 131 132#### OpenBSD: 133 134 pkg_add git node gcc gmake bash 135 136Selecione a versão gcc-4.8.1p2 ou mais recente. 137 138#### FreeBSD: 139 140Tudo o que você precisa está disponível pré-compilado nas portas do FreeBSD. 141 142 pkg install gmake node 143 144#### Arch: 145 146Você pode instalar cjdns executando: 147 148 pacman -S cjdns 149 150Se você precisa construir a partir do código-fonte, tudo o que você precisa pode ser instalado assim: 151 152 pacman -S nodejs git base-devel 153 154Como alternativa, você pode instalar via AUR a partir do pacote, `cjdns-git`. 155Após a instalação, o arquivo de configuração está localizado em `/etc/cjdroute.conf`. 156Para iniciar o serviço `cjdns.service`, faça: 157 158 systemctl start cjdns 159 160Para parar: 161 162 systemctl stop cjdns 163 164#### Gentoo: 165 166O cjdns ainda não está no repositório principal do Gentoo, então você terá que usar uma sobreposição. 167A maneira mais fácil é usar o Layman, mas você também pode fazê-lo manualmente. 168 169##### Layman: 170 171Primeiro, você precisa instalar layman. 172 173 emerge layman 174 175Se o layman estiver instalado corretamente, você poderá adicionar a sobreposição 176 177 layman -f 178 layman -a weuxel 179 180Para atualização futura da sobreposição, use 181 182 layman -S 183 184Agora você pode instalar o cjdns 185 186 emerge cjdns 187 188##### À mão: 189 190Você precisará clonar o repositório de sobreposições 191 192 cd /opt 193 git clone https://github.com/Weuxel/portage-weuxel.git 194 195Agora diga ao portage para usar este repositório 196 197 cd /etc/portage/repos.conf/ 198 199Crie um arquivo `portage-weuxel.conf` contendo 200 201 [weuxel] 202 location = /opt/portage-weuxel 203 masters = gentoo 204 auto-sync = yes 205 206Agora sincronize 207 208 emerge --sync 209 210E instale cjdns 211 212 emerge cjdns 213 214#### Detecção e reinício automáticos de falhas 215 216Copie o script init openrc de `contrib/openrc` para `/etc/init.d/` e modifique o `CONFFILE` e `command` parâmetro para suas necessidades. 217Em seguida, inicie o cjdns emitindo 218 219 /etc/init.d/cjdns start 220 221Configure o sistema init para iniciar automaticamente cjdns 222 223 rc-update add cjdns default 224 225Copie o script service_restart `contrib/gentoo/service_restart.sh` para qualquer diretório conveniente em 226seu sistema e modifique o endereço de e-mail. Se você não deseja ser notificado, comente toda a linha. 227Agora adicione uma entrada crontab como esta 228 229 # Restart crashed Services 230 * * * * * root /path/to/script/service_restart.sh 231 232#### Solus: 233 234Dependências: 235 236 sudo eopkg install nodejs git build-essential system.devel python gcc binutils kernal-headers xorg-server-devel 237 238Siga as etapas abaixo: 239 240* Desculpe por tantas etapas. Um pacote está sendo trabalhado atualmente * 241 242##### 1. Recuperar cjdns do GitHub 243 244Clone o repositório do GitHub e mude para o diretório de origem: 245 246 git clone https://github.com/cjdelisle/cjdns.git cjdns 247 cd cjdns 248 249##### 2. Construir 250 251 ./do 252 253Procure por `Build completed successfully, type ./cjdroute to begin setup.`e, em seguida, 254prossiga abaixo: 255 256-------------------------------------------------------------------------------- 257 258## Configuração 259 260Execute cjdroute sem opções para HELP: 261 262 ./cjdroute 263 264### 0. Verifique se você tem as coisas. 265 266Se você estiver no macOS, não se preocupe com esta etapa. 267 268 LANG=C cat /dev/net/tun 269 270Se diz: `cat: /dev/net/tun: File descriptor in bad state` Bom! 271 272Se diz: `cat: /dev/net/tun: No such file or directory`, crie usando: 273 274 sudo mkdir -p /dev/net && 275 sudo mknod /dev/net/tun c 10 200 && 276 sudo chmod 0666 /dev/net/tun 277 278Então `cat /dev/net/tun` novamente. 279 280Se diz: `cat: /dev/net/tun: Permission denied` Você provavelmente está usando um VPS 281com base na plataforma de virtualização OpenVZ. Peça ao seu provedor para ativar o 282Dispositivo TUN / TAP - este é o protocolo padrão para que eles saibam exatamente o que você 283necessita. 284 285 286### 1. Gere um novo arquivo de configuração 287 288 ./cjdroute --genconf >> cjdroute.conf 289 290**Proteja seu arquivo conf!** 291 292Um arquivo conf perdido significa que você perdeu sua senha e 293conexões e qualquer pessoa conectada a você não poderá mais se conectar. 294Um arquivo conf comprometido significa que outras pessoas podem se passar por você na rede. 295 296Para gerar um arquivo conf com permissões definidas, para que somente seu usuário possa lê-lo e gravá-lo: 297 298 (umask 077 && ./cjdroute --genconf > cjdroute.conf) 299 300 301### 2. Encontre um amigo 302 303Para 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: 304 3051. 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. 3062. 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. 3073. 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. 308 309Para 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ê. 310 311Você 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). 312 313### 3. Conecte seu nó ao nó do seu amigo 314 315**Para iniciar a conexão OUTbound** 316 317No seu arquivo conf, você verá: 318 319``` javascript 320// Nodes to connect to. 321"connectTo": 322{ 323 // Add connection credentials here to join the network 324 // Ask somebody who is already connected. 325} 326``` 327 328Um arquivo conf com vários nós amigos, configuração OUTbound, deve se parecer com: 329 330``` javascript 331// Nodes to connect to. 332"connectTo": 333{ 334 //friend_1 (IPv4: 0.1.2.3; IPv6 fcaa:5bac:66e4:713:cb00:e446:c317:fc39) 335 "0.1.2.3:45678": 336 { 337 "login": "k.alexander" 338 "password": "thisIsNotARealConnection_1", 339 "publicKey": "thisIsJustForAnExampleDoNotUseThisInYourConfFile_1.k" 340 }, 341 342 //friend_2 (IPv4: 5.1.2.3; IPv6 fcbb:5bac:66e4:713:cb00:e446:c317:fc39) 343 "5.1.2.3:5678": 344 { 345 "login": "k.alexander" 346 "password": "thisIsNotARealConnection_2", 347 "publicKey": "thisIsJustForAnExampleDoNotUseThisInYourConfFile_2.k" 348 } 349} 350``` 351 352Você pode adicionar quantas conexões desejar ao atributo `connectTo`, 353seguindo a sintaxe JSON. 354 355 356**Para permitir que seu amigo inicie a conexão INbound** 357 358No seu arquivo conf, você verá: 359 360``` javascript 361"authorizedPasswords": 362[ 363 // A unique string which is known to the client and server. 364 {"password": "password001", "login": "default-login"} 365 366 // More passwords should look like this. 367 // {"password": "password002", "login": "my-second-peer"} 368 // {"password": "password003", "login": "my-third-peer} 369 // {"password": "password004", "login": "my-fourth-peer"} 370 ... 371 372 // "your.external.ip.goes.here:45678":{"login": "default-login", "password": "password001","publicKey":thisisauniqueKEY_001.k"} 373 374], 375``` 376 377Um arquivo conf com vários nós amigos, configuração INbound, deve se parecer com: 378``` javascript 379"authorizedPasswords": 380[ 381 // A unique string which is known to the client and server. 382 {"password": "thisisauniquestring_001", "user": "k.alexander"} 383 384 // More passwords should look like this. 385 //William Jevons (IPv4: 0.1.2.3; IPv6 fcaa:5bac:66e4:713:cb00:e446:c317:fc39) 386 {"password": "thisisauniquestring_002", "user": "William Jevons"} 387 //Marilyn Patel (IPv4: 5.1.2.3; IPv6 fcbb:5bac:66e4:713:cb00:e446:c317:fc39) 388 {"password": "thisisauniquestring_003", "user": "Marilyn Patel"} 389 // {"password": "thisisauniquestring_004"} 390 ... 391 392 // "your.external.ip.goes.here:45678":{"password": "thisisauniquestring_001","publicKey":thisisauniqueKEY_001.k"} 393], 394``` 395 396 397Você precisa fornecer a William Jevons (que está fazendo a conexão de entrada) os seguintes 4 itens: 398 3991. Seu IPv4 externo 4002. A porta encontrada no seu arquivo conf aqui: 401 402 `// Bind to this port. 403 "bind": "0.0.0.0:yourportnumberishere",` 404 4053. A senha exclusiva deles que você descomentou ou criou: `"password": "thisisauniquestring_002"` 4064. Sua chave pública: `"publicKey": "thisisauniqueKEY_001.k"` 4075. O nome de usuário dele: "William Jevons" 408 409Suas credenciais de login terão a seguinte aparência (com seu IPv4 e porta): 410 411```javascript 412"1.2.3.4:56789": { 413 "login": "William Jevons", 414 "password": "thisisauniquestring_002", 415 "publicKey": "thisIsJustForAnExampleDoNotUseThisInYourConfFile_1.k" 416} 417``` 418 419Observe 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. 420 421Consulte [doc/configure.md](doc/configure.md) para obter mais detalhes sobre configuração, 422incluindo como fazer pares com outros nós cjdns por Ethernet e Wi-Fi. 423 424 425### 4. Proteja seu sistema - verifique se há serviços de escuta 426 427Depois 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. 428Se não é isso que você pretende, verifique se não está 429oferecendo mais serviços do que você pretendia. ;) 430 431Consulte [doc/network-services.md](doc/network-services.md) para obter instruções. 432 433 434### 5. Iniciar! 435 436 sudo ./cjdroute < cjdroute.conf 437 438Se você deseja que seus logs sejam gravados em um arquivo: 439 440 sudo ./cjdroute < cjdroute.conf > cjdroute.log 441 442Para parar cjdns: 443 444 sudo killall cjdroute 445 446Se você estiver tendo problemas, use `killall cjdroute` para retornar à sanidade. Use 447`pgrep cjdroute` ou `top` para ver se está rodando. 448 449**NOTA!** 450 451Isso 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 452[doc/non-root-user.md](doc/non-root-user.md). 453 454 455### 6. Entre no IRC 456 457Bem-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](#community) para que as pessoas possam alcançá-lo. 458 459## Interface de administração 460 461Quando o cjdroute estiver em funcionamento, a interface administrativa estará disponível em 462`udp://localhost:11234` (isso pode ser alterado no arquivo de configuração `cjdroute.conf`). Consulte [doc/admin-api.md](doc/admin-api.md) para mais 463informações sobre a interface de administração. Existem várias ferramentas no `contrib/` 464que pode interagir com ele. 465 466Você pode acessar a API do administrador com: 467 468* o **Python library**; consulte [aqui](contrib/python/README.md). 469* o **Perl library**, mantido por Mikey; consulte [aqui](contrib/perl/CJDNS/README). 470 471 472## Relatar problemas 4731. Não reporte neste repositório, em vez disso, https://github.com/hyperboria/bugs/issues 4742. Entre no IRC e converse com alguém 4753. O que vai acontecer é 476 * Alguém quer consertar 477 * Você quer consertá-lo 478 * Ninguém se importa com isso e será esquecido por um tempo e talvez alguém o acerte mais tarde 479 e conserte-o, caso contrário ele será apagado em uma refatoração 480 * Ninguém pode consertá-lo no momento, mas é considerado digno de lembrança, porque possui ótimas 481 importante para a maneira como o código é desenvolvido, nesse caso, ele precisa ser explicado em detalhes técnicos. 482 termos por alguém com forte familiaridade com o código. Eles farão uma solicitação de recebimento para o 483 diretório docs/bugs. 484 485### Segurança 486Os problemas de segurança devem ser relatados no IRC da mesma forma que outros bugs. Não temos um fechado 487grupo de pessoas com conhecimentos especiais, o que significa que o método padrão de relatório de segurança é 488transparência completa. 489 490Consulte: [security_specification.md](https://github.com/cjdelisle/cjdns/blob/master/doc/security_specification.md) para ver se um possível problema de segurança é realmente um problema de segurança. 491 492Naquela época do ano novamente ... Hora de alguns projetos de código aberto! 493[![Hacktoberfest](https://img.shields.io/badge/Open%20Source-Hacktoberfest-orange.svg)](https://hacktoberfest.digitalocean.com/) 494 495[IRC Web]: http://chat.efnet.org/irc.cgi?chan=%23cjdns 496[Hyperboria]: https://hyperboria.net 497[/r/darknetplan]: https://www.reddit.com/r/darknetplan 498[#cjdns no Twitter]: https://twitter.com/hashtag/cjdns 499[Hyperboria Map]: https://www.fc00.org/ 500[Buildbots]: https://buildbot.meshwith.me/cjdns/waterfall 501 502[Cjdns na Wikipedia]: https://en.wikipedia.org/wiki/Cjdns 503[Distributed Hash Table]: https://en.wikipedia.org/wiki/Distributed_hash_table 504[Beyond Pain]: https://lists.torproject.org/pipermail/tor-dev/2012-October/004063.html 505[Kademlia]: https://en.wikipedia.org/wiki/Kademlia 506 507[Tor]: https://www.torproject.org 508[I2P]: https://geti2p.net/en/ 509[Freenet]: https://freenetproject.org 510