Перейти к содержимому
GitHub

Сеть

Alt-N или Команда → Сеть показывает, что этот компьютер делает в сети: какие порты открыты и кто может к ним подключиться, какие процессы обмениваются данными и с какой скоростью, все соединения и сетевые интерфейсы. Экран входит во встроенный плагин «Система», как и монитор процессов. Список занимает активную панель, а другая панель подробно показывает выбранную строку с графиками за последние 60 секунд. Пока экран открыт, Borg снимает показания раз в секунду и прекращает, когда вы его закрываете. Скорости появляются со второго замера, и каждая из них усреднена за последние 3 секунды, поэтому список, отсортированный по трафику, стоит на месте достаточно долго, чтобы его прочитать.

Чтобы переключить страницу, нажмите клавишу от 1 до 4 или щёлкните вкладку:

  • 1 Порты перечисляет все порты, которые слушают процессы, по порядку номеров. Доступ показывает, кто может подключиться: Все сети у порта, открытого на всех адресах, сам адрес у порта, привязанного к отдельным адресам, и Этот компьютер у порта, доступного только программам на этом компьютере. Порты, открытые для всех сетей, выделены, потому что их могут найти другие машины. Соед. считает соединения, пришедшие через порт, а в подробностях они перечислены вместе с трафиком.
  • 2 Процессы перечисляет процессы, которые пользуются сетью, начиная с самых активных, со скоростями приёма и передачи и числом соединений. Подробности добавляют, сколько процесс передал с момента открытия экрана, и все его соединения.
  • 3 Соединения перечисляет все соединения с процессом, другой стороной и скоростями. На широкой панели добавляются протокол и состояние TCP. Подробности показывают обе стороны, имя хоста, службу, а также полученные и отправленные байты.
  • 4 Интерфейсы перечисляет сетевые интерфейсы с типом (Wi-Fi, Ethernet, Петля, Туннель, Мост или Виртуальный), первым адресом и скоростями. ● отмечает работающий интерфейс. Подробности добавляют все адреса, MTU, байты и пакеты, которые интерфейс получил и отправил к этому моменту, и число ошибок.

В нижней строке показана общая скорость приёма и передачи компьютера по всем интерфейсам, кроме петлевого. Borg в фоне узнаёт имена удалённых адресов и, как только имя известно, показывает его вместо адреса.

Клавиша Действие
1 / 2 / 3 / 4 Показать порты / процессы / соединения / интерфейсы
/ Фильтр строк; ↑↓ по-прежнему перемещают, Enter оставляет фильтр, Esc сбрасывает его
T / N / P / C Сортировка по трафику / имени / порту / соединениям; повторное нажатие меняет порядок
Enter Показать процесс выбранной строки в мониторе процессов
K Показать процесс с открытым окном Сигнал или приоритет
R Захватить трафик выбранной строки или остановить идущий захват
Ctrl-C Скопировать адрес порта, PID, другую сторону соединения или адрес интерфейса
Tab Переключиться между списком и подробностями
Space Приостановить или возобновить сбор показаний
Alt-W Развернуть панель в фокусе
Esc Вернуться к списку, затем закрыть экран или вернуться в монитор процессов

P сортирует страницы, где есть порт, а C страницы, где считаются соединения. Щёлкните заголовок столбца, чтобы отсортировать по нему, и дважды щёлкните строку, чтобы показать её процесс. Enter на строке без процесса переводит фокус в подробности. Строка называет процесс, но не файл программы, поэтому Alt-O здесь подсказывает нажать Enter, а затем Alt-O в мониторе процессов. В мониторе процессов, который открывают Enter и K, этот процесс уже выбран, так что его память, сигналы и приоритет доступны одним нажатием (см. Сигналы и приоритет). Esc в мониторе возвращает на сетевой экран к той строке, с которой вы ушли, и графики остаются на месте.

Это работает и в обратную сторону. Alt-N в мониторе процессов открывает этот экран на строке выбранного процесса на странице 2 Процессы, а в подробностях видны его трафик и соединения. Esc возвращает в монитор. Если у процесса нет соединений и открытых портов, Borg сообщит об этом.

Фильтр оставляет строки, которые совпадают со всеми введёнными словами. Простое слово ищется в процессе, PID, порте, службе, адресе, имени хоста, состоянии, протоколе или в подписи, которую показывает строка, поэтому подойдут postgres, 5432, https и example.com. Слово с именем поля ищется только в этом поле:

