git: a8a6804f91 - main - update translation of articles/ipsec-must to Russian

Vladlen Popolitov <[email protected]>
Newsgroups gmane.os.freebsd.devel.cvs.doc
Message-ID <[email protected]>
The branch main has been updated by vladlen:

URL: https://cgit.FreeBSD.org/doc/commit/?id=a8a6804f91c873cf3063f121ce717ece7c7b6323

commit a8a6804f91c873cf3063f121ce717ece7c7b6323
Author:     Vladlen Popolitov <[email protected]>
AuthorDate: 2025-10-02 20:29:37 +0000
Commit:     Vladlen Popolitov <[email protected]>
CommitDate: 2025-10-02 20:29:37 +0000

    update translation of articles/ipsec-must to Russian
    
    Reviewed by: maxim (mentor)
    Approved by: maxim (mentor)
    Differential Revision: https://reviews.freebsd.org/D52014
---
 .../content/ru/articles/ipsec-must/_index.adoc     |  33 +-
 .../content/ru/articles/ipsec-must/_index.po       | 757 +++++++++++++++++++++
 2 files changed, 776 insertions(+), 14 deletions(-)

diff --git a/documentation/content/ru/articles/ipsec-must/_index.adoc b/documentation/content/ru/articles/ipsec-must/_index.adoc
index 8ef1f8d028..0ed3a91901 100644
--- a/documentation/content/ru/articles/ipsec-must/_index.adoc
+++ b/documentation/content/ru/articles/ipsec-must/_index.adoc
@@ -1,8 +1,11 @@
 ---
-title: Независимое исследование работы IPsec во FreeBSD
 authors:
-  - author: David Honig
+  - 
+    author: 'David Honig'
     email: [email protected]
+description: 'Независимое исследование работы IPsec во FreeBSD'
+tags: ["IPsec", "verification", "FreeBSD"]
+title: 'Независимое исследование работы IPsec во FreeBSD'
 trademarks: ["freebsd", "opengroup", "general"]
 ---
 
@@ -49,7 +52,7 @@ toc::[]
 [[problem]]
 == Постановка задачи
 
-Для начала предположим, что Вы <<ipsec-install>>. Как Вы узнаете, что IPsec <<caveat>>? Несомненно, соединения не будет, если Вы неверно его сконфигурировали. И оно, конечно, появится в выводе команды man:netstat[1], когда Вы всё сделаете верно. Но можно ли как-то подтвердить сам факт функционирования IPsec?
+Для начала предположим, что Вы crossref::ipsec-must[ipsec-install, установили IPsec]. Как Вы узнаете, что IPsec crossref::ipsec-must[caveat, надо учитывать предостережение]? Несомненно, соединения не будет, если Вы неверно его сконфигурировали. И оно, конечно, появится в выводе команды man:netstat[1], когда Вы всё сделаете верно. Но можно ли как-то подтвердить сам факт функционирования IPsec?
 
 [[solution]]
 == Решение
@@ -64,16 +67,16 @@ toc::[]
 [[MUST]]
 === MUST
 
