2017-07-05 9 views
1

Linuxのインターフェイスで設定されたipv4アドレスを削除するnetlink API rtnl_addr_deleteを使用しています。同じサブネットに属する2つのIPがインターフェイスに設定されます。ipv4アドレスを削除することは、netlink APIを使用しているlinuxインターフェイスから同じサブネットに属しています

最初に設定したIPを削除すると、両方のIPが予期せず削除されています。しかし、その逆も真ではありません。第2の構成済みのIPを削除すると、最初のIPは削除されません。

異なるサブネットに属する2つのIPの場合、問題は見られません。つまり、最初に削除すると、最初のものだけが削除されます。

この問題を解決するには、このrtnl_addr_deleteがどのように動作するのか、または何らかの解決策を講じることができますか?

答えて

1

1つのサブネット(「プライマリ」アドレス)から最初に追加したIPアドレスを削除すると、すべてのサブネットが削除されます。これは、一部のディストリビューションでのデフォルトのカーネル動作です。それを変更するには、あなたがあなたが仕事のインターフェイス上でのsysctlを設定する必要があります。

$ sysctl -a | grep promote_secondaries 

言って、あなたはeth0の上でそれを変更したい:

promote_secondaries
$ sudo sysctl -w net.ipv4.conf.eth0.promote_secondaries=1 

サブネットの残りはなりません削除されますが、アドレスの1つが新しいプライマリとして昇格されます。

文書:https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt

関連する問題