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].