【7日目】TCP/IPネットワーク入門(第3章ルータ増設編)
皆さん,こんにちは.bb_lotusです. さて,今回はTCP/IPネットワークに関しての7日目のアウトプットになります.
すぐアウトプットだけ見たい人はこちらから
(ネットワーク初学者のため,記載内容等間違いがありましたらどしどしコメント,指摘等していただければと思います.)
使用する教材はこちらです.
「Linuxで動かしながら学ぶTCP/IPネットワーク入門」
--------------↓ここからアウトプット--------------
今回は前回の復習もかねて,第3章の残りであるルータを増やしてネットワークを組んでいきたいと思います!
今回で第3章は最後です!(長かった..)
今回組むネットワーク構成は以下の通りです!
以下のネットワークでns1とns2が通信できるようにしていきます!
さて復習です.
ネットワークを組む手順は以下の通りでしたね!
その1. Network Namespaceの作成
その2. ネットワークインターフェースを作成し,つなげる.
その3. 2をNetwork Namespaceで使えるようにする.
その4. お互いが通信できるようにインターフェースにIPアドレスを付与する.
その5. ネットワークインターフェースを有効にする.
その6. pingで疎通確認.
その1. Network Namespaceの作成
$ sudo ip netns add ns1
$ sudo ip netns add router1
$ sudo ip netns add router2
$ sudo ip netns add ns2
その2. ネットワークインターフェースを作成し,つなげる.
$ sudo ip link add ns1-veth0 type veth peer name gw1-veth0
$ sudo ip link add gw1-veth1 type veth peer name gw2-veth0
$ sudo ip link add gw2-veth1 type veth peer name ns2-veth0
その3. 2をNetwork Namespaceで使えるようにする.
$ sudo ip link set ns1-veth0 netns ns1
$ sudo ip link set gw1-veth0 netns router1
$ sudo ip link set gw1-veth1 netns router1
$ sudo ip link set gw2-veth0 netns router2
$ sudo ip link set gw2-veth1 netns router2
$ sudo ip link set ns2-veth0 netns ns2
その4. お互いが通信できるようにインターフェースにIPアドレスを付与する.
$ sudo ip netns exec ns1 ip address add 192.0.2.1/24 dev ns1-veth0
$ sudo ip netns exec router1 ip address add 192.0.2.254/24 dev gw1-veth0
$ sudo ip netns exec router1 ip address add 203.0.113.1/24 dev gw1-veth1
$ sudo ip netns exec router2 ip address add 203.0.113.2/24 dev gw2-veth0
$ sudo ip netns exec router2 ip address add 198.51.100.254/24 dev gw2-veth1
$ sudo ip netns exec ns2 ip address add 198.51.100.1/24 dev ns2-veth0
その5. ネットワークインターフェースを有効にする.
$ sudo ip netns exec ns1 ip link set ns1-veth0 up
$ sudo ip netns exec router1 ip link set gw1-veth0 up
$ sudo ip netns exec router1 ip link set gw1-veth1 up
$ sudo ip netns exec router2 ip link set gw2-veth0 up
$ sudo ip netns exec router2 ip link set gw2-veth1 up
$ sudo ip netns exec ns2 ip link set ns2-veth0 up
その6. pingで疎通確認.にいく前に!
ルーティングの設定が必要でしたね.
・ns1,ns2それぞれのルーティングエントリ
$ sudo ip netns exec ns1 ip route add default via 192.0.2.254
$ sudo ip netns exec ns2 ip route add default via 198.51.100.254
・ルータを使えるようにする
$ sudo ip netns exec router1 sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
$ sudo ip netns exec router2 sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
さあ,ns1からns2へ疎通確認!!
$ sudo ip netns exec ns1 ping -c 3 198.51.100.1 -I 192.0.2.1
PING 198.51.100.1 (198.51.100.1) from 192.0.2.1 : 56(84) bytes of data.
From 192.0.2.254 icmp_seq=1 Destination Net Unreachable
From 192.0.2.254 icmp_seq=2 Destination Net Unreachable
From 192.0.2.254 icmp_seq=3 Destination Net Unreachable
--- 198.51.100.1 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2045ms
あらら,だめでした..
なぜでしょうか..
そうです!
今回はルータにもルーティングエントリが必要なんです!!
ということで設定していきましょう!
$ sudo ip netns exec router1 ip route add 198.51.100.0/24 via 203.0.113.2
$ sudo ip netns exec router2 ip route add 192.0.2.0/24 via 203.0.113.1
改めて,pingで疎通確認すると..
$ sudo ip netns exec ns1 ping -c 3 198.51.100.1 -I 192.0.2.1
PING 198.51.100.1 (198.51.100.1) from 192.0.2.1 : 56(84) bytes of data.
64 bytes from 198.51.100.1: icmp_seq=1 ttl=62 time=0.057 ms
64 bytes from 198.51.100.1: icmp_seq=2 ttl=62 time=0.076 ms
64 bytes from 198.51.100.1: icmp_seq=3 ttl=62 time=0.046 ms
--- 198.51.100.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2040ms
rtt min/avg/max/mdev = 0.046/0.059/0.076/0.012 ms
無事成功です!!やった!
と,とりあえず,ルータを介さない場合と介す場合の両方のネットワークを組んでいきました.
今もわからないことだらけですが,とりあえず自分で手を動かしながら実際に作っていけただけでもすごく嬉しいですし,とても楽しく学習できています!
毎日少しづつではありますが,継続的にやっていこうと思います!
まずは1週間!無事に続けられました!
2週目以降も頑張ります!
ではまた次回!!