--- description: 'Эта глава рассматривает тему настройки сети и производительности, демонстрируя мощные сетевые возможности операционной системы FreeBSD.' next: books/handbook/partii params: path: /books/handbook/network/ part: 'В начале' prev: books/handbook/wayland showBookMenu: true tags: ["network", "ipv4", "ipv6", "wireless", "wpa_supplicant", "static ip", "dynamic ip"] title: 'Глава 7. Сеть' weight: 9 --- [[network]] = Сеть :doctype: book :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :sectnumoffset: 7 :partnums: :source-highlighter: rouge :experimental: :images-path: books/handbook/network/ ifdef::env-beastie[] ifdef::backend-html5[] :imagesdir: ../../../../images/{images-path} endif::[] ifndef::book[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] toc::[] endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] toc::[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [[network-synopsis]] == Обзор Эта глава углубляется в тему настройки сети и производительности, демонстрируя мощные сетевые возможности операционной системы FreeBSD. Независимо от работы с проводными или беспроводными сетями, эта глава предоставляет всеобъемлющее руководство по настройке и оптимизации сетевого подключения в FreeBSD. Прежде чем углубляться в детали, читателям будет полезно иметь базовое понимание сетевых концепций, таких как протоколы, сетевые интерфейсы и адресация. Эта глава охватывает: * Возможности настройки проводных сетей в FreeBSD, включая настройку сетевых интерфейсов, адресацию и параметры конфигурации. * Навыки, необходимые для настройки беспроводных сетей в FreeBSD, включая настройку беспроводных сетевых интерфейсов, протоколы безопасности и методы устранения неполадок. * Возможности сетевых подключений FreeBSD и её репутация в области превосходной сетевой производительности. * Понимание различных сетевых служб и протоколов, поддерживаемых FreeBSD, с инструкциями по настройке DNS, DHCP и других. Дополнительная информация о настройке расширенных конфигураций сети приведена в разделе crossref:advanced-networking[advanced-networking,Сложные вопросы работы в сети]. [[config-network-setup]] == Настройка сети Настройка проводного или беспроводного подключения — распространённая задача для пользователя FreeBSD. В этом разделе показано, как определить проводные и беспроводные сетевые адаптеры и как их настроить. Прежде чем приступить к настройке, необходимо знать следующие сетевые данные: * Есть ли в сети DHCP * Если в сети нет DHCP, используемый статический IP-адрес * Маска сети * IP-адрес шлюза по умолчанию [TIP] ==== Сетевое соединение могло быть настроено во время установки с помощью man:bsdinstall[8]. ==== [[config-identify-network-adapter]] === Определение сетевых адаптеров FreeBSD поддерживает широкий спектр сетевых адаптеров как для проводных, так и для беспроводных сетей. Проверьте link:https://www.freebsd.org/releases/[список совместимости оборудования] для используемого выпуска FreeBSD, чтобы убедиться, что сетевой адаптер поддерживается. Чтобы получить список сетевых адаптеров, используемых в системе, выполните следующую команду: [source, shell] .... % pciconf -lv | grep -A1 -B3 network .... Вывод должен быть похож на следующий: [.programlisting] .... em0@pci0:0:25:0: class=0x020000 rev=0x03 hdr=0x00 vendor=0x8086 device=0x10f5 subvendor=0x17aa subdevice=0x20ee vendor = 'Intel Corporation' <1> device = '82567LM Gigabit Network Connection' <2> class = network subclass = ethernet -- iwn0@pci0:3:0:0: class=0x028000 rev=0x00 hdr=0x00 vendor=0x8086 device=0x4237 subvendor=0x8086 subdevice=0x1211 vendor = 'Intel Corporation' <1> device = 'PRO/Wireless 5100 AGN [Shiloh] Network Connection' <2> class = network .... Текст перед символом '@' — это название драйвера, управляющего устройством. В данном случае это man:em[4] и man:iwn[4]. <1> Показывает название производителя <2> Показывает название устройства [NOTE] ==== Требуется загружать модуль сетевой карты только в том случае, если FreeBSD не определил его правильно. Например, для загрузки модуля man:alc[4] выполните следующую команду: [source, shell] .... # kldload if_alc .... В качестве альтернативы, для загрузки драйвера как модуля во время загрузки, добавьте следующую строку в [.filename]#/boot/loader.conf#: [.programlisting] .... if_alc_load="YES" .... ==== [[config-network-connection]] == Проводные сети После загрузки нужного драйвера необходимо настроить сетевой адаптер. В FreeBSD для именования сетевого интерфейса используется имя драйвера, за которым следует номер устройства. Номер устройства указывает порядок обнаружения адаптера при загрузке или позднее. Например, `em0` — это первая сетевая карта (NIC) в системе, использующая драйвер man:em[4]. Для отображения конфигурации сетевого интерфейса введите следующую команду: [source, shell] .... % ifconfig .... Вывод должен быть похож на следующий: [.programlisting] .... em0: flags=8863 metric 0 mtu 1500 options=481249b ether 00:1f:16:0f:27:5a inet6 fe80::21f:16ff:fe0f:275a%em0 prefixlen 64 scopeid 0x1 inet 192.168.1.19 netmask 0xffffff00 broadcast 192.168.1.255 media: Ethernet autoselect (1000baseT ) status: active nd6 options=23 lo0: flags=8049 metric 0 mtu 16384 options=680003 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2 inet 127.0.0.1 netmask 0xff000000 groups: lo nd6 options=21 .... В этом примере были отображены следующие устройства: * `em0`: Интерфейс Ethernet. * `lo0`: Интерфейс loop представляет собой механизм программной петли (loopback), который может использоваться для анализа производительности, тестирования программного обеспечения и/или локального взаимодействия. Подробнее см. в man:lo[4]. Пример показывает, что `em0` работает и активен. Ключевые показатели: . `UP` означает, что интерфейс настроен и готов к работе. . Интерфейс имеет IPv4 адрес в Интернете (`inet`) — `192.168.1.19`. . Интерфейс имеет IPv6-адрес (`inet6`) в Интернете: `fe80::21f:16ff:fe0f:275a%em0`. . У него есть действительная маска подсети (`netmask`), где `0xffffff00` эквивалентно `255.255.255.0`. . У него есть корректный широковещательный адрес, `192.168.1.255`. . MAC-адрес интерфейса (`ether`) — `00:1f:16:0f:27:5a`. . Выбор физической среды находится в режиме автоопределения (`media: Ethernet autoselect (1000baseT )`). . Состояние соединения (`status`) имеет значение `active`, что указывает на обнаружение несущего сигнала. Для `em0` состояние `status: no carrier` является нормальным, если кабель Ethernet не подключен к интерфейсу. Если вывод man:ifconfig[8] показал что-то похожее на следующий результат, это означало бы, что интерфейс не настроен: [.programlisting] .... em0: flags=8822 metric 0 mtu 1500 options=481249b ether 00:1f:16:0f:27:5a media: Ethernet autoselect status: no carrier nd6 options=29 .... [[config-static-ip-v4]] === Настройка статического IPv4-адреса В этом разделе представлено руководство по настройке статического IPv4-адреса в системе FreeBSD. Настройку сетевой интерфейсной карты можно выполнить из командной строки с помощью man:ifconfig[8], но она не сохранится после перезагрузки, если конфигурация также не добавлена в [.filename]#/etc/rc.conf#. [NOTE] ==== Если сеть была настроена во время установки с помощью man:bsdinstall[8], некоторые записи для сетевой интерфейсной карты (NIC) могут уже присутствовать. Проверьте [.filename]#/etc/rc.conf# перед выполнением man:sysrc[8]. ==== IP-адрес можно задать, выполнив следующую команду: [source, shell] .... # ifconfig em0 inet 192.168.1.150/24 .... Чтобы изменение сохранялось после перезагрузки, выполните следующую команду: [source, shell] .... # sysrc ifconfig_em0="inet 192.168.1.150 netmask 255.255.255.0" .... Добавьте маршрут по умолчанию, выполнив следующую команду: [source, shell] .... # sysrc defaultrouter="192.168.1.1" .... Добавьте DNS-записи в [.filename]#/etc/resolv.conf#: [.programlisting] .... nameserver 8.8.8.8 nameserver 8.8.4.4 .... Затем перезапустите `netif` и `routing`, выполнив следующую команду: [source, shell] .... # service netif restart && service routing restart .... Соединение можно проверить с помощью man:ping[8]: [source, shell] .... % ping -c2 www.FreeBSD.org .... Вывод должен быть похож на следующий: [.programlisting] .... PING web.geo.FreeBSD.org (147.28.184.45): 56 data bytes 64 bytes from 147.28.184.45: icmp_seq=0 ttl=51 time=55.173 ms 64 bytes from 147.28.184.45: icmp_seq=1 ttl=51 time=53.093 ms --- web.geo.FreeBSD.org ping statistics --- 2 packets transmitted, 2 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 53.093/54.133/55.173/1.040 ms .... [[config-dynamic-ip-v4]] === Настройка динамического IPv4-адреса Если в сети есть DHCP-сервер, то настроить сетевой интерфейс для использования DHCP очень просто. FreeBSD использует man:dhclient[8] в качестве DHCP-клиента. man:dhclient[8] автоматически предоставит IP-адрес, маску сети и маршрутизатор по умолчанию. Чтобы настроить интерфейс для работы с DHCP, выполните следующую команду: [source, shell] .... # sysrc ifconfig_em0="DHCP" .... man:dhclient[8] можно использовать вручную, выполнив следующую команду: [source, shell] .... # dhclient em0 .... Вывод должен быть похож на следующий: [.programlisting] .... DHCPREQUEST on em0 to 255.255.255.255 port 67 DHCPACK from 192.168.1.1 unknown dhcp option value 0x7d bound to 192.168.1.19 -- renewal in 43200 seconds. .... Таким образом можно убедиться, что назначение адреса с помощью DHCP работает корректно. [TIP] ==== Клиент man:dhclient[8] может быть запущен в фоновом режиме. Это может вызвать проблемы с приложениями, зависящими от рабочей сети, но во многих случаях обеспечит более быстрый запуск. Для выполнения man:dhclient[8] в фоновом режиме выполните следующую команду: [source, shell] .... # sysrc background_dhclient="YES" .... ==== Затем перезапустите `netif`, выполнив следующую команду: [source, shell] .... # service netif restart .... Соединение можно проверить с помощью man:ping[8]: [source, shell] .... % ping -c2 www.FreeBSD.org .... Вывод должен быть похож на следующий: [.programlisting] .... PING web.geo.FreeBSD.org (147.28.184.45): 56 data bytes 64 bytes from 147.28.184.45: icmp_seq=0 ttl=51 time=55.173 ms 64 bytes from 147.28.184.45: icmp_seq=1 ttl=51 time=53.093 ms --- web.geo.FreeBSD.org ping statistics --- 2 packets transmitted, 2 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 53.093/54.133/55.173/1.040 ms .... [[network-ipv6]] === IPv6 IPv6 — это новая версия широко известного протокола IP, также известного как IPv4. IPv6 предоставляет несколько преимуществ по сравнению с IPv4, а также множество новых функций: * Его 128-битное адресное пространство позволяет использовать 340 282 366 920 938 463 463 374 607 431 768 211 456 адресов. Это решает проблему нехватки IPv4-адресов и неизбежного исчерпания IPv4-адресного пространства. * Маршрутизаторы хранят в своих таблицах маршрутизации только агрегированные сетевые адреса, что сокращает средний размер таблицы маршрутизации до 8192 записей. Это решает проблемы масштабируемости, связанные с IPv4, где каждый выделенный блок IPv4-адресов должен был обмениваться между интернет-маршрутизаторами, что приводило к чрезмерному увеличению их таблиц маршрутизации и затрудняло эффективную маршрутизацию. * Автоконфигурация адресов (http://www.ietf.org/rfc/rfc4862.txt[RFC4862]). * Обязательные multicast-адреса. * Встроенный IPsec (безопасность IP). * Упрощённая структура заголовка. * Поддержка мобильного IP. * Механизмы перехода с IPv6 на IPv4. FreeBSD включает в себя эталонную реализацию IPv6 от http://www.kame.net/[проекта KAME] и поставляется со всем необходимым для работы с IPv6. Этот раздел посвящён настройке и запуску IPv6. Существует три различных типа IPv6-адресов: Unicast:: Пакет, отправленный на одноадресный (unicast) адрес, поступает на интерфейс, принадлежащий этому адресу. Anycast:: Эти адреса синтаксически неотличимы от одноадресных, но они обозначают группу интерфейсов. Пакет, предназначенный для адреса anycast, будет доставлен на ближайший интерфейс. Multicast:: Эти адреса идентифицируют группу интерфейсов. Пакет, предназначенный для multicast-адреса, будет доставлен на все интерфейсы, входящие в multicast-группу. IPv4 широковещательный адрес, обычно `xxx.xxx.xxx.255`, в IPv6 выражается через multicast-адреса. При чтении IPv6-адреса каноническая форма представляется как `x:x:x:x:x:x:x:x`, где каждый `x` соответствует 16-битному шестнадцатеричному значению. Пример: `FEBC:A574:382B:23C1:AA49:4592:4EFE:9982`. Часто в адресе встречаются длинные последовательности нулей. Для замены одной такой последовательности в адресе можно использовать `::` (двойное двоеточие). Кроме того, в каждом шестнадцатеричном числе можно опустить до трёх ведущих нулей. Например, `fe80::1` соответствует канонической форме `fe80:0000:0000:0000:0000:0000:0000:0001`. Третья форма записи — указание последних 32 битов в известной IPv4 нотации. Например, `2002::10.0.0.1` соответствует шестнадцатеричной канонической записи `2002:0000:0000:0000:0000:0000:0a00:0001`, которая, в свою очередь, эквивалентна `2002::a00:1`. Чтобы просмотреть IPv6-адрес системы FreeBSD, выполните следующую команду: [source, shell] .... # ifconfig .... Вывод должен быть похож на следующий: [.programlisting] .... em0: flags=8863 metric 0 mtu 1500 options=481249b ether 00:1f:16:0f:27:5a inet 192.168.1.150 netmask 0xffffff00 broadcast 192.168.1.255 inet6 fe80::21f:16ff:fe0f:275a%em0 prefixlen 64 scopeid 0x1 media: Ethernet autoselect (1000baseT ) status: active nd6 options=23 .... В этом примере интерфейс `em0` использует `fe80::21f:16ff:fe0f:275a%em0` — автоматически сконфигурированный link-local адрес, который был автоматически сгенерирован из MAC-адреса. Некоторые IPv6-адреса зарезервированы. Список зарезервированных адресов можно посмотреть в следующей таблице: [[reservedip6]] .Пример зарезервированных адресов IPv6 [cols="1,1,1", frame="none", options="header"] |=== | IPv6 address | Описание | Заметки |`::/128` |не указано |Эквивалентно `0.0.0.0` в IPv4. |`::1/128` |loopback-адрес (адрес обратной петли) |Эквивалент `127.0.0.1` в IPv4. |`::ffff:0.0.0.0/96` |IPv4-отображенный IPv6-адрес |Младшие 32 бита представляют IPv4-адрес для совместимости с хостами и маршрутизаторами, поддерживающих только IPv4. |`fe80::/10` |link-local unicast |Эквивалентно 169.254.0.0/16 в IPv4. |`fc00::/7` |unique-local |Уникальные локальные адреса предназначены для локального взаимодействия и доступны для маршрутизации только в пределах группы взаимодействующих сайтов. |`ff00::/8` |multicast | |`2000::/3` |global unicast |Все глобальные одноадресные адреса выделяются из этого пула. Первые 3 бита имеют значение `001`. |``2001:db8::/32, 3fff::/20`` |documentation |Адресный префикс IPv6 для использования в документации. |=== Для получения дополнительной информации о структуре IPv6-адресов обратитесь к http://www.ietf.org/rfc/rfc4291.txt[RFC4291]. [[config-static-ip-v6]] === Настройка статического IPv6-адреса Для настройки системы FreeBSD в качестве IPv6-клиента со статическим IPv6-адресом необходимо установить IPv6-адрес. Выполните следующие команды для выполнения требований: [source, shell] .... # sysrc ifconfig_em0_ipv6="inet6 2001:db8:4672:6565:2026:5043:2d42:5344 prefixlen 64" .... Чтобы назначить маршрутизатор по умолчанию, укажите его адрес, выполнив следующую команду: [source, shell] .... # sysrc ipv6_defaultrouter="2001:db8:4672:6565::1" .... Для настройки дополнительного IPv6 anycast-адреса укажите адрес anycast как `_aliasN`(указано в man:rc.conf[5]) с добавлением опции `anycast`: [source, shell] .... # sysrc ifconfig_em0_alias0="inet6 2001:db8:4672:6565::a anycast" .... Имейте в виду, что приложения не могут привязываться к anycast-адресам; в этом случае необходимо использовать алиас-адрес. [[config-dynamic-ip-v6]] === Настройка динамического адреса IPv6 Для динамической настройки IPv6-адреса интерфейса с использованием crossref:glossary[slaac-glossary,SLAAC], выполните следующие команды: [source, shell] .... # sysrc ifconfig_em0_ipv6="inet6 accept_rtadv" # sysrc rtsold_enable="YES" .... Обратите внимание, что при включённой IPv6-маршрутизации (т.е. `ipv6_gateway_enable=YES`), система не будет настраивать SLAAC-адрес, если переменная man:sysctl[8] `net.inet6.ip6.rfc6204w3` не установлена в 1. === Объявление маршрутизатора и автонастройка хоста Этот раздел демонстрирует, как настроить man:rtadvd[8] на IPv6-маршрутизаторе для объявления префикса IPv6-сети и маршрута по умолчанию. Чтобы включить man:rtadvd[8], выполните следующую команду: [source, shell] .... # sysrc rtadvd_enable="YES" .... Важно указать интерфейс, на котором будет выполняться IPv6-анонсирование маршрутизатора. Например, чтобы указать man:rtadvd[8] использовать `em0`: [source, shell] .... # sysrc rtadvd_interfaces="em0" .... Далее создайте файл конфигурации [.filename]#/etc/rtadvd.conf#, как показано в этом примере: [.programlisting] .... em0:\ :addrs#1:addr="2001:db8:1f11:246::":prefixlen#64:tc=ether: .... Замените `em0` на используемый интерфейс и `2001:db8:1f11:246::` на префикс выделенного диапазона. Для выделенной подсети `/64` больше ничего менять не нужно. В противном случае измените значение `prefixlen#` на соответствующее. === Соответствие адресов IPv6 и IPv4 Когда на сервере включен IPv6, может возникнуть необходимость разрешить использование IPv4-отображенных IPv6-адресов. Эта опция совместимости позволяет представлять IPv4-адреса в виде IPv6-адресов. Разрешение IPv6-приложениям взаимодействовать с IPv4 и наоборот может представлять угрозу безопасности. Эта опция может не требоваться в большинстве случаев и доступна только для совместимости. Она позволит IPv6-приложениям работать с IPv4 в двухстековой среде. Это особенно полезно для сторонних приложений, которые могут не поддерживать IPv6-окружение. Для включения этой функции выполните следующую команду: [source, shell] .... # sysrc ipv6_ipv4mapping="YES" .... [[network-wireless]] == Беспроводные сети Большинство беспроводных сетей основаны на стандартах link:https://en.wikipedia.org/wiki/IEEE_802.11[IEEE(R) 802.11]. FreeBSD поддерживает сети, работающие по стандартам link:https://en.wikipedia.org/wiki/IEEE_802.11a-1999[802.11a], link:https://en.wikipedia.org/wiki/IEEE_802.11b-1999[802.11b], link:https://en.wikipedia.org/wiki/IEEE_802.11g-2003[802.11g] и link:https://en.wikipedia.org/wiki/IEEE_802.11n-2009[802.11n]. [NOTE] ==== link:https://en.wikipedia.org/wiki/IEEE_802.11ac-2013[802.11ac] поддержка в FreeBSD в настоящее время находится в стадии разработки. ==== Базовая беспроводная сеть состоит из нескольких станций, взаимодействующих через радиомодули, работающие в диапазоне 2,4 ГГц или 5 ГГц, хотя это может различаться в зависимости от региона и также меняется для обеспечения связи в диапазонах 2,3 ГГц и 4,9 ГГц. Настройка беспроводной сети включает три основных этапа: 1. Сканировать и выбрать точку доступа 2. Аутентификация станции 3. Настройте IP-адрес или используйте DHCP. Следующие разделы описывают каждый шаг. [[network-wireless-quick-start]] === Быстрое начало работы: подключение к беспроводной сети Подключение FreeBSD к существующей беспроводной сети — весьма распространённая ситуация. Эта процедура быстрого старта показывает шаги, необходимые для подключения к сети с использованием базовой аутентификации. Более подробная процедура приведена в следующем разделе. Первый шаг — получить Service Set Identifier (SSID) и Pre-Shared Key (PSK) для беспроводной сети у администратора сети. Второй шаг — добавить запись для этой сети в файл [.filename]#/etc/wpa_supplicant.conf#. Если файл не существует, создайте его. Подробности о форматировании записей в этом файле см. в man:wpa_supplicant.conf[5]. [.programlisting] .... ctrl_interface=/var/run/wpa_supplicant eapol_version=1 ap_scan=1 fast_reauth=1 network={ ssid="myssid" <.> psk="mypsk" <.> } .... <.> Это SSID беспроводной сети. Замените его на имя беспроводной сети. <.> Это PSK беспроводной сети. Замените его на пароль от беспроводной сети. Третий шаг — добавить запись о сетевом интерфейсе для настройки сети при загрузке. Получите имя сетевого интерфейса с помощью sysctl `net.wlan.devices`. В приведённом ниже примере вывод этой команды показывает, что сетевым интерфейсом является "iwn0". [source, shell] .... # sysctl net.wlan.devices .... Вывод должен быть похож на следующий: [.programlisting] .... net.wlan.devices: iwm0 .... В следующей строке с командой sysrc замените "iwn0" на вывод команды sysctl, если это необходимо. [source, shell] .... # sysrc wlans_iwn0="wlan0" # sysrc ifconfig_wlan0="WPA DHCP" .... * И последний шаг — перезапуск службы `netif` выполнением следующей команды: [source, shell] .... # service netif restart .... [[basic-wireless-configuration]] === Базовая настройка беспроводной сети Эта секция предоставляет детальный пример настройки беспроводной сетевой карты. Чтобы узнать, какие беспроводные сетевые карты есть в системе, ознакомьтесь с разделом crossref:network[config-identify-network-adapter, Идентификация сетевых адаптеров]. [source, shell] .... # ifconfig wlan0 create wlandev iwm0 .... Чтобы изменение сохранялось после перезагрузки, выполните следующую команду: [source, shell] .... # sysrc wlans_iwm0="wlan0" .... [NOTE] ==== Поскольку нормативные требования различаются в разных частях мира, необходимо правильно настроить домены, соответствующие вашему местоположению, чтобы получить корректную информацию о доступных каналах. Доступные определения регионов можно найти в [.filename]#/etc/regdomain.xml#. Для установки данных во время выполнения используйте `ifconfig`: [source, shell] .... # ifconfig wlan0 regdomain etsi2 country AT .... Чтобы сохранить настройки, добавьте их в [.filename]#/etc/rc.conf#: [source, shell] .... # sysrc create_args_wlan0="country AT regdomain etsi2" .... ==== [[scan-wireless-networks]] === Сканирование беспроводных сетей Доступные беспроводные сети можно просканировать с помощью man:ifconfig[8]. Для вывода списка беспроводных сетей выполните следующую команду: [source, shell] .... # ifconfig wlan0 up list scan .... Вывод должен быть похож на следующий: [.programlisting] .... SSID/MESH ID BSSID CHAN RATE S:N INT CAPS FreeBSD e8:d1:1b:1b:58:ae 1 54M -47:-96 100 EP RSN BSSLOAD HTCAP WPS WME NetBSD d4:b9:2f:35:fe:08 1 54M -80:-96 100 EP RSN BSSLOAD HTCAP WPS WME OpenBSD fc:40:09:c6:31:bd 36 54M -94:-96 100 EPS VHTPWRENV APCHANREP RSN WPS BSSLOAD HTCAP VHTCAP VHTOPMODE WME GNU-Linux dc:f8:b9:a0:a8:e0 44 54M -95:-96 100 EP WPA RSN WPS HTCAP VHTCAP VHTOPMODE WME VHTPWRENV Windows 44:48:b9:b3:c3:ff 44 54M -84:-96 100 EP BSSLOAD VHTPWRENV HTCAP WME RSN VHTCAP VHTOPMODE WPS MacOS 46:48:b9:b3:c3:ff 44 54M -84:-96 100 EP BSSLOAD VHTPWRENV HTCAP WME RSN VHTCAP VHTOPMODE WPS .... . SSID/MESH ID идентифицирует название сети. . BSSID идентифицирует MAC-адрес точки доступа. . Поле `CAPS` определяет тип каждой сети и возможности работающих в ней станций (подробности см. в определении `list scan` в man:ifconfig[8]). [[wireless-authentication]] === Подключение и аутентификация в беспроводной сети После выбора беспроводной сети из списка обнаруженных необходимо выполнить подключение и аутентификацию. В подавляющем большинстве беспроводных сетей аутентификация осуществляется с помощью пароля, настроенного в маршрутизаторе. Другие схемы требуют выполнения криптографического рукопожатия перед началом передачи данных, используя либо предварительно распределённые ключи или секреты, либо более сложные схемы, включающие серверные службы, такие как RADIUS. [[authenticate-wpa2-wpa-personal]] ==== Аутентификация с WPA2/WPA/Personal Процесс аутентификации в беспроводной сети управляется с помощью man:wpa_supplicant[8]. Конфигурация man:wpa_supplicant[8] задаётся в файле [.filename]#/etc/wpa_supplicant.conf#. Подробнее см. man:wpa_supplicant.conf[5]. После завершения сканирования беспроводных сетей, выбора сети и получения пароля (PSK), эта информация будет добавлена в файл [.filename]#/etc/wpa_supplicant.conf#, как показано в следующем примере: [.programlisting] .... network={ scan_ssid=1 <.> ssid="FreeBSD" <.> psk="12345678" <.> } .... <.> Метод сканирования SSID. Используйте эту опцию только если сеть скрыта. <.> Имя сети. <.> Пароль беспроводной сети. Следующим шагом будет настройка беспроводного соединения в файле [.filename]#/etc/rc.conf#. Для использования статического адреса необходимо выполнить следующую команду: [source, shell] .... # sysrc ifconfig_wlan0="inet 192.168.1.20 netmask 255.255.255.0" .... Для использования динамического адреса необходимо выполнить следующую команду: [source, shell] .... # sysrc ifconfig_wlan0="WPA DHCP" .... Затем перезапустите сеть, выполнив следующую команду: [source, shell] .... # service netif restart .... [NOTE] ==== Дополнительная информация о более сложных методах аутентификации доступна в crossref:advanced-networking[network-advanced-wireless,"Расширенная аутентификация беспроводных сетей"]. ==== [[authenticate-open-networks]] ==== Аутентификация в открытых сетях [TIP] ==== Важно, чтобы пользователь был *очень* осторожен при подключении к открытым сетям без какой-либо аутентификации. ==== После завершения сканирования беспроводной сети и выбора SSID выполните следующую команду: [source, shell] .... # ifconfig wlan0 ssid SSID .... Затем выполните man:dhclient[8], чтобы настроить адрес: [source, shell] .... # dhclient wlan0 .... === Использование проводного и беспроводного подключений одновременно Проводное соединение обеспечивает лучшую производительность и надежность, тогда как беспроводное соединение предоставляет гибкость и мобильность. Пользователи ноутбуков, как правило, хотят свободно переключаться между этими двумя типами соединений. На FreeBSD можно объединить два или более сетевых интерфейса в режиме "отказоустойчивости". Такой тип конфигурации использует наиболее предпочтительное и доступное соединение из группы сетевых интерфейсов, а операционная система автоматически переключается при изменении состояния канала. Агрегация и отказоустойчивость каналов описаны в crossref:advanced-networking[network-aggregation,"Агрегация и отказоустойчивость каналов"], а пример использования как проводных, так и беспроводных соединений приведен в crossref:advanced-networking[networking-lagg-wired-and-wireless,"Режим отказоустойчивости между проводными и беспроводными интерфейсами"]. [[hostname]] == Имя сайта Имя хоста представляет собой полностью определённое доменное имя (FQDN) хоста в сети. [TIP] ==== Если для хоста не задано имя, FreeBSD назовет себя `Amnesiac`. ==== [[get-hostname]] === Проверить текущее имя хоста man:hostname[1] может использоваться для проверки текущего имени хоста: [source, shell] .... $ hostname .... Вывод должен быть похож на следующий: [.programlisting] .... freebsdhostname.example.com .... [[change-hostname]] === Изменить имя хоста Для изменения имени хоста с сохранением после перезагрузки выполните следующую команду: [source, shell] .... # sysrc hostname="freebsdhostname.example.com" .... [[dns]] == DNS DNS можно представить как link:https://en.wikipedia.org/wiki/Telephone_directory[телефонный справочник], в котором IP-адрес сопоставляется с именем хоста и наоборот. Существует три файла, которые управляют взаимодействием системы FreeBSD с DNS. Эти три файла: man:hosts[5], man:resolv.conf[5] и man:nsswitch.conf[5] Если иное не указано в файле [.filename]#/etc/nsswitch.conf#, FreeBSD сначала проверит адреса в файле [.filename]#/etc/hosts#, а затем DNS-информацию в файле [.filename]#/etc/resolv.conf#. [NOTE] ==== Файл man:nsswitch.conf[5] определяет, как должен работать nsdispatch (диспетчер переключения службы имен). По умолчанию раздел hosts в файле [.filename]#/etc/nsswitch.conf# будет выглядеть следующим образом: [.programlisting] .... hosts: files dns .... Например, в случае использования службы man:nscd[8]. Порядок предпочтения можно изменить, оставив строку следующей: [.programlisting] .... hosts: files cache dns .... ==== [[local-addresses]] === Локальные адреса Файл [.filename]#/etc/hosts# представляет собой простую текстовую базу данных, которая сопоставляет имена хостов с IP-адресами. В него можно добавить записи для локальных компьютеров, подключенных через LAN, чтобы использовать простые имена вместо настройки DNS-сервера. Кроме того, [.filename]#/etc/hosts# может использоваться для хранения локальных записей интернет-имен, что уменьшает необходимость запрашивать внешние DNS-серверы для часто используемых имен. Например, если в локальной среде имеется локальный экземпляр package:www/gitlab-ce[], его можно добавить следующим образом в файл [.filename]#/etc/hosts#: [.programlisting] .... 192.168.1.150 git.example.com git .... [[configuring-nameserver]] === Настройка сервера имен Как система FreeBSD обращается к системе доменных имен (DNS) в Интернете, управляется с помощью man:resolv.conf[5]. Наиболее распространённые записи в [.filename]#/etc/resolv.conf#: [.informaltable] [cols="1,1", frame="none"] |=== |`nameserver` |IP-адрес сервера имен, к которому должен обращаться резолвер. Серверы опрашиваются в указанном порядке, максимум три. |`search` |Список поиска для разрешения имён хостов. Обычно определяется доменом локального имени хоста. |`domain` |Локальное доменное имя. |=== Типичный файл [.filename]#/etc/resolv.conf# выглядит следующим образом: [.programlisting] .... search example.com nameserver 147.11.1.11 nameserver 147.11.100.30 .... [NOTE] ==== Должна использоваться только одна из опций — `search` или `domain`. ==== При использовании DHCP man:dhclient[8] обычно перезаписывает [.filename]#/etc/resolv.conf# информацией, полученной от DHCP-сервера. [TIP] ==== Если машина, в которой производится настройка, *не* является DNS-сервером, для улучшения производительности DNS-запросов можно использовать man:local-unbound[8]. Чтобы включить его при загрузке, выполните следующую команду: [source, shell] .... # sysrc local_unbound_enable="YES" .... Чтобы запустить службу man:local-unbound[8], выполните следующую команду: [source, shell] .... # service local_unbound start .... ==== [[troubleshooting]] == Устранение неполадок При устранении неполадок в конфигурации оборудования и программного обеспечения сначала проверяйте самые простые вещи. * Вставлен ли сетевой кабель? * Правильно ли настроены сетевые службы? * Настроен ли межсетевой экран правильно? * Поддерживается ли сетевая карта (NIC) в FreeBSD? * Работает ли маршрутизатор правильно? [TIP] ==== Прежде чем отправить отчёт об ошибке, всегда проверяйте раздел "Аппаратные требования" на странице link:https://www.freebsd.org/releases/[релиза FreeBSD], обновите версию FreeBSD до последней STABLE версии, проверьте архивы списков рассылки и выполните поиск в Интернете. ==== [[wired-troubleshooting]] === Устранение неполадок в проводных сетях Если карта работает, но производительность низкая, ознакомьтесь с man:tuning[7]. Также проверьте настройки сети, так как неправильные параметры могут быть причиной медленного соединения. Сообщения `No route to host` возникают, если система не может найти маршрут для пакета до целевого хоста. Это может произойти, если не указан маршрут по умолчанию или если кабель отключен. Проверьте вывод команды `netstat -rn` и убедитесь, что существует действительный маршрут до хоста. Если его нет, ознакомьтесь с разделом crossref:advanced-networking[network-routing,"Шлюзы и маршруты"]. Сообщения об ошибках `ping: sendto: Permission denied` часто возникают из-за неправильно настроенного межсетевого экрана. Если на FreeBSD включен межсетевой экран, но не определены правила, политика по умолчанию — запрещать весь трафик, включая man:ping[8]. Дополнительную информацию можно найти в crossref:firewalls[firewalls,Межсетевые экраны]. [[wireless-troubleshooting]] === Устранение неполадок в беспроводных сетях В этом разделе описаны шаги для устранения распространённых проблем с беспроводными сетями. * Если точка доступа не отображается при сканировании, проверьте, что конфигурация не ограничивает беспроводное устройство определенным набором каналов. * Если устройство не может подключиться к точке доступа, убедитесь, что конфигурация соответствует настройкам на точке доступа. Это включает схему аутентификации и все протоколы безопасности. Упростите конфигурацию насколько это возможно. Если используется протокол безопасности, такой как WPA2 или WPA, настройте точку доступа на открытую аутентификацию без защиты, чтобы проверить, проходит ли трафик. * Как только система сможет подключиться к точке доступа, диагностируйте конфигурацию сети с помощью таких инструментов, как man:ping[8]. * Для низкоуровневой отладки существует множество инструментов. Сообщения отладки можно включить в слое поддержки протокола 802.11 с помощью man:wlandebug[8].