t-hom’s diary

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

ラズパイにISC-DHCPを入れて宅内DHCPサーバー構築の検証

今回は手持ちのラズパイにDHCPサーバーを導入して検証してみた。

これまでDHCPサーバーはルーターのおまけ機能程度の認識だったけど、ネットワークで遊びだすとNTTのホームゲートウェイについているDHCPv4機能では物足りなくなってくる。

NTTホームゲートウェイのDHCPv4機能ではできないこと

ドメイン名が自由に配布できない。

例えば宅内DNSサーバーを立てていたとして、ドメインにlocal.thom.jpを指定していたとする。ここでホスト名rpi3と通信をするには、rpi3.local.thom.jpという風にFQDN指定しないと繋がらない。

dhcp側でデフォルトのドメイン名をlocal.thom.jpとして配布できれば、rpi3とホスト名を指定するだけで通信できる。これが一番大きい。

単一のセグメント分しか払い出しできない

普通の方は宅内でネットワークを分割してルーティングしようなどとは考えないので1つで足りると思う。

普通じゃない方はそういうことをやりがちなので、ネットワークごとに別のDHCPサーバーを立てるか、DHCPリレー機能で単一のDHCPサーバーに払い出しリクエストをパスすることになる。このときにセグメントに応じたIPアドレスを払い出せないとネットワークがうまく機能しない。

例えば10.1.1.0/24のネットワークと192.168.1.0/24のネットワークがあった場合に、NTTホームゲートウェイだとどちらか片方の系統のIPアドレスしか払い出せないということ。

まぁ今回の検証では単一セグメントしか扱わないけど、ゆくゆくはネットワークセグメント分割もやってみたい。

DHCPサーバーの選定

検索するとdnsmasqを紹介する記事が多かったので最初はdnsmasqを導入しようかと考えていた。

ここで少し私の好みに合わなかった点はdnsmasqは名前の通りDNSサーバーであり、dhcpも兼務してますというだけなところ。
私の場合は宅内DNSを立てたくて切実に困っているというわけではなく、どちらかというと道楽目的なのでどうせやるなら多少難しくても潰しが効く標準的なツールで固めたい。よってDNSには世界的にスタンダードとされるBINDを使用するつもりである。

そうするとdnsmasqのdhcp機能だけ使うのかという話になるが、それもなんか微妙だ。

更に調べてるとISC-DHCPを紹介する記事も結構多いことに気づいた。後から知ったことだけど、ISCとはInternet System Consortiumという組織で、BIND作ってるのもこのISCとのこと。
ということは、DHCPの世界標準もひょっとしたらISC-DHCPなのかもしれないと思い、今回はISC-DHCPを導入することにした。
(さらに後から調べて知ったのがISCはKeaというモダンなDHCPをリリースしてるらしく、今後はそちらが主流になっていくと思われる。またKeaも後日やってみたいと思う。)

DHCP検証の注意点

折角Ciscoルーターあるのでクローズドネットワークでやろうかと思ったけど、休日なのでそのまま自宅ネットワークで対応することにした。
想定されるリスクは以下の2点。

  1. 宅内DHCPとの競合がIPアドレスの重複を引き起こしてクライアントからネットワーク接続できなくなる可能性がある
  2. 設定ミスしたDHCPサーバーからIPを払い出されたクライアントがネットワーク接続できなくなる可能性がある。

在宅勤務なので平日夜とかにネットワークトラブル起こすと大変。こういう作業は連休中に限る。
メインマシンと、メインマシンからホームゲートウェイまでを中継する機器(無線AP・スイッチ)はDHCP障害に備えてあらかじめ固定IP化しておくのがおススメ。
何かトラブったときにネット検索もできなくなると詰む。

インストール

以下のサイトを参考にインストールと設定をやってみた。
qiita.com

インストールコマンド

sudo apt install isc-dhcp-server

インストール中に色々とエラーが出るけど、これはいきなり起動しようとして設定ファイルがちゃんと記載されていないことによるエラーだと思うので無視。

↓インストール時に発生したエラー
f:id:t-hom:20220320173035p:plain

/etc/dhcp/dhcpd.conf ファイルの編集

