-@node Сценарии использования
+@node Сценарии
@section Сценарии использования
@menu
* Ненадёжный/дорогой канал связи: UsecaseUnreliableRU.
* Медленная/дорогая связь для больших объёмов данных, плохой QoS: UsecaseQoSRU.
* Экстремальные наземные окружающие условия, нет связи: UsecaseNoLinkRU.
+* Односторонняя широковещательная связь: UsecaseBroadcastRU.
+* Спутниковые каналы связи: UsecaseSatelliteLinksRU.
* Частные, изолированные MitM/Sybil-устойчивые сети: UsecaseF2FRU.
* Высоко защищённые изолированные компьютеры с воздушным зазором: UsecaseAirgapRU.
* Обход сетевой цензуры, здоровье: UsecaseCensorRU.
* Разведка, шпионаж, тайная агентура: UsecaseSpyRU.
+* Дешёвая ночная связь: UsecaseCallerRU.
@end menu
@node UsecaseMailRU
ноутбук подключён?
Одна из возможностей это войти на сервер и сделать что-то типа
-@command{postqueue -f}, но по-умолчанию у вас есть только несколько дней
+@command{postqueue -f}, но по умолчанию у вас есть только несколько дней
на это, плюс отправитель будет получать уведомления о том, что его
сообщение всё ещё не доставлено. Кроме того, вы должны использовать
безопасный канал связи (SSH, VPN, итд).
KISS}!
Просто скажите вашим обоим Postfix-ам (на сервере и ноутбуке) отправлять
-сообщения через NNCP (@ref{nncp-mail}) на заданный узел. Это делается
+сообщения через NNCP (@ref{nncp-exec}) на заданный узел. Это делается
аналогично тому как с UUCP, и описано в
@url{http://www.postfix.org/UUCP_README.html, документации Postfix}.
@ref{nncp-daemon} может быть соединён с @ref{nncp-caller} длительное
время -- он создаёт TCP соединение на многие часы. Когда SMTP сервер
-получает письмо, то вызывает @ref{nncp-mail} для создания исходящего
+получает письмо, то вызывает @ref{nncp-exec} для создания исходящего
зашифрованного пакета. Демон ежесекундно проверяет исходящую директорию
и сразу же посылает оповещение о недоставленных пакетах противоположной
стороне, которая сразу же их может скачать.
проблематично получить. Более того, каждый обрыв может приводить к
отсылке данных с самого начала, что не всегда по карману.
-Просто отправьте вашу @ref{nncp-mail, почту} и @ref{nncp-file, файлы}
+Просто отправьте вашу @ref{nncp-exec, почту} и @ref{nncp-file, файлы}
через NNCP. Вы сможете использовать или offline методы доставки --
читайте о них в следующем разделе, либо использовать поставляемый NNCP
@ref{nncp-daemon, TCP демон}.
Команды:
@verbatim
-% nncp-file file_i_want_to_send bob:
-% nncp-file another_file bob:movie.avi
+$ nncp-file file_i_want_to_send bob:
+$ nncp-file another_file bob:movie.avi
@end verbatim
добавят в очередь отправки два файла для узла @emph{bob}.
опцию:
@verbatim
-% nncp-file -nice 32 myfile node:dst
-% nncp-xfer -nice 192 /mnt/shared
-% nncp-call -nice 224 bob
+$ nncp-file -nice FLASH myfile node:dst
+$ nncp-xfer -nice PRIORITY /mnt/shared
+$ nncp-call -nice NORMAL bob
[...]
@end verbatim
давая возможность передачи, по сути, любых объёмов используя накопители
небольших размеров.
+Вы также можете использовать CD-ROM и ленточные накопители:
+
+@verbatim
+$ nncp-bundle -tx bob | cdrecord -tao -
+$ nncp-bundle -tx bob | dd of=/dev/sa0 bs=10240
+@end verbatim
+
@node UsecaseNoLinkRU
@subsection Экстремальные наземные окружающие условия, нет связи
передачи пакетов другим узлам.
Представьте, что вы послали два файла узлу @emph{bob}. Вставьте USB
-устройство хранения, подмонтируйте и запустите @ref{nncp-xfer}:
+устройство (SD гораздо предпочтительнее!) хранения, подмонтируйте и
+запустите @ref{nncp-xfer}:
@verbatim
-% nncp-xfer -node bob /media/usbstick
+$ nncp-xfer -node bob /media/usbstick
@end verbatim
чтобы скопировать все исходящие пакеты относящиеся к @emph{bob}.
@option{-node} опцию, чтобы скопировать все доступные исходящие пакеты.
@verbatim
-% nncp-xfer /media/usbstick
+$ nncp-xfer /media/usbstick
@end verbatim
Размонтируйте и передайте накопитель Бобу и Алисе. Когда они вставят
накопитель в свои компьютеры, то выполнят точно такую же команду:
@verbatim
-% nncp-xfer /media/usbstick
+$ nncp-xfer /media/usbstick
@end verbatim
чтобы найти все пакеты относящиеся к их узлу и локально скопируют для
дальнейшей обработки. @command{nncp-xfer} это единственная команда
используемая с переносными устройствами хранения.
+@node UsecaseBroadcastRU
+@subsection Односторонняя широковещательная связь
+
+Иногда у вас есть ёмкий, но односторонний, канал связи, например
+широковещательный сигнал со спутника. Вы не можете использовать online
+@ref{Sync, протокол синхронизации}, потому что он требует двустороннего
+взаимодействия.
+
+Вы можете использовать, так называемые, @ref{Bundles, пачки} и потоково
+отсылать их. Они -- всего-лишь последовательность @ref{Encrypted,
+зашифрованных пакетов}, которые вы можете принять.
+
+@verbatim
+$ nncp-bundle -tx alice bob eve ... | команда для отправки широковещательной рассылки
+$ команда для приёма широковещательной рассылки | nncp-bundle -rx
+@end verbatim
+
+Встроенная возможность определять дубляжи пакетов позволит вам
+переотправлять широковещательные рассылки время от времени, повышая
+шансы на то, что получатель примет их, регулярно слушая рассылку.
+
+@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-устойчивые сети
транспорт с свойством совершенной прямой секретности.
@verbatim
-% nncp-daemon -bind [::]:5400
+$ nncp-daemon -bind [::]:5400
@end verbatim
запустит TCP демон, который будет слушать входящие соединения на всех
интерфейсах.
@verbatim
-% nncp-call bob
+$ nncp-call bob
@end verbatim
попытается подключиться к известному TCP-адресу узла @emph{bob} (взятого
из конфигурационного файла), послать все связанные с ним исходящие
выбором. Компьютер без каких-либо модемов, проводных и беспроводных
сетей. Очевидно, что единственная возможность обмениваться почтой и
файлами -- использовать физически переносимые устройства хранения типа
-CD-ROM, жёстких дисков, лент и USB накопителей (худший вариант, из-за
-сложности подобных устройств).
+CD-ROM, жёстких дисков, SD, лент и USB накопителей (@strong{худший}
+вариант, из-за сложности подобных устройств).
Предполагаем что у вас есть ещё один собственный узел, стоящий "до"
безопасного, который делает базовые проверки полученных накопителей,
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, конфигурационный файл} говорит что у нас есть
Эти ребята знают насколько небезопасен Интернет, несовместим с
понятием приватности. Им необходим быстрый сброс и забор данных. Нет
-возможности провести несколько итераций туда-обратно (round trip) --
+возможности провести несколько итераций приёмо-передач (round-trips) --
только сбросить данные, выстрелить и забыть. Опять же, это может быть
переносной накопитель и/или
@url{https://en.wikipedia.org/wiki/USB_dead_drop, USB тайник} (dead drop),
Общение узлов между собой происходит в, так называемой, @ref{Spool,
спул} области: директории содержащей только необработанные зашифрованные
-пакеты. После передачи пакета вы всё-равно не сможете его прочитать:
+пакеты. После передачи пакета вы всё равно не сможете его прочитать:
необходимо запустить другую фазу: @ref{nncp-toss, распаковку}, которая
использует ваши приватные криптографические ключи. То есть, даже если вы
потеряете свой компьютер, устройства хранения и тому прочее -- это не
-так плохо, потому-что вы не носите с собой приватные ключи (ведь так?),
+так плохо, потому что вы не носите с собой приватные ключи (ведь так?),
вы не "распаковываете" эти пакеты сразу же на том же самом устройстве.
Распаковка (чтение этих зашифрованных пакетов с извлечением переданных
файлов и почтовых сообщений) может и должна бы быть произведена на
отдельном компьютере (@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