Слово Оставляет
port:443, port:ssh Строки с этим номером порта или службой
proc:node, process:node Строки, где имя процесса содержит текст
pid:4100 Строки с этим PID
host:example Строки, где адрес или имя хоста содержит текст; полный адрес оставляет только этот адрес
state:listen, state:time Строки TCP в состоянии, название которого содержит текст
proto:udp, proto:tcp Строки с этим протоколом
if:en0, interface:en0 Интерфейсы, имя которых содержит текст

Поставьте ! перед словом, чтобы убрать совпавшие строки: !state:time_wait скрывает закрывающиеся соединения, а !proc:browser скрывает одну программу. Фильтр действует на всех страницах и, пока вы его вводите, показывает, сколько строк страницы он оставил.

Нажмите R, чтобы записать пакеты выбранной строки с помощью tcpdump: в macOS он уже есть, а в Linux ставится из пакета tcpdump. Окно Захват трафика начинает с этой строки:

  • Трафик определяет, что сохраняет tcpdump. На странице 1 Порты это порт и соединения, пришедшие через него, а на 3 Соединения одно соединение в обе стороны. На 2 Процессы это вариант Весь трафик, показан для выбранного процесса: tcpdump не умеет отбирать пакеты по процессу, поэтому Borg записывает весь интерфейс и открывает результат на этом процессе. Вторым вариантом всегда идёт Весь трафик интерфейса.
  • Интерфейс сначала тот, на котором находится адрес строки, а если такого нет, самый загруженный.
  • Длительность бывает 5, 10, 30 или 60 секунд либо До остановки.
  • Сохранять по умолчанию означает Начало каждого соединения, до 1 МиБ: пакеты каждого разговора сохраняются целиком, пока не перенесут 1 МиБ данных, а дальше Borg сохраняет только их заголовки. Короткие запросы остаются полными, а долгая загрузка или видеозвонок не раздувают файл. Пакеты целиком сохраняет всё, а Заголовки, первые 128 байт каждого пакета сохраняет начало каждого пакета, и файлы получаются самыми маленькими. Borg обрезает пакеты по ходу записи файла, файл остаётся обычным pcap или pcapng, а каждый обрезанный пакет по-прежнему хранит свою длину в сети.
  • В поле Ключи TLS выбирается Нет, Задать SSLKEYLOGFILE в оболочке Borg или Пропускать HTTPS через прокси Borg с временным УЦ. Второй вариант записывает ключи TLS программ, которые вы запускаете во время захвата, а третий нужен для программ, которые свои ключи не пишут (см. Расшифровка TLS).
  • Запуск появляется там, где Borg может попросить систему запросить пароль администратора. От вашего имени запускает tcpdump под вашей учётной записью, а От имени администратора запускает его от root, когда вы введёте пароль в системном окне. В macOS этот вариант называется От имени администратора, с процессом каждого пакета: tcpdump тогда слушает через pktap macOS, который помечает каждый пакет процессом, отправившим или получившим его.

↑↓ выбирают поле, ←→ или Space меняют его, Enter начинает захват, а Esc отменяет. Мышью щёлкните поле, чтобы выбрать его, и щёлкните ещё раз, чтобы изменить. Пока идёт захват, нижняя строка показывает число пакетов, байты и оставшиеся секунды, а R останавливает захват раньше времени. Захват также останавливается на 200 000 пакетов или 256 МиБ, а когда диск заполняется, останавливается и сохраняет то, что уже записал. Чтобы оставить место остальной системе, задайте keep-free-mib в разделе [network] файла настроек: тогда захват не начинается, если на диске с папкой свободно меньше этого числа МиБ, и останавливается, когда свободного места становится меньше. Через 3 секунды после начала нижняя строка показывает, когда при нынешней скорости первый из этих пределов остановит захват, например около 30 с до 256 МиБ или около 2 мин до заполнения диска, если это случится раньше, чем захват закончится сам, и в пределах часа. Если захват остановил предел, уведомление говорит, какой именно. Если закрыть экран раньше, захват остановится, и Borg сообщит, куда его сохранил.