コメント類を除くと次の設定となった。
※機器のMACアドレスは伏せている。

default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
authoritative;

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.20 192.168.1.30;
  option routers 192.168.1.1;
  option domain-name "local.thom.jp";
  option domain-name-servers 192.168.1.97, 192.168.1.97;
  option broadcast-address 192.168.1.255;
  ignore declines;
  host x200 {
    hardware ethernet 00:26:c6:XX:XX:XX;
    fixed-address 192.168.1.180;
  }
  host GooglePixel {
    hardware ethernet f8:1a:2b:XX:XX:XX;
    fixed-address 192.168.1.170;
  }
}

自動IP払い出しの範囲が192.168.1.20~192.168.1.30としているのは既存の宅内DHCPと被らせない為。
ホストx200とGooglePixelだけ固定IPを払い出すように設定してみた。検証なので特に意味はない。ISC-DHCPの注意点として、ここで設定する固定IPは自動IP払い出しの範囲でなければならないこと。他のDHCPソフトでは固定指定したIPは対象MACアドレスの機器のために予約されるが、ISC-DHCPは自動IP払い出し範囲に入っているIPは問答無用で他の機器に貸し出されてしまう。

option domain-nameはまさに今回やりたかったことで、これによってrpi3と入力するだけでrpi3.local.thom.jpと入力したのと同じことになる。これはクライアントに対してIPを割り当てる際にデフォルトのドメインはlocal.thom.jpですよと教えている為だ。

/etc/default/isc-dhcp-server ファイルの編集

コメント類を除くと次の設定となった。

INTERFACESv4="wlan0"
INTERFACESv6=""

ラズパイ3B+の場合、インターフェースは有線ならeth0、無線ならwlan0となる。
USBでLANや無線を挿してる場合はまた別の名前かと思うのでifconfigコマンドで調査する。

起動と検証

次のようにsystemctl startで起動し、systemctl enableで自動起動も有効にしておく。

sudo systemctl start isc-dhcp-server.service
sudo systemctl enable isc-dhcp-server.service

あとはNTTホームゲートウェイでDHCPv4機能を停止させてから端末のDHCPを返却するか再起動するかネットワークにつなぎ直す等すれば、ホームゲートウェイではなく自分で起動させたラズパイDHCPがIPアドレスを払い出してくれるようになる。

発生したトラブル

  • スマホがインターネットに接続できなかったが、CiscoスイッチとCisco APのIPアドレスを固定化したらうまくいった。
  • クライアントによっては端末ごと再起動しないとうまくいかないものもあった。
  • DNSサーバーIPアドレスをクライアントに配布する際、宅内DNSを指定すると全てのDNSトラフィックが宅内サーバーを通るので少しネット接続が遅くなったように感じた。これはNTT-HGWを指定しなおして、NGW側でlocal.thom.jpドメイン向けのDNSリクエストのみ宅内DNSに転送するように設定することで解消した。(記事内の設定は古いまま)

終わりに

いゃぁ、正直DHCP舐めてた。
地味だとか思ってすみませんでしたぁああああ。
という気持ち。

今後の展望としては、折角うまくいったけどやっぱISC-Keaという後継のDHCPサーバーでやり直そうと思う。

このISC-KeaをDockerで動かすという面白い記事を見つけたのでこれをやってみたい。

qiita.com

以上

空気モニターのArduino Pro Microがバグるので電源まわりが強いUnoに変更した

以前Arduino Pro Microで空気モニターを作成する記事を書いた。
thom.hateblo.jp


あれから1年以上運用が続いていて、もうこれが無いと落ち着かないというほど日常の一部になっているのだが、残念なことに最近バグの発生頻度が酷くなってきた。

具体的な症状

Arduinoからのシリアル通信が届かなくなってラズパイ上のPythonプログラムが落ち、再実行するとArduinoから報告される気温が-190℃・湿度が100%になってしまうこと。

色々再起動したり放電しても直らないので最初センサー故障を疑ったんだけど、Arduinoへプログラムを再書き込みすることで修復することができることが分かった。

これまでの対処

