アーチにはローカルパスはありません。

アーチにはローカルパスはありません。

非常に奇妙な動作を示すアーチ型Linuxボックスがあります。起動時にインターフェイスを起動し、必要に応じて設定するために呼び出されるスクリプトがあります。つまり:

ip link add link eth0 name mgt10 type vlan id 10
ip link add link eth0 name guest20 type vlan id 20

ip link set mgt10 up
ip addr add 10.10.0.1/24 dev mgt10

ip link set guest20 up
ip addr add 10.20.0.1/24 dev guest20

このスクリプトを呼び出した後、インターフェイスが機能し、適切なIPが割り当てられていることを確認してください。

# ip addr show
1: mgt10@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 10.10.0.1/24 scope global mgt10
       valid_lft forever preferred_lft forever
2: guest20@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 10.20.0.1/24 scope global guest10
       valid_lft forever preferred_lft forever

しかし、問題は何らかの理由でmgt10へのローカルパスを生成しないことです。

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.20.0.0        0.0.0.0         255.255.255.0   U     0      0        0 guest20

エラーは表示されず、インターフェイスからIPを手動で削除して再度追加すると(同じコマンドをコピー/貼り付け)、問題なくルーティングが期待どおりに表示されます。

理由がわからない。物理リンクが確立されていますが、システムに問題があるのではないでしょうか。インターフェイスが割り当ての準備ができていることを確認する方法はありますか?私がここで何か間違っているのでしょうか?

ベストアンサー1

起動スクリプトでip linkコマンドを使用する特別な理由はありますか? Arch Wikiには、systemctlを使用してVLANを作成する方法のいくつかの例があります。ここの例を修正することをお勧めします。https://wiki.archlinux.org/index.php/VLAN#Starting_at_boot

これにより、VLAN をサービスとしてイネーブルにし、問題が発生した場合にログに記録できるという利点が得られます。

systemctlに加えて、netctlを試してみることもできます。 /etc/netctl/examplesには、変更できるVLANサンプルスクリプトが含まれています。繰り返しますが、プロファイルが起動時に実行されるようにプロファイルを有効にしてログファイルを確認して、Journalctlなどを使用して実行される方法を確認できます。

おすすめ記事