ネットワークまとめ

# インフラ・ネットワーク
インフラ・ネットワークで学習したことをまとめます。

## ルーティングテーブル
ルーティングとは正しい方向へパケットを転送するための処理のこと。経路制御ともいう。
そして、ルーティングテーブルとはルーターに記録される経路情報のこと。
全てのホストやルーターはルーティングテーブルを持っている。ルーティングテーブルには宛先のネットワークアドレスと次のルーターの対応表が記載されてる。

### ルーティングテーブルの例
送信元が10.1.1.30、宛先が10.1.2.10の場合。

|IPアドレス  |次のルーター  |
|---|---|
|★0.0.0.0(デフォルトルート)  |10.1.1.1  |
|10.1.1.0/24  |10.1.1.30  |

↓
ルータ:10.1.1.1

|IPアドレス  |次のルーター  |
|---|---|
|10.1.0.0/24  |10.1.1.1  |
|10.1.1.0/24  |10.1.1.1  |
|★10.1.2.0/24  |10.1.0.2  |
|10.1.3.0/24  |10.1.3.3  |

↓
ルータ:10.1.0.2

|IPアドレス  |次のルーター  |
|---|---|
|10.1.0.0/24  |10.1.0.2  |
|10.1.1.0/24  |10.1.0.1  |
|★10.1.2.0/24  |10.1.2.1  |
|10.1.3.0/24  |10.1.0.3  |

インターフェース10.1.2.1が宛先10.1.2.10につながっている。
そのため、宛先までのルーティングが分かった。


### デフォルトルート
経路制御表に登録されているどのアドレスにもマッチしない場合の経路。全てのネットワークやサブネットの情報を経路制御表に持つと無駄が多くなるので、そういった場合に使用される。
defautもしくは0.0.0.0/0と表す。


### ホストルート
IPアドレス/32で表す。ネットワーク部ではなく、IPアドレスそのものに基づいて経路制御される。


### ループバックアドレス
同じコンピュータ内部のプログラム間で通信したい場合に使用される。127.0.0.1が使われ、localhostというホスト名も使用される。


### ルーティングテーブルの作成
2つの方法がある。

- 静的経路制御
    - 管理者が事前に設定する
    - 全てのルーターに設定する必要がある
- 動的経路制御
    - ルーターが他のルーターと情報を交換して自動的に作成する方法
    - ルーティングプロトコルの設定をする必要がある


### コマンド
```
# 自分のPCのネットワーク設定を確認する
ip a もしくは ifconfig
enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.33.10  netmask 255.255.255.0  broadcast 192.168.33.255
        inet6 fe80::a00:27ff:fe22:fb5c  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:22:fb:5c  txqueuelen 1000  (Ethernet)
        RX packets 3  bytes 330 (330.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12  bytes 888 (888.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

# ルーティングテーブルの表示
ip r もしくは route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.0.2.2        0.0.0.0         UG    100    0        0 enp0s3
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 enp0s3
10.0.2.0        0.0.0.0         255.255.255.0   U     100    0        0 enp0s3
192.168.33.0    0.0.0.0         255.255.255.0   U     0      0        0 enp0s8
192.168.33.0    0.0.0.0         255.255.255.0   U     100    0        0 enp0s8

# arpテーブルの表示
ip n もしくは arp
* arpテーブルとはイーサネット通信のために用いられるIPアドレスとMACアドレスの対照表
Address                  HWtype  HWaddress           Flags Mask            Iface
10.0.2.2                 ether   52:54:00:12:35:02   C                     enp0s3
10.0.2.3                 ether   52:54:00:12:35:03   C                     enp0s3
```


## ポート
ポート番号は同一のコンピュータ内で通信を行っているプログラムを識別するときに利用されるもの。
0-1023: ウェルノウンポート。事前に用途が決められている。
49152-65535: エフェメラルポート。動的に割り当てられる。クライアントにおいてOSが割り当てる。

ウェルのウンポート番号一覧

|ポート番号  |サービス  |
|---|---|
|21  |ftp  |
|22  |ssh  |
|23  |telnet  |
|53  |DNS  |
|80  |http  |
|123  |ntp  |
|389  |ldap  |
|443  |https  |

```
# 80番のポートを調べる
lsof -i:80
```


## ネットワークレンジ
ネットワークとは、ルーターで区切られた範囲のこと。

### IPアドレス
IPアドレスにはIPv4とIPv6がある。
ここではIPv4について説明する。

### ネットワーク部とホスト部
**サブネットマスク**
ネットワーク部とホスト部の境界を示すもの。

**ネットワーク部**
ネットワークそのものを示すアドレス。

