はじめに、
インターネットの仕組みをラズベリーパイ内で疑似的に作って理解してみよう後編です。
前編(前回の記事)は以下です。
前回は以下の構成まで構築しました。
ルータ間の設定
まだroute1とroute2の疎通が完了していないのでnamespace1からnamespace2までの疎通ができません。
ルータにルーティングエントリを追加しパケットの経路設定をします。
次のコマンドを実行します。
$ sudo ip netns exec router1 ip route add 201.0.10.0/24 via 199.0.10.2
$ sudo ip netns exec router2 ip route add 192.0.5.0/24 via 199.0.10.1
試しにrouter1のルーティングテーブルの設定を確認してみます。
$ sudo ip netns exec router1 ip route show
192.0.5.0/24 dev gateway1-veth0 proto kernel scope link src 192.0.5.254
199.0.10.0/24 dev gateway1-veth1 proto kernel scope link src 199.0.10.1
201.0.10.0/24 via 199.0.10.2 dev gateway1-veth1
3つめのルーティングエントリが今回追加したものになります。
宛先が201.0.10.0/24(①)でNextHopが199.0.10.2(②)ですね。「199.0.10.2 dev gateway1-veth1」という事は199.0.10.2とgateway1-veth1が直接つながっているという事(③)。(数字は以下の画像と対応)
読み方が分からない場合は前回の記事で確認してねー( ´∀` )
以下のようなことです。
数字は上記の文と対応。
router2の設定も同様です。
で最終的に以下のような構成ができてます。
確認
では確認してみます。namespace1からnamespace2へpingを打ってみます。通りました!
$ sudo ip netns exec namespace1 ping -c 3 201.0.10.1 -I 192.0.5.1
PING 201.0.10.1 (201.0.10.1) from 192.0.5.1 : 56(84) bytes of data.
64 bytes from 201.0.10.1: icmp_seq=1 ttl=62 time=0.249 ms
64 bytes from 201.0.10.1: icmp_seq=2 ttl=62 time=0.191 ms
64 bytes from 201.0.10.1: icmp_seq=3 ttl=62 time=0.178 ms
--- 201.0.10.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 115ms
rtt min/avg/max/mdev = 0.178/0.206/0.249/0.030 ms
まとめ
はい、という事で2つのルータを介して2つのNetwork Namespace間で疎通ができました。
実際のインターネットは送る点と届く点の間に2つだけでなく、もっと多くのルータを介しています。しかしルータの原理は今回見たものが連なっているだけなので、数が多いから複雑に感じますが、実際は単純な作業をしているだけなのです。
個人的には実際に手を動かし、図を書きながら進められたので非常に勉強になりました。
ということで今回はここまで、以上、読んでいただきありがとうございました!
参考文献「Linuxで動かしながら学ぶTCP/IPネットワーク入門」
Kindle for PC (Windows) [ダウンロード] 新品価格 |