ひいらぎの日記

デザインはまた時間のあるときにやります!

自宅でルーターを作りたい!その1 〜Routing table〜

自宅でルータを作ってみてください

情報系の科目が全然ない中、電気に行こうか情報にいこうか相談しに訪ねた先生がこれを提示してくれました。サーバーについては最近学びたかったのでいい機会になると思いました。 まず、「ルーティングテーブル」について調べてみてとのことで、調べてみました。自分なりにまとめたやつをここに書いときます(備忘録ってやつですか?w)。 それでググっても意味の分からない語がいっぱいでこれは1個1個理解しないと進めないと確信したのでまずは知識をつけます。

最初に訪れたサイトにはこう書かれていました。 ルーティングテーブル とは|専門用語集

ルーティングテーブルとは、ルータやPC端末が保持するネットワークの経路情報のことです。ルーティングテーブルには宛先ネットワークアドレスと、その転送先が登録されています。 ネットワークに接続する端末が、ある端末に向けデータを送信しようとするとき、その端末は送信先端末のIPアドレスと自らが保持するルーティングテーブルを参照し、そのデータを送信する宛先を決定します。送信先端末IPアドレスが自らの所属するアドレスと同じネットワークに所属する場合は、直接その端末宛にデータを送信しますが、ルーティングテーブルに登録のないネットワークに所属しているときは、そのデータをデフォルトゲートウェイあてに送信します。現在のネットワークの場合、そのデフォルトゲートウェイにはルータが使用されていますが、そのデータを受信したルータは、データに書かれた宛先ネットワークアドレスと自分の保持しているルーティングテーブルを参照し、転送先を決定し実行します。この時、送信先ネットワークアドレスが、自分のルーティングテーブルにないものだった場合、ルーターはやはりデフォルトとして設定しているルータ宛にそのデータを転送します。こうしてバケツリレー式に転送され、宛先のアドレスを登録しているルーティングテーブルを持ったルータに到達したデータは、ようやく目的の端末に届けられることが出来ると言う訳です。 それでは、その宛先IPアドレスが、この世に実在しないアドレスだった場合、そのデータは永遠に転送され続けるのかというと、そうではありません。現在のIPv4のネットワーク世界では、ルータによる転送は最大255回までと制限されています。それを超える場合はそのデータは破棄されてしまいます。

全然理解できない… ということでもう少し詳しく調べてみました。

3 Minutes Networking No.30

するとこんなサイトに出会いました。

いろいろ頭の中を整理〜。

ルータ

ネットワークとネットワークの最適ルートを選択して繋いでくれる、この最短ルートを見つけることをルーティングという。

ルーティングテーブル

ルーティングするときに見る地図のようなもの、これをもとに宛先のルートを選択する。 netstat -rn をterminalで実行するとRouting tablesなるものが表示された。 f:id:ymho_99:20170427173924p:plain なるほど、これが地図なるものか。 この見方がわからないので、一旦そっちを調べてみよう。これを参考にまとめてみた。

Linuxコマンド集 - 【 route 】 ルーティング・テーブルを表示・設定する:ITpro

Destination

対象となるネットワークまたはホスト。「default」はデフォルト・ゲートウエイを表す。この、デフォルト・ゲートウェイというのは、地図に書いていない場所(異なるネットワーク)に行こうとしたときに選択させるってことだと、思う。

Gateway

ゲートウエイのIPアドレス。「*」は設定されていない。 ん、ゲートウェイってなんだ…ここでさっきのサイトに戻る。 ああ、パケットをどこに送るかの宛先のことだった。でも、同じネットワーク内でのやり取りにはどんなものがあるのだろう??

Flags

ルーティングのフラグ。「U」はルーティングが有効,「H」は対象がホスト,「G」はゲートウエイ,「R」は回復される動的なルーティング,「D」はデーモンまたは置き換えによって書き換えられるルーティング,「M」はルーティング・デーモンまたは置き換えによって書き換えられるルーティング,「A」はaddrconfで設定されたルーティング,「C」はキャッシュのエントリ,「!」は拒否を表す

ほほう、こう区別することで何かいいことがあるのだろうなきっと。とりあえず、今はいいかな…

Refs

ルートの参照数を表しているそう。defaultのrefsは、今PC上で異なるネットワークへの道がどれだけ開かれているのかを表しているのかな?試しにメールアプリを終了して、もう一度コマンドを再入力してみた。すると51だったのが33になった。うん、なるほど、とりあえずこういう解釈でいいのかな。と思ったけど、もう一回メールアプリを起動すると12になってた。あれ、おかしいなあ〜。 10秒くらい時間をおいてもう一回。今度は18になってる。あそうか、常に通信しているわけじゃないのか、こちらがリクエストを送ったとき(あるいはアプリが自ら)だけ道が開かれるなら、時間によって変動する理由もわかる。意図的に違うアプリを起動してみるとやっぱり増えた。いまいち判然としないけど、いまはそういう解釈でいよう。

Use

ルーティングの参照回数だそう。うーむ、わかんないな。もうちょっと調べる。

ネットワークコマンド使い方:route 〜ルーティングテーブルの表示/設定を行う - @IT

こんなサイトがあった。ここには、経路が使用された回数とある、そらそうか。ルーティングとは最短経路を見つけることだから、その参照回数といえば、それが使用された回数となるわけか。

Netif

むむむ、これもよくわからない。かなり時間をかけてやっと見つかった。

http://www.ie.u-ryukyu.ac.jp/~e075730/rep/info1-rep1.pdf

ネットワークインターフェイス名だそう。またわからない用語が出てきたので調べる。

ネットワークインターフェイス - 意味・説明・解説 : ASCII.jpデジタル用語辞典 2つのプロトコル間でのデータやパラメーターの受け渡し、結果の受け取りのための規約がインターフェイスである。(抜粋) なるほど…プロコトル間でのデータのやりとりについて決められているのね。 プロコトル、は理解しているつもりなので想像がつきやすくてよかった。

Expire

この経路情報の有効期限、だそう、もうこれは単語からなんとなく想像できそうな。タイムアウト時刻の判定に使われているんだ!

とりあえず、これでRouting tablesにかかれている内容が読めるようになったぞ。 じゃあ次に実際にリストに含まれている部分について見ていこう!

もう一回見ると、なんとなく、さっきより簡単に見える・・・! 一つ一つみてもいいけど、なんとなく気になったのが「link#4」これはなんだろう?

21.2. ゲートウェイと経路

ここを読んでみたけどよくわからない… こんなページを発見!もろlink#4のことについて聞いてるみたいね! macos - What's the meaning of link#4 in mac's route table? - Super User

唯一のネットワークホスト上で動作するアドレスが物理的に接続されています。 翻訳を駆使して()読んでみると、物理的に接続されたいたらlinkと表示されるみたい。その後に続く番号は、マシンの4つ目のイーサネットカードのことを指しているという解釈でいいのだろうか…

さてさて、次はUseの値が大きいものを見ていくことにしました。 0が並ぶ中で、127.0.0.1と192.168.0.1が5000や2000を超えていてよく使われているみたい。 これについては最初に見ていたサイトに戻って解説を読むことにします。

3 Minutes Networking No.30

と思ったけど、今日はここまでにしとこ。 この先踏み込むと、やめられなくなりそう…