Linux의 가상 인터페이스

Linux의 가상 인터페이스

Linux에서 별도의 두 번째 가상 인터페이스를 만들어야 합니다.

나는 선택한다 dummy. 다음 단계를 수행하십시오.

$ cat /etc/modules-load.d/dummy.conf
# Load dummy.ko at boot

가짜

$ cat /etc/sysconfig/network-scripts/ifcfg-ethdummy1
NAME=ethdummy1
DEVICE=ethdummy1
MACADDR=00:22:22:ff:ff:ff
IPADDR=10.10.10.1
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet
NM_CONTROLLED=no

모든 것이 잘 작동하는 것 같습니다. 하지만 온라인에서도 사람들이 이렇게 하는 것을 볼 수 있습니다.

$ cat /etc/modprobe.d/dummy.conf 
install dummy /sbin/modprobe --ignore-install dummy; /sbin/ip link set name ethdummy1 dev dummy0

이 줄의 의미는 무엇입니까? 감사해요.

답변1

이 글을 쓴 사람은 dummy.conf다음과 같은 제한 사항을 해결하기 위해 그렇게 했습니다.웹 스크립트예를 들어 CentOS 7의 구성은 가상 인터페이스를 생성하는 데 도움이 되는 임의의 명령을 실행할 수 없습니다(Debian에서 가장 일반적으로 사용되는 것과 같습니다).상호 작용항목이 있는 파일 pre-up). 누구든지 그러한 스크립트를 실행하는 쉬운 방법에 대한 단서가 있는 경우(예: 완전히 새로운 스크립트를 만들 필요가 없음)ifup 가상스크립트) 답변을 수정해 드리겠습니다.

이것가짜모듈에는 기본 옵션이 있습니다 numdummies=1(옵션은 를 통해 찾을 수 있습니다 modinfo -p dummy). 이는 다음을 의미합니다.가짜모듈이 처음으로 로드되면 가상 인터페이스도 자동으로 생성됩니다(초기 네트워크 네임스페이스에). 기본 이름은 dummy+ 사용 가능한 첫 번째 정수이므로가상 0.

무엇인가요모듈 프로브설정의 목적은 다음을 보장하는 것입니다.가짜모듈이 로드됩니다(OP에서 말했듯이 시작 시 로드됨). 이는 암시적입니다.가상 0인터페이스 이름이 즉시 변경됩니다.ethdummy1, --ignore-install부하를 계속 교체하므로 무한 루프를 방지하는 것입니다.가짜모듈은 다음을 통해 로드됩니다.가짜기준 치수.

이를 통해ifcfg-ethdummy1구성이 올바르게 작동합니다. 예상되는 인터페이스가 일반 이더넷 인터페이스인 것처럼 검색됩니다.

dummy.conf다음과 같이 파일을 편집하여 (매우 어색하기는 하지만) 이 방법을 계속할 수 있습니다(그런데 링크 매개변수를 자연스러운 순서로 배치했습니다).

install dummy /sbin/modprobe --ignore-install dummy numdummies=2; /sbin/ip link set dev dummy0 name ethdummy1; /sbin/ip link set dev dummy1 name ethdummy2

모듈 옵션을 추가하면 numdummies=2두 개가 생성됩니다.가짜상호 작용가상 0그리고가상 1, 그들은 "즉시" 이름을 최종 이름으로 변경했습니다.ethdummy1그리고ethdummy2.이제 해당 구성 파일을 추가할 수 있습니다ifcfg-ethdummy2.

방금 새 구성을 추가했고 재부팅하거나 인터페이스를 잃고 싶지 않은 경우 인터페이스를 수동으로 추가하면 됩니다.IFUP명령은 다음 이후에도 계속 성공합니다.

ip link add ethdummy2 type dummy

해결책을 찾은 이유가상 프로필어색한? 이는 컨테이너에서 실행되는 동일한 시스템(예: CentOS 7)에서는 작동하지 않기 때문에 인터페이스는 항상 초기 네트워크 네임스페이스에 추가되므로 컨테이너는 인터페이스를 볼 수 없습니다. 컨테이너가 여전히 간접적으로 로딩을 트리거할 수 있는 경우(예 ip link add type dummy: )

개인적으로 저는 다음을 사용하고 싶습니다 dummy.conf. : options numdummies=0기본적으로 인터페이스를 생성하지 않고 필요에 따라 처리합니다. 적어도 결과는 컨테이너 사용 여부에 관계없이 일관됩니다.

또한 기본 가상 인터페이스를 지원하는 NetworkManager를 찾지 못했지만 적어도 스크립트는 가능합니다. 다음 링크에서 제공되는 솔루션을 확인해 보세요.RHEL의 가상 인터페이스. NetworkManager에 스크립트를 추가하거나 systemd의 서비스 인스턴스화를 사용하여 선택한 이름으로 시작하여 인터페이스를 생성합니다.

나중에 데비안과 유사한 배포판을 사용한다면 다음 pre-up ip link add ethdummy2 type dummy 2>/dev/null || :과 같이 할 수 있습니다.상호 작용'제전.

관련 정보