CiscoのルーターでNAPT

# はじめに
人にCiscoコマンドを教えることになり学習をしている。
私はネットワークの知識は多少あるが、Ciscoについては見たこともなければ触ったこともない。
そんな私が学習したCiscoコマンド等を備忘録として残しておく。

# 必要ソフト
Ciscoのルーターを実際に買うと高価なので、学習目的の場合はこのソフトを利用する
- Cisco Packet Tracer
Cisco製のネットワーク機器をソフトウェア上で操作できるシミュレーターツール
こちらから無料でダウンロードできる
https://www.netacad.com/ja/courses/packet-tracer

# 行うこと
- PCとルーターを接続して、NAPTを行う
- NATとはLAN側のプライベートIPアドレス（内部ローカルアドレスともいう）をWAN側のグローバルIPアドレス（内部グローバルアドレスともいう）に変換する技術である
- NATはIPv4アドレスの枯渇問題の回避策として考えられた
- NAPTとはNATの1種で、1つの内部グローバルアドレスに対して複数の内部ローカルアドレスの変換が行えるため、アドレスの節約ができる

# 構成図
![napt.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273110/d08e91dd-a6a8-f86f-2dd1-0ce92b0adbf2.png)

- 192.168.0.0/24にはPC1、PC2とRouter1が接続されている
- 172.16.0.0/24にはServer1、Sniffer、Router1が接続されている
- Router1にNAPTの情報を登録する
- PC1とPC2からServer1に対してそれぞれping通信を行う。このとき、Snifferというパケットキャプチャができる機器を使って、Switch2を通るパケットをキャプチャしてNAT変換が行われていることを確認することをゴールとする

# 実践
Cisco Packet Tracerで以下のような構成を作成する。
- PCは画面下部から「PC-PT」というのを選択してドラッグ＆ドロップする
- Serverは画面下部から「Server-PT」というのを選択してドラッグ＆ドロップする
- Routerは画面下部から「1841」というのを選択してドラッグ＆ドロップする
- Switchは画面下部から「2960」というのを選択してドラッグ＆ドロップする
- Snifferは画面下部から「Sniffer」というのを選択してドラッグ＆ドロップする
- 各デバイス間は「Copper Cross-Over」という線で繋ぐ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273110/6ff3cb87-5b05-ebb3-feaf-1b75d2efa746.png)

## PC1での設定
「Desktop」タブの「IP Configuration」を選択して開く画面から、IPアドレス、サブネットマスク、デフォルトゲートウェイを設定する
IPアドレスには自身のIPアドレスである「192.168.0.100」、サブネットマスクは「/24」を現す「255.255.255.0」、デフォルトゲートウェイはRouter1のインタフェースを指定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273110/ec4051c7-14bf-666a-2ebb-5974fb3bfa79.png)

## PC2での設定
「Desktop」タブの「IP Configuration」を選択して開く画面から、IPアドレス、サブネットマスク、デフォルトゲートウェイを設定する
IPアドレスには自身のIPアドレスである「192.168.0.101」、サブネットマスクは「/24」を現す「255.255.255.0」、デフォルトゲートウェイはRouter1のインタフェースを指定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273110/47bf0977-fba6-b96d-798f-63fa505fcdad.png)

## Server1での設定
「Desktop」タブの「IP Configuration」を選択して開く画面から、IPアドレス、サブネットマスク、デフォルトゲートウェイを設定する
IPアドレスには自身のIPアドレスである「172.16.0.100」、サブネットマスクは「/24」を現す「255.255.255.0」、デフォルトゲートウェイはRouter1のインタフェースを指定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273110/17618d2c-68ec-df52-049b-968bc6f7baa6.png)

## Router1での設定コマンド

### IPアドレスの付与とインタフェースにinside, outside設定
NATを使うにはルーターのインターフェースにインサイド（内部）、アウトサイド（外部）の指定をしないといけない。なので、それぞれのインタフェースに指定する
```cisco_ios
Router>en
Router#conf t
Router(config)#interface fastEthernet 0/0
Router(config-if)#ip address 192.168.0.1 255.255.255.0
Router(config-if)#no shutdown 
Router(config-if)#ip nat inside 
Router(config-if)#exit
Router(config)#interface fastEthernet 0/1
Router(config-if)#ip address 172.16.0.1 255.255.255.0
Router(config-if)#no shutdown 
Router(config-if)#ip nat outside 
Router(config-if)#exit
```

### NAPT設定
- ACLの許可設定に192.168.0.0/24を登録する
- ACLを使ってNAPTの設定を行う
```cisco_ios
Router(config)#access-list 10 permit 192.168.0.0 0.0.0.255
Router(config)#ip nat inside source list 10 interface fastEthernet 0/1 overload
```

### 登録情報を確認する
一度も通信をしていないので、まだ何も表示されない
```cisco_ios
Router#show ip nat translations 
Router#
```

## Switch2での設定コマンド

パケットをSnifferに転送するための設定を行う
```cisco_ios
Switch>en
Switch#conf t
Switch(config)#monitor session 1 source interface fastEthernet 0/1
Switch(config)#monitor session 1 destination interface fastEthernet 0/3
```

## 接続確認

### PC1
PC1の「Desktop」タブから「Command Prompt」を選択してコマンドプロンプトを起動し、ping通信を行う。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273110/2677edd7-db68-f194-75ad-c6aa36e66792.png)

SnifferのGUIを見ると、IPパケットの「SRC IP」が「172.16.0.1」と変換されてICMP要求が飛んでいることがわかる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273110/ecaf36bf-8b42-d7dc-f6a8-9ccaf4a26355.png)

### PC2
PC2の「Desktop」タブから「Command Prompt」を選択してコマンドプロンプトを起動し、ping通信を行う。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273110/79c20527-da48-c1e2-befe-9fc9994ce92d.png)

SnifferのGUIを見ると、IPパケットの「SRC IP」が「172.16.0.1」と変換されてICMP要求が飛んでいることがわかる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273110/8931763e-e231-d7c5-0b69-21591611d876.png)


### Router1
再度NATの情報を確認してみると設定した内容でNAT変換されているのがわかる
```cisco_ios
Router#show ip nat translations 
Pro  Inside global     Inside local       Outside local      Outside global
icmp 172.16.0.1:1024   192.168.0.101:1    172.16.0.100:1     172.16.0.100:1024
icmp 172.16.0.1:1025   192.168.0.101:2    172.16.0.100:2     172.16.0.100:1025
icmp 172.16.0.1:1026   192.168.0.101:3    172.16.0.100:3     172.16.0.100:1026
icmp 172.16.0.1:1027   192.168.0.101:4    172.16.0.100:4     172.16.0.100:1027
```

現場からは以上です