4개의 온보드 NIC가 있는 CentOS 7을 실행하는 동일한 어플라이언스가 여러 개 있습니다. RHEL6을 실행하는 이전 버전의 어플라이언스(예: ethX
)와 비슷한 느낌을 유지하기 위해 RHEL6에서 사용하는 네트워크 명명 체계를 사용하고 싶습니다. 또한 각 어플라이언스에서 사용할 일반 시스템 디스크를 생성한 후 필요한 변경 횟수를 최소화하고 싶습니다.
CentOS 7의 명명 체계를 이해하면 명명 체계는 하드웨어 위치에 따라 일관되므로 하드웨어가 동일하면 어플라이언스의 각 인스턴스에 대해 동일한 네트워크 인터페이스 이름을 갖게 됩니다.
고객 요구로 인해 CentOS 7 및 RHEL6 버전에서 어플라이언스의 네트워크 인터페이스 이름을 동일하게 만들어야 합니다.
net.ifnames=0
한 가지 접근 방식은 설명된 대로 커널 명령줄을 확장하는 것입니다 .여기그런 다음 내 자신의 ifcfg-ethX
파일을 만듭니다. 그러나 내가 아는 바로는 그렇게 하려면 구성 파일을 수동으로 수정해야 합니다. 이는 레거시 순서가 고정되어 있지만 임의적이므로 더욱 복잡하므로 각 시스템에 대해 이러한 파일을 수정해야 합니다. :-/
제가 생각한 것 중 하나는 CentOS 7 명명 체계를 사용하고 하드웨어 위치에 따라 임의의 명명 체계를 적용할 수 있도록 각각에 별칭을 추가하는 것이었습니다. 이것이 가능합니까?
동일한 장치와 IP 주소에 대해 두 개의 이름을 얻는 방법에 대한 다른 아이디어가 있습니까?
참고: 동일한 장치에 여러 IP 주소를 추가하는 방법을 묻는 것이 아닙니다. 이는 매우 간단합니다.
편집하다: 이름을 바꿔야 하는데 프로그래밍 방식으로 바꾸고 싶습니다.
답변1
이름이 "임의"인 동시에 "하드웨어 위치 기반"일 수 있습니까? 이 말은 서로 모순됩니다.
이름
eth#
은 각 부팅의 감지 순서에 따라 커널 자체에서 할당됩니다. 즉, "선착순"이며 하드웨어 위치와는 아무 관련이 없습니다.파일을 자동으로 생성하는 데 사용되는 이전 udev 버전
/etc/udev/rules.d
이러한 할당을 카드의 MAC 주소에 바인딩합니다. 해당 파일을 새 시스템에 복사할 수 있습니다.NAME=
주소나 PCI 위치를 기반으로 매개변수를 설정하기 위해 사용자 정의 udev 규칙을 작성할 수도 있습니다 . (미래에 udev는 인터페이스의 이름을 로 변경하는 것을 거부할 수 있습니다eth*
. 그리고 허용하더라도 이 이름 변경은 매우 취약하며 장치가 다른 순서로 검색되면 실패할 수 있습니다.)내가 아는 한 RHEL 6은바이오스개발자 이름물리적 기반 인터페이스 이름을 생성하기 위한 것입니다(커널 스위치
biosdevname=0
). RHEL 7은 이러한 목적으로 systemd-udevd의 내장 net_id를 사용합니다(커널 스위치net.ifnames=0
).얻으려면
p1p2
스타일 이름을 지정한yum install biosdevname
다음 커널 명령줄(biosdevname=1 net.ifnames=0
)을 통해 활성화할 수 있습니다. 참조레드햇 문서.
네트워크 인터페이스에는 별칭을 가질 수 없습니다.