私は(カーネルモジュール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 基本階層=混合
質問:
- シェルスクリプトをジョブ
/etc/network/interfaces
構成に変換するには? - これを行う他のクリーナーや推奨方法はありますか?
答え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-dummy1
IPアドレスをに変更し、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されました。