インフラについて浅く整理

理論と実践を並行して身に着ける必要がある。
最初は特定の領域を深めるよりも、全体を理解することに努める。

# 理論
・インターネットの仕組み
・TCP/IPの仕組み
→時間が経ってもあまり変わらないので、一生使える知識。

# 実践
・ネットワーク機器の操作・設定
・サーバの操作・設定
→流行や製品によって変わるため、マニュアルやドキュメントを読んで理解する。

# 理論に紐づく考え方
・この機器にBという設定をしたい(理論)
↓
・そのためにAというコマンドを実行する(実践)
理論だけを理解すれば良い。実践は機器によって異なるので丸暗記をしなくて良い。調べれはわかるので。

例)
×　pingは疎通確認を行るコマンドだから暗記をする
〇 インターネットで疎通確認をするにはICMPというデータを送信する(理論:プロトコル)
   ICMPを送信するために使うコマンドがping(実践)

# インフラエンジニアのレベル
・初級
　- 言われた操作・設定ができる
　- 先輩が言っていることがわかる
　例
　　OSのアップデート
　　バックアップの取得
　　ソフトのインストール
　　セキュリティパッチの適用、
　　IPアドレスの変更
　　ログのレポート出力
　　ユーザの追加
　　パスワードの変更など
　

・中級
　- ネットワークの構成図から機器を設定して構成できる
　- OSのインストールから初期設定まで一通りできる


# ネットワークで押さえておくべきこと
・インターネットの全体構造と仕組み
・TCP/IPの基本
・ポート番号とファイアウォール
・DNS
・各種プロトコル(HTTP、SMPT、FTPなど)
・トラブルシューティングのツール
・負荷分散の仕組み(CDN、ロードバランサー)
### インターネットの全体構造と仕組み
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413385/9507fa44-59e1-71d1-b7a3-959d461d5518.png)

是会にはIXという接続点が存在し、そこからインターネットに繋がるという仕組みになっている。
東京には大手町にある
大きい企業であれば、プロバイダを経由せずに直接IXに繋がることもある。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413385/c983009b-5dec-70ca-7635-1f98ebcc617b.png)

### TCP/IPの基本
コンピュータには自分で値を設定してよいものと誰かに聞かないといけないものがある。

自分で値を決めて設定してよいもの
　社内のプライベートIPアドレスなど。
誰かに聞かないといけないもの
　上位プロバイダに接続するための設定情報。グローバルIPなど。


・IPアドレス
・サブネットマスク
　サーバなどのネットワーク機器へはIPアドレスとサブネットマスクを設定する必要がある。
　IPアドレスのみだと、どのネットワークに所属させるかの設定ができていないことになるため。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413385/01c282d4-1adb-2f62-7792-e59c55863f63.png)

・デフォルトゲートウェイ、ゲートウェイ
　ネットワークの出入り口には必ずルータが存在する。
　ゲートウェイ
　　→他のネットワークとの接続点となるルータに設定したIPアドレス。
　デフォルトゲートウェイ
　　→送信元と同じネットワークにあるゲートウェイの中から選択され、送信元自身には宛先までの経路がわからない場合にデータを送信し、経路選択と中継を依頼するゲートウェイ。
　インフラエンジニアがサーバやネットワーク機器に設定する値は「IPアドレス」「サブネットマスク(ネットワークアドレス)」「デフォルトゲートウェイ」の3点。

・グローバルIPアドレス(パブリックIPアドレス)、プライベートIPアドレス
　プライベートIPアドレスの範囲
　10.0.0.0~10.255.255.255
　172.16.0.0~172.31.255.255
　192.168.0.0~192.168.255.255

・宛先情報はMACアドレス、IPアドレス、ポート番号

・NAT
プライベートIPアドレスとグローバルIPアドレスを1対1で変換する技術。

・NAPT 
複数のプライベートIPアドレスと一つのグローバルIPアドレスを変換する技術。
ポート番号をプライベートIPアドレスとセットにしてグローバルIPアドレスに変換することで実現可能になった。

・IPマスカード


### ポート番号とファイアウォール
・TCP
　到着を確認しながら送信する。圧倒的に利用頻度が多い。
・UDP
　到着を確認せずに送信する。TCPよりも高速。
・その他(ICMPなど)

・ポート番号
　- 接続元(クライアント)のポート番号にはランダムなポート番号が割り当てられる(エフェメラルポート)
　- 接続先(サーバ)のポート番号には決まった番号が割り当てられる(ウェルノウンポート)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413385/ff5970af-ba96-1595-0a01-07a3ca0be8b5.png)

