根本的に、自分が疑問に感じた部分がうまく伝わらなかったなぁ、という感じが強かった。

総じて、回答やコメントを書いていただいた人は、

  • おめぇみたいな素人には、これで十分だ。

といったのが多くて、正直いうと、結構、ストレスが溜まりました。最後に goodvn さんに気付いてもらえたのが救いでした。こっちとしては「いや、そこじゃなくて、疑問に思っているところはここだよ」という主張を何度もしたつもりだったのですが、それが伝わっていない。終いには「人の意見を素直に聞きなさい」といったお説教まで受けましたが、例えて言えば、

  • アクセルを踏むとエンジンの回転数が上がるのは、どういう仕組みなのか。4サイクルエンジンの基本的な動きは分かるんだけど...。

という疑問に対して、

  • アクセル踏めば回転数が上がるのは当たり前だろう。

と言われている感じ。それに対して

  • いや、そうじゃなくて、エンジンに供給される燃料の量が変わると思うんだけど、その原理が分からなくて...。

といったら

  • なんで、アクセル踏むと回転数が上がることにそんなに疑問に思うの? いいかい? アクセルを踏めばエンジンの回転数が上がって、クラッチを繋いだら車が動く。きっとあなたは、車のボンネットを開けたことは無いでしょう。

と言われる。...ちょっと違うか(^^;

「NAT と IP マスカレードの違いも分からないやつに」といったことも書かれましたが、これも、正直、心外でした。一応、

  • NAT は本来、1 対 1 のアドレス変換のことを言う。
  • NAPT は内側からパケットに対するソースポート番号を変換し、送信元の IP アドレスと関連付けるようにすることで、1 対 N のアドレス変換を可能にした技術の名称。
  • IP マスカレードは、元々は NAPT の Linux での実装名だったが、各種ネットワーク機器などが好んで、この言葉を採用したので、IP マスカレードの方が通りがよくなった。
  • NAPT では外側からは、固定の宛先ポート番号を持つ TCPUDP パケットを内側へ転送することが出来なかったため、その弱点を補うためにポートフォワーディング機能を用いる。
  • NAPT + ポーとフォワーディングを静的 IP マスカレードという場合がある。
  • 単に NAT と言った場合、狭義には 1 対 1 NAT のことを言うが、広義には NAPT を含む(例:キャリアグレードNAT)

ということぐらいは知っています。多分、回答に対するコメントで「で、それで違いがあるんですか?」という言葉尻を捕らえて、「こいつ、こんなことも知らないのか」になったように思えるんですが、「違いがあるんですか?」といったのは、その前の回答で、外から中への入ってい来るパケットで、送信元アドレスも変換されるような話があって、そんなことは無いと思うけど、と書いたら、NAT なのか静的 IP マスカレードなのか、と聞かれたことに対し、「それで、外→内のパケットの送信元アドレスが変換される、されないの違いがあるの?」と聞いたものです。このことに関しては回答を頂いた aki1960 さんが、コメントの中で、送信元アドレスが変換されるのは、そういう設定をした場合のことで、適切な回答ではなかったことを言っています。

そもそも、なぜ、元質問の回答に疑問を感じたかは、前に書いたダイアリーでその思考経路を詳しく書きましたが、解答を見たときの直感として、「条件が抜けている」と思ったんです。少なくとも私があの回答読んだときに、必要な作業は、

  1. 適切な設定をしたルータを2台用意する。

としか読めませんでした。その際、サーバ側はこうしなきゃいけない、という点は、明確には書かれていなかった。ポイントは元質問の回答の

どちらのルータにぶらさげるかで、そのサーバが使うISPが決まります。

にあります。

「サーバ側に IP アドレスが2つ要る」ということを示唆する文章はこの部分になります。この文章だけだと、極端なことを言えば、

  • ルータとサーバの間の LAN ケーブルを繋ぎかえれば、利用できる ISP が変わる。

という風にも読めます。さすがに質問の内容や前後関係から考えると、そういう話ではないらしい、ということは分かりますが、でも、ここから

  • 少なくともサーバ側に IP アドレスが2つ必要

というのは飛躍があると思う。この回答を書いた本人や、私の質問に反応してくれた方々は、おそらくは、このような構成(サーバから見てデフォルトルートになりうるルータが2台)というケースを経験されてきた方々なのかなぁ、と思いますが、基本的にネットワーク全体の構成として、「PC やサーバから見たルータは1つ」というケースが圧倒的に多くて、大抵、中央の L3 スイッチでルーティングは集中的に裁いて、冗長化したかったらスパニングツリーや VRRP で2重化する、という構成にして、「末端から見てルータ2台」というのを最初から避けてしまう。

世の中には、1つの NIC に複数の IP を持てることすら知らない人がいるので、そういう人が見たら、私と同じように、「サーバがに変更なしで、ルータだけで調整できるのかぁ」と思うかもしれません。

今回、つくづく、表現の難しさを感じました。上記の元質問の回答に対する解釈もそうですが、冒頭にも書いた、自分が想定している構成や、どこに疑問があるのかを説明が、こんなにも伝わらないものか、と思いました。ま、私が肝心なことを簡潔に書けてないのが最大の原因なのですが、goodvn さんはわざわざ私のダイアリーを見て、私の想定している構成を見ているにも関わらず、サーバの IP アドレスがひとつであることを仮定していることに気が付いてなかったり(^^;


で、結局、

  • サーバの IP アドレスを1つの場合にどうなるのか?

ということに関しては、個人的には今もって微妙な気がします。

goodvn さん以外は IP アドレスの数に関して、どういう想定で考えていたのか分かりませんが、もし、みんな「サーバの IP アドレスは2つ」と考えていたとしたら、結局、goodvn さん以外は誰も疑問に答えていないことになります。逆に、IP アドレスは1つと考えて返事を下さったのなら、goodvn さんの意見と他の人の意見が違うことになります。

一応、自分ではルーティング・キャッシュの動作によって、IP アドレスがひとつでも、先に経路に使われたルータを戻る「可能性はある」と思っていますが、ルーティング・キャッシュにキャッシュされる条件までは理解していないので、例えば、ルーティングテーブル上に乗っていないルータからパケットが届いた場合にもキャッシュされるのか(もし、これでキャッシュされて、その結果によりパケットを送信するときにその経路を選択するとなると、勝手にルータを繋いでパケットを送ってしまえば、そのルータにパケットが届くようになってしまう)、といったことも考えられるので、

  • 可能性としては IP アドレス1つでも問題ないことはありえるが、そのための条件がありそう。

というのが、現時点での個人的な見解です。