t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

Ciscoルーター3台を経由して仮想マシン同士でPing (RIP v2)

今回は有名なルーティングプロトコル、RIPを使って端末同士を通信させてみようと思う。

使用するネットワークはこちら。
f:id:t-hom:20220313184857p:plain

ルーター設定

基本設定

ホスト名や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

f:id:t-hom:20220313193941p:plain

端末2

ping 10.1.100.2

f:id:t-hom:20220313194008p:plain

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本とかネットワークの基本に関する本も買ってはあるけど、先に机上学習から入るとどうしても飽きやすいので、まずは通信してみて、「できた!」→「もっと知りたい!」という流れで学習を進めようという作戦である。

ということで今回はここまで。

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。