LinuC102試験対策　〜ネットワークの基礎編〜

# はじめに
LinuC102試験「ネットワークの基礎(主題1.07)」で出題されるネットワーク知識、コマンド、オプションについてざっくりまとめてみました。
模擬試験、本試験前に振り返る用として活用できれば幸いです

:::note info
infoに個人的な覚え方を記載しております。
:::

# ネットワークの基礎(主題1.07)

## 主な通信プロトコル
|変数|説明 |  
|---|---|
| IP| 機器へのアドレス付与によって機器やネットワークを識別したり、パケットの分割や統合を行い目的地までパケットを届ける、インターネット通信の中の核をなすプロトコル| 
| TCP|パケットの再送、到達確認などの制御を行う<font color="DodgerBlue">信頼性</font>の高いコネクション型のプロトコル |
|UDP | コネクションレス型のプロトコル。複雑な制御をしない分TCPと比べ<font color="DodgerBlue">データ転送速度</font>が速い| 
|ICMP |パケットが到達できなかった場合の<font color="DodgerBlue">エラーメッセージ</font>や<font color="DodgerBlue">制御</font>メッセージを通知するプロトコル。<font color="DodgerBlue">ping</font>やtracerouteコマンドでも用いられる| 
|ARP |IPアドレスから<font color="DodgerBlue">MACアドレス</font>を求めるプロトコル|


## IPアドレスの「クラス」
|クラス  |範囲  | サブネットマスク |用途|
|---|---|---|---|
| A | 0.0 ~ 127.255 | 255.0.0.0 |大規模|
| B | 128.0 ~ 191.255 | 255.255.0.0 |中規模|
| C | 192.0 ~ 223.255 | 255.255.255.0 |小規模|
| D | 224.0 ~ 239.255 |  |マルチキャスト|
| E | 240.0 ~ 255.255 | |実験用|


:::note info
+128、+64、+32、+16の順でクラスが上がっていくという風に覚える
:::

## プライベートアドレス
|クラス|範囲|
|---|---|
|A|10.0.0.0-10.255.255.255|
|B|172.16.0.0-172.31.255.255|
|C|192.168.0.0-192.168.255.255|

:::note info
プライベートIPアドレスの情報だけを暗記して、プライベートIP以外がグローバルIPアドレスと覚える方が効率的
語呂合わせで覚える→「イナニ、イロサイ、イクニイロハ」(語呂になっていない笑)
:::

## ポート番号の割り当て
|種類  |範囲  | 説明 |
|---|---|---|
|ウェルノウン,システム|0-1023|システムや<font color="DodgerBlue">root</font>権限を持つプロセスに割り当てられる|
|レジスター,ユーザー|<font color="DodgerBlue">1024</font>-49151	|よく使われるプログラムに割り当てられる|
|ダイナミック,エフェメラル,プライベート|	49152-<font color="DodgerBlue">65535</font>|自由に使用可能|
※ポート番号の最大値、最小値特に覚えておく
<font color="DodgerBlue"></font>
## 代表的なウェルノウンポート(システムやroot権限を持つプロセス)
|番号|プロトコル  | TCP/UDP |用途 |
|---|---|---|---|
|22|SSH|TCP|リモートホストの<font color="DodgerBlue">遠隔操作</font>（暗号化あり）|
|25|SMTP|TCP|電子<font color="DodgerBlue">メール</font>送信|
|53|DNS|TCP/<font color="DodgerBlue">UDP</font>|名前解決|
|80|HTTP|TCP|コンテンツの送受信（暗号化<font color="DodgerBlue">なし</font>）|
|123|NTP|UDP|<font color="DodgerBlue">時刻</font>の同期|
|443|HTTPS|TCP|コンテンツの送受信（暗号化<font color="DodgerBlue">あり</font>）|

:::note info
UDPを使用するプロトコル覚えておく（DNS）
:::

## ネットワーク関連の設定ファイル

