今回は有名なルーティングプロトコル、RIPを使って端末同士を通信させてみようと思う。
使用するネットワークはこちら。
ルーター設定
基本設定
ホスト名やIPアドレスの設定は前回同様なので以下の記事参照
thom.hateblo.jp
ルーティング設定
前回のスタティックルートを設定している場合は一度消してから設定する。
RT-Aの設定
RT-A>enable RT-A#configure terminal RT-A(config)#no ip route 198.51.100.0 255.255.255.0 192.0.2.2 ←消すときは設定コマンドの先頭にnoを付けるだけ RT-A(config)#router rip ←rip設定モード RT-A(config-router)#version 2 ←rip version2を指定 RT-A(config-router)#no auto-summary ←サブネットをIPのクラス(A~C)の境界で自動集約しないようにする RT-A(config-router)#network 10.1.100.0 ←PC側ネットワークにRIPを適用 RT-A(config-router)#network 192.0.2.0 ←RT-B側ネットワークにRIPを適用 RT-A(config-router)#exit RT-A(config)#exit RT-A#
RT-Bの設定
RT-B>enable RT-B#configure terminal RT-B(config)#router rip ←rip設定モード RT-B(config-router)#version 2 ←rip version2を指定 RT-B(config-router)#no auto-summary ←サブネットをIPのクラス(A~C)の境界で自動集約しないようにする RT-B(config-router)#network 192.0.2.0 ←RT-A側ネットワークにRIPを適用 RT-B(config-router)#network 198.51.100.0 ←RT-C側ネットワークにRIPを適用 RT-B(config-router)#exit RT-B(config)#exit RT-B#
RT-Cの設定
RT-C>enable RT-C#configure terminal RT-C(config)#no ip route 192.0.2.0 255.255.255.0 198.51.100.1 ←消すときは設定コマンドの先頭にnoを付けるだけ RT-C(config)#router rip ←rip設定モード RT-C(config-router)#version 2 ←rip version2を指定 RT-C(config-router)#no auto-summary ←サブネットをIPのクラス(A~C)の境界で自動集約しないようにする RT-C(config-router)#network 198.51.100.0 ←RT-B側ネットワークにRIPを適用 RT-C(config-router)#network 10.1.200.0 ←PC側ネットワークにRIPを適用 RT-C(config-router)#exit RT-C(config)#exit RT-C#
端末設定
端末はVagrantで準備する。
Vagrantについては過去記事参照
thom.hateblo.jp
thom.hateblo.jp
端末1の準備
Vagrantファイルは次のとおり。
Vagrant.configure("2") do |config| config.vm.box = "hashicorp/bionic64" config.vm.network "public_network", bridge: "" config.vm.provision "shell", inline: <<-SHELL ifconfig eth1 10.1.100.2 netmask 255.255.255.0 up SHELL end
USB-LanアダプタをPCに挿してからvagrant upすると、どのアダプタにブリッジさせるか聞かれるのでUSB-LANを選択してしばらくまつと起動する。
Intel PCだと、PC内蔵のLANはIntel Ethernet~という名前なので、それじゃないやつがUSB-LAN。他のPCは分からない。
vagrant sshで端末に入った後、次のコマンドでデフォルトゲートウェイをUSB-LANに変更する。
sudo route delete default ←デフォルトゲートウェイの削除 sudo route add default gw 10.1.100.1 ←RT-AのIPアドレス
これは仮想マシンを作成するとまずホストとのNATが有線ネットワークとして指定されているため、デフォルトゲートウェイを変えてやらないとpingの宛先でホスト側を探しにいってしまうためである。
端末2の準備
端末1とはIPアドレスが違うだけ。
Vagrant.configure("2") do |config| config.vm.box = "hashicorp/bionic64" config.vm.network "public_network", bridge: "" config.vm.provision "shell", inline: <<-SHELL ifconfig eth1 10.1.200.2 netmask 255.255.255.0 up SHELL end
同じくUSB-LANを接続してvagrant up時に選択する。
このとき端末1で使用中のUSB-LANを間違えて選択しないように注意。
全く同じ製品でも、2つ目を繋いだときに見分けるための数字が自動付与されてるはず。
※PCが前回接続されたデバイスを記憶して名前を予約してしまうようで、挿すUSBポートを変えると番号が増えたりする。
vagrant sshでログインしたらこちらもデフォルトゲートウェイ変更
sudo route delete default ←デフォルトゲートウェイの削除 sudo route add default gw 10.1.200.1 ←RT-CのIPアドレス
疎通確認
あとは端末からお互いにpingが通るか確認するだけ。
どちらもうまくいった。
端末1
ping 10.1.200.2
端末2
ping 10.1.100.2
RIPについて
Routing Information Protocolの略で、バージョンはRIPv1、RIPv2、RIPng(ネクストジェネレーションの略でIPv6用)の3つがある。
設定のところでnetworkというコマンドを入力したかと思うが、そのネットワークに対して自分が知ってるルート情報を配るというもの。そうすると隣同士で交換を繰り返すうちにルートの全体像が見えてくるというもの。
もっとルーターを増やして別の経路も作った場合、1つルーターが死んでも別経路を辿るように自動復活する。
経路交換は30秒ごとということなので、少しタイムラグはあるかもしれない。
RIPv1はクラスフルIPアドレスでしか使えないので、IPアドレスの先頭3桁でネットワーク部が確定してしまう。
よって、10.1.100.0/24のようなネットワークは指定できず、勝手に10.0.0.0/8と解釈されてしまうので今回はRIPv2を使った。
RIPv2でもサブネットの自動集約が走ってしまうようで、それを止める為にno auto-summaryを指定している。
正直あんまり分かってないけど次のサイトにそんなようなことが書いてあったので、適用したらうまくいった。
atnetwork.info
参考書籍
私が学習中の参考書籍はこちら。表記が古いのか、うまくいかないコマンド等があるのでネット検索と併用しなから設定している。
CCNA本とかネットワークの基本に関する本も買ってはあるけど、先に机上学習から入るとどうしても飽きやすいので、まずは通信してみて、「できた!」→「もっと知りたい!」という流れで学習を進めようという作戦である。
ということで今回はここまで。