Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-doc
Path: blob/main/documentation/content/ru/books/handbook/network/_index.adoc
18098 views
---
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", "WiFi"]
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
--
iwm0@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<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=481249b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,LRO,WOL_MAGIC,VLAN_HWFILTER,NOMAP>
        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 <full-duplex>)
        status: active
        nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
        inet 127.0.0.1 netmask 0xff000000
        groups: lo
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
....

В этом примере были отображены следующие устройства:

* `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 <full-duplex>)`).
. Состояние соединения (`status`) имеет значение `active`, что указывает на обнаружение несущего сигнала. Для `em0` состояние `status: no carrier` является нормальным, если кабель Ethernet не подключен к интерфейсу.

Если вывод man:ifconfig[8] показал что-то похожее на следующий результат, это означало бы, что интерфейс не настроен:

[.programlisting]
....
em0: flags=8822<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=481249b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,LRO,WOL_MAGIC,VLAN_HWFILTER,NOMAP>
        ether 00:1f:16:0f:27:5a
        media: Ethernet autoselect
        status: no carrier
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
....

[[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<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=481249b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,LRO,WOL_MAGIC,VLAN_HWFILTER,NOMAP>
        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 <full-duplex>)
        status: active
        nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
....

В этом примере интерфейс `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`. В приведённом ниже примере вывод этой команды показывает, что сетевым интерфейсом является "iwm0".

[source, shell]
....
# sysctl net.wlan.devices
....

Вывод должен быть похож на следующий:

[.programlisting]
....
net.wlan.devices: iwm0
....

В следующей строке с командой sysrc замените "iwm0" на вывод команды sysctl, если это необходимо.

[source, shell]
....
# sysrc wlans_iwm0="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].