Network configuration (Русский)/Ethernet (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Network configuration/Ethernet. Дата последней синхронизации: 12 июля 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

В статье описана настройка Ethernet; общие вопросы по настройке подключения к сети можно найти в статье Настройка сети.

Драйвер устройства

Проверка состояния

udev должен автоматически определить контроллер сетевого интерфейса и загрузить необходимый модуль ядра во время загрузки системы. Найдите пункт "Ethernet controller" (или похожий) в выводе команды lspci -v. В нём содержится информация о модуле ядра с драйвером интерфейса:

$ lspci -v
02:00.0 Ethernet controller: Attansic Technology Corp. L1 Gigabit Ethernet Adapter (rev b0)
 	...
 	Kernel driver in use: atl1
 	Kernel modules: atl1

Выполните dmesg | grep имя-модуля чтобы проверить, был ли драйвер загружен:

# dmesg | grep atl1
...
atl1 0000:02:00.0: eth0 link is up 100 Mbps full duplex

Если драйвер загружен, то следующий раздел можно пропустить. В противном случае выясните имя необходимого модуля.

Загрузка модуля

Найдите в интернете необходимый для вашего чипсета модуль/драйвер. Некоторые распространённые модули — 8139too для чипсетов Realtek, sis900 для чипсетов SiS. Выяснив название модуля, попробуйте загрузить его вручную. Появление сообщения об ошибке "модуль не найден" означает, что данный драйвер не был включён в ядро. Попробуйте найти модуль в AUR.

Если udev не определяет и не загружает нужный модуль автоматически во время запуска системы, изучите к раздел Модули ядра##Автоматическая загрузка модулей с помощью systemd.

Советы и рекомендации

ifplugd для ноутбуков

Совет: dhcpcd предоставляет ту же функциональность "из коробки".

ifplugd — демон, который автоматически настраивает Ethernet-устройство при подключении кабеля и удаляет конфигурацию при его отключении. Это удобно для ноутбуков со встроенными сетевыми интерфейсами, поскольку последний будет настраиваться лишь при реальном подключении кабеля. Другой вариант использования — когда необходимо перезапустить сеть, но вы не хотите перезагружать компьютер или делать это в оболочке.

По умолчанию ifplugd настроен на работу с устройством eth0. Эту и другие настройки, такие как время задержки, можно изменить в файле /etc/ifplugd/ifplugd.conf.

Примечание: Пакет netctl предоставляет службу [email protected]; также можно воспользоваться службой [email protected] из пакета ifplugd. Например, включите [email protected].

Решение проблем

Смена компьютера при использовании кабельного модема

Некоторые провайдеры кабельных интернет-услуг (например, videotron) настраивают кабельный модем на работу только с одним клиентом-компьютером по MAC-адресу его сетевого интерфейса. Как только модем запомнит MAC-адрес первого подключенного компьютера или оборудования, он ни при каких обстоятельствах не будет отвечать на запросы, идущие с других MAC-адресов. Таким образом, если вы поменяете один компьютер на другой (или поставите маршрутизатор), новый компьютер (или маршрутизатор) не будет работать с кабельным модемом из-за другого MAC-адреса. Выключите питание кабельного модема и включите его снова, чтобы сбросить настройки. Как только модем загрузится и подключится к сети, перезагрузите новый компьютер, чтобы он выполнил DHCP-запрос, или отправьте запрос DHCP-аренды вручную.

Если это не поможет, попробуйте скопировать MAC-адрес предыдущей машины (см. Подмена MAC-адреса).

Явное уведомление о перегруженности

Явное уведомление о перегруженности (Explicit Congestion Notification, ECN) может стать причиной проблем с передачей информации на старых/плохих маршрутизаторах. Для systemd 239 это касается как входящего, так и исходящего трафика.

Чтобы включать ECN только по требованию входящих соединений (безопасно, настройка ядра по-умолчанию), выполните:

# sysctl net.ipv4.tcp_ecn=2

Для полного отключения ECN (например, чтобы проверить, действительно ли причина возникших проблем в ECN) выполните:

# sysctl net.ipv4.tcp_ecn=0

Подробнее см. документации ядра.

Realtek: нет соединения / проблема WOL

Пользователи с сетевыми интерфейсами на основе Realtek 8168 8169 8101 8111(C) (отдельными/встроенными) могут заметить, что карта отключена во время загрузки системы и лампочка-индикатор не горит. Такое часто встречается на машинах с двумя операционными системами, одна из которых — Windows. Похоже, что причиной являются официальные драйверы Realtek (датированные маем 2007 г. и позднее) для Windows. Эти новые драйверы отключают функцию Wake-On-LAN, выключая интерфейс при завершении работы Windows, в результате чего между загрузками Windows он не работает. Пока Windows не загрузится, индикатор соединения не горит; во время завершения её работы индикатор выключается. В нормальном состоянии лампочка должна гореть всё время работы системы, даже во время POST. Проблема затрагивает и другие операционные системы, не имеющие новейших драйверов (например, Live CD). Есть несколько способов решения.

Включение сетевого интерфейса в Linux

Включите сетевой интерфейс в соотстветсвии с Настройка сети#Включение и отключение сетевых интерфейсов.

Откат/замена драйвера для Windows

Вы можете откатить ваш драйвер сетевой платы в Windows на тот, который предоставляет Microsoft (если это возможно), или откатить/установить официальный драйвер Realtek, имеющий дату выпуска ранее мая 2007 г. (может найтись на компакт-диске, идущем в комплекте с вашим аппаратным обеспечением).

Включение WOL в драйвере для Windows

Наверное, самое лучшее и быстрое решение — изменить эту настройку в драйвере Windows. Тогда это затронет всю систему, в том числе Arch (а также live CD и другие операционные системы). В менеджере устройств Windows найдите ваш сетевой адаптер Realtek и сделайте на нем двойной щелчок мыши. Во вкладке "Дополнительно" измените значение "Wake-on-LAN после завершения работы" (Wake-on-LAN after shutdown) на "Включено".

В Windows XP (пример):

Кликните правой кнопкой мыши на "Мой компьютер" и зайдите в "Свойства"
--> Вкладка "Аппаратное обеспечение" (Hardware)
  --> Менеджер устройств
    --> Сетевые адаптеры
      --> "двойной клик" на Realtek ...
        --> Вкладка "Дополнительно"
          --> Wake-On-Lan после завершения работы
            --> Включено
Примечание: В новых драйверах Realtek для Windows (протестировано на Realtek 8111/8169 LAN Driver v5.708.1030.2008, датированном 2009/01/22, от GIGABYTE) доступ к этой опции может быть немного иным, например, Shutdown Wake-On-LAN --> Включено. Похоже, что ее переключение в значение Отключено не дает эффекта (вы увидите, что индикатор соединения по-прежнему выключается при завершении работы Windows). Довольно грязный обходной путь — загрузиться в Windows и просто перезагрузить (reset) систему (плохой restart/shutdown), что не даст драйверу Windows никаких шансов отключить LAN. Лампочка будет по-прежнему гореть, а адаптер LAN останется доступен после POST до тех пор, пока вы опять не запустите Windows и правильно завершите его работу.

Включение LAN Boot ROM в BIOS/CMOS

Похоже, что установка Интегрированная периферия (Integrated Peripherals) --> Встроенный (Onboard) LAN Boot ROM --> Включено в BIOS/CMOS возобновляет работу чипа Realtek LAN при загрузке системы, несмотря на то, что драйвер Windows отключает его при завершении работы ОС.

Примечание: Этот способ был несколько раз протестирован на материнской плате GIGABYTE GA-G31M-ES2L с BIOS версии F8, выпущенным 2009/02/05

Для чипсетов Atheros отсутствует интерфейс

Пользователи некоторых чипов Atheros ethernet сообщают, что они не работают "из коробки" (с установочного носителя февраля 2014 г.). Помогает установка пакета backports-patchedAUR[ссылка недействительна: package not found] из AUR.

Broadcom BCM57780

Этот чипсет Broadcom иногда работает плохо, если не указать порядок загрузки модулей. Необходимые модули — broadcom и tg3, и загружаться они должны именно в таком порядке.

Если в вашем компьютере используется этот чипсет, сделайте следующее:

  • Найдите вашу сетевой интерфейс в выводе lspci:
$ lspci | grep Ethernet
02:00.0 Ethernet controller: Broadcom Corporation NetLink BCM57780 Gigabit Ethernet PCIe (rev 01)
  • Если Ethernet-соединение не функционирует, выдерните кабель и выполните команды:
# modprobe -r tg3
# modprobe broadcom
# modprobe tg3
  • Подключите обратно сетевой кабель и проверьте работу модуля:
# dmesg | grep tg3
  • Если это решило проблему, сделайте изменения постоянными, добавив модули broadcom и tg3 (в этом порядке) в массив MODULES:
/etc/mkinitcpio.conf
MODULES=(.. broadcom tg3 ..)
  • Пересоберите initramfs:
# mkinitcpio -p linux
  • В качестве альтернативы можно создать файл /etc/modprobe.d/broadcom.conf со следующим содержимым:
softdep tg3 pre: broadcom
Примечание: Этот способ может помочь и для других чипсетов, например, BCM57760.

Realtek RTL8111/8168B

# lspci | grep Ethernet
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)