**ホスト部**
ネットワーク内の個々の機器を示すアドレス。

- ネットワークアドレス
    - ネットワークそのものを表す
    - 10進数のIPアドレスでホスト部が全て0の場合
- ブロードキャストアドレス
    - 全てのホストを表す
    - 末尾のIPアドレスの場合

```
# 1で表されている部分がネットワーク部、0がホスト部
11111111111111111111111100000000

# CIDR表記、26ビット目までがネットワーク部、それ以降がホスト部
172.20.100.52 /26 
```



### グローバルアドレスとプライベートアドレス
- グローバルアドレス
    - インターネット上で公開するサーバーのIPアドレス。
    - グローバルアドレスは重複したりしないように、ICANNが管理し、プロバイダを通じてユーザーに割り当てられるようになっている。
- プライベートアドレス
    - LAN内で自由に利用できるIPアドレス
    - プライベートアドレスの範囲は、クラスで決められている。

### クラス
クラスとは、ネットワーク部とホスト部をあらかじめ決められたビット数で分割する方法。
クラスごとにサブネットマスクの長さが決まっている。

|クラス  |IPアドレスの範囲  |サブネットマスク  |割り当て可能なホスト数|用途|
|---|---|---|---|---|
|A  |0.0.0.0 ~ 127.255.255.255  |255.0.0.0  |2の24乗|大規模なネットワーク|
|B  |128.0.0.0 ~ 191.255.255.255  |255.255.0.0  |2の16乗|中規模なネットワーク|
|C  |192.0.0.0 ~ 223.255.255.255  |255.255.255.0  |2の8乗|小規模なネットワーク|


### CIDR
現在はクラスよりもCIDRという仕組みで扱われることが多い。
クラスにとらわれず、サブネットマスクを任意のビット数で扱える。それによって、IPアドレスを効率的に使える。


### ルータ
ルータはルーティングを覚えるもの。

**デフォルトゲートウェイ**
ネットワークの出入り口となるルータの総称をデフォルトゲートウェイという。

**NAT**
グローバルIPアドレスとプライベートIPアドレスを1:1に変換する機能。


### LANとWANとインターネット
- LAN
    - 企業内などの1つの建物の中でのネットワークを表す
- WAN
    - LAN同士をつなぐ広域のネットワークのこと
    - 例えば、企業の本社と支社
- インターネット
    - プロバイダー、企業、大学、公的機関、IX他等が接続してネットワークを形成しています


## LDAP
ディレクトリサービスにアクセスするためのプロトコル。


### ディレクトリサービスとは
ディレクトリサービスとは、ネットワーク上に存在しているさまざまな資源に関してデータベース的な情報提供を行うサービスです。そして、ユーザ名などのキーとなる値から様々な情報を検索することが可能。
また、テーブル構造ではなく、木構造である。


### LDAPの仕組み
ポート番号389番を利用する。
そして、属性(ユーザー名)で構成する関連属性(ユーザ名に紐づく情報)の検索、追加、削除の操作を行う。

**LDAP識別名(DN)**
LDAP識別名(DN)とは、ディレクトリサービスにアクセスするためのもの。
そして、DNは複数のLDAP相対式別名(RDN)を並べたものになる。
dn:
属性名:値,
属性名:値,
属性名:値,
の形で表される。


|属性名  |値  |
|---|---|
|cn  |ユーザ名、グループ名、コンピュータ名、コンテナ名  |
|ou  |組織単位(OU)  |
|dc  |ドメイン  |


**例**
dn:
cn=taro yamada,
ou=people,
dc=hoge, 
dc=jp
というエントリーの場合、ドメイン「hoge.jp」のコンテナ「people」に配置したユーザー「taro yamada」になる。


### 利用シーン
認証情報や資源管理に使用される。
すべて管理対象者がLDAPサーバに登録されていれば、LDAPサーバの情報を利用時に参照する。利用時に参照することで正しい利用者かどうかを判断できる。


## 外部からsshを自由につながせない理由と方法

### 理由
- サイバー犯罪者やマルウェアによるsshの悪用
- 改ざんや機密情報の漏洩
- 踏み台サーバにされてリモートホストへ接続し悪用される

### 方法
sshdデーモンの設定と、ファイアウォールの設定などで可能。

- sshd
    - 接続を待ち受けるポートの変更
        - /etc/ssh/sshd_configのport 22を変更する
    - ssh経由のログインを特定のユーザーにだけ許可する
        - /etc/ssh/sshd_configのPemitRootLoginをNoに修正し、AllowUsersを追加する
    - パスワード認証を切る
        - 辞書攻撃される恐れがあるから

- ファイアウォール
    - 使わないポートを閉じる