もともと運用中にも低確率で発生していたが、パソコンから書き込んで一旦Arduinoの電源を抜くと再接続した場合は高確率で発生する。この時点で疑いが強まったのが何かしらの突入電流である。特にケースファンのモーターが何かしら悪さをしているのではないかと考えた。

しかし知識不足のため解消方法が分からない。

仕方なくラズパイにArduino IDEを入れて派生したらラズパイから書き込むという対処を採用した。
こうすればモーターの動き始めによる影響を緩和できると思ったのだ。

発生頻度増加と対策

ここ最近、1日に数回上記バグが発生し始めたので根本対策としてArduino Pro MicroからArduino Unoに変更してみた。

こちらのブログによると、Arduino Unoは電源まわりが一番ちゃんと作りこまれているらしいので期待できる。
radiopench.blog96.fc2.com

そもそもPro Microの電源まわりは弱くて、USBから5V供給した場合にVCCやRAWと書かれたピンから実際に出てるのは4.6V程度。ここにセンサー類と小さいファンを繋いだところ、出力が4V程度まで低下していて、たまに4Vを下回るなんてことが起きていた。

実際に電源の違いを確認

まずは大本のUSBからちゃんと5V来てるのか確認。
f:id:t-hom:20220318231248p:plain

4.99Vなのでまぁ合格といって良い。

これをArduino Pro MicroにつないでRawピンを計ると、4.59ボルトしか来てないことが分かった。
f:id:t-hom:20220318231406p:plain

Rawって生という意味なので、生の5Vが直接給電されてると思ってたんだけど、違うのかな。。
中で本体給電と分圧されてしまってるのか何なのか、原因は不明だけど故障じゃなくてこの製品は全部これくらいしか電圧出ない。
※ちなみに純正Arduinoではない。

Unoの場合は5V端子を計ると、4.938ボルト。
f:id:t-hom:20220318231705p:plain
直接USBを計るよりは0.062ボルト程度低下してるけど誤差の範囲だ。

そしてセンサーをつないでみたのがこちら。
f:id:t-hom:20220318232450p:plain

5V端子の電圧を計ってみると4.7ボルトくらいまで低下していた。定期的に一瞬4.6ボルト台に落ち込むタイミングがあるけど、これだけ出てればセンサー類も大概問題なく動く。

一応データシートや参考サイトで繋いでいるセンサー類の動作電圧範囲を調べてみた。

センサー 型番 動作電圧範囲
Co2センサー MH-Z14A 4.5 V ~ 5.5V
気温・湿度・気圧センサー BME280 (5V対応モジュール) 4V ~ 5V
ダストセンサー PPD42NS 4.75~5.75

ダストセンサーが微妙に足りてないけどまぁダストは目安値だし、そんなに大きく狂わないだろう。

ケースへ組込

電源を抜き差ししてもArduinoそのものはバグらないことを確認。
その後まる1日稼働させても問題なかったので最後に組み込んで完成。
f:id:t-hom:20220318234021p:plain

Arduinoが大きいのとUSBタイプBが邪魔になるのでL字プラグを買って被膜を剥いで加工するのが微妙に面倒くさかったけど、大本の給電はケースに固定したUSB Microで変更はなく、外観的には以前と変わらないのが良かった。

あと余談だけどUSBのケーブル被膜を剥くときに、電源ライン(赤・黒)とデータライン(緑・白)では銅線の太さが違うことに気づいた。これはモノによると思うので同じ太さの場合もあるだろうけど、新発見だ。確かに電流量が違うので小電流しか流れないデータラインの方を細くして少しでもケーブルを柔らかくするのは合理的だなと思った。

ということで、小型Arduinoの電源電圧降下が原因と思われるトラブルに見舞われたら純正のArduino Unoを使ってみると良いかもしれないという話。

以上。

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

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

Ciscoルータを3台繋いでスタティックルーティングで通信

今回はCiscoルータ(892J-K9-V2)3台を繋いで通信してみた。

事前に用意したネットワーク図はこちら。
f:id:t-hom:20220313184857p:plain

