【初級】ネットワークトラッシュ

- 苦労して学んだ初級ネットワークエンジニアとして覚えて置きたい
   - 基本的なネットワーク知識
   - トラブルシューティングツール（Windows、Linux）
   - 考え方

## 基本的なネットワーク知識
- IPアドレス (IP address)
    - 配達員が物を届ける時に使う住所のようなもの、それを見て宛先までゆく。
    - 2種類あって区分できる必要がある。
- Private 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
- Global IPアドレス、パブリックIPアドレス(Public IPaddress）
    - 東京都一之江xxxの○○マンション2階Gwaklyさんのような公式的な住所
    - 外部に繋がるには必須
- ルートテーブル（Routetable）
    - 通信をどのような道（経路）で行うか書いている設定又は設定ファイル
        - 動的ルーティング（プログラム的にルーティングを実施）
        - 静的ルーティング（いちいち指定して手動で実施）
- ISP（Internet Service Provider）：ネット提供会社（SOFTBANK、ドコモなどなど）
- ONU（Optical Netowork Unit:光回線の終端装置）：<br>分かりやすく言うと機器と機器間、機器とパソコンの間中継器
- NAT (Network Address Translation)
  - ある範囲の内部IPアドレスを任意のGlobalIPアドレスに変換、ネットワークが使える技術。
- DNSサーバ：ドメイン名（www.google.com）をIPアドレス(172.217.175.14)に変えてくれるどこかのサーバ
- ゲートウェイ（Gateway）
    - 通信が外に出れるドア、お家だと玄関とも言える。
- デフォルトゲートウェイ（Default Gateway）
    - 主に使うように設定されている外に出るドア、もちろん窓でも外には出れるように必ずではない。

## よく問題になるところ

- 基本的な部分から切り分けする習慣を身につけて行こう。
- ハードウェア的問題（ケーブル、電源）
- ネットワークプロバイダーのネット網の障害、Cloudの基盤の障害の可能性もある
    - NURO
    - AWS
    - Azure
    - Google
    - CloudN
    - 色んなサービスのダウンロード情報のまとめサイトなどで確認　**[Downdetector](https://downdetector.jp/)**
- ルーティング（Routing）
    - 日本でよく使われているルータ(Router)
        - YamahaのRTX系　**[RTシリーズのマニュアル](rtpro.yamaha.co.jp/RT/manual.html)**
            - 👆　比較的に設定が楽だし、日本語対応がよくできていてこれてネットワーク周りを勉強するのもお勧め。
            - 例えば　**[特によくできていると思うのはこのような問題の切り分け手](http://www.rtpro.yamaha.co.jp/RT/docs/Trouble/index.html)**
        - CISCO
        - 各Cloudサービスだと仮想ルータ、ロードバランサー
    - poling：上手く繋がっていたネットワークがいきなりpolingで繋がらないケースはなかなかないが何か構成に変更、メンテがあった場合はこちらも念頭に置くべき。
- 通信が許可されている場合が多い
    - ステートレス
    - 上から順に適用される
- ポート（Port）
  - 各トラフィックが通るドア？？意図的に閉じたり、必要な時は確認。
  - 意図的に変更しない限各サービスごとによく使うポート番号は決まっている **[ウェルノウンポート番号 (0–1023)](https://ja.wikipedia.org/wiki/TCP%E3%82%84UDP%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%9D%E3%83%BC%E3%83%88%E7%95%AA%E5%8F%B7%E3%81%AE%E4%B8%80%E8%A6%A7)**
- VPN ~~（お家へこっそり行ける俺専用堀穴）~~
    - ざっくり言うとセキュリティーが高い仮想通信トンネル
- DNS
- ボトルネック(bottleneck)

## Windows環境
### ping
アプリケーション、機器、ネットワークの疎通性を確認するutilityである。

- Echo request messages 送信
- Echo reply messages 受信

``` 
C:\Users\Gwakly>ping 8.8.8.8  👈宛先、google.com を入れてもOK

Pinging 8.8.8.8 with 32 bytes of data:
Reply from 8.8.8.8: bytes=32 time=22ms TTL=50
Reply from 8.8.8.8: bytes=32 time=34ms TTL=50
Reply from 8.8.8.8: bytes=32 time=54ms TTL=50
Reply from 8.8.8.8: bytes=32 time=135ms TTL=50

Ping statistics for 8.8.8.8:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 22ms, Maximum = 135ms, Average = 61ms
```
- **Good**
    - 4∼5回の基本的な死活、Echo request/replyの時間、TTLが簡単にできる
    - 反応が早い
- **Bad**
    - 機器の死活以外は確認が難しい
- **オプション**
    - -a IPアドレスでホストネーム知りたい場合使う。
    - -n エコリクエストを何回送るか指定する
    - -t Control+C を押すまでにはPingを継続。ホストが再起動をなどをする際立ち上がる流すと便利。

### tracert
```
C:\Users\Gwakly>tracert 8.8.8.8

Tracing route to dns.google [8.8.8.8]
over a maximum of 30 hops:

  1     1 ms    <1 ms    <1 ms  192.168.0.1
  2    32 ms    60 ms    35 ms  61-24-xxx-xxx.rev.xxx.ne.jp [61.24.xxx.xxx]
  3   195 ms    20 ms   209 ms  10.202.xxx.xxx
  4    61 ms    24 ms    76 ms  10.1.xxx.xxx
  5   168 ms   196 ms    32 ms  203-165-19-245.rev.home.ne.jp [203.165.19.245]
  6    78 ms    24 ms    76 ms  c1-h0-0-0-1.ot-dc.zaq.ad.jp [203.165.19.246]
  7   104 ms   102 ms   101 ms  203.165.0.202
  8    93 ms    18 ms   114 ms  220-152-35-118.rev.home.ne.jp [220.152.35.118]
  9    79 ms   101 ms    20 ms  209.85.244.45
 10    55 ms    78 ms    23 ms  172.253.70.183
 11    74 ms    29 ms    74 ms  dns.google [8.8.8.8]

Trace complete.
```

- Good
    - 機器までの経路が追跡できる
    - pingコマンドとは違ってループなどが確認できる
- Bad
    - pingより遅い
    - 初心者はパットみて分かりずらい

### pathping
```
C:\Users\Gwakly>pathping 8.8.8.8

Tracing route to dns.google [8.8.8.8]
over a maximum of 30 hops:
  0  LAPTOP-xxx.edogx1.kt.home.ne.jp [192.168.xxx.xxx]
  1  192.168.xxx.xxx
  2  61-24-xxx-xxx.rev.home.ne.jp [61.24.xxx.xxx]
  3  10.202.xxx.xxx
  4  10.1.xxx.xxx
  5  203-165-19-245.rev.home.ne.jp [203.165.19.245]
  6  c1-h0-0-0-1.ot-dc.zaq.ad.jp [203.165.19.246]
  7  203.165.0.202
  8  220-152-35-118.rev.home.ne.jp [220.152.35.118]
  9  209.85.244.45
 10  172.253.70.183
 11  dns.google [8.8.8.8]

Computing statistics for 275 seconds...
            Source to Here   This Node/Link
Hop  RTT    Lost/Sent = Pct  Lost/Sent = Pct  Address
  0                                           LAPTOP-xxx.edogx1.kt.home.ne.jp [192.168.xxx.xxx]
                                0/ 100 =  0%   |  
  1   20ms     0/ 100 =  0%     0/ 100 =  0%  192.168.xxx.xxx
                                0/ 100 =  0%   | 👈 区間でのパケットの送受信状況が分かるので便利
  2   62ms     0/ 100 =  0%     0/ 100 =  0%  61-24-xxx-xxx.rev.home.ne.jp [61.24.xxx.xxx]
                                0/ 100 =  0%   |
  3   86ms     0/ 100 =  0%     0/ 100 =  0%  10.202.xxx.xxx
                                0/ 100 =  0%   |
  4   66ms     0/ 100 =  0%     0/ 100 =  0%  10.1.xxx.xxx
                                0/ 100 =  0%   |
  5   68ms     0/ 100 =  0%     0/ 100 =  0%  203-165-19-245.rev.home.ne.jp [203.165.19.245]
                                0/ 100 =  0%   |
  6   68ms     0/ 100 =  0%     0/ 100 =  0%  c1-h0-0-0-1.ot-dc.zaq.ad.jp [203.165.19.246]
                                0/ 100 =  0%   |
  7   70ms     1/ 100 =  1%     1/ 100 =  1%  203.165.0.202
                                0/ 100 =  0%   |
  8   70ms     0/ 100 =  0%     0/ 100 =  0%  220-152-35-118.rev.home.ne.jp [220.152.35.118]
                                0/ 100 =  0%   |
  9   71ms     1/ 100 =  1%     1/ 100 =  1%  209.85.244.45
                                0/ 100 =  0%   |
 10   75ms     0/ 100 =  0%     0/ 100 =  0%  172.253.70.183
                                0/ 100 =  0%   |
 11   67ms     0/ 100 =  0%     0/ 100 =  0%  dns.google [8.8.8.8]

Trace complete.
```
- Good
    - 区間でのパケットの送受信状況が分かるので便利
    - 送信経路が分かり安く可視化できる
- Bad
    - 場合によっては時間が結構長いので急ぎの場合は避けた方がよい

### nslookup
よくDNSサーバの問題の場合があるのでDNS情報（DNSサーバ）を調べる時に利用

## Linux環境
### traceroute



**参考サイト**
Microsoft pathping (https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/pathping)
traceroute（tracert）　～ネットワークの経路を調査する(https://www.atmarkit.co.jp/ait/articles/0108/30/news003.html)