# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR The FreeBSD Project # This file is distributed under the same license as the FreeBSD Documentation package. # Vladlen Popolitov , 2025, 2026. msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2025-11-08 16:17+0000\n" "PO-Revision-Date: 2026-03-04 20:01+0000\n" "Last-Translator: Vladlen Popolitov \n" "Language-Team: Russian \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/books/developers-handbook/ipv6/_index.adoc:1 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:16 #, no-wrap msgid "IPv6 Internals" msgstr "Внутреннее устройство IPv6" #. type: YAML Front Matter: title #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:1 #, no-wrap msgid "Chapter 8. IPv6 Internals" msgstr "Глава 8. Внутреннее устройство IPv6" #. type: Title == #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:54 #, no-wrap msgid "IPv6/IPsec Implementation" msgstr "Реализация IPv6/IPsec" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:58 msgid "" "This section should explain IPv6 and IPsec related implementation " "internals. These functionalities are derived from http://www.kame.net/[KAME " "project]" msgstr "" "В этом разделе мы объясним внутреннюю реализацию, связанную с IPv6 и IPsec. " "Данная функциональность заимствована из http://www.kame.net/[проекта KAME]" #. type: Title === #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:60 #, no-wrap msgid "IPv6" msgstr "IPv6" #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:62 #, no-wrap msgid "Conformance" msgstr "Соответствие" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:66 msgid "" "The IPv6 related functions conforms, or tries to conform to the latest set " "of IPv6 specifications. For future reference we list some of the relevant " "documents below (_NOTE_: this is not a complete list - this is too hard to " "maintain...)." msgstr "" "Функции, связанные с IPv6, соответствуют или пытаются соответствовать " "последнему набору спецификаций IPv6. Для дальнейшего использования мы " "приводим некоторые из соответствующих документов ниже (_ПРИМЕЧАНИЕ_: это не " "полный список — его слишком сложно поддерживать...)." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:68 msgid "" "For details please refer to specific chapter in the document, RFCs, manual " "pages, or comments in the source code." msgstr "" "Для подробностей обратитесь к соответствующей главе документа, RFC, " "страницам Справочника или комментариям в исходном коде." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:72 msgid "" "Conformance tests have been performed on the KAME STABLE kit at TAHI " "project. Results can be viewed at http://www.tahi.org/report/KAME/[http://" "www.tahi.org/report/KAME/]. We also attended University of New Hampshire " "IOL tests (http://www.iol.unh.edu/[http://www.iol.unh.edu/]) in the past, " "with our past snapshots." msgstr "" "Тесты на соответствие стандартам были проведены для KAME STABLE в проекте " "TAHI. Результаты можно посмотреть по ссылке http://www.tahi.org/report/KAME/" "[http://www.tahi.org/report/KAME/]. Мы также участвовали в тестах IOL " "Университета Нью-Гэмпшира (http://www.iol.unh.edu/[http://www.iol.unh.edu/]) " "в прошлом, используя наши предыдущие версии." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:74 msgid "RFC1639: FTP Operation Over Big Address Records (FOOBAR)" msgstr "RFC1639: FTP Operation Over Big Address Records (FOOBAR)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:76 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:113 msgid "" "RFC2428 is preferred over RFC1639. FTP clients will first try RFC2428, then " "RFC1639 if failed." msgstr "" "RFC2428 предпочтительнее RFC1639. FTP-клиенты сначала попробуют RFC2428, " "затем RFC1639 в случае неудачи." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:78 msgid "RFC1886: DNS Extensions to support IPv6" msgstr "RFC1886: DNS Extensions to support IPv6" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:79 msgid "RFC1933: Transition Mechanisms for IPv6 Hosts and Routers" msgstr "RFC1933: Transition Mechanisms for IPv6 Hosts and Routers" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:81 msgid "IPv4 compatible address is not supported." msgstr "IPv4-совместимый адрес не поддерживается." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:82 msgid "automatic tunneling (described in 4.3 of this RFC) is not supported." msgstr "" "автоматическое туннелирование (описано в разделе 4.3 данного RFC) не " "поддерживается." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:84 msgid "" "man:gif[4] interface implements IPv[46]-over-IPv[46] tunnel in a generic " "way, and it covers \"configured tunnel\" described in the spec. See crossref:" "ipv6[gif,Generic Tunnel Interface] in this document for details." msgstr "" "Интерфейс man:gif[4] реализует IPv[46]-поверх-IPv[46] туннель в общем виде и " "включает \"настроенный туннель\", описанный в спецификации. За подробностями " "обратитесь к разделу crossref:ipv6[gif,Универсальный туннельный интерфейс] " "этого документа." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:86 msgid "RFC1981: Path MTU Discovery for IPv6" msgstr "RFC1981: Path MTU Discovery for IPv6" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:87 msgid "RFC2080: RIPng for IPv6" msgstr "RFC2080: RIPng for IPv6" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:89 msgid "usr.sbin/route6d support this." msgstr "usr.sbin/route6d это поддерживает." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:91 msgid "RFC2292: Advanced Sockets API for IPv6" msgstr "RFC2292: Advanced Sockets API for IPv6" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:93 msgid "" "For supported library functions/kernel APIs, see [.filename]#sys/netinet6/" "ADVAPI#." msgstr "" "Для поддерживаемых функций библиотек/API ядра см. [.filename]#sys/netinet6/" "ADVAPI#." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:95 msgid "RFC2362: Protocol Independent Multicast-Sparse Mode (PIM-SM)" msgstr "RFC2362: Protocol Independent Multicast-Sparse Mode (PIM-SM)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:97 msgid "" "RFC2362 defines packet formats for PIM-SM. [.filename]#draft-ietf-pim-" "ipv6-01.txt# is written based on this." msgstr "" "RFC2362 определяет форматы пакетов для PIM-SM. [.filename]#draft-ietf-pim-" "ipv6-01.txt# написан на основе этого." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:99 msgid "RFC2373: IPv6 Addressing Architecture" msgstr "RFC2373: IPv6 Addressing Architecture" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:101 msgid "" "supports node required addresses, and conforms to the scope requirement." msgstr "" "поддерживает обязательные адреса узлов и соответствует требованиям области " "видимости." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:103 msgid "RFC2374: An IPv6 Aggregatable Global Unicast Address Format" msgstr "RFC2374: An IPv6 Aggregatable Global Unicast Address Format" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:105 msgid "supports 64-bit length of Interface ID." msgstr "поддерживает 64-битную длину Идентификатора Интерфейса." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:107 msgid "RFC2375: IPv6 Multicast Address Assignments" msgstr "RFC2375: IPv6 Multicast Address Assignments" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:109 msgid "Userland applications use the well-known addresses assigned in the RFC." msgstr "" "Пользовательские приложения используют общеизвестные адреса, назначенные в " "RFC." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:111 msgid "RFC2428: FTP Extensions for IPv6 and NATs" msgstr "RFC2428: FTP Extensions for IPv6 and NATs" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:115 msgid "RFC2460: IPv6 specification" msgstr "RFC2460: IPv6 specification" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:116 msgid "RFC2461: Neighbor discovery for IPv6" msgstr "RFC2461: Neighbor discovery for IPv6" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:118 msgid "" "See crossref:ipv6[neighbor-discovery,Neighbor Discovery] in this document " "for details." msgstr "" "См. раздел crossref:ipv6[neighbor-discovery,Функция \"Обнаружение соседей\"] " "в этом документе для получения подробностей." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:120 msgid "RFC2462: IPv6 Stateless Address Autoconfiguration" msgstr "RFC2462: IPv6 Stateless Address Autoconfiguration" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:122 msgid "See crossref:ipv6[ipv6-pnp,Plug and Play] in this document for details." msgstr "" "См. раздел crossref:ipv6[ipv6-pnp,Plug and Play (подключи и работай)] в этом " "документе для получения подробностей." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:124 msgid "RFC2463: ICMPv6 for IPv6 specification" msgstr "RFC2463: ICMPv6 for IPv6 specification" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:126 msgid "See crossref:ipv6[icmpv6,ICMPv6] in this document for details." msgstr "" "См. crossref:ipv6[icmpv6,ICMPv6] в этом документе для получения подробностей." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:128 msgid "RFC2464: Transmission of IPv6 Packets over Ethernet Networks" msgstr "RFC2464: Transmission of IPv6 Packets over Ethernet Networks" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:129 msgid "RFC2465: MIB for IPv6: Textual Conventions and General Group" msgstr "RFC2465: MIB for IPv6: Textual Conventions and General Group" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:131 msgid "" "Necessary statistics are gathered by the kernel. Actual IPv6 MIB support is " "provided as a patchkit for ucd-snmp." msgstr "" "Необходимая статистика собирается ядром. Фактическая поддержка MIB для IPv6 " "предоставляется в виде набора патчей для ucd-snmp." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:133 msgid "RFC2466: MIB for IPv6: ICMPv6 group" msgstr "RFC2466: MIB for IPv6: ICMPv6 group" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:135 msgid "" "Necessary statistics are gathered by the kernel. Actual IPv6 MIB support is " "provided as patchkit for ucd-snmp." msgstr "" "Необходимая статистика собирается ядром. Фактическая поддержка MIB IPv6 " "предоставляется в виде патча для ucd-snmp." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:137 msgid "RFC2467: Transmission of IPv6 Packets over FDDI Networks" msgstr "RFC2467: Transmission of IPv6 Packets over FDDI Networks" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:138 msgid "RFC2497: Transmission of IPv6 packet over ARCnet Networks" msgstr "RFC2497: Transmission of IPv6 packet over ARCnet Networks" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:139 msgid "RFC2553: Basic Socket Interface Extensions for IPv6" msgstr "RFC2553: Basic Socket Interface Extensions for IPv6" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:142 msgid "" "IPv4 mapped address (3.7) and special behavior of IPv6 wildcard bind socket " "(3.8) are supported. See crossref:ipv6[ipv6-wildcard-socket,IPv4 Mapped " "Address and IPv6 Wildcard Socket] in this document for details." msgstr "" "Отображаемый адрес IPv4 (3.7) и особое поведение сокета с привязкой по " "шаблону IPv6 (3.8) поддерживаются. Подробности см. в разделе этого документа " "crossref:ipv6[ipv6-wildcard-socket,IPv4-отображённые адреса и IPv6-сокет с " "подстановочным адресом]." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:144 msgid "RFC2675: IPv6 Jumbograms" msgstr "RFC2675: IPv6 Jumbograms" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:146 msgid "" "See crossref:ipv6[ipv6-jumbo,Jumbo Payload] in this document for details." msgstr "" "См. раздел crossref:ipv6[ipv6-jumbo,Джамбо-пакет (Jumbo Payload)] в этом " "документе для получения подробностей." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:148 msgid "RFC2710: Multicast Listener Discovery for IPv6" msgstr "RFC2710: Multicast Listener Discovery for IPv6" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:149 msgid "RFC2711: IPv6 router alert option" msgstr "RFC2711: IPv6 router alert option" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:150 msgid "" "[.filename]#draft-ietf-ipngwg-router-renum-08#: Router renumbering for IPv6" msgstr "" "[.filename]#draft-ietf-ipngwg-router-renum-08#: Перенумерация " "маршрутизаторов для IPv6" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:151 msgid "" "[.filename]#draft-ietf-ipngwg-icmp-namelookups-02#: IPv6 Name Lookups " "Through ICMP" msgstr "" "[.filename]#draft-ietf-ipngwg-icmp-namelookups-02#: Поиск имён через ICMP в " "IPv6" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:152 msgid "" "[.filename]#draft-ietf-ipngwg-icmp-name-lookups-03#: IPv6 Name Lookups " "Through ICMP" msgstr "" "[.filename]#draft-ietf-ipngwg-icmp-name-lookups-03#: Поиск имён IPv6 через " "ICMP" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:153 msgid "[.filename]#draft-ietf-pim-ipv6-01.txt#: PIM for IPv6" msgstr "[.filename]#draft-ietf-pim-ipv6-01.txt#: PIM for IPv6" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:155 msgid "" "man:pim6dd[8] implements dense mode. man:pim6sd[8] implements sparse mode." msgstr "" "man:pim6dd[8] реализует плотный режим. man:pim6sd[8] реализует разреженный " "режим." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:157 msgid "" "[.filename]#draft-itojun-ipv6-tcp-to-anycast-00#: Disconnecting TCP " "connection toward IPv6 anycast address" msgstr "" "[.filename]#draft-itojun-ipv6-tcp-to-anycast-00#: Разрыв TCP-соединения с " "anycast-адресом IPv6" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:158 msgid "[.filename]#draft-yamamoto-wideipv6-comm-model-00#" msgstr "[.filename]#draft-yamamoto-wideipv6-comm-model-00#" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:160 msgid "" "See crossref:ipv6[ipv6-sas,Source Address Selection] in this document for " "details." msgstr "" "См. раздел crossref:ipv6[ipv6-sas,Выбор исходящего адреса] в этом документе " "для более подробной информации." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:162 msgid "" "[.filename]#draft-ietf-ipngwg-scopedaddr-format-00.txt#: An Extension of " "Format for IPv6 Scoped Addresses" msgstr "" "[.filename]#draft-ietf-ipngwg-scopedaddr-format-00.txt#: Расширение формата " "для адресов с областью действия IPv6" #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:164 #, no-wrap msgid "Neighbor Discovery" msgstr "Функция \"Обнаружение соседей\"" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:169 msgid "" "Neighbor Discovery is fairly stable. Currently Address Resolution, " "Duplicated Address Detection, and Neighbor Unreachability Detection are " "supported. In the near future we will be adding Proxy Neighbor " "Advertisement support in the kernel and Unsolicited Neighbor Advertisement " "transmission command as admin tool." msgstr "" "Обнаружение соседей достаточно стабильно. В настоящее время поддерживаются " "следующие функции: определение адреса (Address Resolution), обнаружение " "дублирования адресов (DAD — Duplicated Address Detection) и обнаружение " "недоступности соседей (Neighbor Unreachability Detection). В ближайшем " "будущем мы добавим поддержку прокси-объявлений соседей (Proxy Neighbor " "Advertisement) в ядро и команду передачи непрошенных объявлений соседей " "(Unsolicited Neighbor Advertisement) в качестве инструмента администратора." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:174 msgid "" "If DAD fails, the address will be marked \"duplicated\" and message will be " "generated to syslog (and usually to console). The \"duplicated\" mark can " "be checked with man:ifconfig[8]. It is administrators' responsibility to " "check for and recover from DAD failures. The behavior should be improved in " "the near future." msgstr "" "Если DAD завершается неудачно, адрес будет помечен как \"дублированный" "\" (duplicated), и сообщение будет записано в syslog (а также обычно " "выведено на консоль). Метку \"дублированный\" можно проверить с помощью man:" "ifconfig[8]. Обязанность администратора — проверять и устранять сбои DAD. В " "ближайшем будущем поведение должно быть улучшено." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:178 msgid "" "Some of the network driver loops multicast packets back to itself, even if " "instructed not to do so (especially in promiscuous mode). In such cases DAD " "may fail, because DAD engine sees inbound NS packet (actually from the node " "itself) and considers it as a sign of duplicate. You may want to look at " "#if condition marked \"heuristics\" in sys/netinet6/nd6_nbr.c:" "nd6_dad_timer() as workaround (note that the code fragment in \"heuristics\" " "section is not spec conformant)." msgstr "" "Некоторые сетевые драйверы закольцовывают multicast-пакеты обратно на себя, " "даже если им указано так не делать (особенно в promiscuous mode). В таких " "случаях DAD может завершиться неудачей, так как механизм DAD видит входящий " "NS-пакет (на самом деле от самого узла) и считает его признаком дубликата. В " "качестве обходного решения можно рассмотреть условие #if с пометкой " "\"heuristics\" в sys/netinet6/nd6_nbr.c:nd6_dad_timer() (обратите внимание, " "что фрагмент кода в разделе \"heuristics\" не соответствует спецификации)." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:180 msgid "" "Neighbor Discovery specification (RFC2461) does not talk about neighbor " "cache handling in the following cases:" msgstr "" "Спецификация обнаружения соседей (RFC2461) не рассматривает обработку кэша " "соседей в следующих случаях:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:182 msgid "" "when there was no neighbor cache entry, node received unsolicited RS/NS/NA/" "redirect packet without link-layer address" msgstr "" "когда отсутствовала запись в кэше соседей, узел получал нежелательный пакет " "RS/NS/NA/редирект без адреса канального уровня" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:183 msgid "" "neighbor cache handling on medium without link-layer address (we need a " "neighbor cache entry for IsRouter bit)" msgstr "" "обработка кэша соседей в среде без адреса канального уровня (нам нужна " "запись в кэше соседей для бита IsRouter)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:186 msgid "" "For first case, we implemented workaround based on discussions on IETF " "ipngwg mailing list. For more details, see the comments in the source code " "and email thread started from (IPng 7155), dated Feb 6 1999." msgstr "" "Для первого случая мы реализовали временное решение на основе обсуждений в " "рассылке IETF ipngwg. Подробности можно найти в комментариях исходного кода " "и ветке электронной почты, начавшейся с (IPng 7155) от 6 февраля 1999 года." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:189 msgid "" "IPv6 on-link determination rule (RFC2461) is quite different from " "assumptions in BSD network code. At this moment, no on-link determination " "rule is supported where default router list is empty (RFC2461, section 5.2, " "last sentence in 2nd paragraph - note that the spec misuse the word \"host\" " "and \"node\" in several places in the section)." msgstr "" "Правило определения локальной IPv6 сети (RFC2461) значительно отличается от " "предположений в сетевом коде BSD. На данный момент не поддерживается правило " "определения локальной сети при пустом списке маршрутизаторов по умолчанию " "(RFC2461, раздел 5.2, последнее предложение во 2-м абзаце - обратите " "внимание, что в спецификации некорректно используются слова \"host\" и \"node" "\" в нескольких местах раздела)." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:194 msgid "" "To avoid possible DoS attacks and infinite loops, only 10 options on ND " "packet is accepted now. Therefore, if you have 20 prefix options attached " "to RA, only the first 10 prefixes will be recognized. If this troubles you, " "please ask it on FREEBSD-CURRENT mailing list and/or modify nd6_maxndopt in " "[.filename]#sys/netinet6/nd6.c#. If there are high demands we may provide " "sysctl knob for the variable." msgstr "" "Во избежание возможных атак типа DoS и бесконечных циклов, сейчас " "принимается только 10 опций в ND-пакете. Таким образом, если к RA " "прикреплено 20 опций префиксов, будут распознаны только первые 10 префиксов. " "Если это вызывает проблемы, пожалуйста, задайте вопрос в рассылке FREEBSD-" "CURRENT и/или измените nd6_maxndopt в [.filename]#sys/netinet6/nd6.c#. При " "высоком спросе мы можем предоставить sysctl-параметр для этой переменной." #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:196 #, no-wrap msgid "Scope Index" msgstr "Индекс зоны" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:201 msgid "" "IPv6 uses scoped addresses. Therefore, it is very important to specify " "scope index (interface index for link-local address, or site index for site-" "local address) with an IPv6 address. Without scope index, scoped IPv6 " "address is ambiguous to the kernel, and kernel will not be able to determine " "the outbound interface for a packet." msgstr "" "В IPv6 используются адреса с областями видимости — зонами. Поэтому очень " "важно указывать индекс зоны (индекс интерфейса для линк-локального адреса " "или индекс сайта для сайт-локального адреса) вместе с IPv6 адресом. Без " "индекса зоны адрес IPv6 с ограниченной областью действия является " "неоднозначным для ядра, и ядро не сможет определить исходящий интерфейс для " "пакета." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:206 msgid "" "Ordinary userland applications should use advanced API (RFC2292) to specify " "scope index, or interface index. For similar purpose, sin6_scope_id member " "in sockaddr_in6 structure is defined in RFC2553. However, the semantics for " "sin6_scope_id is rather vague. If you care about portability of your " "application, we suggest you to use advanced API rather than sin6_scope_id." msgstr "" "Обычные пользовательские приложения должны использовать расширенный API " "(RFC2292) для указания индекса зоны или индекса интерфейса. Для аналогичных " "целей член sin6_scope_id в структуре sockaddr_in6 определён в RFC2553. " "Однако семантика sin6_scope_id довольно расплывчата. Если важна " "переносимость вашего приложения, мы рекомендуем использовать расширенный API " "вместо sin6_scope_id." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:209 msgid "" "In the kernel, an interface index for link-local scoped address is embedded " "into 2nd 16bit-word (3rd and 4th byte) in IPv6 address. For example, you " "may see something like:" msgstr "" "В ядре индекс интерфейса для адреса с областью действия link-local " "встраивается во второе 16-битное слово (3-й и 4-й байт) в IPv6-адресе. " "Например, вы можете увидеть что-то вроде:" #. type: delimited block . 4 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:213 #, no-wrap msgid "\tfe80:1::200:f8ff:fe01:6317\n" msgstr "\tfe80:1::200:f8ff:fe01:6317\n" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:218 msgid "" "in the routing table and interface address structure (struct in6_ifaddr). " "The address above is a link-local unicast address which belongs to a network " "interface whose interface identifier is 1. The embedded index enables us to " "identify IPv6 link local addresses over multiple interfaces effectively and " "with only a little code change." msgstr "" "в таблице маршрутизации и структуре адреса интерфейса (struct in6_ifaddr). " "Указанный выше адрес является линк-локальным уникастным адресом, который " "принадлежит сетевому интерфейсу с идентификатором интерфейса 1. Встроенный " "индекс позволяет эффективно идентифицировать локальные адреса IPv6 на " "нескольких интерфейсах с минимальными изменениями кода." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:223 msgid "" "Routing daemons and configuration programs, like man:route6d[8] and man:" "ifconfig[8], will need to manipulate the \"embedded\" scope index. These " "programs use routing sockets and ioctls (like SIOCGIFADDR_IN6) and the " "kernel API will return IPv6 addresses with 2nd 16bit-word filled in. The " "APIs are for manipulating kernel internal structure. Programs that use " "these APIs have to be prepared about differences in kernels anyway." msgstr "" "Демоны маршрутизации и программы настройки, такие как man:route6d[8] и man:" "ifconfig[8], должны управлять \"встроенным\" индексом зоны. Эти программы " "используют сокеты маршрутизации и ioctl (например, SIOCGIFADDR_IN6), и API " "ядра будет возвращать IPv6-адреса с заполненным вторым 16-битным словом. API " "предназначены для управления внутренними структурами ядра. Программы, " "использующие эти API, в любом случае должны быть готовы к различиям в ядрах." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:230 msgid "" "When you specify scoped address to the command line, NEVER write the " "embedded form (such as ff02:1::1 or fe80:2::fedc). This is not supposed to " "work. Always use standard form, like ff02::1 or fe80::fedc, with command " "line option for specifying interface (like `ping -6 -I ne0 ff02::1`). In " "general, if a command does not have command line option to specify outgoing " "interface, that command is not ready to accept scoped address. This may " "seem to be opposite from IPv6's premise to support \"dentist office\" " "situation. We believe that specifications need some improvements for this." msgstr "" "При указании адреса с ограниченной областью действия в командной строке " "НИКОГДА не используйте встроенную форму (например, ff02:1::1 или fe80:2::" "fedc). Это не должно работать. Всегда используйте стандартную форму, такую " "как ff02::1 или fe80::fedc, с параметром командной строки для указания " "интерфейса (например, `ping -6 -I ne0 ff02::1`). В общем, если команда не " "имеет параметра командной строки для указания исходящего интерфейса, эта " "команда не готова принимать адрес с областью действия. Это кажется " "противоречащим принципу IPv6 поддерживать сценарий \"кабинета стоматолога\". " "Мы считаем, что спецификации нуждаются в некоторых улучшениях для этого." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:234 msgid "" "Some of the userland tools support extended numeric IPv6 syntax, as " "documented in [.filename]#draft-ietf-ipngwg-scopedaddr-format-00.txt#. You " "can specify outgoing link, by using name of the outgoing interface like " "\"fe80::1%ne0\". This way you will be able to specify link-local scoped " "address without much trouble." msgstr "" "Некоторые пользовательские утилиты поддерживают расширенный числовой " "синтаксис IPv6, как описано в [.filename]#draft-ietf-ipngwg-scopedaddr-" "format-00.txt#. Можно указать исходящее соединение, используя имя исходящего " "интерфейса, например \"fe80::1%ne0\". Таким образом можно легко указать линк-" "локальный адрес с ограниченной областью действия." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:237 msgid "" "To use this extension in your program, you will need to use man:" "getaddrinfo[3], and man:getnameinfo[3] with NI_WITHSCOPEID. The " "implementation currently assumes 1-to-1 relationship between a link and an " "interface, which is stronger than what specs say." msgstr "" "Для использования этого расширения в вашей программе потребуется " "использовать man:getaddrinfo[3] и man:getnameinfo[3] с NI_WITHSCOPEID. В " "текущей реализации предполагается однозначное соответствие между каналом и " "интерфейсом, что является более строгим условием, чем указано в " "спецификациях." #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:239 #, no-wrap msgid "Plug and Play" msgstr "Plug and Play (подключи и работай)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:245 msgid "" "Most of the IPv6 stateless address autoconfiguration is implemented in the " "kernel. Neighbor Discovery functions are implemented in the kernel as a " "whole. Router Advertisement (RA) input for hosts is implemented in the " "kernel. Router Solicitation (RS) output for endhosts, RS input for routers, " "and RA output for routers are implemented in the userland." msgstr "" "Большая часть автонастройки адресов IPv6 без сохранения состояния " "реализована в ядре. Функции обнаружения соседей (Neighbor Discovery) " "реализованы в ядре целиком. Ввод рекламы маршрутизатора (RA) для хостов " "реализован в ядре. Вывод запроса маршрутизатора (RS) для конечных хостов, " "ввод RS для маршрутизаторов и вывод RA для маршрутизаторов реализованы в " "пользовательском пространстве." #. type: Title ===== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:246 #, no-wrap msgid "Assignment of link-local, and special addresses" msgstr "Назначение линк-локальных и специальных адресов" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:251 msgid "" "IPv6 link-local address is generated from IEEE802 address (Ethernet MAC " "address). Each of interface is assigned an IPv6 link-local address " "automatically, when the interface becomes up (IFF_UP). Also, direct route " "for the link-local address is added to routing table." msgstr "" "Линк-локальный адрес IPv6 генерируется из IEEE802 адреса (Ethernet MAC " "адреса). Каждому интерфейсу автоматически присваивается IPv6 линк-локальный " "адрес, когда интерфейс поднимается (IFF_UP). Также в таблицу маршрутизации " "добавляется прямой маршрут для линк-локального адреса." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:253 msgid "Here is an output of netstat command:" msgstr "Вот вывод команды netstat:" #. type: delimited block . 4 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:260 #, no-wrap msgid "" "Internet6:\n" "Destination Gateway Flags Netif Expire\n" "fe80:1::%ed0/64 link#1 UC ed0\n" "fe80:2::%ep0/64 link#2 UC ep0\n" msgstr "" "Internet6:\n" "Destination Gateway Flags Netif Expire\n" "fe80:1::%ed0/64 link#1 UC ed0\n" "fe80:2::%ep0/64 link#2 UC ep0\n" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:265 msgid "" "Interfaces that has no IEEE802 address (pseudo interfaces like tunnel " "interfaces, or ppp interfaces) will borrow IEEE802 address from other " "interfaces, such as Ethernet interfaces, whenever possible. If there is no " "IEEE802 hardware attached, a last resort pseudo-random value, MD5(hostname), " "will be used as source of link-local address. If it is not suitable for " "your usage, you will need to configure the link-local address manually." msgstr "" "Интерфейсы, не имеющие адреса IEEE802 (псевдоинтерфейсы, такие как " "туннельные интерфейсы или интерфейсы ppp), будут заимствовать адрес IEEE802 " "у других интерфейсов, например, Ethernet-интерфейсов, когда это возможно. " "Если нет подключенного оборудования IEEE802, в качестве последнего средства " "будет использовано псевдослучайное значение MD5(hostname) для формирования " "линк-локального адреса. Если это не подходит для вашего использования, вам " "потребуется настроить линк-локальный адрес вручную." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:268 msgid "" "If an interface is not capable of handling IPv6 (such as lack of multicast " "support), link-local address will not be assigned to that interface. See " "section 2 for details." msgstr "" "Если интерфейс не поддерживает IPv6 (например, отсутствует поддержка " "multicast), на этот интерфейс не будет назначен линк-локальный адрес. " "Подробности см. в разделе 2." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:272 msgid "" "Each interface joins the solicited multicast address and the link-local all-" "nodes multicast addresses (e.g., fe80::1:ff01:6317 and ff02::1, " "respectively, on the link the interface is attached). In addition to a link-" "local address, the loopback address (::1) will be assigned to the loopback " "interface. Also, ::1/128 and ff01::/32 are automatically added to routing " "table, and loopback interface joins node-local multicast group ff01::1." msgstr "" "Каждый интерфейс присоединяется к запрашиваемому широковещательному адресу и " "линк-локальным широковещательным адресам всех узлов (например, fe80::1:" "ff01:6317 и ff02::1 соответственно на соединении, к которому подключен " "интерфейс). В дополнение к линк-локальному адресу, адрес обратной петли (::1 " "— loopback) будет назначен интерфейсу обратной петли. Также, ::1/128 и " "ff01::/32 автоматически добавляются в таблицу маршрутизации, а loopback-" "интерфейс (интерфейс обратной петли) присоединяется к групповому адресу в " "пределах узла ff01::1." #. type: Title ===== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:273 #, no-wrap msgid "Stateless address autoconfiguration on Hosts" msgstr "Автоматическая настройка адресов без состояния на узлах" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:277 msgid "" "In IPv6 specification, nodes are separated into two categories: _routers_ " "and _hosts_. Routers forward packets addressed to others, hosts does not " "forward the packets. net.inet6.ip6.forwarding defines whether this node is " "router or host (router if it is 1, host if it is 0)." msgstr "" "В спецификации IPv6 узлы разделены на две категории: _маршрутизаторы_ и " "_хосты_. Маршрутизаторы пересылают пакеты, адресованные другим, хосты не " "пересылают пакеты. Параметр net.inet6.ip6.forwarding определяет, является ли " "данный узел маршрутизатором или хостом (маршрутизатор, если значение равно " "1, хост, если 0)." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:286 msgid "" "When a host hears Router Advertisement from the router, a host may " "autoconfigure itself by stateless address autoconfiguration. This behavior " "can be controlled by net.inet6.ip6.accept_rtadv (host autoconfigures itself " "if it is set to 1). By autoconfiguration, network address prefix for the " "receiving interface (usually global address prefix) is added. Default route " "is also configured. Routers periodically generate Router Advertisement " "packets. To request an adjacent router to generate RA packet, a host can " "transmit Router Solicitation. To generate a RS packet at any time, use the " "_rtsol_ command. man:rtsold[8] daemon is also available. man:rtsold[8] " "generates Router Solicitation whenever necessary, and it works great for " "nomadic usage (notebooks/laptops). If one wishes to ignore Router " "Advertisements, use sysctl to set net.inet6.ip6.accept_rtadv to 0." msgstr "" "Когда хост получает Объявление Маршрутизатора (Router Advertisement) от " "маршрутизатора, он может автоматически настроить себя с помощью " "автонастройки адреса без сохранения состояния. Это поведение можно " "контролировать с помощью параметра net.inet6.ip6.accept_rtadv (хост " "автонастраивается, если значение равно 1). При автонастройке добавляется " "префикс сетевого адреса для принимающего интерфейса (обычно префикс " "глобального адреса). Также настраивается маршрут по умолчанию. " "Маршрутизаторы периодически генерируют пакеты Router Advertisement. Чтобы " "запросить соседний маршрутизатор сгенерировать RA-пакет, хост может " "отправить Router Solicitation. Для генерации RS-пакета в любое время " "используйте команду _rtsol_. Также доступен демон man:rtsold[8]. man:" "rtsold[8] генерирует Router Solicitation по мере необходимости и отлично " "подходит для мобильного использования (ноутбуки/лэптопы). Если необходимо " "игнорировать Router Advertisements, используйте sysctl для установки net." "inet6.ip6.accept_rtadv в 0." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:288 msgid "" "To generate Router Advertisement from a router, use the man:rtadvd[8] daemon." msgstr "" "Для генерации Router Advertisement от маршрутизатора используйте демон man:" "rtadvd[8]." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:290 msgid "" "Note that, IPv6 specification assumes the following items, and nonconforming " "cases are left unspecified:" msgstr "" "Обратите внимание, что спецификация IPv6 предполагает следующие пункты, а " "случаи несоответствия остаются неуточнёнными:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:292 msgid "Only hosts will listen to router advertisements" msgstr "Только хосты будут принимать объявления от маршрутизаторов" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:293 msgid "Hosts have single network interface (except loopback)" msgstr "Узлы имеют один сетевой интерфейс (за исключением loopback)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:296 msgid "" "Therefore, this is unwise to enable net.inet6.ip6.accept_rtadv on routers, " "or multi-interface host. A misconfigured node can behave strange " "(nonconforming configuration allowed for those who would like to do some " "experiments)." msgstr "" "Поэтому не рекомендуется включать net.inet6.ip6.accept_rtadv на " "маршрутизаторах или многопортовых хостах. Неправильно настроенный узел может " "вести себя странно (нестандартная конфигурация разрешена для тех, кто хочет " "провести эксперименты)." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:298 msgid "To summarize the sysctl knob:" msgstr "Резюмируя настройку sysctl:" #. type: delimited block . 4 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:312 #, no-wrap msgid "" "\taccept_rtadv\tforwarding\trole of the node\n" "\t---\t\t---\t\t---\n" "\t0\t\t0\t\thost (to be manually configured)\n" "\t0\t\t1\t\trouter\n" "\t1\t\t0\t\tautoconfigured host\n" "\t\t\t\t\t(spec assumes that host has single\n" "\t\t\t\t\tinterface only, autoconfigured host\n" "\t\t\t\t\twith multiple interface is\n" "\t\t\t\t\tout-of-scope)\n" "\t1\t\t1\t\tinvalid, or experimental\n" "\t\t\t\t\t(out-of-scope of spec)\n" msgstr "" "\taccept_rtadv\tforwarding\trole of the node\n" "\t---\t\t---\t\t---\n" "\t0\t\t0\t\thost (to be manually configured)\n" "\t0\t\t1\t\trouter\n" "\t1\t\t0\t\tautoconfigured host\n" "\t\t\t\t\t(spec assumes that host has single\n" "\t\t\t\t\tinterface only, autoconfigured host\n" "\t\t\t\t\twith multiple interface is\n" "\t\t\t\t\tout-of-scope)\n" "\t1\t\t1\t\tinvalid, or experimental\n" "\t\t\t\t\t(out-of-scope of spec)\n" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:317 msgid "" "RFC2462 has validation rule against incoming RA prefix information option, " "in 5.5.3 (e). This is to protect hosts from malicious (or misconfigured) " "routers that advertise very short prefix lifetime. There was an update from " "Jim Bound to ipngwg mailing list (look for \"(ipng 6712)\" in the archive) " "and it is implemented Jim's update." msgstr "" "В RFC2462 есть правило проверки для входящей информации о префиксе в RA, в " "разделе 5.5.3 (e). Это защищает хосты от злонамеренных (или неправильно " "настроенных) маршрутизаторов, которые анонсируют очень короткое время жизни " "префикса. Было обновление от Джима Баунда в рассылке ipngwg (ищите \"(ipng " "6712)\" в архиве), и это обновление Джима реализовано." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:319 msgid "" "See crossref:ipv6[neighbor-discovery,Neighbor Discovery] in the document for " "relationship between DAD and autoconfiguration." msgstr "" "См. раздел crossref:ipv6[neighbor-discovery,Функция \"Обнаружение соседей\"] " "в этом документе для информации о взаимосвязи между DAD и автонастройкой." #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:321 #, no-wrap msgid "Generic Tunnel Interface" msgstr "Универсальный туннельный интерфейс" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:325 msgid "" "GIF (Generic InterFace) is a pseudo interface for configured tunnel. " "Details are described in man:gif[4]. Currently" msgstr "" "GIF (Generic InterFace) — это псевдоинтерфейс для настроенного туннеля. " "Подробности описаны в man:gif[4]. В настоящее время" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:327 msgid "v6 in v6" msgstr "v6 в v6" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:328 msgid "v6 in v4" msgstr "v6 в v4" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:329 msgid "v4 in v6" msgstr "v4 в v6" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:330 msgid "v4 in v4" msgstr "v4 в v4" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:335 msgid "" "are available. Use man:gifconfig[8] to assign physical (outer) source and " "destination address to gif interfaces. Configuration that uses same address " "family for inner and outer IP header (v4 in v4, or v6 in v6) is dangerous. " "It is very easy to configure interfaces and routing tables to perform " "infinite level of tunneling. _Please be warned_." msgstr "" "доступны. Используйте man:gifconfig[8] для назначения физических (внешних) " "исходных и конечных адресов интерфейсам gif. Конфигурация, использующая одно " "семейство адресов для внутреннего и внешнего IP-заголовка (v4 в v4 или v6 в " "v6), является опасной. Очень легко настроить интерфейсы и таблицы " "маршрутизации для выполнения бесконечного уровня туннелирования. " "_Пожалуйста, будьте осторожны_." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:338 msgid "" "gif can be configured to be ECN-friendly. See crossref:ipv6[ipsec-ecn,ECN " "Consideration on IPsec Tunnels] for ECN-friendliness of tunnels, and man:" "gif[4] for how to configure." msgstr "" "gif можно настроить так, чтобы он был дружественным к ECN. Подробнее о " "дружелюбности к ECN для туннелей см. crossref:ipv6[ipsec-ecn,Учёт ECN в " "IPsec-туннелях], а о настройке — в man:gif[4]." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:341 msgid "" "If you would like to configure an IPv4-in-IPv6 tunnel with gif interface, " "read man:gif[4] carefully. You will need to remove IPv6 link-local address " "automatically assigned to the gif interface." msgstr "" "Если вы хотите настроить туннель IPv4-в-IPv6 с интерфейсом gif, внимательно " "прочитайте man:gif[4]. Вам потребуется удалить линк-локальный адрес IPv6, " "автоматически назначенный интерфейсу gif." #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:343 #, no-wrap msgid "Source Address Selection" msgstr "Выбор исходящего адреса" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:347 msgid "" "Current source selection rule is scope oriented (there are some exceptions - " "see below). For a given destination, a source IPv6 address is selected by " "the following rule:" msgstr "" "Текущее правило выбора источника ориентировано на зону (есть несколько " "исключений — см. ниже). Для заданного адреса назначения исходящий IPv6-адрес " "выбирается по следующему правилу:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:349 msgid "" "If the source address is explicitly specified by the user (e.g., via the " "advanced API), the specified address is used." msgstr "" "Если исходящий адрес явно указан пользователем (например, через расширенный " "API), используется указанный адрес." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:350 msgid "" "If there is an address assigned to the outgoing interface (which is usually " "determined by looking up the routing table) that has the same scope as the " "destination address, the address is used." msgstr "" "Если на исходящем интерфейсе назначен адрес (который обычно определяется " "путем просмотра таблицы маршрутизации) с той же зоной действия, что и адрес " "назначения, используется этот адрес." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:352 msgid "This is the most typical case." msgstr "Это наиболее типичный случай." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:353 msgid "" "If there is no address that satisfies the above condition, choose a global " "address assigned to one of the interfaces on the sending node." msgstr "" "Если нет адреса, удовлетворяющего указанному выше условию, выберите " "глобальный адрес, назначенный одному из интерфейсов на отправляющем узле." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:354 msgid "" "If there is no address that satisfies the above condition, and destination " "address is site local scope, choose a site local address assigned to one of " "the interfaces on the sending node." msgstr "" "Если нет адреса, удовлетворяющего указанному выше условию, и адрес " "назначения имеет сайт-локальную зону, выберите сайт-локальный адрес, " "назначенный одному из интерфейсов на отправляющем узле." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:355 msgid "" "If there is no address that satisfies the above condition, choose the " "address associated with the routing table entry for the destination. This is " "the last resort, which may cause scope violation." msgstr "" "Если нет адреса, удовлетворяющего указанному условию, выберите адрес, " "связанный с записью таблицы маршрутизации для назначения. Это крайняя мера, " "которая может нарушить границы зоны действия." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:361 msgid "" "For instance, ::1 is selected for ff01::1, fe80:1::200:f8ff:fe01:6317 for " "fe80:1::2a0:24ff:feab:839b (note that embedded interface index - described " "in crossref:ipv6[ipv6-scope-index,Scope Index] - helps us choose the right " "source address. Those embedded indices will not be on the wire). If the " "outgoing interface has multiple address for the scope, a source is selected " "longest match basis (rule 3). Suppose 2001:0DB8:808:1:200:f8ff:fe01:6317 " "and 2001:0DB8:9:124:200:f8ff:fe01:6317 are given to the outgoing interface. " "2001:0DB8:808:1:200:f8ff:fe01:6317 is chosen as the source for the " "destination 2001:0DB8:800::1." msgstr "" "Например, ::1 выбирается для ff01::1, fe80:1::200:f8ff:fe01:6317 для " "fe80:1::2a0:24ff:feab:839b (обратите внимание, что встроенный индекс " "интерфейса — описанный в crossref:ipv6[ipv6-scope-index,Индекс зоны] — " "помогает нам выбрать правильный исходный адрес. Эти встроенные индексы не " "будут передаваться по сети). Если исходящий интерфейс имеет несколько " "адресов для данной зоны, исходный адрес выбирается на основе наибольшего " "соответствия (правило 3). Предположим, что 2001:0DB8:808:1:200:f8ff:fe01:" "6317 и 2001:0DB8:9:124:200:f8ff:fe01:6317 назначены исходящему интерфейсу. " "2001:0DB8:808:1:200:f8ff:fe01:6317 выбирается в качестве исходящего адреса " "для адреса назначения 2001:0DB8:800::1." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:368 msgid "" "Note that the above rule is not documented in the IPv6 spec. It is " "considered \"up to implementation\" item. There are some cases where we do " "not use the above rule. One example is connected TCP session, and we use " "the address kept in tcb as the source. Another example is source address " "for Neighbor Advertisement. Under the spec (RFC2461 7.2.2) NA's source " "should be the target address of the corresponding NS's target. In this case " "we follow the spec rather than the above longest-match rule." msgstr "" "Обратите внимание, что приведённое выше правило не документировано в " "спецификации IPv6. Оно считается элементом, оставленным \"на усмотрение " "реализации\". Существуют случаи, когда мы не используем это правило. Один из " "примеров — установленное TCP-соединение, где мы используем адрес, " "сохранённый в tcb, в качестве источника. Другой пример — исходящий адрес для " "Объявления Соседа (Neighbor Advertisement). Согласно спецификации (RFC2461 7." "2.2) источник NA должен быть целевым адресом соответствующего NS. В этом " "случае мы следуем спецификации, а не приведённому выше правилу наибольшего " "совпадения." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:374 msgid "" "For new connections (when rule 1 does not apply), deprecated addresses " "(addresses with preferred lifetime = 0) will not be chosen as source address " "if other choices are available. If no other choices are available, " "deprecated address will be used as a last resort. If there are multiple " "choice of deprecated addresses, the above scope rule will be used to choose " "from those deprecated addresses. If you would like to prohibit the use of " "deprecated address for some reason, configure net.inet6.ip6.use_deprecated " "to 0. The issue related to deprecated address is described in RFC2462 5.5.4 " "(NOTE: there is some debate underway in IETF ipngwg on how to use " "\"deprecated\" address)." msgstr "" "Для новых соединений (когда правило 1 не применяется), устаревшие адреса " "(адреса с предпочтительным временем жизни = 0) не будут выбираться в " "качестве исходящего адреса, если доступны другие варианты. Если других " "вариантов нет, устаревший адрес будет использован в качестве последнего " "средства. Если есть несколько устаревших адресов, для выбора между ними " "будет применено указанное выше правило области видимости. Если вы хотите " "запретить использование устаревших адресов по какой-либо причине, установите " "параметр net.inet6.ip6.use_deprecated в значение 0. Проблема, связанная с " "устаревшими адресами, описана в RFC2462 5.5.4 (ПРИМЕЧАНИЕ: в IETF ipngwg " "ведутся дебаты о том, как использовать \"устаревшие\" адреса)." #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:376 #, no-wrap msgid "Jumbo Payload" msgstr "Джамбо-пакет (Jumbo Payload)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:380 msgid "" "The Jumbo Payload hop-by-hop option is implemented and can be used to send " "IPv6 packets with payloads longer than 65,535 octets. But currently no " "physical interface whose MTU is more than 65,535 is supported, so such " "payloads can be seen only on the loopback interface (i.e., lo0)." msgstr "" "Опция джамбо-пакет типа \"от прыжка к прыжку\" реализована и может " "использоваться для отправки IPv6-пакетов с полезной нагрузкой длиной более " "65 535 октетов. Однако в настоящее время не поддерживаются физические " "интерфейсы с MTU более 65 535, поэтому такие нагрузки могут быть только на " "интерфейсе loopback (т.е. lo0)." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:382 msgid "" "If you want to try jumbo payloads, you first have to reconfigure the kernel " "so that the MTU of the loopback interface is more than 65,535 bytes; add the " "following to the kernel configuration file:" msgstr "" "Если вы хотите попробовать джамбо-пакеты, сначала необходимо " "переконфигурировать ядро, чтобы MTU интерфейса loopback превышал 65 535 " "байт; добавьте следующее в конфигурационный файл ядра:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:384 msgid "`options \"LARGE_LOMTU\" #To test jumbo payload`" msgstr "`options \"LARGE_LOMTU\" #To test jumbo payload`" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:386 msgid "and recompile the new kernel." msgstr "и пересоберите новое ядро." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:390 msgid "" "Then you can test jumbo payloads by the man:ping[8] command with -6, -b and -" "s options. The -b option must be specified to enlarge the size of the " "socket buffer and the -s option specifies the length of the packet, which " "should be more than 65,535. For example, type as follows:" msgstr "" "Затем вы можете проверить работу с большими пакетами с помощью команды man:" "ping[8] с опциями -6, -b и -s. Опция -b необходима для увеличения размера " "буфера сокета, а опция -s задает длину пакета, которая должна быть больше 65 " "535. Например, введите следующее:" #. type: delimited block . 4 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:394 #, no-wrap msgid "% ping -6 -b 70000 -s 68000 ::1\n" msgstr "% ping -6 -b 70000 -s 68000 ::1\n" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:399 msgid "" "The IPv6 specification requires that the Jumbo Payload option must not be " "used in a packet that carries a fragment header. If this condition is " "broken, an ICMPv6 Parameter Problem message must be sent to the sender. " "specification is followed, but you cannot usually see an ICMPv6 error caused " "by this requirement." msgstr "" "Спецификация IPv6 требует, чтобы опция Джамбо-пакет не использовалась в " "пакете, содержащем заголовок фрагмента. Если это условие нарушено, должно " "быть отправлено ICMPv6 сообщение Parameter Problem отправителю. Спецификация " "соблюдается, но обычно вы не можете увидеть ICMPv6 ошибку, вызванную этим " "требованием." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:403 msgid "" "When an IPv6 packet is received, the frame length is checked and compared to " "the length specified in the payload length field of the IPv6 header or in " "the value of the Jumbo Payload option, if any. If the former is shorter " "than the latter, the packet is discarded and statistics are incremented. " "You can see the statistics as output of man:netstat[8] command with `-s -p " "ip6' option:" msgstr "" "При получении IPv6-пакета проверяется длина кадра и сравнивается с длиной, " "указанной в поле длины полезной нагрузки заголовка IPv6 или в значении опции " "Джамбо-пакета, если она присутствует. Если первое значение меньше второго, " "пакет отбрасывается, и статистика увеличивается. Статистику можно увидеть в " "выводе команды man:netstat[8] с опцией `-s -p ip6`:" #. type: delimited block . 4 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:410 #, no-wrap msgid "" "% netstat -s -p ip6\n" "\t ip6:\n" "\t\t(snip)\n" "\t\t1 with data size < data length\n" msgstr "" "% netstat -s -p ip6\n" "\t ip6:\n" "\t\t(snip)\n" "\t\t1 with data size < data length\n" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:414 msgid "" "So, kernel does not send an ICMPv6 error unless the erroneous packet is an " "actual Jumbo Payload, that is, its packet size is more than 65,535 bytes. " "As described above, currently no physical interface with such a huge MTU is " "supported, so it rarely returns an ICMPv6 error." msgstr "" "Итак, ядро не отправляет ICMPv6 ошибку, если ошибочный пакет не является " "фактически Джамбо-пакетом, то есть его размер пакета превышает 65 535 байт. " "Как описано выше, в настоящее время не поддерживаются физические интерфейсы " "с таким огромным MTU, поэтому ICMPv6 ошибка возвращается редко." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:417 msgid "" "TCP/UDP over jumbogram is not supported at this moment. This is because we " "have no medium (other than loopback) to test this. Contact us if you need " "this." msgstr "" "В настоящее время поддержка TCP/UDP через jumbogram не реализована. Это " "связано с отсутствием среды (кроме loopback) для тестирования данной " "функциональности. Свяжитесь с нами, если вам это необходимо." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:420 msgid "" "IPsec does not work on jumbograms. This is due to some specification twists " "in supporting AH with jumbograms (AH header size influences payload length, " "and this makes it real hard to authenticate inbound packet with jumbo " "payload option as well as AH)." msgstr "" "IPsec не работает с jumbogram. Это связано с особенностями спецификации, " "касающимися поддержки AH для джамбограмм (размер заголовка AH влияет на " "длину полезной нагрузки, что делает крайне сложной аутентификацию входящего " "пакета с опцией Джамбо-пакет, а также AH)." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:424 msgid "" "There are fundamental issues in *BSD support for jumbograms. We would like " "to address those, but we need more time to finalize these. To name a few:" msgstr "" "Существуют фундаментальные проблемы в поддержке *BSD для jumbogram. Мы " "хотели бы решить их, но нам нужно больше времени для завершения работы. Вот " "некоторые из них:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:428 msgid "" "mbuf pkthdr.len field is typed as \"int\" in 4.4BSD, so it will not hold " "jumbogram with len > 2G on 32bit architecture CPUs. If we would like to " "support jumbogram properly, the field must be expanded to hold 4G + IPv6 " "header + link-layer header. Therefore, it must be expanded to at least " "int64_t (u_int32_t is NOT enough)." msgstr "" "Поле `mbuf pkthdr.len` имеет тип `int` в 4.4BSD, поэтому оно не сможет " "содержать джамбограмму с длиной > 2G на 32-битных архитектурах CPU. Если мы " "хотим правильно поддерживать джамбограммы, это поле необходимо расширить, " "чтобы оно могло содержать 4G + заголовок IPv6 + заголовок канального уровня. " "Следовательно, его необходимо расширить как минимум до `int64_t` " "(`u_int32_t` НЕ достаточно)." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:430 msgid "" "We mistakingly use \"int\" to hold packet length in many places. We need to " "convert them into larger integral type. It needs a great care, as we may " "experience overflow during packet length computation." msgstr "" "Мы ошибочно используем \"int\" для хранения длины пакета во многих местах. " "Нам необходимо преобразовать их в более крупный целочисленный тип. Это " "требует большой осторожности, так как мы можем столкнуться с переполнением " "во время вычисления длины пакета." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:431 msgid "" "We mistakingly check for ip6_plen field of IPv6 header for packet payload " "length in various places. We should be checking mbuf pkthdr.len instead. " "ip6_input() will perform sanity check on jumbo payload option on input, and " "we can safely use mbuf pkthdr.len afterwards." msgstr "" "Мы ошибочно проверяем поле ip6_plen заголовка IPv6 для определения длины " "полезной нагрузки пакета в различных местах. Вместо этого следует проверять " "mbuf pkthdr.len. Функция ip6_input() выполняет проверку корректности опции " "Джамбо-пакет при вводе, и после этого можно безопасно использовать mbuf " "pkthdr.len." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:432 msgid "TCP code needs a careful update in bunch of places, of course." msgstr "Код TCP требует тщательного обновления в ряде мест, разумеется." #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:433 #, no-wrap msgid "Loop Prevention in Header Processing" msgstr "Предотвращение петель при обработке заголовков" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:444 msgid "" "IPv6 specification allows arbitrary number of extension headers to be placed " "onto packets. If we implement IPv6 packet processing code in the way BSD " "IPv4 code is implemented, kernel stack may overflow due to long function " "call chain. sys/netinet6 code is carefully designed to avoid kernel stack " "overflow, so sys/netinet6 code defines its own protocol switch structure, as " "\"struct ip6protosw\" (see [.filename]#netinet6/ip6protosw.h#). There is no " "such update to IPv4 part (sys/netinet) for compatibility, but small change " "is added to its pr_input() prototype. So \"struct ipprotosw\" is also " "defined. As a result, if you receive IPsec-over-IPv4 packet with massive " "number of IPsec headers, kernel stack may blow up. IPsec-over-IPv6 is " "okay. (Of-course, for those all IPsec headers to be processed, each such " "IPsec header must pass each IPsec check. So an anonymous attacker will not " "be able to do such an attack.)" msgstr "" "Спецификация IPv6 допускает размещение произвольного количества расширений в " "заголовках пакетов. Если реализовать код обработки пакетов IPv6 так, как " "реализован код IPv4 в BSD, может произойти переполнение стека ядра из-за " "длинной цепочки вызовов функций. Код в sys/netinet6 тщательно спроектирован, " "чтобы избежать переполнения стека ядра, поэтому он определяет собственную " "структуру переключения протоколов — \"struct ip6protosw\" (см. [." "filename]#netinet6/ip6protosw.h#). Для IPv4 части (sys/netinet) подобных " "обновлений не было сделано для сохранения совместимости, но в прототип " "pr_input() внесено небольшое изменение. Поэтому также определена \"struct " "ipprotosw\". В результате, если получен пакет IPsec-over-IPv4 с большим " "количеством заголовков IPsec, стек ядра может переполниться. С IPsec-over-" "IPv6 такой проблемы нет. (Разумеется, чтобы все эти заголовки IPsec были " "обработаны, каждый такой заголовок должен пройти все проверки IPsec. Поэтому " "анонимный злоумышленник не сможет осуществить подобную атаку.)" #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:446 #, no-wrap msgid "ICMPv6" msgstr "ICMPv6" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:450 msgid "" "After RFC2463 was published, IETF ipngwg has decided to disallow ICMPv6 " "error packet against ICMPv6 redirect, to prevent ICMPv6 storm on a network " "medium. This is already implemented into the kernel." msgstr "" "После публикации RFC2463 IETF ipngwg решил запретить ICMPv6 пакеты ошибок " "для ICMPv6 перенаправлений, чтобы предотвратить ICMPv6 шторм в сетевой " "среде. Это уже реализовано в ядре." #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:451 #, no-wrap msgid "Applications" msgstr "Приложения (Applications)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:454 msgid "" "For userland programming, we support IPv6 socket API as specified in " "RFC2553, RFC2292 and upcoming Internet drafts." msgstr "" "Для программирования в пользовательском пространстве мы поддерживаем API " "сокетов IPv6, как указано в RFC2553, RFC2292 и готовящихся интернет-" "черновиках." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:459 msgid "" "TCP/UDP over IPv6 is available and quite stable. You can enjoy man:" "telnet[1], man:ftp[1], man:rlogin[1], man:rsh[1], man:ssh[1], etc. These " "applications are protocol independent. That is, they automatically chooses " "IPv4 or IPv6 according to DNS." msgstr "" "TCP/UDP поверх IPv6 доступны и достаточно стабильны. Вы можете использовать " "man:telnet[1], man:ftp[1], man:rlogin[1], man:rsh[1], man:ssh[1] и т.д. Эти " "приложения не зависят от протокола. То есть они автоматически выбирают IPv4 " "или IPv6 в соответствии с DNS." #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:460 #, no-wrap msgid "Kernel Internals" msgstr "Внутреннее устройство ядра" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:463 msgid "" "While ip_forward() calls ip_output(), ip6_forward() directly calls " "if_output() since routers must not divide IPv6 packets into fragments." msgstr "" "В то время как ip_forward() вызывает ip_output(), ip6_forward() напрямую " "вызывает if_output(), поскольку маршрутизаторы не должны разделять пакеты " "IPv6 на фрагменты." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:467 msgid "" "ICMPv6 should contain the original packet as long as possible up to 1280. " "UDP6/IP6 port unreach, for instance, should contain all extension headers " "and the *unchanged* UDP6 and IP6 headers. So, all IP6 functions except TCP " "never convert network byte order into host byte order, to save the original " "packet." msgstr "" "ICMPv6 должен содержать исходный пакет по возможности вплоть до 1280 байт. " "Например, сообщение \"Ошибка недоступности порта UDP6/IP6\" должно содержать " "все расширенные заголовки и *неизменённые* заголовки UDP6 и IP6. Таким " "образом, все функции IP6, кроме TCP, никогда не преобразуют порядок байтов " "сети в порядок байтов хоста, чтобы сохранить исходный пакет." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:471 msgid "" "tcp_input(), udp6_input() and icmp6_input() can not assume that IP6 header " "is preceding the transport headers due to extension headers. So, " "in6_cksum() was implemented to handle packets whose IP6 header and transport " "header is not continuous. TCP/IP6 nor UDP6/IP6 header structures do not " "exist for checksum calculation." msgstr "" "Функции tcp_input(), udp6_input() и icmp6_input() не могут предполагать, что " "заголовок IP6 предшествует транспортным заголовкам из-за наличия расширенных " "заголовков. Поэтому была реализована in6_cksum() для обработки пакетов, у " "которых заголовок IP6 и транспортный заголовок не являются непрерывными. Но " "ни для TCP/IP6, ни для UDP6/IP6 в заголовке нет структуры для расчёта " "контрольной суммы." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:474 msgid "" "To process IP6 header, extension headers and transport headers easily, " "network drivers are now required to store packets in one internal mbuf or " "one or more external mbufs. A typical old driver prepares two internal " "mbufs for 96 - 204 bytes data, however, now such packet data is stored in " "one external mbuf." msgstr "" "Для удобной обработки заголовка IP6, дополнительных заголовков и " "транспортных заголовков, от сетевых драйверов теперь требуется хранить " "пакеты в одном внутреннем mbuf или одном или нескольких внешних mbuf. " "Типичный старый драйвер подготавливает два внутренних mbuf для данных " "размером 96–204 байт, однако теперь такие данные пакета хранятся в одном " "внешнем mbuf." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:478 msgid "" "`netstat -s -p ip6` tells you whether or not your driver conforms such " "requirement. In the following example, \"cce0\" violates the requirement. " "(For more information, refer to Section 2.)" msgstr "" "`netstat -s -p ip6` показывает, соответствует ли ваш драйвер этому " "требованию. В следующем примере \"cce0\" нарушает это требование. (Для " "получения дополнительной информации обратитесь к разделу 2.)" #. type: delimited block . 4 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:488 #, no-wrap msgid "" "Mbuf statistics:\n" " 317 one mbuf\n" " two or more mbuf::\n" " lo0 = 8\n" "\t\t\tcce0 = 10\n" " 3282 one ext mbuf\n" " 0 two or more ext mbuf\n" msgstr "" "Mbuf statistics:\n" " 317 one mbuf\n" " two or more mbuf::\n" " lo0 = 8\n" "\t\t\tcce0 = 10\n" " 3282 one ext mbuf\n" " 0 two or more ext mbuf\n" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:493 msgid "" "Each input function calls IP6_EXTHDR_CHECK in the beginning to check if the " "region between IP6 and its header is continuous. IP6_EXTHDR_CHECK calls " "m_pullup() only if the mbuf has M_LOOP flag, that is, the packet comes from " "the loopback interface. m_pullup() is never called for packets coming from " "physical network interfaces." msgstr "" "Каждая входная функция вызывает IP6_EXTHDR_CHECK в начале, чтобы проверить, " "является ли область между IP6 и его заголовком непрерывной. IP6_EXTHDR_CHECK " "вызывает m_pullup() только если mbuf имеет флаг M_LOOP, то есть пакет пришел " "с интерфейса loopback. m_pullup() никогда не вызывается для пакетов, " "приходящих с физических сетевых интерфейсов." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:495 msgid "Both IP and IP6 reassemble functions never call m_pullup()." msgstr "" "Как функции повторной сборки IP, так и IP6 никогда не вызывают m_pullup()." #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:497 #, no-wrap msgid "IPv4 Mapped Address and IPv6 Wildcard Socket" msgstr "IPv4-отображённые адреса и IPv6-сокет с подстановочным адресом" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:501 msgid "" "RFC2553 describes IPv4 mapped address (3.7) and special behavior of IPv6 " "wildcard bind socket (3.8). The spec allows you to:" msgstr "" "RFC2553 описывает IPv4 отображённые адреса (3.7) и особое поведение IPv6 " "сокета с привязкой к любому адресу (3.8). Спецификация позволяет вам:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:503 msgid "Accept IPv4 connections by AF_INET6 wildcard bind socket." msgstr "" "Принимать IPv4-подключения через сокет с привязкой к подстановочному адресу " "AF_INET6." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:504 msgid "" "Transmit IPv4 packet over AF_INET6 socket by using special form of the " "address like ::ffff:10.1.1.1." msgstr "" "Передача IPv4-пакета через сокет AF_INET6 с использованием специальной формы " "адреса, например ::ffff:10.1.1.1." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:507 msgid "" "but the spec itself is very complicated and does not specify how the socket " "layer should behave. Here we call the former one \"listening side\" and the " "latter one \"initiating side\", for reference purposes." msgstr "" "но сама спецификация очень сложна и не определяет, как должен вести себя " "сокетный уровень. Здесь мы называем первую сторону «слушающей», а вторую — " "«инициирующей» для удобства ссылок." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:509 msgid "" "You can perform wildcard bind on both of the address families, on the same " "port." msgstr "" "Вы можете выполнить привязку к подстановочному адресу для обоих семейств " "адресов на одном и том же порту." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:511 msgid "The following table show the behavior of FreeBSD 4.x." msgstr "Следующая таблица показывает поведение FreeBSD 4.x." #. type: delimited block . 4 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:520 #, no-wrap msgid "" "listening side initiating side\n" " (AF_INET6 wildcard (connection to ::ffff:10.1.1.1)\n" " socket gets IPv4 conn.)\n" " --- ---\n" "FreeBSD 4.x configurable supported\n" " default: enabled\n" msgstr "" "listening side initiating side\n" " (AF_INET6 wildcard (connection to ::ffff:10.1.1.1)\n" " socket gets IPv4 conn.)\n" " --- ---\n" "FreeBSD 4.x configurable supported\n" " default: enabled\n" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:523 msgid "" "The following sections will give you more details, and how you can configure " "the behavior." msgstr "" "Следующие разделы предоставят вам более подробную информацию и объяснят, как " "можно настроить поведение." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:525 msgid "Comments on listening side:" msgstr "Комментарии о принимающей стороне:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:532 msgid "" "It looks that RFC2553 talks too little on wildcard bind issue, especially on " "the port space issue, failure mode and relationship between AF_INET/INET6 " "wildcard bind. There can be several separate interpretation for this RFC " "which conform to it but behaves differently. So, to implement portable " "application you should assume nothing about the behavior in the kernel. " "Using man:getaddrinfo[3] is the safest way. Port number space and wildcard " "bind issues were discussed in detail on ipv6imp mailing list, in mid March " "1999 and it looks that there is no concrete consensus (means, up to " "implementers). You may want to check the mailing list archives." msgstr "" "Похоже, что в RFC2553 слишком мало сказано о проблеме привязки к " "подстановочному адресу, особенно о вопросе пространства портов, режиме " "отказа и взаимосвязи между AF_INET/INET6 wildcard bind. Может быть " "несколько различных интерпретаций этого RFC, которые соответствуют ему, но " "ведут себя по-разному. Поэтому для создания переносимых приложений не " "следует делать никаких предположений о поведении в ядре. Использование " "man:getaddrinfo[3] является наиболее безопасным способом. Вопросы " "пространства номеров портов и привязки к подстановочному адресу подробно " "обсуждались в рассылке ipv6imp в середине марта 1999 года, и похоже, что " "конкретного консенсуса нет (то есть, остаётся на усмотрение реализаторов). " "Возможно, вам стоит проверить архивы рассылки." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:534 msgid "" "If a server application would like to accept IPv4 and IPv6 connections, " "there will be two alternatives." msgstr "" "Если серверное приложение хочет принимать IPv4 и IPv6 соединения, есть два " "варианта." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:539 msgid "" "One is using AF_INET and AF_INET6 socket (you will need two sockets). Use " "man:getaddrinfo[3] with AI_PASSIVE into ai_flags, and man:socket[2] and man:" "bind[2] to all the addresses returned. By opening multiple sockets, you can " "accept connections onto the socket with proper address family. IPv4 " "connections will be accepted by AF_INET socket, and IPv6 connections will be " "accepted by AF_INET6 socket." msgstr "" "Один из способов — использование сокетов AF_INET и AF_INET6 (вам понадобятся " "два сокета). Используйте man:getaddrinfo[3] с AI_PASSIVE в ai_flags, а также " "man:socket[2] и man:bind[2] для всех возвращённых адресов. Открыв несколько " "сокетов, вы можете принимать соединения сокетом соответствующей адресной " "семьи. IPv4-соединения будут приниматься сокетом AF_INET, а IPv6-соединения " "— сокетом AF_INET6." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:545 msgid "" "Another way is using one AF_INET6 wildcard bind socket. Use man:" "getaddrinfo[3] with AI_PASSIVE into ai_flags and with AF_INET6 into " "ai_family, and set the 1st argument hostname to NULL. And man:socket[2] and " "man:bind[2] to the address returned. (should be IPv6 unspecified addr). " "You can accept either of IPv4 and IPv6 packet via this one socket." msgstr "" "Еще один способ — использование одного сокета с универсальной привязкой " "AF_INET6. Используйте man:getaddrinfo[3] с AI_PASSIVE в ai_flags и AF_INET6 " "в ai_family, установив первый аргумент hostname в NULL. Затем используйте " "man:socket[2] и man:bind[2] для адреса, который был возвращен. (должен быть " "неспецифицированный адрес IPv6). Через этот один сокет можно принимать " "пакеты как IPv4, так и IPv6." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:549 msgid "" "To support only IPv6 traffic on AF_INET6 wildcard binded socket portably, " "always check the peer address when a connection is made toward AF_INET6 " "listening socket. If the address is IPv4 mapped address, you may want to " "reject the connection. You can check the condition by using " "IN6_IS_ADDR_V4MAPPED() macro." msgstr "" "Для поддержки только IPv6-трафика на AF_INET6-сокете с привязкой к любому " "адресу переносимым способом всегда проверяйте адрес узла при установке " "соединения с AF_INET6-сокетом в режиме прослушивания. Если адрес является " "IPv4-отображённым, возможно, стоит отклонить соединение. Это условие можно " "проверить с помощью макроса IN6_IS_ADDR_V4MAPPED()." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:551 msgid "" "To resolve this issue more easily, there is system dependent man:" "setsockopt[2] option, IPV6_BINDV6ONLY, used like below." msgstr "" "Для более простого решения этой задачи существует зависящий от системы " "параметр man:setsockopt[2] под названием IPV6_BINDV6ONLY, используемый " "следующим образом." #. type: delimited block . 4 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:555 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:602 #, no-wrap msgid "\tint on;\n" msgstr "\tint on;\n" #. type: delimited block . 4 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:558 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:605 #, no-wrap msgid "" "\tsetsockopt(s, IPPROTO_IPV6, IPV6_BINDV6ONLY,\n" "\t\t (char *)&on, sizeof (on)) < 0));\n" msgstr "" "\tsetsockopt(s, IPPROTO_IPV6, IPV6_BINDV6ONLY,\n" "\t\t (char *)&on, sizeof (on)) < 0));\n" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:561 msgid "When this call succeed, then this socket only receive IPv6 packets." msgstr "При успешном вызове этот сокет будет принимать только IPv6-пакеты." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:563 msgid "Comments on initiating side:" msgstr "Комментарии о стороне инициатора:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:565 msgid "" "Advise to application implementers: to implement a portable IPv6 application " "(which works on multiple IPv6 kernels), we believe that the following is the " "key to the success:" msgstr "" "Совет разработчикам приложений: для создания переносимого IPv6-приложения " "(которое работает на различных IPv6-ядрах), мы считаем, что следующие " "моменты являются ключом к успеху:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:567 msgid "NEVER hardcode AF_INET nor AF_INET6." msgstr "НИКОГДА не используйте жёстко заданные AF_INET или AF_INET6." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:568 msgid "" "Use man:getaddrinfo[3] and man:getnameinfo[3] throughout the system. Never " "use gethostby*(), getaddrby*(), inet_*() or getipnodeby*(). (To update " "existing applications to be IPv6 aware easily, sometime getipnodeby*() will " "be useful. But if possible, try to rewrite the code to use man:" "getaddrinfo[3] and man:getnameinfo[3].)" msgstr "" "Используйте man:getaddrinfo[3] и man:getnameinfo[3] во всей системе. Никогда " "не используйте gethostby*(), getaddrby*(), inet_*() или getipnodeby*(). (Для " "облегчения обновления существующих приложений для поддержки IPv6 иногда " "может быть полезен getipnodeby*(). Но по возможности старайтесь переписать " "код для использования man:getaddrinfo[3] и man:getnameinfo[3].)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:569 msgid "" "If you would like to connect to destination, use man:getaddrinfo[3] and try " "all the destination returned, like man:telnet[1] does." msgstr "" "Если вы хотите подключиться к назначению, используйте man:getaddrinfo[3] и " "попробуйте все возвращённые назначения, как это делает man:telnet[1]." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:570 msgid "" "Some of the IPv6 stack is shipped with buggy man:getaddrinfo[3]. Ship a " "minimal working version with your application and use that as last resort." msgstr "" "Некоторые реализации стека IPv6 поставляются с некорректной man:" "getaddrinfo[3]. Включите минимально рабочую версию в ваше приложение и " "используйте её в крайнем случае." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:576 msgid "" "If you would like to use AF_INET6 socket for both IPv4 and IPv6 outgoing " "connection, you will need to use man:getipnodebyname[3]. When you would " "like to update your existing application to be IPv6 aware with minimal " "effort, this approach might be chosen. But please note that it is a " "temporal solution, because man:getipnodebyname[3] itself is not recommended " "as it does not handle scoped IPv6 addresses at all. For IPv6 name " "resolution, man:getaddrinfo[3] is the preferred API. So you should rewrite " "your application to use man:getaddrinfo[3], when you get the time to do it." msgstr "" "Если вы хотите использовать сокет AF_INET6 для исходящих подключений как " "IPv4, так и IPv6, вам потребуется использовать man:getipnodebyname[3]. Если " "вы хотите обновить существующее приложение для поддержки IPv6 с минимальными " "усилиями, можно выбрать этот подход. Однако учтите, что это временное " "решение, поскольку man:getipnodebyname[3] сам по себе не рекомендуется, так " "как он вообще не обрабатывает IPv6-адреса с зоной. Для разрешения IPv6-имён " "предпочтительным API является man:getaddrinfo[3]. Поэтому вам следует " "переписать ваше приложение для использования man:getaddrinfo[3], когда у вас " "будет время это сделать." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:580 msgid "" "When writing applications that make outgoing connections, story goes much " "simpler if you treat AF_INET and AF_INET6 as totally separate address " "family. {set,get}sockopt issue goes simpler, DNS issue will be made " "simpler. We do not recommend you to rely upon IPv4 mapped address." msgstr "" "При написании приложений, которые устанавливают исходящие соединения, " "история становится намного проще, если рассматривать AF_INET и AF_INET6 как " "совершенно отдельные семейства адресов. Проблемы с {set,get}sockopt " "упрощаются, проблемы с DNS также станут проще. Мы не рекомендуем полагаться " "на IPv4-отображённые адреса." #. type: Title ===== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:581 #, no-wrap msgid "unified tcp and inpcb code" msgstr "унифицированный код tcp и inpcb" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:585 msgid "" "FreeBSD 4.x uses shared tcp code between IPv4 and IPv6 (from sys/netinet/" "tcp*) and separate udp4/6 code. It uses unified inpcb structure." msgstr "" "FreeBSD 4.x использует общий код tcp для IPv4 и IPv6 (из sys/netinet/tcp*) и " "раздельный код udp4/6. В нём используется унифицированная структура inpcb." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:588 msgid "" "The platform can be configured to support IPv4 mapped address. Kernel " "configuration is summarized as follows:" msgstr "" "Платформа может быть настроена для поддержки IPv4-отображённых адресов. " "Конфигурация ядра кратко описана ниже:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:590 msgid "" "By default, AF_INET6 socket will grab IPv4 connections in certain condition, " "and can initiate connection to IPv4 destination embedded in IPv4 mapped IPv6 " "address." msgstr "" "По умолчанию сокет AF_INET6 может принимать IPv4-соединения при определённых " "условиях и инициировать соединение с IPv4-адресами, встроенными в IPv4-" "отображённые IPv6-адреса." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:591 msgid "You can disable it on entire system with sysctl like below." msgstr "" "Вы можете отключить это во всей системе с помощью sysctl, как показано ниже." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:593 msgid "`sysctl net.inet6.ip6.mapped_addr=0`" msgstr "`sysctl net.inet6.ip6.mapped_addr=0`" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:595 msgid "====== Listening Side" msgstr "====== Сторона, принимающая соединения" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:598 msgid "" "Each socket can be configured to support special AF_INET6 wildcard bind " "(enabled by default). You can disable it on each socket basis with man:" "setsockopt[2] like below." msgstr "" "Каждый сокет может быть настроен для поддержки специальной привязки к " "подстановочному адресу AF_INET6 (включено по умолчанию). Это можно отключить " "для каждого отдельного сокета с помощью man:setsockopt[2], как показано ниже." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:608 msgid "" "Wildcard AF_INET6 socket grabs IPv4 connection if and only if the following " "conditions are satisfied:" msgstr "" "Сокет с универсальной привязкой AF_INET6 перехватывает IPv4-подключение " "тогда и только тогда, когда выполнены следующие условия:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:610 msgid "there is no AF_INET socket that matches the IPv4 connection" msgstr "нет AF_INET сокета, соответствующего IPv4-подключению" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:611 msgid "" "the AF_INET6 socket is configured to accept IPv4 traffic, i.e., " "getsockopt(IPV6_BINDV6ONLY) returns 0." msgstr "" "Сокет AF_INET6 настроен на прием IPv4-трафика, т.е., " "getsockopt(IPV6_BINDV6ONLY) возвращает 0." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:613 msgid "There is no problem with open/close ordering." msgstr "Нет проблем с порядком открытия/закрытия." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:615 msgid "====== Initiating Side" msgstr "====== Инициирующая сторона" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:617 msgid "" "FreeBSD 4.x supports outgoing connection to IPv4 mapped address (::" "ffff:10.1.1.1), if the node is configured to support IPv4 mapped address." msgstr "" "FreeBSD 4.x поддерживает исходящее соединение с IPv4-отображённым адресом (::" "ffff:10.1.1.1), если узел настроен на поддержку IPv4-отображённых адресов." #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:618 #, no-wrap msgid "sockaddr_storage" msgstr "sockaddr_storage" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:624 msgid "" "When RFC2553 was about to be finalized, there was discussion on how struct " "sockaddr_storage members are named. One proposal is to prepend \"__\" to " "the members (like \"__ss_len\") as they should not be touched. The other " "proposal was not to prepend it (like \"ss_len\") as we need to touch those " "members directly. There was no clear consensus on it." msgstr "" "Когда RFC2553 был близок к завершению, велись дискуссии о том, как называть " "элементы структуры `sockaddr_storage`. Одно предложение заключалось в " "добавлении \"__\" перед именами элементов (например, \"__ss_len\"), так как " "к ним не следует обращаться напрямую. Другое предложение было не добавлять " "префикс (например, \"ss_len\"), поскольку необходимо прямое обращение к этим " "элементам. Четкого консенсуса по этому вопросу достигнуто не было." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:626 msgid "As a result, RFC2553 defines struct sockaddr_storage as follows:" msgstr "" "В результате, RFC2553 определяет структуру sockaddr_storage следующим " "образом:" #. type: delimited block . 4 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:634 #, no-wrap msgid "" "\tstruct sockaddr_storage {\n" "\t\tu_char\t__ss_len;\t/* address length */\n" "\t\tu_char\t__ss_family;\t/* address family */\n" "\t\t/* and bunch of padding */\n" "\t};\n" msgstr "" "\tstruct sockaddr_storage {\n" "\t\tu_char\t__ss_len;\t/* address length */\n" "\t\tu_char\t__ss_family;\t/* address family */\n" "\t\t/* and bunch of padding */\n" "\t};\n" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:637 msgid "On the contrary, XNET draft defines as follows:" msgstr "Напротив, черновик XNET определяет следующее:" #. type: delimited block . 4 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:645 #, no-wrap msgid "" "\tstruct sockaddr_storage {\n" "\t\tu_char\tss_len;\t\t/* address length */\n" "\t\tu_char\tss_family;\t/* address family */\n" "\t\t/* and bunch of padding */\n" "\t};\n" msgstr "" "\tstruct sockaddr_storage {\n" "\t\tu_char\tss_len;\t\t/* address length */\n" "\t\tu_char\tss_family;\t/* address family */\n" "\t\t/* and bunch of padding */\n" "\t};\n" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:648 msgid "" "In December 1999, it was agreed that RFC2553bis should pick the latter " "(XNET) definition." msgstr "" "В декабре 1999 года было согласовано, что RFC2553bis должен принять " "последнее (XNET) определение." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:650 msgid "" "Current implementation conforms to XNET definition, based on RFC2553bis " "discussion." msgstr "" "Текущая реализация соответствует определению XNET, основанному на обсуждении " "RFC2553bis." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:653 msgid "" "If you look at multiple IPv6 implementations, you will be able to see both " "definitions. As an userland programmer, the most portable way of dealing " "with it is to:" msgstr "" "Если вы рассмотрите несколько реализаций IPv6, то сможете увидеть оба " "определения. Для программиста в пользовательском пространстве наиболее " "переносимый способ работы с этим:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:655 msgid "" "ensure ss_family and/or ss_len are available on the platform, by using GNU " "autoconf," msgstr "" "с помощью GNU autoconf сконфигурировать доступ к `ss_family` и/или `ss_len` " "на целевой платформе," #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:656 msgid "" "have -Dss_family=__ss_family to unify all occurrences (including header " "file) into __ss_family, or" msgstr "" "добавить -Dss_family=__ss_family для унификации всех использований (включая " "заголовочный файл) __ss_family, или" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:657 msgid "never touch __ss_family. cast to sockaddr * and use sa_family like:" msgstr "" "никогда не трогайте __ss_family. Приводите к sockaddr * и используйте " "sa_family, например:" #. type: delimited block . 4 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:662 #, no-wrap msgid "" "\tstruct sockaddr_storage ss;\n" "\tfamily = ((struct sockaddr *)&ss)->sa_family\n" msgstr "" "\tstruct sockaddr_storage ss;\n" "\tfamily = ((struct sockaddr *)&ss)->sa_family\n" #. type: Title === #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:664 #, no-wrap msgid "Network Drivers" msgstr "Драйверы сетевых устройств" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:667 msgid "" "Now following two items are required to be supported by standard drivers:" msgstr "" "В настоящее время следующие два пункта должны поддерживаться стандартными " "драйверами:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:669 msgid "" "mbuf clustering requirement. In this stable release, we changed MINCLSIZE " "into MHLEN+1 for all the operating systems in order to make all the drivers " "behave as we expect." msgstr "" "Требование к кластеризации mbuf. В этом стабильном выпуске мы изменили " "MINCLSIZE на MHLEN+1 для всех операционных систем, чтобы все драйверы " "работали так, как мы ожидаем." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:670 msgid "" "multicast. If man:ifmcstat[8] yields no multicast group for a interface, " "that interface has to be patched." msgstr "" "многоадресная рассылка (multicast). Если man:ifmcstat[8] не выводит ни одной " "многоадресной группы для интерфейса, этот интерфейс необходимо исправить." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:673 msgid "" "If any of the drivers do not support the requirements, then the drivers " "cannot be used for IPv6 and/or IPsec communication. If you find any problem " "with your card using IPv6/IPsec, then, please report it to the {freebsd-" "bugs}." msgstr "" "Если какие-либо драйверы не поддерживают требования, то их нельзя " "использовать для IPv6 и/или IPsec-связи. Если вы обнаружили проблему с вашей " "картой при использовании IPv6/IPsec, пожалуйста, сообщите об этом в {freebsd-" "bugs}." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:676 msgid "" "(NOTE: In the past we required all PCMCIA drivers to have a call to " "in6_ifattach(). We have no such requirement any more)" msgstr "" "(NOTE: Раньше мы требовали, чтобы все драйверы PCMCIA содержали вызов " "in6_ifattach(). Теперь такого требования нет)" #. type: Title === #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:677 #, no-wrap msgid "Translator" msgstr "Транслятор" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:680 msgid "We categorize IPv4/IPv6 translator into 4 types:" msgstr "Мы классифицируем трансляторы IPv4/IPv6 на 4 типа:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:682 msgid "" "_Translator A_ --- It is used in the early stage of transition to make it " "possible to establish a connection from an IPv6 host in an IPv6 island to an " "IPv4 host in the IPv4 ocean." msgstr "" "_Транслятор А_ --- Он используется на раннем этапе перехода, чтобы позволить " "установить соединение с IPv6-хоста на IPv6-острове к IPv4-хосту в IPv4-" "океане." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:683 msgid "" "_Translator B_ --- It is used in the early stage of transition to make it " "possible to establish a connection from an IPv4 host in the IPv4 ocean to an " "IPv6 host in an IPv6 island." msgstr "" "_Транслятор Б_ --- Он используется на раннем этапе перехода, чтобы " "обеспечить возможность установления соединения с IPv6-узлом на IPv6-острове " "от IPv4-узла в IPv4-океане." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:684 msgid "" "_Translator C_ --- It is used in the late stage of transition to make it " "possible to establish a connection from an IPv4 host in an IPv4 island to an " "IPv6 host in the IPv6 ocean." msgstr "" "_Транслятор C_ --- Он используется на позднем этапе перехода, чтобы сделать " "возможным установление соединения с IPv6-узлом в IPv6-океане от IPv4-узла на " "IPv4-острове." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:685 msgid "" "_Translator D_ --- It is used in the late stage of transition to make it " "possible to establish a connection from an IPv6 host in the IPv6 ocean to an " "IPv4 host in an IPv4 island." msgstr "" "_Транслятор D_ --- Он используется на позднем этапе перехода, чтобы сделать " "возможным установление соединения с IPv6-хоста в IPv6-океане на IPv4-хост на " "IPv4-острове." #. type: Title === #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:687 #, no-wrap msgid "IPsec" msgstr "IPsec" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:690 msgid "IPsec is mainly organized by three components." msgstr "IPsec состоит в основном из трёх компонент." #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:692 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:695 #, no-wrap msgid "Policy Management" msgstr "Управление политиками" #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:693 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:705 #, no-wrap msgid "Key Management" msgstr "Управление ключами" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:694 msgid "AH and ESP handling" msgstr "Обработка AH и ESP" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:702 msgid "" "The kernel implements experimental policy management code. There are two " "way to manage security policy. One is to configure per-socket policy using " "man:setsockopt[2]. In this cases, policy configuration is described in man:" "ipsec_set_policy[3]. The other is to configure kernel packet filter-based " "policy using PF_KEY interface, via man:setkey[8]." msgstr "" "Ядро реализует экспериментальный код управления политикой безопасности. " "Существует два способа управления политикой безопасности. Первый — настройка " "политики для каждого сокета с помощью man:setsockopt[2]. В этом случае " "конфигурация политики описана в man:ipsec_set_policy[3]. Второй способ — " "настройка политики на основе фильтра пакетов ядра с использованием " "интерфейса PF_KEY через man:setkey[8]." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:704 msgid "" "The policy entry is not re-ordered with its indexes, so the order of entry " "when you add is very significant." msgstr "" "Запись политики не переупорядочивается вместе со своими индексами, поэтому " "порядок добавления записей очень важен." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:709 msgid "" "The key management code implemented in this kit (sys/netkey) is a home-brew " "PFKEY v2 implementation. This conforms to RFC2367." msgstr "" "Код управления ключами, реализованный в этом наборе (sys/netkey), " "представляет собой собственную реализацию PFKEY v2. Это соответствует " "RFC2367." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:713 msgid "" "The home-brew IKE daemon, \"racoon\" is included in the kit (kame/kame/" "racoon). Basically you will need to run racoon as daemon, then set up a " "policy to require keys (like `ping -P 'out ipsec esp/transport//use'`). The " "kernel will contact racoon daemon as necessary to exchange keys." msgstr "" "В комплект включена \"домашняя\" реализация демона IKE — \"racoon\" (kame/" "kame/racoon). Обычно вам потребуется запустить racoon в качестве демона, " "затем настроить политику для требования ключей (например, `ping -P 'out " "ipsec esp/transport//use'`). Ядро будет связываться с демоном racoon по мере " "необходимости для обмена ключами." #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:714 #, no-wrap msgid "AH and ESP Handling" msgstr "Обработка AH и ESP" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:722 msgid "" "IPsec module is implemented as \"hooks\" to the standard IPv4/IPv6 " "processing. When sending a packet, ip{,6}_output() checks if ESP/AH " "processing is required by checking if a matching SPD (Security Policy " "Database) is found. If ESP/AH is needed, {esp,ah}{4,6}_output() will be " "called and mbuf will be updated accordingly. When a packet is received, " "{esp,ah}4_input() will be called based on protocol number, i.e., " "(*inetsw[proto])(). {esp,ah}4_input() will decrypt/check authenticity of " "the packet, and strips off daisy-chained header and padding for ESP/AH. It " "is safe to strip off the ESP/AH header on packet reception, since we will " "never use the received packet in \"as is\" form." msgstr "" "Модуль IPsec реализован в виде \"хуков\" к стандартной обработке IPv4/IPv6. " "При отправке пакета функция ip{,6}_output() проверяет, требуется ли " "обработка ESP/AH, путем поиска соответствующей базы данных политик " "безопасности (SPD — Security Policy Database). Если ESP/AH необходим, " "вызывается {esp,ah}{4,6}_output(), и mbuf соответствующим образом " "обновляется. При получении пакета функция {esp,ah}4_input() вызывается на " "основе номера протокола, т.е. (*inetsw[proto])(). {esp,ah}4_input() " "расшифровывает/проверяет подлинность пакета, а также удаляет цепочку " "заголовков и выравнивание для ESP/AH. Безопасно удалять заголовок ESP/AH при " "получении пакета, так как полученный пакет никогда не будет использоваться в " "\"сыром\" виде." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:725 msgid "" "By using ESP/AH, TCP4/6 effective data segment size will be affected by " "extra daisy-chained headers inserted by ESP/AH. Our code takes care of the " "case." msgstr "" "Использование ESP/AH влияет на эффективный размер сегмента данных TCP4/6 из-" "за дополнительных цепочечных заголовков, вставляемых ESP/AH. Наш код " "учитывает этот случай." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:729 msgid "" "Basic crypto functions can be found in directory \"sys/crypto\". ESP/AH " "transform are listed in {esp,ah}_core.c with wrapper functions. If you wish " "to add some algorithm, add wrapper function in {esp,ah}_core.c, and add your " "crypto algorithm code into sys/crypto." msgstr "" "Основные криптографические функции можно найти в каталоге `sys/crypto`. " "Преобразования ESP/AH перечислены в `{esp,ah}_core.c` с обёрточными " "функциями. Если вы хотите добавить какой-либо алгоритм, добавьте обёрточную " "функцию в `{esp,ah}_core.c` и поместите код вашего криптографического " "алгоритма в `sys/crypto`." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:731 msgid "" "Tunnel mode is partially supported in this release, with the following " "restrictions:" msgstr "" "Режим туннеля частично поддерживается в этом выпуске со следующими " "ограничениями:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:733 msgid "" "IPsec tunnel is not combined with GIF generic tunneling interface. It needs " "a great care because we may create an infinite loop between ip_output() and " "tunnelifp->if_output(). Opinion varies if it is better to unify them, or not." msgstr "" "Туннель IPsec не объединён с универсальным туннельным интерфейсом GIF. Это " "требует особой осторожности, так как может возникнуть бесконечный цикл между " "`ip_output()` и `tunnelifp->if_output()`. Мнения расходятся относительно " "того, лучше ли их объединить или нет." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:734 msgid "" "MTU and Don't Fragment bit (IPv4) considerations need more checking, but " "basically works fine." msgstr "" "MTU и бит Don't Fragment (IPv4) требуют дополнительной проверки, но в " "основном работают нормально." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:735 msgid "" "Authentication model for AH tunnel must be revisited. We will need to " "improve the policy management engine, eventually." msgstr "" "Модель аутентификации для туннеля AH должна быть пересмотрена. Нам " "потребуется улучшить механизм управления политиками в конечном итоге." #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:736 #, no-wrap msgid "Conformance to RFCs and IDs" msgstr "Соответствие RFC и ID" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:739 msgid "" "The IPsec code in the kernel conforms (or, tries to conform) to the " "following standards:" msgstr "" "Код IPsec в ядре соответствует (или пытается соответствовать) следующим " "стандартам:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:741 msgid "\"old IPsec\" specification documented in [.filename]#rfc182[5-9].txt#" msgstr "" "Спецификация \"старого IPsec\", описанная в [.filename]#rfc182[5-9].txt#" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:744 msgid "" "\"new IPsec\" specification documented in [.filename]#rfc240[1-6].txt#, [." "filename]#rfc241[01].txt#, [.filename]#rfc2451.txt# and [.filename]#draft-" "mcdonald-simple-ipsec-api-01.txt# (draft expired, but you can take from link:" "ftp://ftp.kame.net/pub/internet-drafts/[ ftp://ftp.kame.net/pub/internet-" "drafts/]). (NOTE: IKE specifications, [.filename]#rfc241[7-9].txt# are " "implemented in userland, as \"racoon\" IKE daemon)" msgstr "" "Спецификация \"new IPsec\" описана в [.filename]#rfc240[1-6].txt#, [." "filename]#rfc241[01].txt#, [.filename]#rfc2451.txt# и [.filename]#draft-" "mcdonald-simple-ipsec-api-01.txt# (черновик устарел, но его можно взять по " "ссылке link:ftp://ftp.kame.net/pub/internet-drafts/[ ftp://ftp.kame.net/pub/" "internet-drafts/]). (ПРИМЕЧАНИЕ: Спецификации IKE, [.filename]#rfc241[7-9]." "txt#, реализованы в пользовательском пространстве в виде демона IKE \"racoon" "\")" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:746 msgid "Currently supported algorithms are:" msgstr "В настоящее время поддерживаются следующие алгоритмы:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:748 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:785 msgid "old IPsec AH" msgstr "old IPsec AH" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:750 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:763 msgid "null crypto checksum (no document, just for debugging)" msgstr "" "нулевая криптографическая контрольная сумма (нет документа, только для " "отладки)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:751 msgid "keyed MD5 with 128bit crypto checksum ([.filename]#rfc1828.txt#)" msgstr "" "MD5 с ключом и с 128-битной криптографической контрольной суммой ([." "filename]#rfc1828.txt#)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:752 msgid "keyed SHA1 with 128bit crypto checksum (no document)" msgstr "" "SHA1 с ключом и с 128-битной криптографической контрольной суммой (без " "документа)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:753 msgid "HMAC MD5 with 128bit crypto checksum ([.filename]#rfc2085.txt#)" msgstr "" "HMAC MD5 с 128-битной криптографической контрольной суммой ([." "filename]#rfc2085.txt#)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:754 msgid "HMAC SHA1 with 128bit crypto checksum (no document)" msgstr "" "HMAC SHA1 с 128-битной криптографической контрольной суммой (без документа)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:756 msgid "old IPsec ESP" msgstr "old IPsec ESP" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:758 msgid "null encryption (no document, similar to [.filename]#rfc2410.txt#)" msgstr "" "нулевое шифрование (нет документа, аналогично [.filename]#rfc2410.txt#)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:759 msgid "DES-CBC mode ([.filename]#rfc1829.txt#)" msgstr "Режим DES-CBC ([.filename]#rfc1829.txt#)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:761 msgid "new IPsec AH" msgstr "new IPsec AH" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:764 msgid "keyed MD5 with 96bit crypto checksum (no document)" msgstr "" "MD5 с ключом и с 96-битной криптографической контрольной суммой (нет " "документа)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:765 msgid "keyed SHA1 with 96bit crypto checksum (no document)" msgstr "" "SHA1 с ключом и с 96-битной криптографической контрольной суммой (без " "документа)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:766 msgid "HMAC MD5 with 96bit crypto checksum ([.filename]#rfc2403.txt#)" msgstr "" "HMAC MD5 с 96-битной криптографической контрольной суммой ([." "filename]#rfc2403.txt#)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:767 msgid "HMAC SHA1 with 96bit crypto checksum ([.filename]#rfc2404.txt#)" msgstr "" "HMAC SHA1 с 96-битной криптографической контрольной суммой ([." "filename]#rfc2404.txt#)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:769 msgid "new IPsec ESP" msgstr "new IPsec ESP" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:771 msgid "null encryption ([.filename]#rfc2410.txt#)" msgstr "нулевое шифрование ([.filename]#rfc2410.txt#)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:772 msgid "" "DES-CBC with derived IV ([.filename]#draft-ietf-ipsec-ciph-des-derived-01." "txt#, draft expired)" msgstr "" "DES-CBC с производным IV ([.filename]#draft-ietf-ipsec-ciph-des-derived-01." "txt#, черновик истек)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:773 msgid "DES-CBC with explicit IV ([.filename]#rfc2405.txt#)" msgstr "DES-CBC с явным вектором инициализации ([.filename]#rfc2405.txt#)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:774 msgid "3DES-CBC with explicit IV ([.filename]#rfc2451.txt#)" msgstr "3DES-CBC с явным вектором инициализации ([.filename]#rfc2451.txt#)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:775 msgid "BLOWFISH CBC ([.filename]#rfc2451.txt#)" msgstr "BLOWFISH CBC ([.filename]#rfc2451.txt#)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:776 msgid "CAST128 CBC ([.filename]#rfc2451.txt#)" msgstr "CAST128 CBC ([.filename]#rfc2451.txt#)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:777 msgid "RC5 CBC ([.filename]#rfc2451.txt#)" msgstr "RC5 CBC ([.filename]#rfc2451.txt#)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:778 msgid "each of the above can be combined with:" msgstr "каждый из вышеперечисленных может быть объединён с:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:780 msgid "ESP authentication with HMAC-MD5(96bit)" msgstr "Аутентификация ESP с HMAC-MD5 (96 бит)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:781 msgid "ESP authentication with HMAC-SHA1(96bit)" msgstr "Аутентификация ESP с HMAC-SHA1(96 бит)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:783 msgid "The following algorithms are NOT supported:" msgstr "Следующие алгоритмы НЕ поддерживаются:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:787 msgid "" "HMAC MD5 with 128bit crypto checksum + 64bit replay prevention ([." "filename]#rfc2085.txt#)" msgstr "" "HMAC MD5 с 128-битной криптографической контрольной суммой + 64-битная " "защита от повторного воспроизведения ([.filename]#rfc2085.txt#)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:788 msgid "" "keyed SHA1 with 160bit crypto checksum + 32bit padding ([.filename]#rfc1852." "txt#)" msgstr "" "SHA1 с ключом и с 160-битной криптографической контрольной суммой + 32-" "битное дополнение ([.filename]#rfc1852.txt#)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:791 msgid "" "IPsec (in kernel) and IKE (in userland as \"racoon\") has been tested at " "several interoperability test events, and it is known to interoperate with " "many other implementations well. Also, current IPsec implementation as " "quite wide coverage for IPsec crypto algorithms documented in RFC (we cover " "algorithms without intellectual property issues only)." msgstr "" "IPsec (в ядре) и IKE (в пользовательском пространстве как \"racoon\") были " "протестированы на нескольких мероприятиях по тестированию взаимодействия и " "известно, что они хорошо работают со многими другими реализациями. Кроме " "того, текущая реализация IPsec поддерживает довольно широкий спектр " "криптографических алгоритмов IPsec, описанных в RFC (мы поддерживаем только " "алгоритмы без проблем с интеллектуальной собственностью)." #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:793 #, no-wrap msgid "ECN Consideration on IPsec Tunnels" msgstr "Учёт ECN в IPsec-туннелях" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:796 msgid "" "ECN-friendly IPsec tunnel is supported as described in [.filename]#draft-" "ipsec-ecn-00.txt#." msgstr "" "Поддерживается ECN-совместимый IPsec-туннель, как описано в [." "filename]#draft-ipsec-ecn-00.txt#." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:801 msgid "" "Normal IPsec tunnel is described in RFC2401. On encapsulation, IPv4 TOS " "field (or, IPv6 traffic class field) will be copied from inner IP header to " "outer IP header. On decapsulation outer IP header will be simply dropped. " "The decapsulation rule is not compatible with ECN, since ECN bit on the " "outer IP TOS/traffic class field will be lost." msgstr "" "Обычный IPsec-туннель описан в RFC2401. При инкапсуляции поле TOS IPv4 (или " "поле класса трафика IPv6) копируется из внутреннего IP-заголовка во внешний " "IP-заголовок. При декапсуляции внешний IP-заголовок просто отбрасывается. " "Правило декапсуляции несовместимо с ECN, так как бит ECN в поле TOS/класса " "трафика внешнего IP-заголовка будет потерян." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:804 msgid "" "To make IPsec tunnel ECN-friendly, we should modify encapsulation and " "decapsulation procedure. This is described in http://www.aciri.org/floyd/" "papers/draft-ipsec-ecn-00.txt[ http://www.aciri.org/floyd/papers/draft-ipsec-" "ecn-00.txt], chapter 3." msgstr "" "Чтобы сделать IPsec-туннель дружественным к ECN, следует изменить процедуры " "инкапсуляции и декапсуляции. Это описано в http://www.aciri.org/floyd/papers/" "draft-ipsec-ecn-00.txt[ http://www.aciri.org/floyd/papers/draft-ipsec-ecn-00." "txt], глава 3." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:806 msgid "" "IPsec tunnel implementation can give you three behaviors, by setting net." "inet.ipsec.ecn (or net.inet6.ipsec6.ecn) to some value:" msgstr "" "Реализация туннеля IPsec может обеспечить три варианта поведения, в " "зависимости от значения параметра `net.inet.ipsec.ecn` (или `net.inet6." "ipsec6.ecn`):" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:808 msgid "RFC2401: no consideration for ECN (sysctl value -1)" msgstr "RFC2401: отсутствие учёта ECN (значение sysctl -1)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:809 msgid "ECN forbidden (sysctl value 0)" msgstr "ECN запрещён (значение sysctl 0)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:810 msgid "ECN allowed (sysctl value 1)" msgstr "ECN разрешён (значение sysctl 1)" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:812 msgid "" "Note that the behavior is configurable in per-node manner, not per-SA manner " "(draft-ipsec-ecn-00 wants per-SA configuration, but it looks too much for " "me)." msgstr "" "Обратите внимание, что поведение настраивается для каждого узла, а не для " "каждой SA (в draft-ipsec-ecn-00 предлагается настройка для каждой SA, но это " "кажется излишним)." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:814 msgid "" "The behavior is summarized as follows (see source code for more detail):" msgstr "" "Поведение можно обобщить следующим образом (подробности см. в исходном коде):" #. type: delimited block . 4 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:821 #, no-wrap msgid "" "encapsulate decapsulate\n" " --- ---\n" "RFC2401 copy all TOS bits drop TOS bits on outer\n" " from inner to outer. (use inner TOS bits as is)\n" msgstr "" "encapsulate decapsulate\n" " --- ---\n" "RFC2401 copy all TOS bits drop TOS bits on outer\n" " from inner to outer. (use inner TOS bits as is)\n" #. type: delimited block . 4 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:825 #, no-wrap msgid "" "ECN forbidden copy TOS bits except for ECN drop TOS bits on outer\n" " (masked with 0xfc) from inner (use inner TOS bits as is)\n" " to outer. set ECN bits to 0.\n" msgstr "" "ECN forbidden copy TOS bits except for ECN drop TOS bits on outer\n" " (masked with 0xfc) from inner (use inner TOS bits as is)\n" " to outer. set ECN bits to 0.\n" #. type: delimited block . 4 #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:830 #, no-wrap msgid "" "ECN allowed copy TOS bits except for ECN use inner TOS bits with some\n" " CE (masked with 0xfe) from change. if outer ECN CE bit\n" " inner to outer. is 1, enable ECN CE bit on\n" " set ECN CE bit to 0. the inner.\n" msgstr "" "ECN allowed copy TOS bits except for ECN use inner TOS bits with some\n" " CE (masked with 0xfe) from change. if outer ECN CE bit\n" " inner to outer. is 1, enable ECN CE bit on\n" " set ECN CE bit to 0. the inner.\n" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:833 msgid "General strategy for configuration is as follows:" msgstr "Общая стратегия настройки выглядит следующим образом:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:835 msgid "" "if both IPsec tunnel endpoint are capable of ECN-friendly behavior, you " "should better configure both end to \"ECN allowed\" (sysctl value 1)." msgstr "" "если оба конечных пункта туннеля IPsec поддерживают поведение, дружественное " "к ECN, лучше настроить оба конца на \"разрешено ECN\" (значение sysctl 1)." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:836 msgid "" "if the other end is very strict about TOS bit, use \"RFC2401\" (sysctl value " "-1)." msgstr "" "если другая сторона очень строга к биту TOS, используйте " "\"RFC2401\" (значение sysctl -1)." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:837 msgid "in other cases, use \"ECN forbidden\" (sysctl value 0)." msgstr "в остальных случаях используйте \"ECN запрещено\" (значение sysctl 0)." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:839 msgid "The default behavior is \"ECN forbidden\" (sysctl value 0)." msgstr "Поведение по умолчанию — \"ECN запрещён\" (значение sysctl 0)." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:841 msgid "For more information, please refer to:" msgstr "Для получения дополнительной информации обратитесь к:" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:843 msgid "" "http://www.aciri.org/floyd/papers/draft-ipsec-ecn-00.txt[ http://www.aciri." "org/floyd/papers/draft-ipsec-ecn-00.txt], RFC2481 (Explicit Congestion " "Notification), src/sys/netinet6/{ah,esp}_input.c" msgstr "" "http://www.aciri.org/floyd/papers/draft-ipsec-ecn-00.txt[ http://www.aciri." "org/floyd/papers/draft-ipsec-ecn-00.txt], RFC2481 (Явное Уведомление о " "Перегрузке), src/sys/netinet6/{ah,esp}_input.c" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:845 msgid "" "(Thanks goes to Kenjiro Cho mailto:kjc@csl.sony.co.jp[kjc@csl.sony.co.jp] " "for detailed analysis)" msgstr "" "(Благодарности Kenjiro Cho mailto:kjc@csl.sony.co.jp[kjc@csl.sony.co.jp] за " "детальный анализ)" #. type: Title ==== #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:846 #, no-wrap msgid "Interoperability" msgstr "Совместимость" #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:850 msgid "" "Here are (some of) platforms that KAME code have tested IPsec/IKE " "interoperability in the past. Note that both ends may have modified their " "implementation, so use the following list just for reference purposes." msgstr "" "Вот некоторые из платформ, на которых код KAME тестировал взаимодействие " "IPsec/IKE в прошлом. Обратите внимание, что обе стороны могли изменить свои " "реализации, поэтому используйте следующий список только в справочных целях." #. type: Plain text #: documentation/content/en/books/developers-handbook/ipv6/_index.adoc:851 msgid "" "Altiga, Ashley-laurent (vpcom.com), Data Fellows (F-Secure), Ericsson ACC, " "FreeS/WAN, HITACHI, IBM AIX(R), IIJ, Intel, Microsoft(R) Windows NT(R), NIST " "(linux IPsec + plutoplus), Netscreen, OpenBSD, RedCreek, Routerware, SSH, " "Secure Computing, Soliton, Toshiba, VPNet, Yamaha RT100i" msgstr "" "Altiga, Ashley-laurent (vpcom.com), Data Fellows (F-Secure), Ericsson ACC, " "FreeS/WAN, HITACHI, IBM AIX(R), IIJ, Intel, Microsoft(R) Windows NT(R), NIST " "(linux IPsec + plutoplus), Netscreen, OpenBSD, RedCreek, Routerware, SSH, " "Secure Computing, Soliton, Toshiba, VPNet, Yamaha RT100i"