web-dev-qa-db-ja.com

LinuxでIPコマンドを使用してIPを削除する

次のように2つのIPを追加すると、

ip addr add 1.1.1.1/24 dev eth2
ip addr add 1.1.1.2/24 dev eth2

そして、私はこのようなものを削除しようとします:

ip addr del 1.1.1.2/24 dev eth2

両方のIPが削除され、その処理方法がわかりません。

誰でもそれを解決する方法を知っていますか?

12
Hamed JML

インターフェイスからプライマリIPアドレスを削除すると、デフォルトで、同じサブネット上の他のすべてのアドレスが削除されます。

これはREHLバグへの返信です 11367 2013年3月12日に回答を提供したユーザーlainによって報告されました...

同じサブネットに複数のアドレスを追加するため、2番目以降のアドレスはセカンダリになります。これは「ip addr show」出力で確認できます。これらのアドレスの横にあるキーワード「secondary」に注意してください。

デフォルトでは、プライマリアドレスを削除すると、カーネルはそれぞれのセカンダリもすべて削除します。

セカンダリの1つをプライマリ削除時に新しいプライマリに昇格させる場合は、net.ipv4.conf.eth9.promote_secondaries sysctlを設定します。

10
bvs

これは、削除時に/ 24ネットワークマスクを使用するために発生します。入力したアドレスに適用されます。以下を試してください:

ip addr del 1.1.1.2/32 dev eth2

/ 32マスクは1つのホストを定義します。

6
Gevial

私はこれをチェックするeth2を持っていませんが、eth0で正しく動作し、eth2が魔法である必要がある理由はわかりません。 ip addr show dev eth2は、ipによって追加された追加のアドレスを表示していないように見えるので、ifconfig eth2を使用していると思います。

私が気づいたことの1つは、アドレスを作成/削除する順序が重要であることです。同じネットワーク内で追加された2番目以降のアドレスは、プライマリアドレスが削除されると削除されます。考慮してください...

    inet 1.1.1.1/24 scope global eth0
    inet 1.1.2.3/24 scope global eth0
    inet 1.1.1.2/24 scope global secondary eth0
    inet 1.1.1.3/24 scope global secondary eth0

1.1.1.1を削除すると、1.2と1.3のアドレスも削除されます。他のアドレスを削除すると、そのアドレスのみが削除されます。

2
user9517

私は以下を試します:

ip addr del 1.1.1.2 dev eth2

0
brain

@ bvsの回答 は、問題の正しい方向を示し、私のためにそれを解決しました。ここでは、正確なコマンドの詳細を示します。多くのデフォルトのインターフェースはeth0ですが、元の質問ではeth2に置き換える必要がある次のコマンドでそれを採用しています。

一時的な解決策(再起動するまで)の使用

Sudo sysctl -w net.ipv4.conf.eth0.promote_secondaries=1

再起動後も持続する永続的なソリューションの場合、次の内容のファイル/etc/sysctl.d/ip-promote.conf(または.confで終わる他のファイル名)を作成します。

# The following makes that a second IP on the eth0 interface
# is promoted as primary IP instead of being removed.
net.ipv4.conf.eth0.promote_secondaries=1
0
freiheitsnetz