【ネットワーク】Networking

## TryHackMeでサイバーセキュリティを学ぶ
### なぜTryHackMeなのか
* 無料である
基本的に無料です。証明書が必要な場合やより難易度が高い／より詳しい実習に挑戦したい時は有料会員になる必要があります。
* サイバーセキュリティの基礎が学べる
「サイバーセキュリティ」は幅広い分野の知識が必要で特にビギナーは体系的に学ぶことが大事です。
* 英語力がアップする
Room(ルーム)とよばれる実習では相当なボリュームの英語の文章を読む必要があります。ブラウザーなどで日本語に翻訳する機能を利用するのももちろん良いのですが、ここはあえて英語で挑戦することで英語力向上もできてしまいます。
* インセンティブがある
幅広い分野の知識と技術を身に着けるために大切なのは学び続けることです。
しかしそれが難しいのですよね。そこでおすすめしたいのがダッシュボードやプロフィールから確認できる様々な進捗（しんちょく）チェック機能です。
たとえば連続７日間何らかのTaskを行う(Roomで問題を解く)と7 Day Streakバッジがゲットできます。獲得したバッジによっては無料で有料実習が受けられる特典があったりします。
単純に順位が上がっただけでも嬉しいですよね。

## はじめかた
### アカウント作成
まずはアカウントを作成します。[TryHackMe](https://tryhackme.com/)サイトにアクセスして右上の「Join Now(今すぐ参加)」ボタンをクリックして登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277081/6147a4f5-a227-eb51-b7dc-0eb996ecd1ad.png)
[日本語に翻訳したもの]![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277081/a13c2dd3-0e87-c829-67c7-f56aac4e639a.png)

:::note info
これ以降は英語版で解説を進めます。
必要に応じて適宜日本語に翻訳してください。
:::

### ダッシュボード
登録が完了してログインするとダッシュボードが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277081/1c38787f-7cba-6fed-bcaa-0a26d636efb0.png)
ここでは自分の進捗状況が一覧できます。
また参加へのモチベーションの一助として連続参加記録(streak、右上の炎マーク)やランキング、レベルやスキルマトリクスなどを見ることができます。