|ファイル名|設定内容|書式|
|---|---|---|
| /etc/hostname | <font color="DodgerBlue">ホスト名を設定（Debian系）</font> | ホスト名のみを記述|
| /etc/sysconfig/network | <font color="DodgerBlue">ホスト名を設定(RedHat系)</font>、ネットワーク昨日の有効/無効、デフォルトゲートウェイなどの設定 | |
| /etc/hosts | IPアドレスとホスト名の対応づけ | 「<font color="DodgerBlue">IPアドレス</font> 　ホスト名　（別名のホスト名）」|
| /etc/nsswitch.conf | 名前解決やサービス名解決の際の<font color="DodgerBlue">問い合わせ順序</font>の指定|hosts:　優先順位順に表記　,　service:優先順位順に表記　 |
| /etc/resolv.conf | 名前解決に利用するDNSサーバの指定や、ドメインの設定 |nameserver DNSサーバのIPアドレス, 　　　　　search ドメイン名検索リスト domain 自ドメイン|
| /etc/services| サービス名とポート番号の対応付け||

:::note info
 「/etc/nsswitch.conf」の設定に従って検索を行うのはgetentコマンド
:::

## IPv4とIPv6の主な違い
|| IPv4 |IPv6 |
|---|---|---|
|表綺例|192.168.100.1|2004:a80:e01:a8::3|
|種別|10進数 |16進数 |
|アドレス帳|32bit | 128bit |
|区切り|8bit(３桁)ごとに.(ドット)| 16bit(4桁)ごとに:（コロン）|
|アドレス自動割り当て|DHCPなどの技術を併用して実現|自動割り当て機能を標準で実装|
|セキュリティ|別のプロトコルを平用して実現|暗号化通信を標準で実装|
|アドレスの省略表記|不可|<font color="DodgerBlue">可能</font>|
|ループバックアドレス|127.0.0.0/8の範囲|0:0:0:0:0:0:1または::1|

:::note info
※IPv6での省略方法は高確率で出題されるのでしっかり覚えておいた方がいいらしいです
参考：https://www.nic.ad.jp/ja/basics/terms/ipv6-text-representation.html
:::

## 基本的なネットワークコマンド
|コマンド| 説明 |
|---|---|
|①dig|<font color="DodgerBlue">DNSサーバへ問い合わせ</font>、登録情報の表示、ホスト名からIPアドレスへの変換||
|②ifconfig|<font color="DodgerBlue">インターフェイス</font>の設定や表示||
|③ifup/ifdown|インターフェイスをアップ/ダウンする|
|④netstat|<font color="DodgerBlue">ローカルネットワーク</font>の情報を表示|
|⑤ping|ICMPパケットを使って<font color="DodgerBlue">通信確認</font>を行う|
|⑥route|<font color="DodgerBlue">ルーティングテーブル</font>の設定や表示|
|⑦traceroute|リモートホストまでの<font color="DodgerBlue">経路情報</font>、を表示|
|⑧whois|ドメインの管理者や所有者情報などの<font color="DodgerBlue">登録者情報</font>を表示|
|⑨nslookup|<font color="DodgerBlue">DNSサーバー</font>に問い合わせてやりとりが正しく行われるか確認、ホスト名からIPアドレスへの変換|
|⑩host|<font color="DodgerBlue">NSサーバ</font>に問い合わせて名前解決を行う、ホスト名からIPアドレスへの変換|
|getent|/etc/<font color="DodgerBlue">nsswitch.conf</font>」（名前解決の優先順位）の設定に従って検索を行う、ホスト名からIPアドレスへの変換|


## ①digコマンド(dig [オプション] [@DNSサーバ] 名前 [検索タイプ])
NSサーバへ直接問い合わせて、指定した名前に関する<font color="DodgerBlue">DNSサーバからの応答</font>　を表示するコマンド
DNSに関するデバッギングツールとしても使用できる

|オプション| 説明 |
|---|---|
|a|IPアドレス（デフォルト）|
|any|全ての情報|
|mx|メールサーバの情報|
|ns|ネームサーバの情報|
|soa|ゾーン（ドメイン範囲）の情報|
|txt|テキスト情報|


## ②ifconfigコマンド
インターフェイスの設定や表示を行うコマンド

|オプション| 説明 |設定例|
|---|---|---|
|netmask|サブネットマスクを指定|ifconfig eth0 netmask 255.255.255.0|
|up|インターフェイスを有効化|ifconfig eth0 up|
|down|インターフェイスを無効化|ifconfig eth0 down|

:::note info
ifconfigコマンドを実行しても、何も影響がない場合もある
:::

