부팅 시 네트워크 인터페이스를 어떻게 다시 매핑합니까?

부팅 시 네트워크 인터페이스를 어떻게 다시 매핑합니까?

알고 보니 어떤 종류의 하드웨어 장애에도 대비하면서 이식 가능한 배포판을 만들려고 하는 것이었습니다.

나는 Debian 배포판을 생성(또는 복원)하고 있습니다.다중 벨트(또는 내 백업에서) 결과 디스크가 다음을 포함하여 새(대부분 호환되는) 하드웨어에서 부팅 가능해야 합니다.VirtualBox 머신.

나처럼이전에 질문함, "이동식 배포판"에 필요한 몇 가지 사항 중 하나는 네트워크 인터페이스의 이름을 처리하는 것입니다.

예를 들어 실제 시스템에서 첫 번째 이더넷 장치의 이름은 이고 enp2s0VirtualBox에서는 이름이 입니다 enp0s3. /etc/network/interfaces시작 시 파일을 어떻게 생성해야 합니까 ?

네트워크 인터페이스 이름을 다시 매핑하고(아마도 심볼릭 링크를 통해) 기본 하드웨어의 실제 네트워크 인터페이스 이름을 알지 못한 채 각 애플리케이션에서 해당 이름(역할 이름)을 사용하도록 하는 보다 일반적인 방법이 있습니까?

답변1

이 문제를 해결하는 방법에는 여러 가지가 있습니다.

가장 친숙한 방법은 아마도 부팅 옵션을 사용하거나 net.ifnames=0재정의를 사용하거나 /lib/systemd/network/99-default.link실제로 ln -s /dev/null /etc/systemd/network/99-default.link새로운 스타일 이름을 구현하는 udev 규칙 파일을 마스킹하여 새로운 네트워크 인터페이스 명명 체계를 비활성화하는 것입니다 ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules.데비안 위키클래식 명명 체계를 복원하는 다양한 방법에 대한 추가 정보. 그런 /etc/network/interfaces다음 eth0.

가장 유연한 접근 방식은 아마도 정적 사용을 중단 /etc/network/interfaces하고 NetworkManager로 전환하는 것입니다. 추가 구성이 없으면 자동으로 기본적으로 활성 링크가 있는 네트워크 인터페이스에서 DHCP를 사용하게 됩니다. 이는 여러 개의 NIC가 있지만 실제로 하나만 연결되어 있는 경우에도 상황을 자동으로 처리합니다(반드시 첫 번째 것은 아님).

ip link show또는 출력(또는 의 링크 /sys/class/network) 을 읽고 그에 /etc/network/interfaces맞게 다시 쓰는(또는 실제 네트워크 구성 파일이 무엇이든) 사용자 정의 스크립트를 작성하여 원하는 작업을 수행할 수 있습니다 . 그런 다음 스크립트를 시스템 서비스로 사용하고 Wants=network-pre.target추가 할 수 있습니다 . 이를 통해 모든 모듈이 로드된 후 네트워크 구성이 시작되기 전에 초기 시스템 설정의 일부로 스크립트를 실행할 수 있습니다.Before=network-pre.targetAfter=module-init-tools.serviceDefaultDependencies=no

관련 정보