### プロフィール
右上の丸い画像アイコンをクリックすると[プロフィール](https://tryhackme.com/profile)が確認できます。プロフィール画面の右上の[Public Profile](https://tryhackme.com/p/<アカウントID>)をクリックすると完了したRoomや獲得したバッジなどが確認できます。

### 実習を選択する
#### ハンズオン
[ハンズオン](https://tryhackme.com/hacktivities)には以下の記述があります。
>"Our content is guided with interactive exercises based on real world scenarios, from hacking machines to investigating attacks, we've got you covered."
（マシンのハッキングから攻撃の調査まで現実社会での筋書きに即したインタラクティブな実習でガイドしていきます。ご安心ください。）

実習の実体はRoom(ルーム、ワークショップやトレーニングセッションやCTFで構成される)と呼ばれるある知識を習得するためのTask(問題)の集まりです。
実習を始めるにあたり多くの実習の中から自分のニーズに最適なRoomを選ぶことが必要です。そのためにハンズオンでは以下の分類で選択することができるようになっています。
* Learn (体系的なラーニングパスによる一覧表示)
* Practice (CTFなどの演習による一覧表示、経験値や人気の問題をおすすめしてくれる)
* Search (文字列検索による一覧表示)

まず気になるRoomがあったらやってみましょう。一つでもRoomを完了するとダッシュボードに関連するRoomがでてきたりして思いがけない知識が学べたりして楽しめます。

#### おすすめリンク
* [ビギナーパスのためのパス](https://tryhackme.com/path/outline/beginner)
* [FAQ](https://help.tryhackme.com/)

## では問題を解いてみましょう
本日取り組むRoomは[「Networking」](https://tryhackme.com/room/bpnetworking) created by [DarkStar7471](https://tryhackme.com/p/DarkStar7471)です。

>Networking
>Learn the basics of networking and network addressing
>（ネットワーキングとネットワークアドレッシングの基本を学びます。）

「[ネットワーキング](https://e-words.jp/w/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF.html)」とは辞書によれば、

>ITの分野では、複数のコンピュータや情報機器をケーブルや無線で繋いでネットワークを形成することをネットワーキングということが多い。

と定義されます。また、「[ネットワークアドレッシング](https://www.weblio.jp/content/IP%E3%82%A2%E3%83%89%E3%83%AC%E3%83%83%E3%82%B7%E3%83%B3%E3%82%B0%E3%81%A8%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0)」とは、

>アドレッシングとは、各ホストにIPアドレスを割り当てる方法であり、IPホストアドレス群を分割・グループ化してサブネットワークを形成する方法である。

と定義されています。

このRoomには以下の４つのTaskがあります。それぞれに数問の問題があり問題に対する答えをテキストボックスに入力してCompletedボタンをクリックして回答します。

* [Task 1 Kinda like a street address, just cooler.]
* [Task 2 Binary to Decimal]
* [Task 3 Decimal to Binary]
* [Task 4 Address Class Identification]

ここでは「IPアドレスとクラス」と「２進数と１０進数」の知識を具体的な数値を使って学んでいきます。
前知識として以下の記事に目をとおしてもらうと答えやすいと思います。
* IPアドレスとクラスについてはこちらを参考にしてください。
[基礎から学ぶWindowsネットワーク 第8回アドレス・クラスとさまざまなIPアドレス](https://atmarkit.itmedia.co.jp/ait/articles/0301/17/news003.html)
[【図解/初心者向け】IPアドレスの仕組みと種類 ~クラス, グローバルとプライベート, 例示用など特殊用途~](https://milestone-of-se.nesuke.com/nw-basic/ip/ip-address/)
* IPアドレスの２進数についてよくわからないという方はこちらを参考にしてください。
[ネットワークの基礎を学習する CCNA対策講座（8）サブネットマスクの計算をマスターする](https://atmarkit.itmedia.co.jp/ait/articles/0805/15/news134.html)

### ２進数と１０進数の相互変換
まず先にTask2とTask3を解いてしまいましょう。
[Task 2 Binary to Decimal]は２進数を１０進数に変換する問題です。
[Task 3 Decimal to Binary]は逆に１０進数を２進数に変換する問題です。

「変換するのは初めて」という方は手動でできるように各位で動画で学んだり練習してもらうとして、今回はツールを利用します。
[Binary to Decimal converter](https://www.rapidtables.com/convert/number/binary-to-decimal.html)

変換の仕方を簡単に説明します。
たとえば２進数の1000 0000を１０進数に変換すると128になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277081/c41c5531-0a17-03e4-2544-3347c40f58fa.png)

逆に１０進数の128を２進数に変換すると1000 0000になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277081/ed7060dc-2057-2dde-c0ef-adeeb4a87938.png)

以上のようにツールを使うことでTask2とTask3は容易に回答できることでしょう。

### IPアドレスとクラス
IPアドレスは以下のように「.」によって４分割されて表記されます。
例：192.168.0.1

〇〇〇.〇〇〇.〇〇〇.〇〇〇というIPアドレスがあるとして「.」までが8bitですから、1bitを「\*」で表すと

```
〇〇〇=**** ****
```
であるすると、8bit=8桁の２進数なのでたとえばすべての桁が0の場合は0、すべての桁が1の場合は以下のように255になります。

```math
1111　1111
```
```math
2^7 2^6 2^5 2^4　2^3 2^2 2^1 2^0　=　128+64+32+16+8+4+2+1　=　合計：255
```

#### [Task 1 Kinda like a street address, just cooler.]
Task1にある表はIPアドレスのクラスをまとめたものです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277081/d992e879-3fc3-1817-7203-f86abb08470f.png)
[表１] 抜粋：[Networking](https://tryhackme.com/room/bpnetworking)

先ほど参考にあげたリンク先の表を参考にその意味を考えてみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277081/00682afb-97a6-c72b-6c73-b1ced17b2f06.png)
[表２] 抜粋：[基礎から学ぶWindowsネットワーク 第8回アドレス・クラスとさまざまなIPアドレス](https://atmarkit.itmedia.co.jp/ait/articles/0301/17/news003.html)

アドレスを上の方法で「\*」で表すと、

```
**** **** . **** **** . **** **** . **** ****
```

となります。
例えばクラスAの場合先頭1bitは0固定なので、

```
0*** ****. **** **** . **** **** . **** ****
```
と表せます。*には２進数なので0か1のいづれかの値が入ります。最小値と最大値は２進数と１０進数では以下のように表せます。
```
最小値： 0000 0000 . 0000 0000 . 0000 0000 . 0000 0000 = 0.0.0.0
最大値： 0111 1111 . 1111 1111 . 1111 1111 . 1111 1111 = 127.255.255.255
```

またクラスCの場合先頭3bitは110固定なので、

```
110* ****. **** **** . **** **** . **** ****
```
と表せます。最小値と最大値は２進数と１０進数では以下のように表せます。

```
最小値： 1100 0000 . 0000 0000 . 0000 0000 . 0000 0000 = 192.0.0.0
最大値： 1101 1111 . 1111 1111 . 1111 1111 . 1111 1111 = 223.255.255.255
```
以上が表２で表されていることです。
そしてこの先頭8bitまでの数値を表にしたのが表１になります。つまり最初の8bit(最初の「.」までの１０進数の数値)をみるとどのクラスになるかがわかるということになります。

以上のことがわかると[Task 4 Address Class Identification]は回答できるでしょう。

### 最後にTask1に答えましょう。

##### 「How many categories of IPv4 addresses are there?（IPv4アドレスにはいくつのカテゴリーがありますか？）」
表１がヒントです。

##### 「Which type is for research? *Looking for a letter rather than a number here（その中で実験用のクラスはどれですか？）」
こちらにヒントがあります。
[インターネット10分講座：IPv4アドレス](https://www.nic.ad.jp/ja/newsletter/No26/090.html)

##### 「How many private address ranges are there?（IPv4プライベートアドレス範囲はいくつありますか？）」
こちらにヒントがあります。
[Why 192.168.0.1 in Particular?](http://itdoc.hitachi.co.jp/manuals/3021/3021324220/NNMS0200.HTM)
> There are five classes of IP address range, going from A to E. Only Classes A, B and C have private IP address ranges that are reserved for internal network use, not facing the internet at large.

[11.7.1　プライベートIPアドレスの範囲 ](http://itdoc.hitachi.co.jp/manuals/3021/3021324220/NNMS0200.HTM)
>IPv4プライベートアドレス範囲（RFC1918）：
>10.0.0.0〜10.255.255.255（24ビットブロック）
>172.16.0.0〜172.31.255.255（20ビットブロック）
>192.168.0.0〜192.168.255.255（16ビットブロック）

##### 「Which private range is typically used by businesses?（どのクラスがビジネスで使われますか？）」
こちらにヒントがあります。
[基礎から学ぶWindowsネットワーク 第8回アドレス・クラスとさまざまなIPアドレス](https://helpdeskgeek.com/networking/what-is-192-168-0-1-and-why-is-it-the-default-ip-address-for-most-routers/)

クラスA：　「ネットワーク・アドレスとしては、「0～127」までの全部で128個が利用でき、それぞれのネットワーク内には最大でそれぞれ約1600万台（0.0.0～255.255.255）のホストを収容できる。」
クラスB：　「ネットワーク・アドレスとしては、「128.0～191.255」までの全部で1万6384個が利用でき、それぞれのネットワーク内には最大でそれぞれ約6万5000台（0.0～255.255）のホストを収容することができる。」
クラスC：　「ネットワーク・アドレスとしては、「192.0.0～223.255.255」までの全部で約200万個が利用でき、それぞれのネットワーク内には最大でそれぞれ約250台（0～255）のホストを収容することができる。」

##### 「There are two common default private ranges for home routers, what is the first one? （ホームルーター用に一般的に使われる２つのデフォルトプライベート範囲のうち一つ目はどれか？）」
こちらにヒントがあります。
[What Is the 192.168.0.0 IP Address?](https://www.lifewire.com/private-ip-address-range-818387)

##### 「How about the second common private home range?（２つ目に一般的な範囲はどれか？）」
ヒントは上と同じです。

##### 「How many addresses make up a typical class C range? Specifically a /24（典型的なクラスCではいくつのアドレスで構成されるか？）」
クラスCでは４分割されたアドレスのうち３番目まで（/24=8*3）がネットワークアドレスで最後の8bitがホストアドレスになる。0～255割り振れるので…

##### 「Of these addresses two are reserved, what is the first addresses typically reserved as?」
ちょっとこれは？な問題で私はテキストボックスにある*の数で必死に調べて当てました。ちょっと「うーん…」な問題です。

##### 「The very last address in a range is typically reserved as what address type?」
The very last address in a rangeとは255.255.255.255です。
こちらにヒントがあります。
[Special-use addresses](https://en.wikipedia.org/wiki/Internet_Protocol_version_4#Special-use_addresses)

##### 「A third predominant address type is typically reserved for the router, what is the name of this address type?（一般的にルーター用に予約された３番目のアドレスタイプ名は？）」
ヒントになるかも。
[ip default-gateway](https://beginners-network.com/cisco-catalyst-command/ip-default-gateway.html)

##### 「Which address is reserved for testing on individual computers?」
ヒントです。
>This is often referred to as the 'loopback address'

こちらにヒントがあります。
[Special-use addresses](https://en.wikipedia.org/wiki/Internet_Protocol_version_4#Special-use_addresses)

##### 「A particularly unique address is reserved for unroutable packets, what is that address? This can also refer to all IPv4 addresses on the local machine.」
ヒントです。
>This is typically seen within the context of servers, it's before the A range.

こちらにヒントがあります。
[Special-use addresses](https://en.wikipedia.org/wiki/Internet_Protocol_version_4#Special-use_addresses)

### 最後に
身もふたもないですが、最終手段は問題文をそのまま検索することです。
楽しく続けることが大事です。考えても調べてもわからなかったら答えを見ることも自分に許してあげてください。それが知識になればそれでいいではないですか。

この連載があなたのサイバーセキュリティ学習のお役に立てれば幸いです。