Borg сохраняет каждый захват как capture-<date>-<time>.pcap в папку панели, которую закрывает сетевой экран. Файл доступен только вам, и потом его можно открыть в Wireshark и других программах. Захват, в котором каждый пакет помечен своим процессом, сохраняется как capture-<date>-<time>.pcapng: этот формат умеет хранить такие пометки. Так же сохраняется захват, записавший ключи TLS, когда Borg кладёт их внутрь. В захвате остаётся всё, что несли пакеты, поэтому храните его так же бережно, как сами эти данные. Каждый захват также попадает в список в разделе Файлы Borg.

Агент, подключённый через borg mcp, тоже может запросить захват, и такой захват тоже ждёт вашего одобрения (см. Что может агент).

Когда захват заканчивается, вместо живых страниц открывается просмотр трафика, и у каждого способа посмотреть на захват есть своя страница:

  • 1 Процессы показывает каждый процесс с хостами, с которыми он общался, его пакетами и байтами. Если пакеты несут свой процесс, каждый пакет принадлежит процессу, который его отправил или получил. Тогда даже процесс, проживший меньше секунды, получает своё имя, а фильтр по процессу оставляет ровно его пакеты. Иначе разговор принадлежит процессу, чей сокет держал его во время захвата, а всё остальное попадает в Неизвестный процесс.
  • 2 Хосты показывает другие машины и замеченные протоколы. Имена берутся из ответов DNS в самом захвате и из имён серверов, которые запрашивали соединения TLS, так что имя есть у большинства хостов.
  • 3 Соединения показывает каждый разговор с процессом, другой стороной, протоколом, пакетами и байтами. Подробности показывают обе стороны, имя сервера, службу, отправленные и полученные байты и поток разговора: то, что отправила каждая сторона, по порядку и без повторно переданных байтов, в шестнадцатеричном дампе с печатаемыми байтами в виде текста рядом. Поток делится на реплики, у каждой есть стрелка направления, число байтов и время прихода. Если перед репликой в захвате не хватает байтов, реплика сообщает, сколько их пропущено. Если захват сохранил только начало соединения, заголовок потока сообщает, сколько байтов после этого не сохранено, по данным заголовков пакетов. ] и [ переходят к следующей и предыдущей реплике. F3 открывает весь поток в просмотрщике в виде шестнадцатеричных строк, реплика за репликой, чтобы листать его и искать по нему. Enter показывает пакеты разговора по одному. Если у Borg есть ключи TLS этого соединения, поток показывает то, что несли его зашифрованные записи (см. Расшифровка TLS).
  • 4 Пакеты показывает все пакеты по порядку: время от начала, протокол, длину и краткое описание вроде ClientHello example.com или A example.com → 203.0.113.10. Подробности показывают уровни пакета (Ethernet, IP, TCP или UDP, а также DNS, TLS или HTTP, если Borg их читает) и его байты в шестнадцатеричном дампе. Байты в дампе расположены так же, как в шестнадцатеричных строках просмотрщика: в строке их столько, сколько помещается на панели. F3 открывает байты пакета в просмотрщике в виде шестнадцатеричных строк.
Клавиша Действие
1 / 2 / 3 / 4 Показать процессы / хосты / соединения / пакеты
Enter Спуститься на уровень ниже: от процесса или хоста к его соединениям, от соединения к его пакетам, от пакета к его подробностям
] / [ В подробностях соединения перейти к следующей или предыдущей реплике потока
/ Фильтр строк, как на живых страницах
Ctrl-C Скопировать PID, адрес, другую сторону соединения или байты пакета в hex
F3 Открыть поток соединения или байты пакета в просмотрщике в виде шестнадцатеричных строк
Tab Переключиться между списком и подробностями, где ↑↓ прокручивают
Esc Вернуться к списку, затем на уровень выше, затем сбросить фильтр, затем вернуться к живому экрану

Фильтр понимает те же слова, что и на живых страницах, а proto: ещё и совпадает с тем, что Borg распознал в пакетах: proto:dns, proto:tls, proto:http и proto:quic. Фильтр действует на всех страницах, а Enter ставит его, чтобы спуститься на уровень ниже, поэтому Esc может шагнуть обратно.

F3 на файле .pcap, .pcapng или .cap в панели открывает его в том же просмотре, начиная со страницы 2 Хосты. В файле, записанном в другом месте, нет сокетов для сопоставления, поэтому его разговоры показаны как Неизвестный процесс. В файле .pcapng, где пакеты несут свой процесс (так их сохраняют Borg и tcpdump -i pktap в macOS), каждый процесс всё равно назван по имени. Просмотр читает файлы до 256 МиБ и первые 200 000 пакетов в них.

Если Borg не находит tcpdump, захват предлагает его установить. Окно Установка tcpdump показывает точную команду для найденного менеджера пакетов: apt-get, dnf, pacman, zypper или apk в Linux либо brew из Homebrew в macOS и в Linux, где нет ни одного из них. Системные менеджеры пакетов запускаются через sudo или через doas, если sudo нет. Когда Borg работает от имени root, они запускаются напрямую. Enter вводит команду в оболочку Borg: там видно, что она делает, и пароль вы вводите сами. Esc отменяет. Когда команда завершится, уведомление сообщит, удалась ли установка, а Ctrl-O покажет её вывод. Borg ищет tcpdump заново при каждом запуске захвата, в PATH и в /usr/sbin, /usr/bin, /sbin, /bin и папках sbin Homebrew, поэтому R работает сразу после установки. Если Borg не знает ни одного менеджера пакетов на этой машине, захват завершается сообщением Для захвата нужен tcpdump, а Borg не может его найти.

tcpdump нужен доступ к устройству захвата. Borg запускает его от вашего имени, поэтому один раз выдайте себе доступ:

  • В macOS устройства /dev/bpf поначалу может открыть только root. Один раз установите Wireshark с компонентом ChmodBPF: он передаёт устройства группе access_bpf и добавляет вас в неё, и после этого можно захватывать трафик на любом интерфейсе.
  • В Linux один раз дайте tcpdump нужные возможности командой sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump. В некоторых дистрибутивах вместо этого захватывать могут участники группы pcap или wireshark.

Без доступа Borg задаёт вопрос Захват от имени администратора там, где система может запросить ваш пароль: в macOS в собственном окне пароля, а в Linux через pkexec, окно которого показывает ваш рабочий стол. Выберите «Да» и введите пароль в системном окне: Borg его не видит. Пока окно открыто, нижняя строка показывает Ожидание пароля для захвата на с именем интерфейса. Затем Borg запускает свою копию от root. Она проверяет, что её попросили захватить, и запускает tcpdump из системных папок. Пакеты идут обратно в Borg, и он сохраняет файл от вашего имени. R и длительность останавливают захват как раньше, а если Borg завершится, захват остановится вместе с ним. Если отменить системное окно, захват закончится без сообщения. Чтобы обойтись без вопроса, выберите От имени администратора в поле Запуск до начала захвата.

В Linux без pkexec Borg использует sudo, если тот может запустить tcpdump без пароля. По SSH нет рабочего стола, где можно показать окно, поэтому захват завершается сообщением Borg не может выполнить захват от имени администратора и причиной от системы. Когда Borg сам запущен от root, он ничего не спрашивает, а в macOS его захваты всегда несут процесс каждого пакета. Там, где Borg спросить не может, захват завершается сообщением Нет прав на захват на с именем интерфейса.

Если у Borg есть ключи соединения TLS, его поток на странице 3 Соединения показывает то, что несли зашифрованные записи, например запрос HTTP и ответ на него, а заголовок потока заканчивается словом расшифрован.

Ключи берутся из журнала ключей TLS. Этот файл пишут браузеры, curl, Python и многие другие программы, если переменная окружения SSLKEYLOGFILE указывает на него. Между программой и сервером тогда ничего не встаёт, поэтому это работает и для программ, которые закрепляют свои сертификаты. Для программ, которые журнал ключей не пишут, Borg может сам встать посередине (см. Через прокси Borg).

Чтобы записать ключи вместе с захватом, выберите в окне Захват трафика для поля Ключи TLS вариант Задать SSLKEYLOGFILE в оболочке Borg. Когда захват начнётся, Borg создаст рядом с ним файл capture-<date>-<time>.keylog, доступный только вам, и введёт в приглашении своей оболочки строку вроде этой. Вы увидите, как она выполнится, а потом найдёте её в истории оболочки:

Окно терминала
export SSLKEYLOGFILE='/home/me/projects/capture-20260101-120000.keylog'

В fish строка начинается с set -gx. Затем Borg вернётся на сетевой экран, где нижняя строка во время захвата показывает Ключи TLS.

Теперь запустите программу из командной строки Borg или нажмите Ctrl-O и запустите её в оболочке. Она унаследует переменную и запишет свои ключи в файл. Для программы в другом терминале нажмите L на сетевом экране, и Borg скопирует SSLKEYLOGFILE='…' с путём к журналу. Вставьте это там и допишите после него программу. Программа, которая уже работала, сохраняет настройку, с которой запустилась, поэтому закройте её и запустите снова. Особенно это касается браузеров: повторный запуск они передают уже открытому окну. В macOS команда open запускает приложения без переменных оболочки, поэтому запускайте собственную программу приложения, например /Applications/Firefox.app/Contents/MacOS/firefox.

Если оболочка Borg занята или командная строка относится к контейнеру или другой машине, Borg ничего не вводит, а уведомление сообщает об этом. L всё равно копирует строку.

Когда захват заканчивается, Borg вводит в приглашении unset SSLKEYLOGFILE (в fish set -e SSLKEYLOGFILE) или возвращает значение, с которым запустился сам Borg, а уведомление называет эту строку. Если запущенная вами программа ещё работает в оболочке, строка ждёт её завершения. Затем Borg кладёт ключи соединений захвата внутрь захвата как блок секретов расшифровки, поэтому .pcap становится .pcapng с тем же именем, и Wireshark открывает его уже расшифрованным. Журнал ключей остаётся рядом, потому что программы, запущенные во время захвата, пишут в него, пока не завершатся. Захваты, которые запрашивает агент, ключи не записывают.

SSLKEYLOGFILE читают Firefox, Chrome и другие браузеры на Chromium, большинство сборок curl и программы на Python, которые используют контекст модуля ssl по умолчанию. Другим нужен свой переключатель:

  • Node.js пишет ключи с --tls-keylog, поэтому запускайте его так: node --tls-keylog="$SSLKEYLOGFILE" app.js.
  • Программы на Go пишут их, только если сама программа задаёт KeyLogWriter в настройках TLS.
  • Программы на Rust с rustls пишут их, только если используют его KeyLogFile.
  • Java нужен агент, который встраивается в её код TLS.

Safari и другие приложения на собственных библиотеках TLS от Apple журнал ключей не пишут, и их трафик остаётся зашифрованным.

Выберите для поля Ключи TLS вариант Пропускать HTTPS через прокси Borg с временным УЦ, чтобы читать HTTPS программ, которые журнал ключей не пишут, например программ на Go и Rust или клиента, который вы не можете изменить. Когда захват начнётся, Borg запустит прокси на 127.0.0.1 и создаст удостоверяющий центр (УЦ) только для этого захвата. Ключ УЦ хранится в памяти Borg и исчезает, когда захват заканчивается. Borg вводит в приглашении своей оболочки одну строку, которая направляет HTTPS через прокси и заставляет программы доверять УЦ:

Окно терминала
export HTTPS_PROXY='http://127.0.0.1:54321' https_proxy='http://127.0.0.1:54321' SSL_CERT_FILE='…' CURL_CA_BUNDLE='…' REQUESTS_CA_BUNDLE='…' NODE_EXTRA_CA_CERTS='…'

Четыре переменные для сертификатов указывают на один файл в папке среды выполнения Borg, доступный только вам. В нём лежит сертификат УЦ, а за ним сертификаты самой системы, так что программы по-прежнему доверяют всем остальным хостам. Пока идёт захват, в нижней строке видны Прокси на и адрес прокси, а L Копировать настройки прокси копирует те же переменные для программы в другом терминале. Когда захват заканчивается, Borg возвращает своей оболочке то, что в ней было, так же как для SSLKEYLOGFILE, и удаляет файл. Свой УЦ Borg никогда не добавляет в хранилище доверенных сертификатов системы.

Программа, которая идёт через прокси, просит у него туннель к хосту. Прокси подключается к хосту и проверяет его сертификат так же, как это делает система, а затем показывает программе сертификат для того же хоста, подписанный УЦ. Программа и хост по-прежнему говорят на HTTP/2 или HTTP/1.1, на том, что выбрал хост. Прокси записывает ключи обоих сеансов TLS в журнал ключей захвата, поэтому копия соединения с хостом в захвате открывается расшифрованной, а просмотр приписывает её процессу, который запросил туннель. Всё, что идёт по туннелю не по TLS, проходит как есть.

Программы идут через прокси, если читают оба вида переменных:

  • curl, git и Python с requests или urllib следуют HTTPS_PROXY или https_proxy и доверяют набору сертификатов через CURL_CA_BUNDLE, REQUESTS_CA_BUNDLE или SSL_CERT_FILE, если работают на OpenSSL.
  • Go следует HTTPS_PROXY, кроме запросов к localhost, и читает SSL_CERT_FILE в Linux. В macOS он доверяет только сертификатам системы, поэтому там его соединения не проходят.
  • Node.js доверяет УЦ через NODE_EXTRA_CA_CERTS. Свежие версии отправляют fetch и https через прокси, если задать ещё и NODE_USE_ENV_PROXY=1.
  • Программы со своим списком сертификатов, программы, которые закрепляют сертификаты, и приложения, которые берут прокси из системных настроек, например Safari, отвергают прокси или обходят его. Отказ виден по уведомлению Программа не доверяет сертификату прокси для с именем хоста.

Если сертификат хоста не проходит проверку, прокси закрывает соединение, а уведомление сообщает Borg не смог проверить и имя хоста. Так бывает с вашими собственными сервисами, когда их сертификаты выдал УЦ для разработки, которому система не доверяет, например тот, что создаёт mkcert. Укажите папку этого УЦ в proxy-ca в разделе [network] файла config.toml:

[network]
proxy-ca = "~/Library/Application Support/mkcert" # mkcert -CAROOT prints the folder

В папке должны лежать сертификат и его ключ под именами rootCA.pem и rootCA-key.pem, как их называет mkcert, или ca.pem и ca-key.pem. Тогда вариант в окне читается как Пропускать HTTPS через прокси Borg с УЦ из и папка. Прокси подписывает сертификаты вашим УЦ, которому ваши программы уже доверяют, и сам доверяет ему, когда проверяет ваши сервисы. Берите УЦ, созданный только для разработки: тот, у кого есть его ключ, может читать трафик всего, что ему доверяет.

F3 ищет ключи в двух местах:

  • В блоке секретов расшифровки внутри файла .pcapng, где их хранит и Wireshark.
  • В журнале ключей рядом с захватом, с тем же именем и расширением .keylog, например capture-20260101-120000.keylog рядом с capture-20260101-120000.pcap.

Чтобы расшифровать захват, сделанный другим способом, запустите программу с заданной переменной во время захвата, а когда захват сохранится, переименуйте журнал ключей, чтобы его имя совпало с именем захвата:

Окно терминала
SSLKEYLOGFILE=~/tls.keylog curl https://example.com

Borg открывает записи TLS 1.3 и TLS 1.2, зашифрованные AES-128-GCM, AES-256-GCM или ChaCha20-Poly1305: эти шифры согласуют браузеры и современные серверы. Запись, которую не открыл ни один ключ, сохраняет свои зашифрованные байты, а у её реплики стоит пометка всё ещё зашифровано. Так бывает, когда в журнале нет части ключей соединения, и после байтов, которых нет в захвате: Borg не может определить, где начинается следующая запись. Трафик QUIC остаётся зашифрованным.

Журнал ключей расшифровывает каждое соединение, для которого в нём есть ключи, вместе с паролями, cookie и токенами, и то же самое делает захват с ключами внутри. Borg делает оба файла доступными только вам. Сделайте так же с журналом, который пишете сами, командой chmod 600, храните журналы ключей так же бережно, как захваты, и удаляйте оба файла, когда закончите.

В macOS Borg читает все сокеты вместе со счётчиками байтов и процессами из netstat, поэтому трафик виден и для TCP, и для UDP. Сокеты процессов других пользователей тоже попадают в список.

В Linux Borg читает сокеты из /proc/net и находит процесс каждого сокета по открытым файлам процессов. Без прав администратора он может заглянуть только в ваши собственные процессы, поэтому у сокетов других пользователей указано Неизвестный процесс. Счётчики байтов TCP берутся из ss, если эта программа установлена; у сокетов UDP и на машинах без ss вместо скоростей стоит —, а в подробностях написано Система не сообщает здесь количество байтов. Итоги и скорости интерфейсов работают всегда.

Руководство описывает ветку main · Borg 0.11.0 · 1f6bce6
В последнем выпуске может быть не всё, что здесь описано. Список изменений

Перевод с английского. Будем рады исправлениям. Команды и сочетания клавиш не переводятся.