web-dev-qa-db-ja.com

仮想NIC:「SIOCSIFFLAGS:要求されたアドレスを割り当てることができません」が作成されます

Linuxシステム(カスタムディストリビューション、Debianベース)の物理ネットワークカード上に仮想ネットワークアダプターを作成するという、明らかに簡単なタスクで問題が発生しています。

走ったら

ifconfig eth0:1 10.50.55.130 netmask 255.255.255.0

すべてがうまくいきます。仮想NICはサイレントに追加され、ifconfigによって正しく表示されます。

この仮想NICの定義を/etc/network/interfacesに表示したいのですが。次のスタンザを追加しました。

# virtual NIC
# auto eth0:1
iface eth0:1 inet static
    address 10.50.55.130
    netmask 255.255.255.0

現在のところ、システムにネットワークインターフェイスを自動的に起動させることには興味がないので、最初の行はコメント化されています。

すべてうまくいきます。

ifup eth0:1を実行すると、SIOCSIFFLAGS: Cannot assign requested addressが返されます。

私が本当に頭を悩ませることができないのは、仮想NICが実際に作成されているということです。これがifconfigからの出力です。

can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-                        00-00-00  
      UP RUNNING NOARP  MTU:16  Metric:1
      RX packets:1206446 errors:0 dropped:0 overruns:0 frame:0
      TX packets:193280 errors:0 dropped:12 overruns:0 carrier:12
      collisions:0 txqueuelen:10 
      RX bytes:7645126 (7.2 MiB)  TX bytes:1393003 (1.3 MiB)
      Interrupt:68 

can1      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
      UP RUNNING NOARP  MTU:16  Metric:1
      RX packets:299171 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:10 
      RX bytes:2393368 (2.2 MiB)  TX bytes:0 (0.0 B)
      Interrupt:71 

eth0      Link encap:Ethernet  HWaddr 98:5d:ad:c2:30:30  
      inet addr:10.90.100.43  Bcast:0.0.0.0  Mask:255.255.248.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:1560275 errors:0 dropped:1 overruns:0 frame:0
      TX packets:790 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:96964255 (92.4 MiB)  TX bytes:176882 (172.7 KiB)
      Interrupt:56 

eth0:1    Link encap:Ethernet  HWaddr 98:5d:ad:c2:30:30 
      inet addr:10.50.55.130  Bcast:10.50.55.255  Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      Interrupt:56 

eth1      Link encap:Ethernet  HWaddr 98:5d:ad:c2:30:32  
      inet addr:169.254.8.141  Bcast:169.254.255.255  Mask:255.255.0.0
      UP BROADCAST MULTICAST  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:65536  Metric:1
      RX packets:140932 errors:0 dropped:0 overruns:0 frame:0
      TX packets:140932 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:8522761 (8.1 MiB)  TX bytes:8522761 (8.1 MiB)

なぜこのエラーが発生するのですか?または...なぜNICが作成されるのですか?

ifup -f eth0:1(forceオプションを使用)を呼び出した場合、エラーメッセージは表示されず、仮想ネットワークアダプターは正常に起動します。

1
kisa_svnt

ifconfigは、最近では廃止されたと見なされています。代わりにipツールを使用してみてください。最近のすべてのディストリビューションでサポートされているはずです。これはiprouteツールセットの一部です。

インターフェイスに追加のIPアドレスが必要な場合は、次のコマンドを使用します。

ip addr add 10.50.55.130/24 dev eth0

そして、私はあなたの質問に続くヨハン・ミリーンのコメントに同意します。

1
Jaroslav Kucera

コマンドラインによる方法とは別に、Debianベースのシステムで推奨される方法は、ネットワーク構成ファイルを使用することです。

エイリアスメソッドは、次のような順序を使用することを好みます:eth0, eth:0:0, eth0:1,.。

したがって、システムの最初のエイリアスはeth0:0になり、システムの再起動後もこの永続性を実現するには、次のような内容のファイル/etc/network/interfaces.d/eth0を作成します。

auto eth0:0
allow-hotplug eth0:0
iface eth0:0 inet static
      address 10.50.55.130/24

または、ファイル/etc/network/interfacesを直接編集することもできますが、自動的に上書きされる可能性があるため、これはお勧めしません。

重要なのは、スラッシュサブネットを使用したアドレスの形式を使用し、netmaskキーワードを使用しないことです:address 10.50.55.130/24

そしてもちろん

service networking restart

構成をテストします。その後、コマンドで確認します。

service networking status

そして

ip address

0