RT-A・RT-B・RT-Cは実際には次のように緑のLANケーブルで繋がっている。
f:id:t-hom:20220312232005p:plain
※青いケーブルはPCからルーターを操作するためのコンソールケーブルなので関係ない。上の白いのはLAN CHANGERというLANの接続先を物理的に切り替える装置。各ルーターと繋がってるけど、実際の接続先ルータは1つでボタンで切り替える。コンソールケーブルの差し替えが面倒なので使ってる。

ネットワーク図中にGE0とかFE0と書いているのがポートで、GE0はGigabit Ethernet 0、FE8はFast Ethernet 8である。
この2つはルーテッドポート(いわゆるWANポート)という種類で、レイヤー3のネットワーク層で動作する。(つまりIPを割り当てたり、ルーティングに使えるポート)。

他にもこのルーターにはFE0~FE7があるが、これらはスイッチポート(いわゆるLANポート)なので、レイヤー2のデータリンク層で動作する。IPを割り当てたり直接ルーティングに用いることはできない。(VLANを割り当てれば、VLANに対するルーティングはできる。)

図中の192.0.2.xとか、198.51.100xといったアドレスはあまり見なれない体系かと思うけど、これはRFC5737で用意されたテストネットワーク用のIPアドレスで、プライベートIPと同様にIANAとかインターネットレジストリと調整しなくても、内部検証用とかで勝手に使って良いアドレスである。今回はまさに勉強のためのクローズドネットワークなので、宅内LANと混ざらないように使ってみた。
tex2e.github.io

一応、図中にはパソコンも配置したものの、ルーター同士でpingできたので今回はルーターのみでの検証である。

ルーターのホスト・IP設定

初めて起動すると初期設定をするか聞かれるが、これは初期設定ウィザードを使うかどうかという質問なので、Noと回答して個別に設定を始める。

ルーターA

Router>enable ←特権モードへ
Router#configure terminal ←設定モードへ
Router(config)#hostname RT-A ←ホスト名設定
RT-A(config)#interface gigabitEthernet 0 ←GE0インターフェースの設定モードへ
RT-A(config-if)#ip address 10.1.100.1 255.255.255.0 ←GE0にIPアドレス設定
RT-A(config-if)#no shutdown ←GE0 有効化
RT-A(config-if)#exit ←GE0の設定終わり
RT-A(config)#interface fastEthernet 8 ←FE8インターフェースの設定モードへ
RT-A(config-if)#ip address 192.0.2.1 255.255.255.0 ←FE8にIPアドレス設定
RT-A(config-if)#no shutdown ←FE8 有効化
RT-A(config-if)#exit ←FE8の設定終わり
RT-A(config)#exit ←設定モード終わり
RT-A#

ルーターB

Router>enable ←特権モードへ
Router#configure terminal ←設定モードへ
Router(config)#hostname RT-B ←ホスト名設定
RT-B(config)#interface gigabitEthernet 0 ←GE0インターフェースの設定モードへ
RT-B(config-if)#ip address 192.0.2.2 255.255.255.0 ←GE0にIPアドレス設定
RT-B(config-if)#no shutdown ←GE0 有効化
RT-B(config-if)#exit ←GE0の設定終わり
RT-B(config)#interface fastEthernet 8 ←FE8インターフェースの設定モードへ
RT-B(config-if)#ip address 198.51.100.1 255.255.255.0 ←FE8にIPアドレス設定
RT-B(config-if)#no shutdown ←FE8有効化
RT-B(config-if)#exit ←FE8の設定終わり
RT-B(config)#exit ←設定モード終わり
RT-B#

ルーターC

Router>enable ←特権モードへ
Router#configure terminal ←設定モードへ
Router(config)#hostname RT-C ←ホスト名設定
RT-C(config)#interface gigabitEthernet 0 ←GE0インターフェースの設定モードへ
RT-C(config-if)#ip address 198.51.100.2 255.255.255.0 ←GE0にIPアドレス設定
RT-C(config-if)#no shutdown ←GE0 有効化
RT-C(config-if)#exit ←GE0の設定終わり
RT-C(config)#interface fastEthernet 8 ←FE8インターフェースの設定モードへ
RT-C(config-if)#ip address 10.1.200.1 255.255.255.0 ←FE8にIPアドレス設定
RT-C(config-if)#no shutdown ←FE8有効化
RT-C(config-if)#exit ←FE8の設定終わり
RT-C(config)#exit ←設定モード終わり
RT-C#

