X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=doc%2Fusecases.ru.texi;h=8f12cd1da474035cff8efd88f78fbdb7d9515482;hb=a82862691446b52ed8deb7249b437be696c2030f;hp=7a7873dcf1b0f23dbca47a6f7b9ee4466159165a;hpb=c9e86aabaa2b05b13251015de97505286f536dfc;p=nncp.git diff --git a/doc/usecases.ru.texi b/doc/usecases.ru.texi index 7a7873d..8f12cd1 100644 --- a/doc/usecases.ru.texi +++ b/doc/usecases.ru.texi @@ -8,23 +8,25 @@ * Медленная/дорогая связь для больших объёмов данных, плохой QoS: UsecaseQoSRU. * Экстремальные наземные окружающие условия, нет связи: UsecaseNoLinkRU. * Односторонняя широковещательная связь: UsecaseBroadcastRU. +* Спутниковые каналы связи: UsecaseSatelliteLinksRU. * Частные, изолированные MitM/Sybil-устойчивые сети: UsecaseF2FRU. * Высоко защищённые изолированные компьютеры с воздушным зазором: UsecaseAirgapRU. * Обход сетевой цензуры, здоровье: UsecaseCensorRU. * Разведка, шпионаж, тайная агентура: UsecaseSpyRU. +* Дешёвая ночная связь: UsecaseCallerRU. @end menu @node UsecaseMailRU @subsection Доступность почтового сервера время от времени Представьте, что у вас есть собственный @url{http://www.postfix.org/, -Postfix} SMTP сервер подключённый к Интернету. Но вы читаете и пишете -почтовые сообщения на своём ноутбуке, который подключается к нему лишь -время от времени. Как опустошить очередь из ожидающих сообщений когда -ноутбук подключён? +Postfix}/@url{http://www.exim.org/, Exim} SMTP сервер подключённый к +Интернету. Но вы читаете и пишете почтовые сообщения на своём ноутбуке, +который подключается к нему лишь время от времени. Как опустошить +очередь из ожидающих сообщений когда ноутбук подключён? Одна из возможностей это войти на сервер и сделать что-то типа -@command{postqueue -f}, но по-умолчанию у вас есть только несколько дней +@command{postqueue -f}, но по умолчанию у вас есть только несколько дней на это, плюс отправитель будет получать уведомления о том, что его сообщение всё ещё не доставлено. Кроме того, вы должны использовать безопасный канал связи (SSH, VPN, итд). @@ -34,15 +36,13 @@ Postfix} SMTP сервер подключённый к Интернету. Но @url{https://ru.wikipedia.org/wiki/KISS_(%D0%BF%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF), KISS}! -Просто скажите вашим обоим Postfix-ам (на сервере и ноутбуке) отправлять -сообщения через NNCP (@ref{nncp-exec}) на заданный узел. Это делается -аналогично тому как с UUCP, и описано в -@url{http://www.postfix.org/UUCP_README.html, документации Postfix}. - -Читайте @ref{Postfix, здесь} для более подробной информации. Вся почта -будет сохранятся в NNCP @ref{Spool, спуле}, который после обмена данных -и распаковки вызовет локальный @command{sendmail} для доставки почты, -как-будто это произошло на этой же машине. +Просто скажите вашим обоим Postfix/Exim-ам (на сервере и ноутбуке) +отправлять сообщения через NNCP (@ref{nncp-exec}) на заданный узел. +Более подробно читайте для Postfix @ref{Postfix, здесь}, а для Exim +@ref{Exim, здесь}. Вся почта будет сохранятся в NNCP @ref{Spool, спуле}, +который после обмена данных и распаковки вызовет локальный +@command{sendmail} для доставки почты, как-будто это произошло на этой +же машине. @node UsecasePOPRU @subsection Легковесная и быстрая замена POP3/IMAP4 @@ -77,10 +77,10 @@ IMAP4, как правило, нет). У вас легковесный, сжа Команды: -@verbatim -% nncp-file file_i_want_to_send bob: -% nncp-file another_file bob:movie.avi -@end verbatim +@example +$ nncp-file file_i_want_to_send bob: +$ nncp-file another_file bob:movie.avi +@end example добавят в очередь отправки два файла для узла @emph{bob}. Выстрелил-и-забыл! Теперь это работа демона (или offline передачи) @@ -103,12 +103,12 @@ NNCP поддерживает @ref{Niceness, приоритезацию траф раньше или позднее остальных. Почти все команды имеют соответствующую опцию: -@verbatim -% nncp-file -nice FLASH myfile node:dst -% nncp-xfer -nice PRIORITY /mnt/shared -% nncp-call -nice NORMAL bob +@example +$ nncp-file -nice FLASH myfile node:dst +$ nncp-xfer -nice PRIORITY /mnt/shared +$ nncp-call -nice NORMAL bob [...] -@end verbatim +@end example Огромные файлы могут быть разбиты на маленькие @ref{Chunked, части}, давая возможность передачи, по сути, любых объёмов используя накопители @@ -116,10 +116,10 @@ NNCP поддерживает @ref{Niceness, приоритезацию траф Вы также можете использовать CD-ROM и ленточные накопители: -@verbatim -% nncp-bundle -tx bob | cdrecord -tao - -% nncp-bundle -tx bob | dd of=/dev/sa0 bs=10240 -@end verbatim +@example +$ nncp-bundle -tx bob | cdrecord -tao - +$ nncp-bundle -tx bob | dd of=/dev/sa0 bs=10240 +@end example @node UsecaseNoLinkRU @subsection Экстремальные наземные окружающие условия, нет связи @@ -133,9 +133,9 @@ NNCP поддерживает @ref{Niceness, приоритезацию траф устройство (SD гораздо предпочтительнее!) хранения, подмонтируйте и запустите @ref{nncp-xfer}: -@verbatim -% nncp-xfer -node bob /media/usbstick -@end verbatim +@example +$ nncp-xfer -node bob /media/usbstick +@end example чтобы скопировать все исходящие пакеты относящиеся к @emph{bob}. Используйте @option{-mkdir} опцию чтобы создать все необходимые @@ -146,16 +146,16 @@ NNCP поддерживает @ref{Niceness, приоритезацию траф @emph{bob} и к @emph{alice}, то тогда просто не указывайте @option{-node} опцию, чтобы скопировать все доступные исходящие пакеты. -@verbatim -% nncp-xfer /media/usbstick -@end verbatim +@example +$ nncp-xfer /media/usbstick +@end example Размонтируйте и передайте накопитель Бобу и Алисе. Когда они вставят накопитель в свои компьютеры, то выполнят точно такую же команду: -@verbatim -% nncp-xfer /media/usbstick -@end verbatim +@example +$ nncp-xfer /media/usbstick +@end example чтобы найти все пакеты относящиеся к их узлу и локально скопируют для дальнейшей обработки. @command{nncp-xfer} это единственная команда @@ -173,15 +173,43 @@ NNCP поддерживает @ref{Niceness, приоритезацию траф отсылать их. Они -- всего-лишь последовательность @ref{Encrypted, зашифрованных пакетов}, которые вы можете принять. -@verbatim -% nncp-bundle -tx alice bob eve ... | команда для отправки широковещательной рассылки -% команда для приёма широковещательной рассылки | nncp-bundle -rx -@end verbatim +@example +$ nncp-bundle -tx alice bob eve ... | команда для отправки широковещательной рассылки +$ команда для приёма широковещательной рассылки | nncp-bundle -rx +@end example Встроенная возможность определять дубляжи пакетов позволит вам переотправлять широковещательные рассылки время от времени, повышая шансы на то, что получатель примет их, регулярно слушая рассылку. +@node UsecaseSatelliteLinksRU +@subsection Спутниковые каналы связи + +Спутниковые каналы связи имеют @strong{очень} большие задержки вместе с +высокими пропускными способностями. Вы можете посылать мегабиты данных в +секунду, но они достигнут удалённой стороны только спустя полсекунды! +Большинство протоколов обмена файлами, таких как +@url{https://en.wikipedia.org/wiki/Files_transferred_over_shell_protocol, FISH}, +@url{https://ru.wikipedia.org/wiki/FTP, FTP}, +@url{https://ru.wikipedia.org/wiki/SCP, scp}, +@url{https://en.wikipedia.org/wiki/XMODEM, XMODEM} will perform very +будут работать очень плохо из-за большого количества приёмо-передач +(round-trips). Каждая передача файла явно генерирует пакеты запросов и +подтверждений, посылаемые поверх канала связи. Удалённая сторона ничего +не будет делать пока она их не получит. Более того, не все протоколы +позволяют делать дуплексную отправку данных (когда обе стороны посылают +данные одновременно). + +@ref{Sync, Протокол синхронизации} (SP) NNCP пытается решить все эти +особенности за счёт сокращения количества приёмо-передач, количества +проходящих пакетов. Все списки файлов, запросов на скачивание файла +группируются вместе (pipelined) в один огромный пакет. Только запросы на +остановку передачи и подтверждения успешного приёма файла явно +посылаются. Можно запросить чтобы SP только принимал или отправлял +пакеты для нашей ноды. SP может игнорировать файлы с маленьким +приоритетом. Полные списки файлов отправляются уже на этапе процедуры +рукопожатия. + @node UsecaseF2FRU @subsection Частные, изолированные MitM/Sybil-устойчивые сети @@ -213,15 +241,17 @@ NNCP поддерживает @ref{Niceness, приоритезацию траф отослать полезную нагрузку сразу же в самом первом пакете) безопасный транспорт с свойством совершенной прямой секретности. -@verbatim -% nncp-daemon -bind [::]:5400 -@end verbatim +@example +$ nncp-daemon -bind "[::]":5400 +@end example + запустит TCP демон, который будет слушать входящие соединения на всех интерфейсах. -@verbatim -% nncp-call bob -@end verbatim +@example +$ nncp-call bob +@end example + попытается подключиться к известному TCP-адресу узла @emph{bob} (взятого из конфигурационного файла), послать все связанные с ним исходящие пакеты и получить от него. Все прерванные передачи будут автоматически @@ -246,14 +276,18 @@ CD-ROM, жёстких дисков, SD, лент и USB накопителей NNCP из коробки поддерживает ретрансляцию пакетов. @verbatim -neigh: - bob: +neigh: { + bob: { [...] - addrs: - lan: [fe80::5400%igb0]:5400 + addrs: { + lan: "[fe80::5400%igb0]:5400" + } + } bob-airgap: [...] - via: [bob] + via: ["bob"] + } +} @end verbatim Такой @ref{Configuration, конфигурационный файл} говорит что у нас есть @@ -297,7 +331,7 @@ neigh: Эти ребята знают насколько небезопасен Интернет, несовместим с понятием приватности. Им необходим быстрый сброс и забор данных. Нет -возможности провести несколько итераций туда-обратно (round trip) -- +возможности провести несколько итераций приёмо-передач (round-trips) -- только сбросить данные, выстрелить и забыть. Опять же, это может быть переносной накопитель и/или @url{https://en.wikipedia.org/wiki/USB_dead_drop, USB тайник} (dead drop), @@ -316,7 +350,7 @@ Bluetooth и WiFi могут быть и довольно быстрыми, по Общение узлов между собой происходит в, так называемой, @ref{Spool, спул} области: директории содержащей только необработанные зашифрованные -пакеты. После передачи пакета вы всё-равно не сможете его прочитать: +пакеты. После передачи пакета вы всё равно не сможете его прочитать: необходимо запустить другую фазу: @ref{nncp-toss, распаковку}, которая использует ваши приватные криптографические ключи. То есть, даже если вы потеряете свой компьютер, устройства хранения и тому прочее -- это не @@ -326,3 +360,54 @@ Bluetooth и WiFi могут быть и довольно быстрыми, по файлов и почтовых сообщений) может и должна бы быть произведена на отдельном компьютере (@ref{nncp-cfgmin} команда может помочь с созданием конфигурационного файла без приватных ключей для этой цели). + +Если вы действительно хотите взять с собой приватные ключи, то +@ref{nncp-cfgenc} команда способна зашифровать ваш конфигурационный +файл. Парольная фраза вами введённая усиливается функцией нагружающей и +центральный процессор и память. + +@node UsecaseCallerRU +@subsection Дешёвая ночная связь + +Стоимость Интернет/телефонного трафика может варьироваться, в +зависимости от времени дня. Ночные звонки/соединения могут быть дешевле +в два раза. Вы хотите посылать ваши файлы в это время, но позволять +изредка проходить высокоприоритетной почте в любое время. А также вы +хотите проходить любому трафику когда узел доступен через ЛВС (LAN). + +Вы легко можете настроить ваши предпочтения в @ref{Call, настройках +звонков} для @ref{nncp-caller} команды, используемой при online связи. + +@verbatim +neigh: { + [...] + some-node: { + [...] + addrs: { + lan: "[fe80::be5f:f4ff:fedd:2752%igb0]:5400" + wan: "some-node.com:5400" + } + calls: [ + { + cron: "*/1 * * * *" + addr: lan + nice: MAX + onlinedeadline: 3600 + }, + { + cron: "*/10 * * * *" + addr: wan + nice: PRIORITY + xx: rx + }, + { + cron: "*/1 0-7 * * *" + addr: wan + nice: BULK + onlinedeadline: 3600 + maxonlinetime: 3600 + }, + ] + } +} +@end verbatim