English version of the Readme (она обновляется чаще,):README.md
Безопасная, зашифрованная сеть для обычных людей.
Cjdns — это зашифрованная IPv6 сеть, в которой используются публичные ключи шифрования для присвоения публичного адреса и распределённой таблицы маршрутизации (DHT). Это позволяет создавать сети с очень простой настройкой, которые будут защищены от потенциальных проблем ныне существующих IPv4 и IPv6 сетей.
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
Чтобы понять как работает маршрутизация в cjdns, очень важно понимать, как она работает в существующем интернете. На каждой развилке маршрутизатор читает адрес назначения в пакете и решает, куда его направить.
В cjdns сети на каждом пакете, который идет на локальный (программный) маршрутизатор, отмечается наилучший маршрут для него. Лучший маршрут — это самый близкий (физически) к вам роутер, имеющий адрес, близкий по значению к адресу назначения.
Следующий роутер в цепочке также читает данное поле и отправляет пакет в нужном направлении. Кроме того, роутеры постоянно взаимодействуют друг с другом, обмениваясь информацией по маршрутам с помощью Kademlia DHT.
DNS — это сложная система, которую трудно реализовать без участия какого-либо центрального сервера.
Сообщество cjdns ещё не решило, какой вектор развития примет разработка DNS в этой сети; если у вас есть идеи — то, мы вас ждём в IRC.
Cjdns — это совмещение двух слов cjd и DNS, но проект поменял направление своего развития практически в начале, и у него всё еще нет замены DNS, но имя осталось. Можете придумать свою расшифровку названия, если хотите.
Спасибо за ваше время и интерес, Caleb James DeLisle == cjdelisle == cjd
Advanced configuration:
Thank you for your time and interest,
The cjdns developers.
Эти инструкции предназначены для дистрибутива Debian и аналогичных (Ubuntu, Mint).
sudo apt-get install nodejs git build-essential
Установка Node.js желательна, но не обязательна. Если Node.js не найден в процессе установки или его версия слишком старая — он будет загружен автоматически при установке.
Склонируйте репозиторий из GitHub:
git clone https://github.com/cjdelisle/cjdns.git cjdns
cd cjdns
./do
Дождитесь сообщения Build completed successfully, type ./cjdroute to begin setup.
, и как только оно появится — действуйте дальше:
Запустите cjdroute без параметров для отображения информации и доступных опций:
./cjdroute
cat /dev/net/tun
Если ответ: cat: /dev/net/tun: File descriptor in bad state
,то всё отлично!
Если ответ: cat: /dev/net/tun: No such file or directory
,то просто создайте его:
sudo mkdir /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 устройство, это стандартный протокол, ваш провайдер должен быть в курсе.
./cjdroute --genconf >> cjdroute.conf
Для доступа в сеть вам потребуется человек который уже в сети.
Найти людей, которые готовы подключить вас, вы можете найти в IRC канале, либо можете использовать данные тестового пира http://hype.rusblock.com/Public_peers.html
В файле cjdroute.conf вы увидите:
// Nodes to connect to.
"connectTo":
{
// Add connection credentials here to join the network
// Ask somebody who is already connected.
}
После добавления данных пира он будет выглядеть как-то так:
// Nodes to connect to.
"connectTo":
{
"0.1.2.3:45678":
{
"password": "thisIsNotARealConnection",
"publicKey": "thisIsJustForAnExampleDoNotUseThisInYourConfFile.k"
}
}
Вы можете добавлять столько данных для подключения к пирам, сколько захотите.
Ваши собственные данные для подключения к вам находятся в секции "authorizedPasswords" в JSON формате. Не редактируйте их — дайте их тем, кто хочет к вам подключится.
Выглядит это так:
/* These are your connection credentials
for people connecting to you with your default password.
adding more passwords for different users is advisable
so that leaks can be isolated.
"your.external.ip.goes.here:12345":
{
"password": "thisIsNotARealConnectionEither",
"publicKey": "thisIsAlsoJustForAnExampleDoNotUseThisInYourConfFile.k"
}
*/
your.external.ip.goes.here
нужно заменить на ваш IPv4 адрес, который люди будут использовать для подключения к вам через интернет.
Страница rfcs/configure.md содержит больше информации о подключении и настройке.
Как только вы подключились к глобальной сети cjdns — вы стали обладателем публичного IPv6 адреса. Убедитесь, что запущенные на вашей машине сервисы недоступны из внешней сети.
Подробнее: doc/network-services.md
sudo ./cjdroute < cjdroute.conf
Если вы хотите записывать логи в файл, то:
sudo ./cjdroute < cjdroute.conf > cjdroute.log
Остановка cjdns осуществляется следующим образом:
sudo killall cjdroute
Если вы испытываете проблемы при использовании killall cjdroute
. Используйте pgrep cjdroute
или top
для определения, запущен ли он.
Добро пожаловать в сеть, в которой вы настоящий системный администратор.
По любым вопросам вы можете проконсультироваться в IRC: канал #cjdns
на сервере irc.efnet.org
или используйте канал #cjdns-ru
который на русском языке и на том же сервере.
Нормальная установка cjdns подразумевает запуск от имени администратора. Если вы не считаете нужным давать такие привилегии cjdns, то вы можете воспользоватся инструкцией ниже, запустив его не от root.
Никому не передавайте свой файл настроек: именно он гарантирует вашу безопасность в сети и хранит ваш идентификатор. Если у вас его украдут, то ваша безопасность будет скомпрометирована, и злоумышленник сможет представиться вами в сети.
chmod 400 cjdroute.conf
mkdir /etc/cjdns && cp ./cjdroute.conf /etc/cjdns/
Когда cjdroute запущен и работает, интерфейс администратора доступен по адресу localhost:11234 (обратите внимание, что это не веб-интерфейс, веб-интерфейс вы можете получить используя nodejs cjdns admin). Настройки порта и пароля для доступа к интерфейсу администратора доступны в файле cjdroute.conf.
Каким образом получить доступ к данному интерфейсу, вы можете прочитать по этим ссылкам: admin/README.md.
Cjdns поставляется с библиотекой для python, которая позволяет получить доступ к admin API. Больше информации вы можете получить здесь: readme.
Библиотека для perl поддерживается разработчиком Mikey. Инструкции по использованию можно получить тут: readme.