0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenWRTとGNS3で簡単ネットワークシミュレータ②

Last updated at Posted at 2023-12-31

前回、GNS3環境が作成できたので、OpenWRT使ったネットワークシミュレータ活用編です。

OpenWRT編

OpenWRTはWiFi アクセスポイント用に作成されたLinuxベースのルータソフトです。 他のソフトと比べるととても小さいですが、Linuxらしくパッケージを追加して機能を拡張できます。 ①で使用したOpenWRTはOSPF使用するためにFRRoutingを追加していますが、ディスク容量は20Mバイト弱です。 Linuxベースルータで有名なVyOS は全部入りの構成とは言え、427MB あります。 起動直後のメモリー使用量もVyOS の250MBに対して、OpenWRT は50MB ととても少ないです。

OpenWRTは実際の機器を使用する場合にとても安上がりになります。 エレコム WRC-1167GST2 はファームウェアの入替が必要ですが、メルカリなどで中古機器を1500円で入手可能です。 USBが無いのが欠点ですが、1Gポートが5つありメモリ256MB、フラッシュディスク32MB です。
私がアマゾンで新品を購入したのは、GL.iNet MT2500 です。 WiFiが無く1Gポートも2個ですが、メモリ1GB、フラッシュディスク8GB でUSB3.0 が使えます。 USB3.0にSSDタイプのUSBメモリを接続してLinuxサーバとして使うのに遜色ない性能でした。 GL.iNet社の各製品はOpenWRTベースで簡易なWeb-UIも付いていますが、OpenWRTが全て入っていてファームウェアの入替無しでOpenWRTを使う事ができるので、技適の懸念なくWiFi利用もできそうです。

openwrt-23-05-2-frr.qcow2

OVAに含まれるopenwrt-23-05-2-frr.qcow2 は公式で配布されているイメージファイルをQCOW2フォーマットに変更して以下のパッケージ追加と設定変更をしています。

opkg update
opkg install wget-ssl
opkg install frr-zebra frr-watchfrr frr-staticd frr-vtysh frr-ospfd frr-ripd
opkg install luci-app-keepalived luci-app-tinyproxy

uci set network.lan.ipaddr='192.168.56.88'
uci commit
reboot

作成するネットワークの要件

拠点A B と本店C の3拠点のネットワークで、A B C はWAN側は同一セグメントですが、A-C 間とB-C 間のルーティングのみ配布して、A-B 間の通信は禁止する事にします。
回線部分は一本ですが、C拠点はルータ2台でLAN側VRRP(KeepAlived) とWAN側RIPv2 で冗長構成とします。

IPアドレス

LAN(Ethernet0) WAN(Ethernet1)
A (WR1) 192.168.1.2 192.168.10.1
B (WR2) 192.168.2.2 192.168.10.2
C1(WR3) 192.168.56.11 192.168.10.11
C2(WR4) 192.168.56.12 192.168.10.12
C-VIP 192.168.56.10
Linux1 192.168.1.1
Linux2 192.168.2.1
Linux3 192.168.56.20

GNS3でネットワーク作成

新規プロジェクトでネットワークを作成します。 File - Open project でNew project タブでName: に 「OpenWRT-RIP2」と付けました。
GNS3-project-name.png
空白のプロジェクトが表示されるので、左のBrowse all devices」アイコンでデバイスを開いて、OpenWRT を右にドラッグすると各デバイスを配置できます。
GNS3-all-devices.png
今回使う、OpenWRTを4つ、検証用のLinuxを3つと「Ethernet switch」を2つと 192_168_56 のデバイスを配置してしまいます。
デバイス名は、配置した順に1..2 と振られます。 左側 WR3 WR4 Switch2 Linux3 が本店C で、右上が拠点A、右下が拠点B になります。
GNS3-haichi.png
左上のネットワークアイコン「1」はホストのWindowsも接続しているネットワークです。 右クリックして「Configure」メニューのMiscタブでName: 192.168.56 に変更しておきます。
左下の「Add a link」アイコンをクリックすると×マークが出て、結線モードになります。 192.168.56をクリックすると「br0」が表示されるのでクリック、Switch2も同様にEthernet0~8が表示されるので、Ethernet0をクリックして結線します。 同様にWR3 のEthernet0 とSwtich2のEthernet1 を結線します。

OpenWRT Start