ルーティング設定

上記の設定をすれば隣り合うルーターの同一ネットワークへは疎通できるのでpingが返ってくる。
例えばRT-Aからping 192.0.2.2と打てば返信がある。

しかし、RT-Aから198.51.100.1や198.51.100.2宛てには通信ができない。RT-Aはそれがどこにいるか知らないからだ。
ここではそれをルーターに教えてあげる作業をする。

ルーターA

まずはRT-Aから。

RT-A>enable ←特権モードへ
RT-A#configure terminal ←設定モードへ
RT-A(config)#ip route 198.51.100.0 255.255.255.0 192.0.2.2 ←198.51.100.xに行くなら次の経由地は192.0.2.2だと教える。
RT-A(config)#exit ←設定モード終わり
RT-A#

ルーターB

次にRT-Bから戻りのルートも確保する。戻りもちゃんと設定しないとpingが返ってこない。

RT-B>enable ←特権モードへ
RT-B#configure terminal ←設定モードへ
RT-B(config)#ip route 192.0.2.0 255.255.255.0 198.51.100.1 ←198.51.100.xに行くなら次の経由地は192.0.2.2だと教える。
RT-B(config)#exit ←設定モード終わり
RT-B#

疎通確認

RT-A(192.0.2.1)からRT-CのGE0インターフェースに設定した198.51.100.2へpingを打ってみた結果がこちら。
f:id:t-hom:20220313000837p:plain

ちょっとパソコンのpingと表示が違うけど、Success rate is 100 percent (5/5)ということなので5回中5回成功したと書いてある。

自宅でルーター複数台を通信させるというのは今回が初めてなので、自分が理解した理屈どおりに動作したことにちょっと感動した。
L2スイッチで同一ネットワークなら挿すだけで繋がるので、ルーティングって言われても今までピンと来てなかったんだけど、ようやくその概要をつかむことができた。

次は逐一自分でルートを設定しなくても済むように、ダイナミックルーティングをやってみたいと思う。

Ciscoスイッチに接続した機器のMACを調べる

最近自宅の無線LANをCisco WAP517に集約したが、極力電波干渉を減らすためにNTTのホームゲートウェイの無線機能はオフにすることにした。

それで、折角Ciscoスイッチも買ったのでキングジムのテプラを有線接続に変更しようと思ったのだが、そういえばIPアドレスが分からない。

NTTホームゲートウェイにアクセスしてDHCP機能でIPv4アドレスの払い出し状況を見てみたのだが。。
f:id:t-hom:20220312185024p:plain
どれ??

以前の私ならここでLANケーブルを抜いて、消えたやつが犯人だ!なんてことをやるんだけど、折角Ciscoスイッチを買ったのにそんなやり方では芸がないので、スイッチから調べる方法を検索してみた。

ちなみに接続関係はこんな感じ。
f:id:t-hom:20220312190104p:plain

NTT HGW側のDHCPサーバーでMACとIPアドレスの対応表は取れているので、MACが分かればIPが分かるということになる。
今回は対象機器のIPもMACも不明だが、Cisco CBS250の7番ポートにLANケーブルを挿したことは分かっている。

ということでCisco CBS250にSSHでログインして次のコマンドを叩く。

show mac address-table interface gi7

するとこの通り、7番ポートに接続されている機器のMACアドレスが取得できる。
f:id:t-hom:20220312190452p:plain

あとはHGWと照らし合わせれば、HGWがこいつにIP何番を割り振ったのか分かる。

今後のことも考えてNGW側でこのMACアドレスに割り当てるIPを固定しておこう。

以上

Ciscoルーター 891FJ-K9-V01と892J-K9-V02の外観を比較してみた

最近ネットワークの学習に興が乗ってCCNAの自宅ラボを作りたくなり、ルーターとスイッチのセットを購入した。
ルーターはCISCO892という安く出回っているもので、スイッチはC3560というL3スイッチ。
f:id:t-hom:20220311120642p:plain

