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

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

В статье описана настройка 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 1000 Mbps full duplex

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

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

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

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

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

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

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

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

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

Примечание: Пакет netctl предоставляет службу netctl-ifplugd@.service; также можно воспользоваться службой ifplugd@.service из пакета ifplugd. Например, включите ifplugd@eth0.service.

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

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

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

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

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

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

Чтобы включить ECN и для входящего, и для исходящего трафика:

# sysctl net.ipv4.tcp_ecn=1

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

# sysctl net.ipv4.tcp_ecn=2

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

# sysctl net.ipv4.tcp_ecn=0

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

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 ..)
  • В качестве альтернативы можно создать файл /etc/modprobe.d/broadcom.conf со следующим содержимым:
softdep tg3 pre: broadcom
Примечание: Этот способ может помочь и для других чипсетов, например, BCM57760.

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

Пользователи с сетевыми платами на основе Realtek 8168 8169 8101 8111(C) 8156B (отдельными/встроенными) могут заметить, что карта отключена во время загрузки системы и лампочка-индикатор не горит. Такое часто встречается на машинах с двумя операционными системами, одна из которых — 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 и другие операционные системы). В «Диспетчере устройств» найдите ваш сетевой адаптер Realtek и откройте его двойным щелчком мыши. Во вкладке «Дополнительно» измените значение «Включение по локальной сети после отключения» (Wake-on-LAN after shutdown) на «Вкл».

Примечание: В новых драйверах 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

Отключение автоматической приостановки USB

При использовании функций энергосбережения, в частности автоматической приостановки устройств USB, устройство может не загрузиться корректно, что приведёт к состоянию NO-CARRIER (проверено на RT8156B) и отсутствию соединения.

Для решения проблемы можно отключить автоматическую приостановку для конкретного устройства, как описано в разделе Управление питанием#Автоматическая приостановка устройств USB или в TLP documentation on USB devices при использовании TLP; затем переподключите устройство.

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. Подробнее загрузка модулей описана в статье Модули ядра#Автоматическая загрузка модулей.

Ещё одной проблемой некоторых ревизий драйвера этого адаптера является плохая поддержка 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