IP AliasがDatagramのSourceIPになることがある

LinuxでのLocalhostは/etc/hostsの一番先頭のエントリ - T氏の(非)日常記
で書いてた、UDP送ったらSourceIPアドレスがなんか変な件
Google先生に聞いたり、検証して結局こんな事だったって解かってきました。

  • バーチャルIPをIP Aliasで行なっているソフトウェアが別に動いてた。
  • DatagramSocketを作る際には、SourceIPを指定していない。
  • SourceIPを指定しない→0.0.0.0でバインドしてもらうようにLinux Kernelにお願いする
  • Linux Kernelは、どうもこの辺を動的に選ぶ(?)らしい。

Kernelソースと、にらめっこしましたがよく解からず。。*1

*1:Javaからこの世界に入り、Cについては最近KernelとかApacheとかJVMのソースを眺めたりしながら、少しずつ勉強中の身だったりします