/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カーネル)に2つの仮想インタフェースを導入する必要がありました。設定ファイルの自動クリーンアップは私にとって重要ではありません。最初の記事ではOlegのアイデアとそのスクリプトを使用し、記事ではNetworkManagerスクリプトを使用しました。RHELの仮想インターフェイス2つの仮想インターフェイスを起動するために2つの簡単なスクリプトを作成しました。

  • 仮想モジュールのロード
    # echo "dummy" > /etc/modules-load.d/dummy.conf
    
  • 2 つの仮想インターフェイスの識別
    # echo "options dummy numdummies=2" > /etc/modprobe.d/dummy.conf
    

ディレクトリには、サンプル98-dummy0とサンプルという2つのスクリプトが生成されます。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されました。

関連情報