在Arch Linux中禁用网络接口

Hel*_*aug 3 linux networking ethernet archlinux

我有以下问题.我的电脑很旧,它有一个内置的以太网端口无法正常工作,不是由于配置错误,我认为它是物理损坏的.它在Ubuntu甚至在Windows上都不起作用.我有一个以太网PCI卡,这是我使用的.问题是,一些奇怪的原因,但这作品有时更改存储卡eth0eth1,我必须跑dhcpd,因为我不总是通过DHCP获得IP.现在,实际的问题是,是否有某种方法可以禁用使用其MAC地址无法正常工作的卡?我不能禁用eth0eth1因为我确定它并不总是"指向"同一张卡.

Dav*_*hop 6

它们是同一种芯片组还是不同的芯片组?

如果它们不同,那么最简单的解决方案可能就是将该以太网芯片组的模块列入黑名单.

您首先需要找到模块名称(这是针对eth0):

dmesg | grep eth0
Run Code Online (Sandbox Code Playgroud)

看看你是否有以下内容:

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

在我的情况下,'r8169'是模块名称.您还可以使用'lsmod'查看当前加载的模块列表,因此请检查它是否出现在那里.

接下来,您需要将模块列入黑名单.Arch维基上有一个条目.


cjp*_*mbo 6

这位射手在这里; 我有一种方法可以根据硬件pci id禁用我的nVidia显卡的HDMI端口音频芯片; 也许你可以对你的nic应用相同的方法:

找到以太网的pci id:

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

找到相应的目录:

$ find /sys/devices -name *00:19.0
/sys/devices/pci0000:00/0000:00:19.0
Run Code Online (Sandbox Code Playgroud)

该目录中应该有一个名为"remove"的文件.您可以通过编辑/etc/rc.local在启动时禁用该设备

echo 1 > /sys/devices/pci0000:00/0000:00:19.0/remove
Run Code Online (Sandbox Code Playgroud)

第二个想法; 如果在/etc/rc.local完成之前加载了模块,那么这可能不适用于你的情况......如果以"错误"的顺序分配/ dev/eth0和/ dev/eth1然后拥有它会带来什么好处/etc/rc.conf禁用其中一个...你仍然可以将你喜欢的nic作为eth1.这曾经是多声卡上的alsa的问题,因此设计了通过模块参数分配卡的编号的方法.也许模块本身允许这个?