Re: [Q] ip aliasとソースアドレス
nojimaです。
フォローありがとうございます。
kono@ie.u-ryukyu.ac.jp (Shinji KONO) writes:
> > [Q1] パケットのソースアドレスは何になるかを容易に予測することは
> > 可能でしょうか?
>
> system 依存なんじゃないかなぁ。もちろん。
なるほどです。以前猛烈に誤解をしていて、eth0に割り振られたアドレスかと
思い込んでました。やってみればわかるのですが、実際は違うようで...
> > name.sin_family=AF_INET;
> > name.sin_addr.s_addr=htonl(INADDR_ANY);
> > connect(socketfd,(struct sockaddr *)&name,sizeof(name))
> > [Q2] このソースアドレスを決めている部分はOSのソースではどこになるので
> > しょうか?
> > (linux-src/net/ipv4/route.cの
> > ip_route_input_slow()内部かな?なんて勝手に思っている次第ですが
> > あってますでしょうか?)
>
> このあたり駆け足で読んだような気もするんだけど、覚えがないです〜
自分なりの動作の予想:
1) ifconfig eth0:x xxxx した時にIP アドレスを割り振ると同時に
xxxxの所属するセグメントへのroute add がeth0:xに対して行なわれる。
2) プログラムがパケットを出そうとすると、ipv4/route.c内部で、
ソースIPアドレスがルーティングテーブルを元に決定される。
3) 2)の時、同一セグメントに対する複数のルーティングテーブル
が見つかる。で、ルーティングテーブルを保管しているハッシュ
において一番最初に見つかったエントリから得られるインターフェースの
アドレスがソースIPアドレスとして利用される。
というわけで、ハッシュのエントリの一番最初を予測しなければならないので、
ソースIPアドレスの予測は難しいという自分の結論なのですが、あってますで
しょうか?
IP aliasの仕様ってどこかにあったりしますでしょうか?
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735