t-hom’s diary

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

Cisco スイッチのDHCP Relay機能を使ってVLANで分割したネットワークにそれぞれのIPアドレスを割り当てる検証

今回は自宅のメインスイッチであるCisco CBS250のDHCP Relay機能を使ってVLANで分割したネットワークにそれぞれDHCPでアドレスを割り当ててみた。

これまた知識不足により4時間くらいハマったのでうまくいった方法を忘れないようにメモしておこうと思う。

ハマった原因はルーティング。
簡単にいえば、NWの世界では相手に到達できても、戻ってこれるとは限らないのだ。
この特性を現実世界に例えるなら、実在する住所から郵便物が届いたので、こちらも送り返そうとしたら配達員に「そんな宛先知らない」って言われる感じ。

いやあんたが持ってきたんだよね??

現実世界ではあんまりあり得ないけど、ネットワークの仕組み上はちゃんと行きと帰りでそれぞれルーティングされてないとこうなる。

構成

この微妙な図はNW学習始めたばかりの素人なのでご容赦を。。
f:id:t-hom:20220327004553p:plain

前提知識

DHCPとはIPアドレスを自動で割り当てる機能のことで、ホームネットワークだと通常はブロードバンドルーターやNTT等のルーター機能付きONU(ホームゲートウェイ)がDHCPサーバーの機能を持っている。

基本的にDHCPは同じネットワーク内の端末へIPアドレスを配るが、異なるネットワークの端末へIPアドレスを直接払いだすことはできない。

ではどうするかというと、1つはネットワークごとにDHCPサーバーを用意するという方法がある。
もうひとつは、ルーターやL3スイッチ等にDHCP通信を中継してもらって異なるネットワークにIPアドレスをお届けするという方法がある。この中継機能をDHCPリレーという。

始めにやったこと

TEST_VLANの作成

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

ポート4をTEST_VLANへ参加

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

TEST_VLANに固定IPアドレス10.1.1.1を割当

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

DHCPリレーのプロパティでDHCPサーバーのIP情報を追加

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

DHCPリレーのインターフェース設定でTEST_VLANを指定

f:id:t-hom:20220327002738p:plain
※ポート4とVLAN1はハマっていろいろ試したときの名残りで恐らく蛇足。
 近々綺麗にするつもりだけど、とりあえず今日のところはこれで動いているということで。

ISC-DHCPの設定追加

# これは以前から書いてたやつ
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.150 192.168.1.200;
  option routers 192.168.1.1;
  option domain-name "local.thom.jp";
  option domain-name-servers 192.168.1.1, 192.168.1.1;
  option broadcast-address 192.168.1.255;
  ignore declines;
#このあとホストごとの固定IP指定が続くけどスペースの都合で省略
}

# 以下が今回追加
subnet 10.1.1.0 netmask 255.255.255.0 {
  range 10.1.1.100 10.1.1.200;
  option routers 10.1.1.1;
  option domain-name "local.thom.jp";
  option domain-name-servers 192.168.1.1, 192.168.1.1;
  option broadcast-address 10.1.1.255;
  ignore declines;
}

書いたらISC-DHCPサーバー再起動

ハマったことと解消方法

DHCPサーバーはIPを払い出そうとしてるのにクライアントに届かない

1) VLAN検証端末はDHCPサーバーを探そうとしてDHCP Discoverを送り続ける。
2) DHCPサーバーはDHCP Discoverを受け取り、IPアドレスを提案しようとしてDHCP Offerを送りつづける。
3) しかし一向にIPアドレスが割り当てられることはない。

原因

パケットの帰り道のルーティングがないのが原因だった。
ネットワークエンジニアからすればそら繋がらんわという話だろうけど、まだまだ一般人な私は「来た道辿って帰れるでしょ」と無意識に考えてしまう。
そうじゃないんだ。

動作としては、
1) VLAN検証端末(IP未定)がDHCP Discoverをブロードキャストする
VLAN検証端末:「誰かDHCPくださーーーーい!」

2) Cisco CBS250スイッチ(10.1.1.1)が聞き取って、DHCPリレーによりDHCPサーバー(192.168.1.100)に届ける
Cisco CBS250スイッチ「DHCPサーバーさん、VLAN検証端末がIP欲しいそうなんでこれよろしく」

3) DHCPサーバーがIPアドレスをデフォルトゲートウェイ(192.168.1.1)経由でオファーしようとする
DHCPサーバー「ゲートウェイさん、スイッチ(10.1.1.1)にこのIP(10.1.1.101)のオファーもらえますか」

4) ゲートウェイ(192.168.1.1)側に10.1.1.0/24ネットワークのルーティングが無いのでコケる
ゲートウェイ「は?10.1.1.1て、どこの誰?」

解決した方法

本来はこのCBS250がL3ルーティング機能を持ってるのがややこしくて、やるならVLAN1のゲートウェイをCBS250に担当させれば良いのかもしれない。
今回取った方法はそうではなく、単にNTTホームゲートウェイ(192.168.1.1)に10.1.1.0/24に対するスタティックルート192.168.1.254を設定したこと。
f:id:t-hom:20220327011902p:plain

普段はネットへの中継機としてしか使わないPR-500KI。
一応ルーティング機能も持ってた。

4-Take2) ゲートウェイ(192.168.1.1)は10.1.1.0/24ネットワーク宛ての通信が来たのでCBS250のVLAN1(192.168.1.254)に渡す
ゲートウェイ「CBS250さん、10.1.1.1宛てにIPアドレスオファー届いてるんで渡しといて」

5) CBS250はTEST_VLANに受け取ったIPをブロードキャストする
CBS250「あ、これ私の裏口(TEST_VLAN)宛てだわ。VLAN検証端末さん宛のIPオファーきましたよーー」

6) VLAN検証端末はそのIPで避ければ正式にDHCP Requestする
VLAN検証端末「あ、これ欲しい。よろしくおねがいしまーーーす。」

あと動作的には2)~繰り返して正式確定させる感じ。

VLAN検証端末からネットに出られない。

IPはもらえたけどネットに繋がらない。
googleのDNS 8.8.8.8宛てにtracerouteしてみると、10.1.1.1でパケット破棄されてるっぽい。

原因

これまたルーティングの問題。
CBS250はDHCPブロードキャストが来たら192.168.1.100に通すというルールを知ってるけど、192.168.1.1をデフォルトゲートウェイに設定してあげないと、8.8.8.8とか言われてもどこに渡せば良いのか分からないのだ。
デフォルトゲートウェイってのは、知らない宛先が来たら転送する先のこと。

解決した方法

CBS250のIPv4スタティックルート設定で0.0.0.0/24宛ての通信を192.168.1.1へ転送するように設定。
f:id:t-hom:20220327013908p:plain

これも本当に合ってるのは不明。
Tracerouteがかなり時間かかるようになったのとスイッチのWebUIが遅い気がしていて、ひょっとしてネットワークループとか発生してたらどうしようと心配しているところではある。

ま、一応これでTEST_VLANからインターネットにも出られるようになった。

もうちょっと基本的な事をしっかりと勉強しないといけないなぁと思いつつも、基礎知識に興味もつ前に一応曲がりなりにも意図したとおりに動いたという体験が、もっと知りたいという学習へのモチベーションになるので、今回の検証はその意味で成功だったと思う。

このまま運用なんてことは怖くて到底できないけど。

以上。

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