## ④netstatコマンド
ネットワークのソケット（TCP/IPの世界を結ぶ入り口）の情報を表示するコマンド
・オプションを併用する事で、ホストの様々なネットワーク情報を表示できます。
・表示は出来ますが、設定は一切出来ない

:::note info
※DNSサーバに障害などがあると、名前解決が出来ずに、結果が表示がされない場合あり
:::

|オプション|optionの意味|
|---|---|
|-r|ルーティングテーブルを表示|
|-i|ネットワークインターフェイスの統計情報を表示|
|-n|サービス名の<font color="DodgerBlue">名前解決をせず</font>にアドレスやポート番号を<font color="DodgerBlue">そのまま</font>表示|

## ⑤pingコマンド(ping [オプション] 宛先、ping6 [オプション] 宛先)
宛先アドレスに到達可能かを確認するコマンド

テーブルを作成し、テキストを入力していきたいのですが、テキスト

|オプション|optionの意味|説明|
|---|---|---|
|-c|count(回数)|疎通確認用のパケットの送信回数|
|-i|interval(間隔)|疎通確認ようパケットの送信間隔|
|-n|numeric(数値で)|結果表示時の形式をホスト名ではなくアドレスで表示）|


### ⑥routeコマンド(route [オプション])

ルーティングテーブルの表示、追加、削除するコマンド

|処理|説明|
|---|---|
|ルーティングテーブルへの追加|route add [オプション]|
|ルーティングテーブルからの削除|route del [オプション]|

|オプション|説明|
|---|---|
|-host|対象のホストのアドレスとみなす|
|-net|対象のネットワークアドレスとみなす|
|netmask|サブネットマスクを指定|
|gw|ゲートウェイを指定|
|default gw|デフォルトゲートウェイを指定|
|-F|ルーティングテーブルの表示|
|-C|ルーティングキャッシュを表示|
|-n|名前解決せずルーティングテーブル表示|

:::note info
IPアドレスを指定しない場合は、「route del default」のみでデフォルトゲートウェイの削除は可能
表示に非常に時間がかかる場合は-nを使用する（名前解決でつまづいている可能性あるため）
:::

## ⑩hostコマンド（host [オプション] ホスト名またはIPアドレス [DNSサーバアドレス]）
|オプション| 説明 |
|---|---|
|-t|問い合わせる情報の指定（type）digと同じくサーバーなどの指定ができる|
|-v|詳細な出力|

:::note info
DNSサーバに問い合わせて名前解決を行うコマンドにおいてnslookup、dig、hostがあるが、
出力する情報が最も少ないのはhostコマンドである。
:::
## ssコマンド
ネットワークのソケット（TCP/IPの世界を結ぶ入り口）の情報を表示するコマンド、netstatの後継。

|オプション|optionの意味|
|---|---|
|-a|全てのソケットを表示|
|-n|サービス名の<font color="DodgerBlue">名前解決をせず</font>にアドレスやポート番号を<font color="DodgerBlue">そのまま</font>表示|
|-p|ソケット使用中のプロセスを表示|
|-t|TCPソケットを表示|
|-u|UDPソケットを表示|


## ipコマンド(ip オブジェクト コマンド [値]）
ipコマンドは、オブジェクト（機能）に対して、コマンド（処理）を指定する形式で実行する。
オブジェクトやコマンドは<font color="DodgerBlue">短縮して指定すること</font>も可能


・代表的なオブジェクト

|オブジェクト|説明|
|---|---|
|addr|IPv4、IPv６アドレス|
|link|ネットワークデバイス、インタフェースの状況|
|neighbour|IPv4の<font color="DodgerBlue">ARPキャッシュ</font>、IPv６のNDキャッシュ|
|route|ルーティングテーブル|

・代表的なコマンド

|コマンド|説明|
|---|---|
|add|値の追加|
|del|値の削除|
|show|現在の状態の表示|
|set|インタフェースを有効化・無効化など|

:::note info
インタフェースを有効化・無効化するには、linkオブジェクトにsetコマンドを発行
:::

## ネットワークの疎通確認に使う代表的なコマンド

|オプション|IPv4用|IPv6用|
|---|---|---|
|宛先アドレスに到達可能か|ping|ping6|
|宛先アドレスまでの経路を確認|traceroute|traceroute6|
|宛先アドレスまでの経路と経路上の最大転送単位|tracepath|tracepath6|