class: title, smokescreen, shelf, no-footer # コンピュータネットワーク(2024-)<br><small>第04回 LANの基本構成</small> <div class=footnote> <small><small> Copyright (C) Ken'ichi Fukamachi <fukachan@fml.org>, 2021-2025. CC BY-NC-SA 4.0 </small></small> </div> --- class: compact,img-right # 用語集 <div class=footnote> <small><small> (脚注1) DMZ (DeMilitarized Zone) ... 直訳は「非武装地帯」=戦場の間にもうけられた緩衝地帯。今となっては変な用語 <br> (脚注2) ルータ1,2,3に利用する製品は異なります。学期後半の「設計編」で詳しく扱います </small></small> </div>  - DMZ (発音:でぃーえむぜっと) <small> - インターネット向けサービスをするサーバを置く場所。例: ポータル、EL(solomon) </small> - 学内LAN <small> - 学内にあるネットワークの総称 - 学内LAN = LAN1 + LAN2 + LAN3 ... </small> - LAN1,2,3,... <small> - 学内LAN内は、より小さなネットワーク(LAN)群の集まり - 役割ごとに異なるLANを作ることが普通 - LANごとに利用するIPアドレス帯も異なる </small> - ルータ <small> - 異なるLANをつなぐネットワーク機器 </small> --- class: compact,img-right # <small>学内ネットワークの基本構成を覚える(1)</small> <div class=footnote> <small><small> (脚注1) ルータ2より上は「論理的に外側」だという主張です。とうぜん物理的には学内に設置されています <br> (脚注2) ルータ2の(a)「フィルタ」が<b>AWSのセキュリティグループ</b>に相当します </small></small> </div>  <small> - ルータ2より上側(インターネットとルータ1)を<b>「学外」</b>と便宜上よびます。 - 機器ごとに役割があります - ルータ1: インターネットへの接続 - ルータ2: 学内・学外・DMZとの境界に置く - ルータ3: 学内LAN群をつなぐ - ルータ2の役割は重要で色々やっています - (a)必要なプロトコルのみ許可(フィルタ) - (b)通信記録を取る(ログ取り) </small> --- class: compact,img-right # <small>学内ネットワークの基本構成を覚える(2)</small> <div class=footnote> <small><small> (脚注1) どう組織を分割するとよい設計か?は業務のやり方に依存。 お客様の話をよく聞き、使い勝手を想像する力が大事 </small></small> </div>  <small> - LAN1,LAN2,LAN3 ... - 役割や組織ごとにLANを作成 - 例: - LAN1 ... 情報システム工学科 - LAN2 ... PC教室 - LAN3 ... 事務 </small> --- class: compact,img-right # <small>LANごとにIPアドレス帯を分ける</small> <div class=footnote> <small><small> (脚注1) IPアドレスは2種類ありますが、古いほうのバージョン4略してIPv4(発音:あいぴーう゛いふぉー)だけを勉強します <br> (脚注2) イメージとしては、 「LANは町内」「PCは家に相当するのでPCの住所は番地まで必要」です。 <br> 例: LAN1,LAN2,... = 千歳市本町1丁目,2丁目,... LAN1の3番目のPCには 10.20.1.3 のようなIPアドレスをつけるといった具合 </small></small> </div>  <small> - IPアドレスの復習 - コンピュータを区別するために識別子の数字を割り振っています。 これがIPアドレス - 数字4つをドット(.)でつないで表現 - 住所に相当すると考えてください - 住所に相当するので、とうぜん各PC、各LANのIPアドレスは異なります - LANのIPアドレス帯の例(読み方は次頁) - 210.128.53.200/29 ... ルータ1〜ルータ2の間 - 210.128.53.248/29 ... DMZ </small> --- class: compact,img-right # <small>IPアドレスの読み方: DMZの例: 210.128.53.248/29</small> <div class=footnote> <small><small> (脚注1) 図の住所のたとえはイメージを伝えるためです。 10進数のままでは少し不正確ですが ... <br> (脚注2) <b> 「大きさ」からIPアドレス数を計算する方法は直感と逆なので注意してください。 </b> <br> 計算方法: <B>32 - 29 = 3 ビット(2の3乗=10進数の8個)分のIPアドレスが利用できます</B> </small></small> </div>  <small> - LAN(ネットワーク)は<b>「先頭のIPアドレス/大きさ」</b>で表現します。 - <b>「大きさ」部分は可変長(/1〜/32)</b>で、 その<b>LANで利用できる(連続した)IPアドレス数</b> - 演習では、<b>わかりやすさ優先で演習環境のLANは全て/29固定</B>になっています。 どのLANでもIPアドレスは連続する6個が利用可能です - どのLANでも両端の2個は特別な目的に使うため、PCやサーバには使えません。 つまり演習環境で利用可能なIPは 8 - 2 = 6個 </small> --- class: compact # <small>IPアドレスの数え方: DMZの例: 210.128.53.248/29</small> <div class=footnote> <small><small> (脚注1) ネットワークの大きさは/29なのでIPアドレスが8個分です。 210.128.53丁目には256軒分の家が分譲可能ですが、 それを8軒ずつの区画(大きさが/29のLAN)として切り売りするイメージ <br> (脚注2) <B>IPアドレスの計算も、C言語の数え方のように0から数え始めるので、一つずれることに注意</B> (off by one) </small></small> </div> <small> - 32ビットの数字(この例では210.128.53.248)を「ドット(`.`)くぎりの10進数4つ」で表現しています - 各数字は8ビット(=256)分なので、 210.128.53.<b>Xの右端Xは 0 〜 255 です</b> - 演習環境のLANは全て大きさ/29固定です<b>(注:これは本科目特有の話です)</b> <b>-> IPアドレス早見表を参照</b> - IPアドレス8個ずつのLAN、つまり合計256/8=32個のLANに小分けしています - 一番数字の小さいLAN00が210.128.53.0/29 (8 x 0 = 0, 1個目のLAN, 早見表には無い) - 一番大きい数字のLAN31が210.128.53.248/29 (8 x 31 = 248、32個目のLAN, 早見表の一番下) - 210.128.53.248/29の詳細 - LANで使えるIPアドレスは、210.128.53.248 〜 210.128.53.255ですが、 - <b>両端 210.128.53.248 と 210.128.53.255 は住所には使えません</b> - <b>PCやサーバに使えるIPアドレスは210.128.53.249から210.128.53.254までの連続する6個</b>です </small> --- class: compact, col-2 # 【参考】 IPアドレス早見表 <small><small> | LAN | IP-addr/29 | IP(1) | IP(2) | IP(3) | IP(4) | IP(5) | IP(6) | IP(7) | IP(8) | |--------- |-------------------- |------- |------- |------- |------- |------- |------- |------- |------- | | LAN16 | 210.128.53.128/29 | 128 | | | | | | | 135 | | LAN17 | 210.128.53.136/29 | 136 | | | | | | | 143 | | LAN18 | 210.128.53.144/29 | 144 | | | | | | | 151 | | LAN19 | 210.128.53.152/29 | 152 | | | | | | | 159 | | LAN20 | 210.128.53.160/29 | 160 | | | | | | | 167 | | LAN21 | 210.128.53.168/29 | 168 | | | | | | | 175 | | LAN22 | 210.128.53.176/29 | 176 | | | | | | | 183 | | LAN23 | 210.128.53.184/29 | 184 | | | | | | | 191 | | LAN24 | 210.128.53.192/29 | 192 | | | | | | | 199 | | LAN25 | 210.128.53.200/29 | 200 | | | | | | | 207 | | LAN26 | 210.128.53.208/29 | 208 | | | | | | | 215 | | LAN27 | 210.128.53.216/29 | 216 | | | | | | | 223 | | LAN28 | 210.128.53.224/29 | 224 | | | | | | | 231 | | LAN29 | 210.128.53.232/29 | 232 | | | | | | | 239 | | LAN30 | 210.128.53.240/29 | 240 | | | | | | | 247 | | LAN31 | 210.128.53.248/29 | 248 | | | | | | | 255 | - 注:演習で用いる後半部分だけを載せています - 一番下が前頁までで例にしていた DMZ です - <b>IP(2)〜IP(7)列が住所として利用可能なIPアドレス</b> - 両端のIP(1)とIP(8)列はPCには割当不可 - 各LANのIPアドレスは8個ずつなので、 - 表の縦方向は8ずつずれていることに注意 - IP(1)列が、ちょうど「LAN番号x8」です。 - 例: LAN31のIP(1)は 31*8 = 248 </small></small> --- class: title, smokescreen, shelf, no-footer # 本日の演習 --- class: compact,col-3 # おしながき <div class=footnote> <small><small> (脚注) 調査対象は、右図です。今回は、調査全2回の前編 </small></small> </div> <small><small> 1. おしらせ - 来週はGWで休講、再来週が#05(05/12)、#06 (5/19)はグループワークです、H101に集合 - 6月の石狩データセンター見学やります、先方の都合を確認中。 後日、希望者には調整URLを配布。 たぶん土日のどこか? 1. EL 1. 解説 1. 演習 - IPアドレスに慣れましょう - AWS AcademyからSSHで調査対象(右図)のPCにログインし,ネットワークを調査 - コマンドによるネットワーク構成の推定 - 【例題】は一緒にやります - 【課題】をやってください 1. 提出物 - 課題の結果をワークシートに反映させ - ポータルのレポート機能で提出  <br> </small></small> --- class: compact,img-right # 課題 <div class=footnote> <small><small> (脚注) コマンドの解説は、コマンドリファレンス「厳選UNIXコマンド 第2版」を参照してください。 このリファレンスは、 <A HREF="https://distribution.techbooks.fml.org/">PDF</A> も印刷物も配布しています。 印刷版はH101のメディアコンサルタント席(プリンタがある隅のテーブルのところ)で配布しています </small></small> </div>  <small> - コマンドの実行結果を元に構成図の不明瞭な部分(a)(b)(c2)(c4)のIPを解読してください。 なお利用するコマンドはpingとipコマンドです - 演習の手順 - 【例題】ルータ2にログインし、調査 <br> <b>(ここは一緒にやります)</b> - 【課題】ルータ3にログインし、調査 - (a)(b)(c2)(c4)のIPを決めてください <br> (注:(a)(b)は数字の小さな順とします) - 課題の提出 - 解読した結果をワークシートに書きこみ、 ポータルのレポートボックスへ! - この<b>ワークシートは第4回〜第6回まで使うので確実に保存して</b>おいてください </small> --- class: title, smokescreen, shelf, no-footer # <small>例題をコマンドの解説とともに</small> <div class=footnote> <small><small> (脚注1) SSHに必要なパスワードはチャットに書きます (脚注2) <A HREF="https://www.youtube.com/playlist?list=PLS2cEmI21XYIWIbq6tMkk5dxX3bPKcFrQ"> 例題のデモ動画(再生リスト) </A> </small></small> </div> --- class: compact,img-right # <small>STEP-1: ルータ2にSSHログインする</small> <div class=footnote> <small><small> (脚注) コマンドの解説は、コマンドリファレンス「厳選UNIXコマンド 第2版」を参照してください。 このリファレンスは、 <A HREF="https://distribution.techbooks.fml.org/">PDF</A> も印刷物も配布しています。 印刷版はH101のメディアコンサルタント席(プリンタがある隅のテーブルのところ)で配布しています </small></small> </div>  <small> ``` [SSHコマンドの書式] ssh 学籍番号@IPアドレス [実行例] $ ssh b2902900@210.128.53.204 ``` <small> - sshコマンドについて - 210.128.53.204 は<b>ルータ2のIPアドレスの一つ</b>です - ユーザ名は各自の<b>学籍番号</b> - パスワードはチャットに書きこみます - ログインすると次のようなプロンプトが表示されます ``` 学籍番号@fw:~$ ``` </small> </small> --- class: compact # <small>STEP-2: ルータ2のIPアドレスを調べる(2a)</small> <div class=footnote> <small><small> (脚注) ipコマンドを使います。出力は重要な部分だけを抜き出しています </small></small> </div> <small><small> ``` 学籍番号@fw:~$ ip addr 〜省略〜 2: enp3s8: <BROADCAST,MULTICAST,UP,LOWER_UP> ... 〜省略〜 inet 210.128.53.204/29 brd 210.128.53.207 ... 〜省略〜 3: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> ... 〜省略〜 inet 210.128.53.209/29 brd 210.128.53.215 ... 〜省略〜 4: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> ... 〜省略〜 inet 210.128.53.249/29 brd 210.128.53.255 ... 〜省略〜 ``` </small></small> --- class: compact,img-right # <small>STEP-2: ルータ2のIPアドレスを調べる(2b)</small>  <small> ``` 210.128.53.204/29 brd 210.128.53.207 210.128.53.209/29 brd 210.128.53.215 210.128.53.249/29 brd 210.128.53.255 ``` - ルータ2のIPアドレスは .204 .209 .249 の3つ - 各行のbrdはブロードキャストアドレスなので、 IP早見表の最右端をみると該当するLANが分かる - .204 は LAN25 のIP(5)列 - .209 は LAN26 のIP(2)列 - .249 は LAN31 のIP(2)列 <small> --- class: compact,img-right # <small>STEP-2: ルータ2のIPアドレスを調べる(2c)</small>  <small> - ルータ2のIPアドレスは .204 .209 .249 の3つ - .204 は LAN25 のIP(5)列 - .209 は LAN26 のIP(2)列 - .249 は LAN31 のIP(2)列 - <b>図と辻褄が合うように(f1)(f2)(f3)のIPアドレスを決めていきます。 IP早見表と見比べてください</b> - (f1) ... 残りなのでLAN26 - (f2) ... 対向の(p)は「にせポータル」 <br> .254 は LAN31 の(有効なIPの)右端 - (f3) ... 対向の(g1)は.201なのでLAN25 - まとめ - (f1) 210.128.53.209/29 - (f2) 210.128.53.249/29 - (f3) 210.128.53.204/29 <small> --- class: compact,img-right # <small>STEP-3: ルータ2からログアウト(3)</small>  <div class=footnote> <small><small> (脚注) コマンドの解説は、コマンドリファレンス「厳選UNIXコマンド 第2版」を参照してください。 このリファレンスは、 <A HREF="https://distribution.techbooks.fml.org/">PDF</A> も印刷物も配布しています。 印刷版はH101のメディアコンサルタント席(プリンタがある隅のテーブルのところ)で配布しています </small></small> </div> <small> - `exit`コマンドか`logout`コマンド ``` [実行例] b2902900@fw:~$ exit logout Connection to 210.128.53.204 closed. ``` <small> - ログアウトするとAWS Academy (vocareum)のプロンプトに戻っているはずです </small> </small> --- class: compact # <small>【デモ】IPアドレスを表示する</small> <div class=footnote> <small><small> (脚注) ポータルにも、この <A HREF="https://www.youtube.com/playlist?list=PLS2cEmI21XYIWIbq6tMkk5dxX3bPKcFrQ"> 例題のデモ動画(再生リスト) </A> のURLは貼ってあります </small></small> </div> <iframe width="717" height="463" src="https://www.youtube.com/embed/hZz8mtTBG9k?list=PLS2cEmI21XYIWIbq6tMkk5dxX3bPKcFrQ" title="第04回 IPアドレスを表示する" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> --- class: compact # <small>例題:pingコマンドで実在するPCを探す(1)</small> <div class=footnote> <small><small> (脚注) /29なので6回ですが、/24では254回くりかえすことになります。 これはとても鬱な作業なので、こういうときにこそ <b>シェルスクリプト(プログラミング)</b>を使います。 ただ、別のプログラミング言語の勉強が始まってしまうので、授業では取り上げません。 <B> シェルは、日常つかいの100倍速で仕事をするためのツールです。 シェルを使いこなせることはUnixの真髄です。 そしてIaC(Infrastructure as Code)の必須要素でもあります。 IaC=スケールの基礎なので、 クラウドでもシェルの理解は必須の技術です。 この運用思想をtoolbox orientedとかpipe orientedと呼んでいます。 OOPにメソッドチェーンという書き方がありますが、あれ単にUnixの再発明をしているだけね。</B> ちなみに、 雑誌ソフトウエアデザインでキチガイじみたシェルプログラミングを競って喜ぶ記事が不定期に掲載されていますが、 シェルプログラミングは、ああいう宴会芸ではありません </small></small> </div> <small> - (このあとの課題で必要なので)これもやっておきましょう - pingによる生死確認の応用(第2回を参照)です - LANの全IPアドレスに対してpingを打ってみて、 反応を返したIPアドレス=生きているPCを探します - <b>例題:LAN31には「にせポータル」しかPCがないのか?</b>を確認してみましょう - 210.128.53.249 〜 210.128.53.254 の6アドレスが対象です - .249はルータ2、.254はポータルなのでpingに応答しますが残りの4個はどうでしょう? --- class: compact # <small>例題:pingコマンドで実在するPCを探す(2)</small> <div class=footnote> <small><small> (脚注) 100% packet lossは、相手が死んでいて、100未満であればターゲットは生きているということです </small></small> </div> <small><small> ``` [実行例] $ ping 210.128.53.253 PING 210.128.53.253 (210.128.53.253) 56(84) bytes of data. ^C <-- Ctrl-Cで止めた --- 210.128.53.253 ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 8ms <-- 100% lossつまり死んでいる $ ping 210.128.53.254 PING 210.128.53.254 (210.128.53.254) 56(84) bytes of data. 64 bytes from 210.128.53.254 (210.128.53.254): icmp_seq=1 ttl=255 time=0.200 ms 64 bytes from 210.128.53.254 (210.128.53.254): icmp_seq=2 ttl=255 time=0.595 ms ^C <-- Ctrl-Cで止めた --- 210.128.53.254 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 31ms <-- 0% lossつまり生きている rtt min/avg/max/mdev = 0.200/0.397/0.595/0.198 ms ``` </small></small> --- class: compact # <small>【デモ】pingコマンドで生きているPCを探す</small> <div class=footnote> <small><small> (脚注) ポータルにも、この <A HREF="https://www.youtube.com/playlist?list=PLS2cEmI21XYIWIbq6tMkk5dxX3bPKcFrQ"> 例題のデモ動画(再生リスト) </A> のURLは貼ってあります </small></small> </div> <iframe width="717" height="463" src="https://www.youtube.com/embed/Ky5fw92foTA?list=PLS2cEmI21XYIWIbq6tMkk5dxX3bPKcFrQ" title="第04回 pingコマンドで生きているPCを探す" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>