За распознавание и работу этого сетевого интерфейса отвечает модуль r8169, однако некоторые ревизии данного драйвера работают с ошибками — происходит постоянное включение/выключение устройства. Для решения проблемы можно установить модуль r8168. Если r8168 не загружается автоматически менеджером udev, то нужно запретить загрузку модуля r8169. Подробнее загрузка модулей описана в статье Модули ядра##Автоматическая загрузка модулей с помощью systemd.

Ещё одной проблемой некоторых ревизий драйвера этого адаптера является плохая поддержка IPv6. В случае зависания страниц и низкой скорости подключения может помочь отключение функциональности IPv6.

Материнская плата Gigabyte с интерфейсом Realtek 8111/8168/8411

При загрузке с выключенным (настройка по умолчанию) IOMMU могут возникнуть проблемы с сетевым интерфейсом на материнских платах Gigabyte (например, Gigabyte GA-990FXA-UD3). Сетевое подключение будет неустойчивым, с малой пропускной способностью или отсутствовать вовсе. Сказанное в равной мере касается как встроенных интерфейсов, так и внешних сетевых плат на шине PCI, поскольку настройки IOMMU влияют на все сетевые интерфейсы материнской платы. Если включить IOMMU и загрузиться с установочного устройства, то на секунду появится сообщение об ошибке AMD I-10/xhci, после чего загрузка продолжится обычным образом. В результате сетевой интерфейс будет функционировать нормально (даже с модулем r8169).

Если добавить параметр ядра iommu=soft, то при загрузке сообщение об ошибке будет подавляться.

Материнская плата MicroStar с интерфейсом Realtek 8111/8168/8411

В случае некоторых материнских плат вроде "MicroStar B450M MORTAR TITANIUM" отключение/подключение Ethernet-кабеля или перезапуск DHCP-сервера на маршрутизаторе может привести к переходу r8169 в состояние "downshifted", в результате чего гигабитное соединение сократится до 100-мегабитного. В логах ядра появятся следующие записи:

# dmesg | grep r8169
Generic FE-GE Realtek PHY r8169-2200:00: Downshift occurred from negotiated speed 1Gbps to actual speed 100Mbps, check cabling!
r8169 0000:22:00.0 enp34s0: Link is Up - 100Mbps/Full (downshifted) - flow control rx/tx

В этом случае необходимо перезапустить интерфейс (выключить и включить снова):

# ip link set dev enp34s0 down
# ip link set dev enp34s0 up