人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

LinuxのIPアドレスの質問です。
以下の順番にIPアドレスを追加します。

# ifconfig eth0:0 192.168.0.10
# ifconfig eth0:1 192.168.0.11
# ifconfig eth0:2 192.168.0.12
# ifconfig eth0:3 192.168.0.13
# ifconfig eth0:4 192.168.0.14

以下のコマンドで、1番目のエントリーを削除します。

# ifconfig eth0:0 down


すると上で追加した全部のIPアドレスが削除されています。(2番目以降のエントリーは個別に削除可能です。)
これは、そういう仕様なのでしょうか。また、これを回避する上手い方法など無いでしょうか。
OSはCentOS 5.3 と、Ubuntu 8.10 にて試しましたが同じ動作でした。

●質問者: yoshifumi1975
●カテゴリ:コンピュータ インターネット
✍キーワード:CentOS IPアドレス Linux OS Ubuntu
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● JULY
●70ポイント ベストアンサー

Re: issue: deleting one IP alias deletes all

linux kernel の ML に投げられメールですが、この中の

what address they suppose to use as source address when communicating to this network. In other words, what address is primary and what addresses are just some unused dummies.

という辺りを手がかりに私も試してみました。

で、なんとなく分かったのは ifconfig でインタフェースと IP アドレスを結び付けているのとは、別の要因でこのような現象が起こるようです。

例えば、

eth:0 ..... 192.168.5.1
eth:0.0 .... 192.168.5.10
eth:0.1 .... 192.168.5.11

となっているとします。この時、eth0:0 を ifconfig で down させても、eth0:1 は残ります。

しかし、

eth:0 ..... 192.168.5.1
eth:0.0 .... 192.168.10.10
eth:0.1 .... 192.168.10.11

とすれば、質問にある通り、全ての IP エイリアスがなくなります。

この2つのケースを iproute に含まれる ip コマンドを使うと、下記の様になります。

#ip addr ls eth0
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
 inet 192.168.43.128/24 brd 192.168.43.255 scope global eth0
 inet 192.168.43.200/24 brd 192.168.43.255 scope global secondary eth0:0
 inet 192.168.43.201/24 brd 192.168.43.255 scope global secondary eth0:1
#ip addr ls eth0
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
 inet 192.168.43.128/24 brd 192.168.43.255 scope global eth0
 inet 192.168.10.200/24 brd 192.168.10.255 scope global eth0:0
 inet 192.168.10.201/24 brd 192.168.10.255 scope global secondary eth0:1

後者の方は eth0:0 に対して「secondary」が付きません。

ifconfig で IP エイリアスを設定した際に、ネットワーク部のアドレスが同じものが既にある場合、iproute 上での管理では「secondary」となるようです。

しかし、既存には無いネットワークアドレスだった場合、インタフェースに対する IP エイリアスであっても、iproute 上では primary 扱いになるようです。

iproute 上で primary 扱いになっている物を down すると、それに引きづられる形で、secondary 扱いのものが無くなってしまう、という仕組みだと考えられます。

IPROUTE2 Utility Suite Documentation

そのことが、上記ページの「IP Interface Primary and Secondary Addressing」辺りに書いてあるらしいのですが、私の英語力では読み取れませんでした(^^;。

◎質問者からの返答

回答ありがとうございます。そのものずばりですね。primary削除時にsecondaryは自動昇格しない、という旨書いてあります。independent に扱いたいなら、prefixを32にしなさいと書いてあります。

# ip addr add 10.0.10.10/32 dev eth0

# ip addr add 10.0.10.11/32 dev eth0

# ip addr add 10.0.10.12/32 dev eth0

# ip addr show primary

にて、すべてprimary 扱いになっていることを確認しました。


2 ● b-wind
●0ポイント

これは、そういう仕様なのでしょうか。

そういう仕様。というか手段が間違っている。


Linux Networking-HOWTO (Previously the Net-3 Howto): IP 関係、イーサネット関係の情報

上記URLの 6.5 を参照のこと。

エイリアスを削除する場合、仮想的なデバイス名の後に `-' を付けて ifconfig します。

root# ifconfig eth0:0- 0

◎質問者からの返答

情報が古い?ためか、上記の方法ではうまくいきませんでした。

ifconfig eth0:0- 10.0.10.1

で普通に、"eth0:0-"という名前の仮想デバイスが追加できてしまいます。

ifconfig eth0:0- 0 (0.0.0.0と等価?)

で普通に、"eth0:0-"を削除できます。

つまり現行バージョンのifconfigでは、ラベル部分の "-" には特別な意味は無いようです。


3 ● azumi1975
●10ポイント

>そういう仕様なのでしょうか。

そういう仕様です。

1つめがMAINのアドレスとして扱うので、他のIPと対等でないからです。

◎質問者からの返答

回答ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