ifconfigは、IPv6アドレスが一時アドレスではなくなるのを待つようにします。

ifconfigは、IPv6アドレスが一時アドレスではなくなるのを待つようにします。

ifconfig私のスクリプトはIPv6アドレスを使用しています。その後、そのアドレスはTCPポートでリッスンするためにすぐに使用されます。

次のようにスクリプトを作成すると、サービスが受信できないため失敗します。

ifconfig igb0 inet6 2001:db8::10/64 add
service my_service start #fails

しかし、次のようにすれば成功します。

ifconfig igb0 inet6 2001:db8::10/64 add
sleep 1
service my_service start

ifconfig私は実行ジョブの直後に出力を書いてみましたaddifconfig報告されたIPアドレスは次のとおりです。暫定的な、これは明らかにサービスがそれを受け取らないようにします。

もちろん、しばらく待ってからアドレスを使用できるようにしたいのは、この問題を解決する良い方法ではありません。一時アドレスが利用可能になるのを待つか、後で戻ってifconfigアドレスがすべて設定されるようにするにはどうすればよいですか。

ベストアンサー1

アドレスは複数の状態にあり、一時アドレスはその1つです。ifconfigアドレスが一時的な状態から離れるのを待つことは意図的に設計されていません。

次の定義に従って楽観的DADを使用するように構成できます。RFC 4429。 DADがまだ作成されていない場合でも、アプリケーションに利用可能な住所を提供することが目的です。この機能を使用するには、カーネルの再構成が必要な場合があります。

楽観的なDADを提供するようにカーネルを構築したら、特定のsysctl設定でそれを有効にできます。 ~からIP-sysctl.txt:

/proc/sys/net/ipv6/* Variables:
...

conf/interface/*:
        Change special settings per interface.

        The functional behaviour for certain settings is different
        depending on whether local forwarding is enabled or not.

...

optimistic_dad - BOOLEAN
        Whether to perform Optimistic Duplicate Address Detection (RFC 4429).
                0: disabled (default)
                1: enabled

use_optimistic - BOOLEAN
        If enabled, do not classify optimistic addresses as deprecated during
        source address selection.  Preferred addresses will still be chosen
        before optimistic addresses, subject to other ranking in the source
        address selection algorithm.
                0: disabled (default)
                1: enabled

つまり、次のことを行います。

sysctl -w net.ipv6.conf.enp2s6.optimistic_dad=1
sysctl -w net.ipv6.conf.enp2s6.use_optimistic=1

起動時に。

おすすめ記事