/etc/network/interfaces 또는 이와 유사한 dummy0을 구성하는 현대적인 방법은 무엇입니까?

/etc/network/interfaces 또는 이와 유사한 dummy0을 구성하는 현대적인 방법은 무엇입니까?

저는 ( 커널 모듈 dummy0에서) 네트워크 인터페이스를 구성, 시작 및 중지하는 깨끗하고 "현대적인" 방법을 찾고 있습니다 .dummy

/etc/network/interfaces이전 시스템에서 작업했지만 이제는 자동으로 실패 합니다 ifup dummy0.

iface dummy0 inet static
   address 10.10.0.1
   netmask 255.255.255.0
   # post-up ip link set dummy0 multicast on  

post-up줄의 주석 처리를 제거하면 다음 오류가 발생합니다(실행되지만 인터페이스가 생성되지 않음을 표시).dummy0: post-up cmd 'ip link set dummy0 multicast on'failed: returned 1 (Cannot find device "dummy0")

이 쉘 스크립트는 완벽하게 실행됩니다.그러나 이것은 깨끗한 구성 파일이 아닙니다.

#!/bin/sh
sudo ip link add dummy0 type dummy
sudo ip link set dummy0 multicast on
sudo ip addr add 10.10.0.1/24 dev dummy0
sudo ip link set dummy0 up

나의 의도그냥 동시에 사용해 보세요수동그리고시스템 서비스:

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/ifup dummy0
ExecStop=/sbin/ifdown dummy0
StandardOutput=syslog+console

환경:

  • 쿠바 투 18.04.2 LTS
  • 네트워크 관리자 1.10.6
  • iproute2 4.15.0
  • ifupdown2 1.0
  • systemd 237 +PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 기본 계층 구조=혼합

질문:

  1. 쉘 스크립트를 작업 /etc/network/interfaces구성으로 변환하는 방법은 무엇입니까?
  2. 이 작업을 수행하는 다른 클리너나 권장 방법이 있습니까?

답변1

인터페이스는 이전에 "생성"되지 않았습니다. ifupdown은 "더미" 커널 모듈이 로드되자마자 마술처럼 나타나는 인터페이스에 의존합니다. 이는 오래된 호환성 동작이며 (AFAAIIRC) 동일한 인터페이스 이름의 명시적 생성도 방해하므로 모듈 매개변수를 통해 비활성화됩니다. 이제 dummy0은 dummy1 또는 dummyfoobar와 동일한 방식으로 생성되어야 합니다.

"pre-up" 명령으로 인터페이스를 생성할 수 있어야 합니다.

iface dummy0 inet static
    address 10.10.0.1/24
    pre-up ip link add dummy0 type dummy

이 시스템에서 NetworkManager도 사용하는 경우 최신 NM 버전은 가상 인터페이스를 지원합니다.

nmcli con add type dummy ifname dummy0 ipv4.addresses 10.10.0.1/24 [...]

인터페이스가 부팅 시 생성되고 영구적으로 유지되어야 하는 경우 systemd-networkd(장치를 생성하기 위한 .netdev 구성 및 IP 주소를 설정하기 위한 .network 구성)를 사용하여 수행할 수 있습니다. 그러나 "networkctl"에는 여전히 수동 "up" 또는 "down" 하위 명령이 없습니다.

답변2

최근에는 Oracle Linux 8(표준 4.18 커널)에 두 개의 가상 인터페이스를 도입해야 했습니다. 구성 파일의 자동 정리는 나에게 중요하지 않습니다. 첫 번째 기사에서는 Oleg의 아이디어와 해당 스크립트를 사용했고 기사에서는 NetworkManager 스크립트를 사용했습니다.RHEL의 가상 인터페이스두 개의 가상 인터페이스를 시작하기 위해 두 개의 간단한 스크립트를 작성했습니다.

  • 가상 모듈 로드
    # echo "dummy" > /etc/modules-load.d/dummy.conf
    
  • 두 개의 가상 인터페이스 식별
    # echo "options dummy numdummies=2" > /etc/modprobe.d/dummy.conf
    

디렉터리에 예제 98-dummy0와 예제라는 두 개의 스크립트가 생성됩니다.99-dummy1/etc/NetworkManager/dispatcher.d/

98-가상 0

#!/bin/sh
# See the "DISPATCHER SCRIPTS" section of `man NetworkManager`.
# Remember to make this file executable!
# Create the dummy interface.
/sbin/ip link add dummy0 type dummy
/sbin/ip link set dummy0 multicast on
/sbin/ip addr add 10.10.0.1/24 dev dummy0 
/sbin/ip link set dummy0 up

99-dummy1IP 주소를 로 변경 10.10.0.2/24하고 이름을 으로 바꿉니다 dummy1.

재부팅하고 확인해보세요

[mvg@oracle ~]$ ifconfig
dummy0: flags=4291<UP,BROADCAST,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.10.0.1  netmask 255.255.255.0  broadcast 0.0.0.0
        inet6 fe80::e4b7:27ff:fe33:73e9  prefixlen 64  scopeid 0x20<link>
        ether e6:b7:27:33:73:e9  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 84  bytes 10858 (10.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

dummy1: flags=4291<UP,BROADCAST,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.10.0.2  netmask 255.255.255.0  broadcast 0.0.0.0
        inet6 fe80::7c8a:e7ff:feee:b648  prefixlen 64  scopeid 0x20<link>
        ether 7e:8a:e7:ee:b6:48  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 78  bytes 10306 (10.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.131  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fdb0:34c:6e16:0:a01e:6127:6aa7:1bba  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::2cd7:76d7:c757:6b30  prefixlen 64  scopeid 0x20<link>
        ether 94:de:80:07:50:d2  txqueuelen 1000  (Ethernet)
        RX packets 15759  bytes 14474446 (13.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11577  bytes 1411688 (1.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 112  bytes 9480 (9.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 112  bytes 9480 (9.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:6b:09:b3  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

가상 인터페이스가 ping되었습니다.

관련 정보