192.168.2.0/24 および 2001:44b8:4112:8a02::/64 インターフェイスを持つ特定のシステムで、enp3s0
次の操作を行った場合:
canidae# ip link add dummy0 type dummy
canidae# ip addr add dev dummy0 2001:44b8:4112:8a02::55
canidae# ip addr add dev dummy0 192.168.2.55
canidae# ip link set dummy0 up
次の出力は、ip addr
両方のIPアドレスがグローバルであることを確認します。
46: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 02:d1:a1:a4:7d:a6 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.55/32 scope global dummy0
valid_lft forever preferred_lft forever
inet6 2001:44b8:4112:8a02::55/128 scope global
valid_lft forever preferred_lft forever
inet6 fe80::d1:a1ff:fea4:7da6/64 scope link
valid_lft forever preferred_lft forever
これで、ネットワーク上の他のコンピュータから192.168.2.55にpingを送信できます。 IPアドレスはグローバルなenp3s0
ので、どのパケットが着信するかは問題ありません。dummy0
ただし、リモートホストで2001:44b8:4112:8a02::55 pingを実行できません。ホストは2001:44b8:4112:8a02::55を見つけるためにNDP要求を送信しましたが、応答を受け取りませんでした。したがって、これらのアドレスは、実際にはグローバルではなく特定のインターフェイスに固有のものに見えます。
同じIPv6アドレスを手動で追加するとenp3s0
機能します。実際にIPv6アドレス割り当てを削除すると、しばらく動作し続けますenp3s0
。それはおそらく、NDPの結果がキャッシュされるためでしょう。コンピュータはそのアドレスへのパケットが受信されたらどうするかを知っていますが、それを秘密にしておくのが好きです。
私の理解は、これがIPv4だけでなくIPv6でも機能するはずです。しかしそうではありません。
このコンピュータは何かをブロックしていないか、ブロックしている可能性iptables
がip6tables
あります。
このコンピュータは次のとおりです。
canidae# uname -a
Linux canidae 5.9.0-3-amd64 #1 SMP Debian 5.9.9-1 (2020-11-19) x86_64
GNU/Linux
しかし、同様の行動も見ました。
root@kube-node-3:~# uname -a
Linux kube-node-3 4.19.0-12-amd64 #1 SMP Debian 4.19.152-1 (2020-10-18) x86_64 GNU/Linux
誰でもこの動作を説明できますか?期待どおりに機能するように修正できますか?
PS。理想的ではないテストIPアドレス192.168.2.55/32についてお詫び申し上げます。これは正確であり、ブロードキャストアドレス255と混同しないでください。 IPv6アドレスと同じです。
答え1
以下はIPv4に関する非常によく似た質問です。
https://serverfault.com/questions/834512/why-does-linux-answer-to-arp-on-in 正しいインターフェース
私はこれが「厳格なarp」とも呼ばれると信じています。私は「strict arp」がデフォルトでオンになっていると思いますが、「strict ndp」はデフォルトでオフになっています(実際にこれを変更できるかどうかはわかりません)。
したがって、参照を見つけることはできませんが、これが予想される動作だと思います。