물리적 이더넷 포트 위치를 eth0/1에 안정적으로 매핑하는 방법

물리적 이더넷 포트 위치를 eth0/1에 안정적으로 매핑하는 방법

저는 Debian 9(확장판)을 사용하고 있습니다. 나는 4개의 이더넷 포트(상단에 2개, 하단에 2개)가 있는 마더보드를 가지고 있습니다. 내 사용 사례에서는 그 중 두 개만 사용합니다. 내 질문은: 왼쪽 상단을 eth0으로 만들고 오른쪽 상단을 eth1로 만들려면 어떻게 해야 합니까?

처음에는 쉽게 들릴 수도 있습니다. "MAC 주소 사용"이 가장 먼저 생각날 수도 있습니다. 안타깝게도 그렇게 쉬운 일은 아닙니다. 이를 수백 개의 마더보드로 확장해야 하며, 그 중 일부는 동일한 네트워크에 연결되므로 MAC이 고유하게 됩니다.

다음은 출력의 일부입니다 lspci.

02:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
03:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
04:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
05:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)

나의 초기 접근 방식은 이들 중 내가 관심 있는 물리적 인터페이스에 해당하는 것이 무엇인지 파악하고 다음과 같은 시스템 네트워크 링크 파일을 사용하는 것이었습니다.

[Match]
Path=pci-0000:02:00.0
[Link]
NamePolicy=
Name=eth0

이것은 실제로 꽤 잘 작동하는 것 같습니다. 문제는 BDF가 실제로 안정적이지 않다는 것입니다. 때로는 이전 버스 번호를 사용하고 모든 이더넷 인터페이스를 다시 가져오는 Firewire 카드를 여기에 넣어야 할 때가 있습니다.

02:00.0 FireWire (IEEE 1394): Texas Instruments XIO2213A /B/XIO2221 IEEE-1394b OHCI Controller [Cheetah Express] (rev 01)
03:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
04:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
05:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
06:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)

그러나 4중주단은 결코 분열된 것 같지 않았다. 이 4개 장치의 상대적 순서가 여러 개의 동일한 마더보드에 걸쳐 적어도 명확하게 정의되어 있는지 확인할 수 있습니까? 좀 더 구체적으로 설명하자면, 특정 마더보드가 IFINDEX여러 개의 동일한 마더보드에 있는 동일한 물리적 포트를 안정적으로 가리킨다는 생각을 믿을 수 있습니까? 이것은 지금까지의 내 경험인 것 같지만, 일화 외에 이를 실제로 확인할 수 있는 것은 아무것도 찾지 못했습니다. 이것이 사실이더라도, systemd in Stretch 버전이 Property링크된 파일의 키를 지원하지 않는다는 사실이 문제입니다 . MACAddress, Path, Driver, Type, Name, Host, Virtualization, KernelCommandLine또는 에만 걸린 것 같습니다 Architecture.

현재 내가 찾은 최고의 솔루션은 다음을 사용하는 것입니다.더 이상 사용되지 않는 udev 지원다음과 같이 입력하세요 /etc/udev/rules.d/70-persistent-net.rules.

ACTION=="add", SUBSYSTEM=="net", ATTRS{vendor}=="0x8086", ATTRS{device}=="0x1533", ATTR{ifindex}=="5", NAME:="eth0"
ACTION=="add", SUBSYSTEM=="net", ATTRS{vendor}=="0x8086", ATTRS{device}=="0x1533", ATTR{ifindex}=="3", NAME:="eth1"
ACTION=="add", SUBSYSTEM=="net", ATTRS{vendor}=="0x8086", ATTRS{device}=="0x1533", ATTR{ifindex}=="4", NAME:="eth2"
ACTION=="add", SUBSYSTEM=="net", ATTRS{vendor}=="0x8086", ATTRS{device}=="0x1533", ATTR{ifindex}=="2", NAME:="eth3"

systemd v243 이전의 새로운 세계에서 이 작업을 수행할 수 있는 방법이 있나요? IFINDEX보다 더 좋고 안정적인 것이 있습니까?

관련 정보