Отключить сетевой интерфейс в Arch Linux

У меня следующая проблема. Мой компьютер очень старый, и у него есть встроенный порт Ethernet, который не работает, не из-за неправильной настройки, я думаю, что он физически поврежден. Это не работало ни в Ubuntu, ни даже в Windows. У меня есть сетевая карта PCI, которую я использую. Проблема в том, что по какой-то странной причине карта, которая работает, иногда меняется с eth0 на eth1, и мне приходится запускать dhcpd, так как я не всегда получаю IP-адрес через DHCP. Теперь собственно вопрос: есть ли способ отключить карту, которая не работает, используя ее MAC-адрес или что-то в этом роде? Я не могу отключить ни eth0, ни eth1, так как уверен, что они не всегда «указывают» на одну и ту же карту.


person Heldraug    schedule 12.01.2012    source источник


Ответы (4)


Это один и тот же чипсет или разные?

Если они разные, то, вероятно, самым простым решением было бы просто внести в черный список модули для этого набора микросхем Ethernet.

Сначала вам нужно найти имя модуля (это для eth0):

dmesg | grep eth0

Посмотрите, есть ли у вас что-то вроде следующего:

[    2.209295] r8169 0000:05:00.0: eth0: RTL8168d/8111d at 0xffffc90000c6e000, 00:24:1d:11:b6:64, XID 081000c0 IRQ 44

В моем случае «r8169» — это имя модуля. Вы также можете увидеть список загруженных в данный момент модулей с помощью «lsmod», поэтому убедитесь, что он там отображается.

Далее вам нужно внести модуль в черный список. Для этого есть в вики Arch.

person David C. Bishop    schedule 12.01.2012

Товарищ лучник здесь; У меня есть метод, который я использую для отключения аудиочипа порта HDMI графической карты nVidia на основе его аппаратного идентификатора pci; возможно, вы могли бы применить тот же подход к своему ник:

Найдите идентификатор PCI Ethernet:

$ lspci | grep Eth
00:19.0 Ethernet controller: Intel Corporation 82579V Gigabit Network Connection (rev 05)

Найдите соответствующий каталог:

$ find /sys/devices -name *00:19.0
/sys/devices/pci0000:00/0000:00:19.0

В этом каталоге должен быть файл с именем «удалить». Вы можете отключить устройство при запуске, отредактировав /etc/rc.local

echo 1 > /sys/devices/pci0000:00/0000:00:19.0/remove

На второй мысли; это может не сработать в вашем случае, если модули загружаются до завершения /etc/rc.local... вам мало пользы от того, что /dev/eth0 и /dev/eth1 назначены в "неправильном" порядке, а затем /etc/rc.conf отключите один из них ... вы все равно можете получить свой предпочтительный сетевой адаптер как eth1. Раньше это было проблемой с alsa на нескольких звуковых картах, поэтому были разработаны методы для назначения нумерации карт через параметры модуля. Возможно, сам модуль это позволяет?

person cjpembo    schedule 11.02.2012
comment
У меня больше нет этого компьютера, поэтому я боюсь, что больше не смогу это проверить, но на самом деле это имеет смысл. Большое тебе спасибо. - person Heldraug; 15.02.2012

Я понял из вашего описания, что это встроенная сетевая карта. Лучшим решением будет отключить его в BIOS материнской платы, а не в ОС. Метод для этого зависит от производителя, но я уверен, что вы можете найти руководство для своей модели где-нибудь в Интернете.

person ColbyD    schedule 12.01.2012
comment
Я не думал об отключении его из BIOS. Другой ответ решил мою проблему, но я думаю, что вы правы. Спасибо за ваш ответ. - person Heldraug; 12.01.2012

Я смущен, что он не появился: если вам не нужно низкоуровневое решение, предложенное cjpembo, вы можете просто использовать

ip link set dev <interface name> down

Вы получаете их через ip link show.

person Suuuehgi    schedule 06.12.2019