・パケットフィルタリング
　- ネットワークの通信網に設置して、パケットを通してよいかどうかを設定できる装置。　
　- IPアドレスとポート番号を指定して設定する。
　- 正しく設定したはずなのに通信ができない場合、パケットフィルタリングの設定が誤っていることが多い。
　- PCのウイルス対策ソフトにはパケットフィルタリング機能が内蔵されていることが多い。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413385/95b1be01-dd05-3b44-d750-9bd2b46e1d13.png)


### DNP
IPアドレスとドメイン名の紐づけを管理するシステム。


### 各種プロトコル(HTTP、SMPT、FTPなど)
それぞれの階層が自分自身の約束事を守りさえすれば、データは無事届く。
他の階層については考えなくて良い。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413385/7e0e453e-8a5d-3016-9088-ffbc3c0da47a.png)

トランスポート層：ポート番号
インターネット層：IPアドレス
ネットワークインターフェース層：MACアドレス

### トラブルシューティングのコマンド・ツール
・ping, traceroute
　- 疎通確認用のICMPプロトコルを利用したコマンド。 
　- 最近は、通信は受け入れるがICMPプロトコルを受け入れないサーバやネットワーク環境も存在する。
　　→ サーバをダウンさせることを目的に、ICMPプロトコルでサーバに大量の要求を送る輩がいるからとのこと。

・dig (nslookup)
　- DNSサーバーにドメイン名を元にIPアドレスを問い合わせる（正引き）コマンド。

・WireShark
　- ネットワークに流れているパケットを確認するツール。


### 負荷分散の仕組み(ロードバランサー、CDN)
落ちないシステムを実現するために負荷分散のことを理解しておく必要がある。

　- ロードバランサー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413385/63b6157e-c890-6b82-2489-65b1cab1d80e.png)

　- CDN (コンテンツデリバリーネットワーク)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413385/259f3e0a-c0a2-53d2-0cb0-918c2b727fe0.png)

メリット：処理の高速化と負荷分散

# サーバで押さえておくべきこと
・OSの基礎
・SSH
・シェルとよく使うコマンド
・エディタ
・パッケージのインストール
・代表的なミドルウェア
・定期実行(crontab, systemd)
・バックアップやディスク増設

### OSの基礎
・Linux系とWindows Server系が存在する。
　- Linux系がほとんど。
　- Windows ServerはWindowsアカウントの管理ができるので、Webサーバではなく、社内インフラのサーバとして使われる傾向がある。
・Linux
　- rootユーザ(管理者)と一般ユーザ
　- ファイル操作
　- 基本的なコマンド
　- ネットワークの設定方法
・Linuxディストリビューション
　- LinuxはLinusさんが作った。
　- 中心となる部分と不随する部分を合わせて(ディストリビューションにして)配布している。
　- RedHat系とUbuntuが二大勢力。設定ファイルの場所やコマンドなどが異なるので、違いを把握する必要あり。

### SSH
・遠隔でLinuxにログインして操作する仕組み
・専用ソフトはPutty、Tera Term、RLoginなど
・キーペア(公開鍵、非公開鍵)の作成方法や設定方法を理解しておくべき。

### シェルとよく使うコマンド
・ls, chmod, cp,rmなどのファイル操作コマンド
・grepやfindなどの検索系コマンド
・headやtailなどのログを確認するコマンド
・Tabキーでの補完やhistoryでの履歴参照の便利コマンド

### エディタ
・viエディタ
　- 挿入モード　[a]や[i]
　- 通常モードに戻る　[esc]キー
　- 削除の[d]
　- 書き込みの[:][w]
　- 書き込まずに終了の[:][q][!]
　- 書き込んで終了の[z][z]
・namoエディタ
　- 使いやすいエディタだが、どのサーバにも入っているわけではない。



### パッケージのインストール
・apt install
・yum install



### 代表的なミドルウェア
・Webサーバ
　- Apache
　- Nginx
・DBサーバ
　- MariaDB
　- MySQL
　- PostSQL


### 定期実行(crontab, systemd)
・目的
　- 深夜に集計してレポートを作成する
　- 一定時間ごとにデータが溜まっていないかをチェックする
・crontabやsysytemdを使う。

### バックアップやディスク増設
・定期的なバックアップ
・容量が足りなくなった時のディスク増設
・誤った操作を行うとデータを全て失うなどの大事故につながることになる。
・事前に予行演習をして手順書を作成し、当日は手順書通りに実施すること。
　→直前に作業を依頼されたら必ず断ること。準備できていないものをやることは必ず避ける。