-"Универсальный Статистический Тест для Генераторов Случайных Чисел" Уэли Маурера (Ueli Maurer's Universal Statistical Test for Random Bit Generators), сокращённо http://www.geocities.com/SiliconValley/Code/4704/universal.pdf[MUST] позволяет быстро измерить энтропию последовательного набора данных. Используемый алгоритм похож на алгоритм сжатия. <<code>> приведён исходный код, позволяющий измерять энтропию последовательных кусков данных размером около четверти мегабайта.
+"Универсальный Статистический Тест для Генераторов Случайных Чисел" Уэли Маурера (Ueli Maurer's Universal Statistical Test for Random Bit Generators), сокращённо http://www.geocities.com/SiliconValley/Code/4704/universal.pdf[MUST], позволяет быстро измерить энтропию последовательного набора данных. Используемый алгоритм похож на алгоритм сжатия. В разделе crossref::ipsec-must[code, Универсальный Статистический Тест Маурера (размер блока - 8 бит))] приведён исходный код, позволяющий измерять энтропию посÐ
 »ÐµÐ´Ð¾Ð²Ð°Ñ‚ельных кусков данных размером около четверти мегабайта.
 
 [[tcpdump]]
 === Tcpdump
 
-Ещё нам нужен способ сохранения информации, проходящей через интерфейс. Программа man:tcpdump[1] позволяет сделать это в случае, если Вы <<kernel>> с поддержкой __Пакетного Фильтра Беркли (Berkeley Packet Filter)__.
+Ещё нам нужен способ сохранения информации, проходящей через интерфейс. Программа man:tcpdump[1] позволяет сделать это в случае, если у Вас ядро crossref::ipsec-must[kernel,src/sys/i386/conf/KERNELNAME] с поддержкой __Пакетного Фильтра Беркли (Berkeley Packet Filter)__.
 
-Команда
+Команда:
 
-[source,shell]
+[source, shell]
 ....
  tcpdump -c 4000 -s 10000 -w dumpfile.bin
 ....
@@ -86,12 +89,13 @@ toc::[]
 Повторите следующие шаги эксперимента:
 
 [.procedure]
+====
 . Откройте два окна терминала и свяжитесь в одном из них с каким-нибудь компьютером через канал IPsec, а в другом - с обычным, "незащищённым" компьютером.
-. Теперь начните <<tcpdump>>.
+. Теперь запустите crossref::ipsec-must[tcpdump, Tcpdump].
 . В "шифрованном" окне запустите команду UNIX(R) man:yes[1], которая будет выдавать бесконечный поток символов `y`. Немножко подождите и завершите её. Затем переключитесь в обычное окно (не использующее канал IPsec) и сделайте то же самое.
-. Заключительный этап: запустите <<code>>, передав ему для обработки только что сохранённые пакеты через командную строку. Вы должны увидеть что-то вроде изображённого чуть ниже. Заметьте, что безопасное соединение имеет 93% (6,7) от ожидаемого значения (7,18), а обычное соединение - всего лишь 29% (2,1).
+. Заключительный этап: запустите crossref::ipsec-must[code, Универсальный Статистический Тест Маурера (размер блока - 8 бит)], передав ему для обработки только что сохранённые пакеты через командную строку. Вы должны увидеть что-то вроде изображённого чуть ниже. Заметьте, что безопасное соединение имеет 93% (6,7) от ожидаемого значения (7,18), а обычное соединение - всего лишь 29% (2,1).
 +
-[source,shell]
+[source, shell]
 ....
 % tcpdump -c 4000 -s 10000 -w ipsecdemo.bin
 % uliscan ipsecdemo.bin
@@ -107,14 +111,15 @@ Expected value for L=8 is 7.1836656
 2.0838 -----------------
 2.0983 -----------------
 ....
+====
 
 [[caveat]]
-== Замечание
+== Предостережение
 
 Этот эксперимент показывает, что IPsec _действительно_ распределяет передаваемые байты по области определения __равномерно__, как и любое другое шифрование. Однако этот метод _не может_ обнаружить множество других изъянов в системе (хотя я таковых не знаю). Для примера можно привести плохие алгоритмы генерации или обмена ключами, нарушение конфиденциальности данных или ключей, использование слабых в криптографическом смысле алгоритмо
 в, взлом ядра и т. д. Изучайте исходный код, узнавайте, что там происходит.
 
 [[IPsec]]
-== Определение IPsec
+== IPsec — определение
 
 IPsec представляет собой протокол безопасного обмена информацией по Internet. Существует в виде расширения к IPv4; является неотъемлемой частью IPv6. Содержит в себе протокол шифрования и аутентификации на уровне IP (межмашинное "host-to-host" взаимодействие). SSL защищает только лишь конкретный прикладной сокет; SSH защищает вход на машину; PGP защищает определённый файл или письмо. IPsec шифрует всю информацию, передаваемую между двумя машинами.
 
@@ -123,7 +128,7 @@ IPsec представляет собой протокол безопасног
 
 Большинство современных версий FreeBSD уже имеют поддержку IPsec. Вероятно, Вы должны будете лишь добавить опцию `IPSEC` в конфигурационный файл ядра, и после сборки и инсталляции нового ядра, сконфигурировать соединение IPsec с помощью команды man:setkey[8].
 
-Более подробно о том, как запустить IPsec во FreeBSD можно прочесть в extref:{handbook}security[Руководстве пользователя, ipsec].
+Более подробно о том, как запустить IPsec во FreeBSD можно прочесть в extref:{handbook}[Руководстве пользователя, ipsec].
 
 [[kernel]]
 == src/sys/i386/conf/KERNELNAME
@@ -138,7 +143,7 @@ device	bpf
 [[code]]
 == Универсальный Статистический Тест Маурера (размер блока - 8 бит)
 
-Оригинал нижеприведённого кода находится по http://www.geocities.com/SiliconValley/Code/4704/uliscanc.txt[ этому адресу].
+Оригинал нижеприведённого кода находится по https://web.archive.org/web/20031204230654/http://www.geocities.com:80/SiliconValley/Code/4704/uliscanc.txt[ этому адресу].
 
 [.programlisting]
 ....
diff --git a/documentation/content/ru/articles/ipsec-must/_index.po b/documentation/content/ru/articles/ipsec-must/_index.po
new file mode 100644
index 0000000000..762f8315b1
--- /dev/null
+++ b/documentation/content/ru/articles/ipsec-must/_index.po
@@ -0,0 +1,757 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR The FreeBSD Project
+# This file is distributed under the same license as the FreeBSD Documentation package.
+# Vladlen Popolitov <[email protected]>, 2025.
+msgid ""
+msgstr ""
+"Project-Id-Version: FreeBSD Documentation VERSION\n"
+"POT-Creation-Date: 2024-12-29 08:30-0500\n"
+"PO-Revision-Date: 2025-08-21 04:45+0000\n"
+"Last-Translator: Vladlen Popolitov <[email protected]>\n"
+"Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
+"documentation/articlesipsec-must_index/ru/>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 4.17\n"
+
+#. type: Title =
+#: documentation/content/en/articles/ipsec-must/_index.adoc:1
+#: documentation/content/en/articles/ipsec-must/_index.adoc:11
+#, no-wrap
+msgid "Independent Verification of IPsec Functionality in FreeBSD"
+msgstr "Независимое исследование работы IPsec во FreeBSD"
+
+#. type: Plain text
+#: documentation/content/en/articles/ipsec-must/_index.adoc:44
+msgid "Abstract"
+msgstr "Аннотация"
+
+#. type: Plain text
+#: documentation/content/en/articles/ipsec-must/_index.adoc:47
+msgid ""
+"You installed IPsec and it seems to be working.  How do you know? I describe "
+"a method for experimentally verifying that IPsec is working."
+msgstr ""
+"Вы только что установили и настроили IPsec, и оно, кажется, заработало. Как "
+"это можно проверить? Я опишу метод экспериментальной проверки правильного "
+"функционирования IPsec."
+
+#. type: Plain text
+#: documentation/content/en/articles/ipsec-must/_index.adoc:49
+msgid "'''"
+msgstr "'''"
+
+#. type: Title ==
+#: documentation/content/en/articles/ipsec-must/_index.adoc:53
+#, no-wrap
+msgid "The Problem"
+msgstr "Постановка задачи"
+
+#. type: Plain text
+#: documentation/content/en/articles/ipsec-must/_index.adoc:58
+msgid ""
+"First, lets assume you have crossref::ipsec-must[ipsec-install, Installing "
+"IPsec].  How do you know it is crossref::ipsec-must[caveat, Caveat]? Sure, "
+"your connection will not work if it is misconfigured, and it will work when "
+"you finally get it right.  man:netstat[1] will list it. But can you "
+"independently confirm it?"
+msgstr ""
+"Для начала предположим, что Вы crossref::ipsec-must[ipsec-install, "
+"установили IPsec]. Как Вы узнаете, что IPsec crossref::ipsec-must[caveat, "
+"надо учитывать предостережение]? Несомненно, соединения не будет, если Вы "
+"неверно его сконфигурировали. И оно, конечно, появится в выводе команды "
+"man:netstat[1], когда Вы всё сделаете верно. Но можно ли как-то подтвердить "
+"сам факт функционирования IPsec?"
+
+#. type: Title ==
+#: documentation/content/en/articles/ipsec-must/_index.adoc:60
+#, no-wrap
+msgid "The Solution"
+msgstr "Решение"
+
+#. type: Plain text
+#: documentation/content/en/articles/ipsec-must/_index.adoc:63
+msgid "First, some crypto-relevant info theory:"
+msgstr "Для начала немножко криптографической теории:"
+
+#. type: Plain text
+#: documentation/content/en/articles/ipsec-must/_index.adoc:65
+msgid ""
+"Encrypted data is uniformly distributed, i.e., has maximal entropy per "
+"symbol;"
+msgstr ""
+"Шифрованные данные равномерно распределены по области определения, то есть "
+"каждый символ имеет максимальную энтропию;"
+
+#. type: Plain text
+#: documentation/content/en/articles/ipsec-must/_index.adoc:66
+msgid ""
+"Raw, uncompressed data is typically redundant, i.e., has sub-maximal entropy."
+msgstr ""
+"\"Сырые\" и несжатые данные как правило избыточны, то есть их энтропия "
+"меньше максимально возможной."
+
+#. type: Plain text
+#: documentation/content/en/articles/ipsec-must/_index.adoc:70
+msgid ""
+"Suppose you could measure the entropy of the data to- and from- your network "
+"interface.  Then you could see the difference between unencrypted data and "
+"encrypted data.  This would be true even if some of the data in \"encrypted "
+"mode\" was not encrypted---as the outermost IP header must be if the packet "
+"is to be routable."
+msgstr ""
+"Предположим, что у Вас имеется возможность измерить энтропию входящего и "
+"исходящего трафика на сетевом интерфейсе. В этом случае Вы сможете легко "
+"отличить зашифрованные данные от открытых, причём даже в том случае, когда "
+"часть данных в \"режиме шифрования\" передаётся в открытом виде, к примеру "
+"внешние заголовки IP, которые используются для маршрутизации."
+
+#. type: Title ===
+#: documentation/content/en/articles/ipsec-must/_index.adoc:72
+#, no-wrap
+msgid "MUST"
+msgstr "MUST"
+
+#. type: Plain text
+#: documentation/content/en/articles/ipsec-must/_index.adoc:77
+msgid ""
+"Ueli Maurer's \"Universal Statistical Test for Random Bit "
+"Generators\"(https://web.archive.org/web/20011115002319/http://www.geocities."
+"com/SiliconValley/Code/4704/universal.pdf[MUST]) quickly measures the "
+"entropy of a sample.  It uses a compression-like algorithm.  crossref::ipsec-"
+"must[code, Maurer's Universal Statistical Test (for block size8 bits)] for a "
+"variant which measures successive (~quarter megabyte) chunks of a file."
+msgstr ""
+"\"Универсальный Статистический Тест для Генераторов Случайных Чисел\" Уэли "
+"Маурера (Ueli Maurer's Universal Statistical Test for Random Bit Generators)"
+", сокращённо http://www.geocities.com/SiliconValley/Code/4704/universal."
+"pdf[MUST], позволяет быстро измерить энтропию последовательного набора "
+"данных. Используемый алгоритм похож на алгоритм сжатия. В разделе crossref"
+"::ipsec-must[code, Универсальный Статистический Тест Маурера (размер блока - "
+"8 бит))] приведён исходный код, позволяющий измерять энтропию "
+"последовательных кусков данных размером около четверти мегабайта."
+
+#. type: Title ===
+#: documentation/content/en/articles/ipsec-must/_index.adoc:79
+#, no-wrap
+msgid "Tcpdump"
+msgstr "Tcpdump"
+
+#. type: Plain text
+#: documentation/content/en/articles/ipsec-must/_index.adoc:84
+msgid ""
+"We also need a way to capture the raw network data.  A program called man:"
+"tcpdump[1] lets you do this, if you have enabled the _Berkeley Packet "
+"Filter_ interface in your crossref::ipsec-must[kernel,src/sys/i386/conf/"
+"KERNELNAME]."
+msgstr ""
+"Ещё нам нужен способ сохранения информации, проходящей через интерфейс. "
+"Программа man:tcpdump[1] позволяет сделать это в случае, если у Вас ядро "
+"crossref::ipsec-must[kernel,src/sys/i386/conf/KERNELNAME] с поддержкой "
+"__Пакетного Фильтра Беркли (Berkeley Packet Filter)__."
+
+#. type: Plain text
+#: documentation/content/en/articles/ipsec-must/_index.adoc:86
+msgid "The command:"
+msgstr "Команда:"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:90
+#, no-wrap
+msgid " tcpdump -c 4000 -s 10000 -w dumpfile.bin\n"
+msgstr " tcpdump -c 4000 -s 10000 -w dumpfile.bin\n"
+
+#. type: Plain text
+#: documentation/content/en/articles/ipsec-must/_index.adoc:94
+msgid ""
+"will capture 4000 raw packets to _dumpfile.bin_.  Up to 10,000 bytes per "
+"packet will be captured in this example."
+msgstr ""
+"сохранит 4000 пакетов в файл _dumpfile.bin_. В данном примере объём "
+"записываемой информации в каждом пакете не может превышать 10,000 байтов."
+
+#. type: Title ==
+#: documentation/content/en/articles/ipsec-must/_index.adoc:96
+#, no-wrap
+msgid "The Experiment"
+msgstr "Эксперимент"
+
+#. type: Plain text
+#: documentation/content/en/articles/ipsec-must/_index.adoc:99
+msgid "Here is the experiment:"
+msgstr "Повторите следующие шаги эксперимента:"
+
+#. type: delimited block = 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:103
+msgid "Open a window to an IPsec host and another window to an insecure host."
+msgstr ""
+"Откройте два окна терминала и свяжитесь в одном из них с каким-нибудь "
+"компьютером через канал IPsec, а в другом - с обычным, \"незащищённым\" "
+"компьютером."
+
+#. type: delimited block = 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:104
+msgid "Now start crossref::ipsec-must[tcpdump, Tcpdump]."
+msgstr "Теперь запустите crossref::ipsec-must[tcpdump, Tcpdump]."
+
+#. type: delimited block = 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:105
+msgid ""
+"In the \"secure\" window, run the UNIX(R) command man:yes[1], which will "
+"stream the `y` character. After a while, stop this. Switch to the insecure "
+"window, and repeat. After a while, stop."
+msgstr ""
+"В \"шифрованном\" окне запустите команду UNIX(R) man:yes[1], которая будет "
+"выдавать бесконечный поток символов `y`. Немножко подождите и завершите её. "
+"Затем переключитесь в обычное окно (не использующее канал IPsec) и сделайте "
+"то же самое."
+
+#. type: delimited block = 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:106
+msgid ""
+"Now run crossref::ipsec-must[code, Maurer's Universal Statistical Test (for "
+"block size8 bits)] on the captured packets. You should see something like "
+"the following. The important thing to note is that the secure connection has "
+"93% (6.7) of the expected value (7.18), and the \"normal\" connection has "
+"29% (2.1) of the expected value."
+msgstr ""
+"Заключительный этап: запустите crossref::ipsec-must[code, Универсальный "
+"Статистический Тест Маурера (размер блока - 8 бит)], передав ему для "
+"обработки только что сохранённые пакеты через командную строку. Вы должны "
+"увидеть что-то вроде изображённого чуть ниже. Заметьте, что безопасное "
+"соединение имеет 93% (6,7) от ожидаемого значения (7,18), а обычное "
+"соединение - всего лишь 29% (2,1)."
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:122
+#, no-wrap
+msgid ""
+"% tcpdump -c 4000 -s 10000 -w ipsecdemo.bin\n"
+"% uliscan ipsecdemo.bin\n"
+"Uliscan 21 Dec 98\n"
+"L=8 256 258560\n"
+"Measuring file ipsecdemo.bin\n"
+"Init done\n"
+"Expected value for L=8 is 7.1836656\n"
+"6.9396 --------------------------------------------------------\n"
+"6.6177 -----------------------------------------------------\n"
+"6.4100 ---------------------------------------------------\n"
+"2.1101 -----------------\n"
+"2.0838 -----------------\n"
+"2.0983 -----------------\n"
+msgstr ""
+"% tcpdump -c 4000 -s 10000 -w ipsecdemo.bin\n"
+"% uliscan ipsecdemo.bin\n"
+"Uliscan 21 Dec 98\n"
+"L=8 256 258560\n"
+"Measuring file ipsecdemo.bin\n"
+"Init done\n"
+"Expected value for L=8 is 7.1836656\n"
+"6.9396 --------------------------------------------------------\n"
+"6.6177 -----------------------------------------------------\n"
+"6.4100 ---------------------------------------------------\n"
+"2.1101 -----------------\n"
+"2.0838 -----------------\n"
+"2.0983 -----------------\n"
+
+#. type: Title ==
+#: documentation/content/en/articles/ipsec-must/_index.adoc:126
+#, no-wrap
+msgid "Caveat"
+msgstr "Предостережение"
+
+#. type: delimited block = 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:132
+msgid ""
+"This experiment shows that IPsec _does_ seem to be distributing the payload "
+"data __uniformly__, as encryption should.  However, the experiment described "
+"here _cannot_ detect many possible flaws in a system (none of which do I "
+"have any evidence for).  These include poor key generation or exchange, data "
+"or keys being visible to others, use of weak algorithms, kernel subversion, "
+"etc.  Study the source; know the code."
+msgstr ""
+"Этот эксперимент показывает, что IPsec _действительно_ распределяет "
+"передаваемые байты по области определения __равномерно__, как и любое другое "
+"шифрование. Однако этот метод _не может_ обнаружить множество других изъянов "
+"в системе (хотя я таковых не знаю). Для примера можно привести плохие "
+"алгоритмы генерации или обмена ключами, нарушение конфиденциальности данных "
+"или ключей, использование слабых в криптографическом смысле алгоритмов, "
+"взлом ядра и т. д. Изучайте исходный код, узнавайте, что там происходит."
+
+#. type: Title ==
+#: documentation/content/en/articles/ipsec-must/_index.adoc:134
+#, no-wrap
+msgid "IPsec---Definition"
+msgstr "IPsec — определение"
+
+#. type: delimited block = 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:140
+msgid ""
+"Internet Protocol security extensions to IPv4; required for IPv6.  A "
+"protocol for negotiating encryption and authentication at the IP (host-to-"
+"host) level.  SSL secures only one application socket; SSH secures only a "
+"login; PGP secures only a specified file or message.  IPsec encrypts "
+"everything between two hosts."
+msgstr ""
+"IPsec представляет собой протокол безопасного обмена информацией по "
+"Internet. Существует в виде расширения к IPv4; является неотъемлемой частью "
+"IPv6. Содержит в себе протокол шифрования и аутентификации на уровне IP ("
+"межмашинное \"host-to-host\" взаимодействие). SSL защищает только лишь "
+"конкретный прикладной сокет; SSH защищает вход на машину; PGP защищает "
+"определённый файл или письмо. IPsec шифрует всю информацию, передаваемую "
+"между двумя машинами."
+
+#. type: Title ==
+#: documentation/content/en/articles/ipsec-must/_index.adoc:142
+#, no-wrap
+msgid "Installing IPsec"
+msgstr "Установка IPsec"
+
+#. type: delimited block = 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:146
+msgid ""
+"Most of the modern versions of FreeBSD have IPsec support in their base "
+"source.  So you will need to include the `IPSEC` option in your kernel "
+"config and, after kernel rebuild and reinstall, configure IPsec connections "
+"using man:setkey[8] command."
+msgstr ""
+"Большинство современных версий FreeBSD уже имеют поддержку IPsec. Вероятно, "
+"Вы должны будете лишь добавить опцию `IPSEC` в конфигурационный файл ядра, и "
+"после сборки и инсталляции нового ядра, сконфигурировать соединение IPsec с "
+"помощью команды man:setkey[8]."
+
+#. type: delimited block = 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:148
+msgid ""
+"A comprehensive guide on running IPsec on FreeBSD is provided in extref:"
+"{handbook}[FreeBSD Handbook, ipsec]."
+msgstr ""
+"Более подробно о том, как запустить IPsec во FreeBSD можно прочесть в "
+"extref:{handbook}[Руководстве пользователя, ipsec]."
+
+#. type: Title ==
+#: documentation/content/en/articles/ipsec-must/_index.adoc:150
+#, no-wrap
+msgid "src/sys/i386/conf/KERNELNAME"
+msgstr "src/sys/i386/conf/KERNELNAME"
+
+#. type: delimited block = 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:154
+msgid ""
+"This needs to be present in the kernel config file to capture network data "
+"with man:tcpdump[1].  Be sure to run man:config[8] after adding this, and "
+"rebuild and reinstall."
+msgstr ""
+"Для того, чтобы захватывать сетевой трафик при помощи man:tcpdump[1], "
+"следующие строки должны присутствовать в конфигурационном файле ядра. Не "
+"забудьте после модификации запустить man:config[8], и, как обычно, "
+"пересобрать и установить новое ядро."
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:158
+#, no-wrap
+msgid "device\tbpf\n"
+msgstr "device\tbpf\n"
+
+#. type: Title ==
+#: documentation/content/en/articles/ipsec-must/_index.adoc:161
+#, no-wrap
+msgid "Maurer's Universal Statistical Test (for block size=8 bits)"
+msgstr "Универсальный Статистический Тест Маурера (размер блока - 8 бит)"
+
+#. type: Plain text
+#: documentation/content/en/articles/ipsec-must/_index.adoc:164
+msgid ""
+"You can find the same code at https://web.archive.org/web/20031204230654/"
+"http://www.geocities.com:80/SiliconValley/Code/4704/uliscanc.txt[this link]."
+msgstr ""
+"Оригинал нижеприведённого кода находится по https://web.archive.org/web/"
+"20031204230654/http://www.geocities.com:80/SiliconValley/Code/4704/uliscanc."
+"txt[ этому адресу]."
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:169
+#, no-wrap
+msgid ""
+"/*\n"
+"  ULISCAN.c   ---blocksize of 8\n"
+msgstr ""
+"/*\n"
+"  ULISCAN.c   ---blocksize of 8\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:173
+#, no-wrap
+msgid ""
+"  1 Oct 98\n"
+"  1 Dec 98\n"
+"  21 Dec 98       uliscan.c derived from ueli8.c\n"
+msgstr ""
+"  1 Oct 98\n"
+"  1 Dec 98\n"
+"  21 Dec 98       uliscan.c derived from ueli8.c\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:175
+#, no-wrap
+msgid "  This version has // comments removed for Sun cc\n"
+msgstr "  This version has // comments removed for Sun cc\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:178
+#, no-wrap
+msgid ""
+"  This implements Ueli M Maurer's \"Universal Statistical Test for Random\n"
+"  Bit Generators\" using L=8\n"
+msgstr ""
+"  This implements Ueli M Maurer's \"Universal Statistical Test for Random\n"
+"  Bit Generators\" using L=8\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:181
+#, no-wrap
+msgid ""
+"  Accepts a filename on the command line; writes its results, with other\n"
+"  info, to stdout.\n"
+msgstr ""
+"  Accepts a filename on the command line; writes its results, with other\n"
+"  info, to stdout.\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:183
+#, no-wrap
+msgid "  Handles input file exhaustion gracefully.\n"
+msgstr "  Handles input file exhaustion gracefully.\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:186
+#, no-wrap
+msgid ""
+"  Ref: J. Cryptology v 5 no 2, 1992 pp 89-105\n"
+"  also on the web somewhere, which is where I found it.\n"
+msgstr ""
+"  Ref: J. Cryptology v 5 no 2, 1992 pp 89-105\n"
+"  also on the web somewhere, which is where I found it.\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:189
+#, no-wrap
+msgid ""
+"  -David Honig\n"
+"  [email protected]\n"
+msgstr ""
+"  -David Honig\n"
+"  [email protected]\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:194
+#, no-wrap
+msgid ""
+"  Usage:\n"
+"  ULISCAN filename\n"
+"  outputs to stdout\n"
+"*/\n"
+msgstr ""
+"  Usage:\n"
+"  ULISCAN filename\n"
+"  outputs to stdout\n"
+"*/\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:200
+#, no-wrap
+msgid ""
+"#define L 8\n"
+"#define V (1<<L)\n"
+"#define Q (10*V)\n"
+"#define K (100   *Q)\n"
+"#define MAXSAMP (Q + K)\n"
+msgstr ""
+"#define L 8\n"
+"#define V (1<<L)\n"
+"#define Q (10*V)\n"
+"#define K (100   *Q)\n"
+"#define MAXSAMP (Q + K)\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:203
+#, no-wrap
+msgid ""
+"#include <stdio.h>\n"
+"#include <math.h>\n"
+msgstr ""
+"#include <stdio.h>\n"
+"#include <math.h>\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:215
+#, no-wrap
+msgid ""
+"int main(argc, argv)\n"
+"int argc;\n"
+"char **argv;\n"
+"{\n"
+"  FILE *fptr;\n"
+"  int i,j;\n"
+"  int b, c;\n"
+"  int table[V];\n"
+"  double sum = 0.0;\n"
+"  int iproduct = 1;\n"
+"  int run;\n"
+msgstr ""
+"int main(argc, argv)\n"
+"int argc;\n"
+"char **argv;\n"
+"{\n"
+"  FILE *fptr;\n"
+"  int i,j;\n"
+"  int b, c;\n"
+"  int table[V];\n"
+"  double sum = 0.0;\n"
+"  int iproduct = 1;\n"
+"  int run;\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:217
+#, no-wrap
+msgid "  extern double   log(/* double x */);\n"
+msgstr "  extern double   log(/* double x */);\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:219
+#, no-wrap
+msgid "  printf(\"Uliscan 21 Dec 98 \\nL=%d %d %d \\n\", L, V, MAXSAMP);\n"
+msgstr ""
+"  printf(\"Uliscan 21 Dec 98 \\n"
+"L=%d %d %d \\n"
+"\", L, V, MAXSAMP);\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:226
+#, no-wrap
+msgid ""
+"  if (argc < 2) {\n"
+"    printf(\"Usage: Uliscan filename\\n\");\n"
+"    exit(-1);\n"
+"  } else {\n"
+"    printf(\"Measuring file %s\\n\", argv[1]);\n"
+"  }\n"
+msgstr ""
+"  if (argc < 2) {\n"
+"    printf(\"Usage: Uliscan filename\\n"
+"\");\n"
+"    exit(-1);\n"
+"  } else {\n"
+"    printf(\"Measuring file %s\\n"
+"\", argv[1]);\n"
+"  }\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:228
+#, no-wrap
+msgid "  fptr = fopen(argv[1],\"rb\");\n"
+msgstr "  fptr = fopen(argv[1],\"rb\");\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:233
+#, no-wrap
+msgid ""
+"  if (fptr == NULL) {\n"
+"    printf(\"Can't find %s\\n\", argv[1]);\n"
+"    exit(-1);\n"
+"  }\n"
+msgstr ""
+"  if (fptr == NULL) {\n"
+"    printf(\"Can't find %s\\n"
+"\", argv[1]);\n"
+"    exit(-1);\n"
+"  }\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:237
+#, no-wrap
+msgid ""
+"  for (i = 0; i < V; i++) {\n"
+"    table[i] = 0;\n"
+"  }\n"
+msgstr ""
+"  for (i = 0; i < V; i++) {\n"
+"    table[i] = 0;\n"
+"  }\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:242
+#, no-wrap
+msgid ""
+"  for (i = 0; i < Q; i++) {\n"
+"    b = fgetc(fptr);\n"
+"    table[b] = i;\n"
+"  }\n"
+msgstr ""
+"  for (i = 0; i < Q; i++) {\n"
+"    b = fgetc(fptr);\n"
+"    table[b] = i;\n"
+"  }\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:244
+#, no-wrap
+msgid "  printf(\"Init done\\n\");\n"
+msgstr ""
+"  printf(\"Init done\\n"
+"\");\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:246
+#, no-wrap
+msgid "  printf(\"Expected value for L=8 is 7.1836656\\n\");\n"
+msgstr ""
+"  printf(\"Expected value for L=8 is 7.1836656\\n"
+"\");\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:248
+#, no-wrap
+msgid "  run = 1;\n"
+msgstr "  run = 1;\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:252
+#, no-wrap
+msgid ""
+"  while (run) {\n"
+"    sum = 0.0;\n"
+"    iproduct = 1;\n"
+msgstr ""
+"  while (run) {\n"
+"    sum = 0.0;\n"
+"    iproduct = 1;\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:257
+#, no-wrap
+msgid ""
+"    if (run)\n"
+"      for (i = Q; run && i < Q + K; i++) {\n"
+"        j = i;\n"
+"        b = fgetc(fptr);\n"
+msgstr ""
+"    if (run)\n"
+"      for (i = Q; run && i < Q + K; i++) {\n"
+"        j = i;\n"
+"        b = fgetc(fptr);\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:260
+#, no-wrap
+msgid ""
+"        if (b < 0)\n"
+"          run = 0;\n"
+msgstr ""
+"        if (b < 0)\n"
+"          run = 0;\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:264
+#, no-wrap
+msgid ""
+"        if (run) {\n"
+"          if (table[b] > j)\n"
+"            j += K;\n"
+msgstr ""
+"        if (run) {\n"
+"          if (table[b] > j)\n"
+"            j += K;\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:266
+#, no-wrap
+msgid "          sum += log((double)(j-table[b]));\n"
+msgstr "          sum += log((double)(j-table[b]));\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:270
+#, no-wrap
+msgid ""
+"          table[b] = i;\n"
+"        }\n"
+"      }\n"
+msgstr ""
+"          table[b] = i;\n"
+"        }\n"
+"      }\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:273
+#, no-wrap
+msgid ""
+"    if (!run)\n"
+"      printf(\"Premature end of file; read %d blocks.\\n\", i - Q);\n"
+msgstr ""
+"    if (!run)\n"
+"      printf(\"Premature end of file; read %d blocks.\\n"
+"\", i - Q);\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:276
+#, no-wrap
+msgid ""
+"    sum = (sum/((double)(i - Q))) /  log(2.0);\n"
+"    printf(\"%4.4f \", sum);\n"
+msgstr ""
+"    sum = (sum/((double)(i - Q))) /  log(2.0);\n"
+"    printf(\"%4.4f \", sum);\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:279
+#, no-wrap
+msgid ""
+"    for (i = 0; i < (int)(sum*8.0 + 0.50); i++)\n"
+"      printf(\"-\");\n"
+msgstr ""
+"    for (i = 0; i < (int)(sum*8.0 + 0.50); i++)\n"
+"      printf(\"-\");\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:281
+#, no-wrap
+msgid "    printf(\"\\n\");\n"
+msgstr ""
+"    printf(\"\\n"
+"\");\n"
+
+#. type: delimited block . 4
+#: documentation/content/en/articles/ipsec-must/_index.adoc:295
+#, no-wrap
+msgid ""
+"    /* refill initial table */\n"
+"    if (0) {\n"
+"      for (i = 0; i < Q; i++) {\n"
+"        b = fgetc(fptr);\n"
+"        if (b < 0) {\n"
+"          run = 0;\n"
+"        } else {\n"
+"          table[b] = i;\n"
+"        }\n"
+"      }\n"
+"    }\n"
+"  }\n"
+"}\n"
+msgstr ""
+"    /* refill initial table */\n"
+"    if (0) {\n"
+"      for (i = 0; i < Q; i++) {\n"
+"        b = fgetc(fptr);\n"
+"        if (b < 0) {\n"
+"          run = 0;\n"
+"        } else {\n"
+"          table[b] = i;\n"
+"        }\n"
+"      }\n"
+"    }\n"
+"  }\n"
+"}\n"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.