左下の「Add a link」アイコンをクリックして結線モードを解除して、WR3 を右クリックして「Start」します。 ここでConsoleは使いませんが、起動状況を確認するために、「Console」を選択して表示してください。
GNS3-WR3-start.png
10秒ほどで起動します。 Consoleで「Enter」キー押下でrootでログイン状態になると思います。 初期IPがLAN側 192.168.56.88 になっているので、Windowsからブラウザで http://192.168.56.88 にアクセスするとOpenWRT のWeb-UI がアクセスできます。 Web-UIからIPアドレスとFirewallの設定を変更します。
IPアドレスはそれぞれ先ほど決めたアドレスに変更します。 br-lan(Ethernet0)の「DHCP Server」タブで、「Ignore interface」をチェックしてDHCPをオフにする事を忘れないようにしてください。
GNS3-luci-interfaces.png
OpenWRTの初期設定で WAN側でNATするFirewall設定が入っているので、これを削除します。NetworkメニューのFirewall画面 General Settingsで、InputとForwardをacceptに変更します。 また、Zones設定を右側の「Delete」で削除します。 「Save & Apply」でOKです。
GNS3-luci-firewall.png
WR3 も同様に設定します。 WR1 WR2 はIPアドレスが192.168.56.xx でないので同様に設定できませんが、一旦Switch2にEthernet0を接続して設定変更後に配線を変更するのが簡単と思います。 LANのIPアドレス変更を最後に行うようにご注意ください。
LANのIPアドレス変更がWeb-UIからは出来ないようです。 その場合は、Consoleのコマンドで変更してください。

root@OpenWrt:/# uci set network.lan.ipaddr='192.168.1.2'
root@OpenWrt:/# uci commit
root@OpenWrt:/# reboot

Linux

テスト用のLinux端末で、Alpine Linux のDockerをベースに各種ツールが入っています。 /home/gns3/alpine-term にDockerfileがあります。 IPアドレスの設定を右クリック「Configure」メニューでNetwork configuration の「Edit」をクリックしてテキストファイルを編集してください。 例が有るのでauto eth0 からgateway まで5行のコメントを外して、address 192.168.56.20 gateway 192.168.56.10 として、「Save」してください。
それぞれIPアドレスを入力して、結線をすると隣接ノード間でPingが通るようになる事を確認できると思います。
GNS3-linux3-net.png

VRRP

本店Cのルータ冗長構成のためにKeepalivedを使って仮想IP 192.168.56.10 をVRRP 設定します。 OpenWRTでWeb-UIで設定できます。 ServiceメニューのKeepalived 「IP Address」タブでVIP 192.168.56.10 と「Interfaces]タブでeth1 を設定します。
GNS3-keepalive-ip.png
「Instance」タブで必須のVirtual Router IDやPriority など設定、「Tarcking」タブで「Interfaces]で設定したWANを指定
GNS3-keepalive-instance.png
GNS3-keepalive-tacking.png
WR4側も同様の設定ですが、StateをBackup でPriority 100 にする事でBackup状態にします。 Virtual Router IDは VIPのIDなので、WR3 WR4 とも10 です。
Overviewタブで、それぞれ現在の状態が確認できます。 Ethernet1をSuspendにするなどしてダウン状態にすると、172.16.56.10のMACアドレスがWR3とWR4の間で変更されるので確認できると思います。

RIPv2

FRRouting を起動時に有効にするために以下のコマンドを入力。また、vtyshでFRRoutingに入り、RIP設定を入力します。 ここではCisco風のコマンドになります。

# service frr enable
# service fee start

# vtysh
OpenWrt# config terminal
OpenWrt(config)# router rip
OpenWrt(config-router)# network eth1
OpenWrt(config-router)# redistribute connected
OpenWrt(config-router)# exit
OpenWrt(config)# exit
OpenWrt# write

通常のルート交換はOK
WR1 とWR2 でルート交換しないように、Neighborを設定する

WR1 WR2

router rip
 version 2
 neighbor 192.168.10.11
 neighbor 192.168.10.12
 redistribute connected
exit

WR3 WR4

router rip
 version 2
 neighbor 192.168.10.1
 neighbor 192.168.10.2
 redistribute connected
exit

RIPの場合は学習したルートを勝手に再配布しないようで、無事にWR1からB拠点へのルートが消えました。

OpenWrt1# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,

C>* 192.168.1.0/24 is directly connected, br-lan, 00:24:51
C>* 192.168.10.0/24 is directly connected, eth1, 00:24:51
R>* 192.168.56.0/24 [120/2] via 192.168.10.11, eth1, weight 1, 00:08:07
R>* 192.168.56.10/32 [120/2] via 192.168.10.11, eth1, weight 1, 00:08:07

WR3 WR4 はA B 両方へのルートを持っています。

OpenWrt3# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,

R>* 192.168.1.0/24 [120/2] via 192.168.10.1, eth1, weight 1, 00:07:51
R>* 192.168.2.0/24 [120/2] via 192.168.10.2, eth1, weight 1, 00:06:25
C>* 192.168.10.0/24 is directly connected, eth1, 00:49:23
C>* 192.168.56.0/24 is directly connected, br-lan, 00:49:23
C>* 192.168.56.10/32 is directly connected, br-lan, 00:49:23

RIP のルートについて再配布を制限するようにdistribute-listを設定する必要が有ると踏んでいたのですが、このケースでは再配布されないようです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?