Network configuration (Русский)/Ethernet (Русский)
В статье описана настройка 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 не определяет и не загружает нужный модуль автоматически во время запуска системы, изучите к раздел Модули ядра#Автоматическое управление модулями.
Советы и рекомендации
ifplugd для ноутбуков
ifplugd — демон, который автоматически настраивает Ethernet-устройство при подключении кабеля и удаляет конфигурацию при его отключении. Это удобно для ноутбуков со встроенными сетевыми интерфейсами, поскольку последний будет настраиваться лишь при реальном подключении кабеля. Другой вариант использования — когда необходимо перезапустить сеть, но вы не хотите перезагружать компьютер или делать это в оболочке.
По умолчанию ifplugd настроен на работу с устройством eth0
. Эту и другие настройки, такие как время задержки, можно изменить в файле /etc/ifplugd/ifplugd.conf
.
netctl-ifplugd@.service
; также можно воспользоваться службой ifplugd@.service
из пакета ifplugd. Например, включите ifplugd@eth0.service
.Решение проблем
Смена компьютера при использовании кабельного модема
Некоторые провайдеры кабельных интернет-услуг (например, 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 после завершения работы --> Включено
Отключено
не дает эффекта (вы увидите, что индикатор соединения по-прежнему выключается при завершении работы 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 отключает его при завершении работы ОС.
Для чипсетов Atheros отсутствует интерфейс
Пользователи некоторых чипов Atheros ethernet сообщают, что они не работают "из коробки" (с установочного носителя февраля 2014 г.). Помогает установка пакета backports-patchedAUR из 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
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