勉強という名目ではあるけど、要するにオモチャである。

きっかけとなったのは、こちらの記事。
nozawana44.hatenablog.com

私もいつかはNTTからレンタルしているホームゲートウェイを小型ONUに置き換えて、家のネットワークをCiscoで統一したいという願望があり、ちょっと勉強を始めたのだ。

購入前は、Cisco 891で出来るんだから892でもできるだろうと安易に考えていた。数字が大きい方が後継だと。。
ただよく見ると892には小型ONUを挿すためのポート(SFP)が無い。
そしてルーターのコンフィグいじっていて気付いたのが、そもそもLAN側のポート8個はFastEthernetであることが分かった。

Fastだから早いんじゃないの?って調べたら、速度は最高100Mbpsらしい。
最近は1Gbps(1,000Mbps)が主流なので、一昔前という印象。
そりゃ891より安いわけだ。。

891の方はSFPポートがあって、LANポートもすべてギガビット対応。

明らかに891の方が格上だ。

ということで、使いこなせずに埃をかぶるリスクを承知で、1万3千円の新しいオモチャ(891FJ-K9-V01)を手に入れたのである。

まだ電源も入れてないので今回は外観上の違いがメインになるけど、とりいそぎ紹介していこうと思う。

左が891、右が892。
f:id:t-hom:20220311120139p:plain
f:id:t-hom:20220311122602p:plain

891は全体的にケースが黒くて引き締まった印象。天面に放熱用の穴があり、その分Ciscoロゴは小さい。

892はグレーで前面パネルが少し丸みを帯びており、前面にUSBポートが2つある。

次に背面。
こちらが891。
f:id:t-hom:20220311122803p:plain
LANポートにはGE LANと記載があり、ギガビットイーサネットであることが分かる。
SFPポートが備わっており、電源スイッチがある。電源は4ピンタイプ。USBポートは背面にある。

こちらが892。
f:id:t-hom:20220311122836p:plain
LANポートにはFE LANと記載があり、ファーストイーサネットであることが分かる。(今の時代、すでにファーストとは言えない。)
SFPポートは無い。また電源スイッチはないのでコンセントの抜き差しがスイッチ代わりになる。USBポートは前面なので背面にはない。

その他細かい違いが見て取れるが、正直まだ知識不足でよく分からない。

ひとつ言えるのは、外観的には明らかに891Fの方が好みだということ。
使いこなせるかは分からんけど、まぁできるところまでやってみよう。

最悪、鑑賞用ルーターということでも良いかなと思ってたりする。

以上

やりたいことが散らかってきたので、概念地図で整理してみた。

ここ最近記事を読んでくれてる方はお気づきかもしれないけど、内容が散発的で迷走中のように感じるかもしれない。

お前はいったいどこを目指してるんだ?

と。

正直短期間に色々やりすぎてどれも中途半端感が出てきているので、いちど本当にやりたかったことに立ち返って状況を整理してみよう。

そんな時に便利なのが概念地図。実際に作ってみた。
f:id:t-hom:20220306194741p:plain

こうして眺めてみると、今学習中の技術でそもそも何がしたかっのかに立ち返ることができ、どのレベルまで到達したいのか、どこで切り上げて次に行くべきかが見えてくる。

ということで、概念地図超便利という話。

ツールと考察

今回概念地図を書くのに使ったツールはFrieve Editor。
www.frieve.com
無償ソフトなので助かる。

え、これマインドマップじゃね?と思った方いると思う。
私もそう思ってたし過去記事ではマインドマップと紹介したこともあったかもしれないけど、どうやらマインドマップを提唱した本家の方は色々と細かいルールを提唱してて、たとえばブランチは曲線で書かないとマインドマップとは呼べないんだとか、なんか面倒くさいことになってるので、今回はもう少し汎用性の高そうな概念地図という用語をチョイスした。

データ構造としては基本的にはツリーなんだけど、たまにマージする。単純な縦方向ツリーだと一画面に表示しきれないのと序列が付いてしまうのと、マージしにくいので360度使ったらこうなった的な手法だ。

とても便利なので、皆さんもやりたいことが散らかってきたら使ってみると良いかと思う。

以上。

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