2022-01-27 · 5

NAT について

network

この記事は公開から2年以上経過しています。

NAT

内部ネットワークから外部へ出るとき、内部 IP アドレスを別の IP に変換して外部へ出られるようにします。

① Static NAT:送信元と宛先の IP を事前にマッピングして固定した NAT

② Dynamic NAT:送信元・宛先のどちらも事前に決めていない NAT

なぜ生まれたのか?

IPv4 の枯渇問題とプライベート網のためです。 現在インターネットアドレスに使われる IPv4 は約 42 億個のアドレスを割り当てられます。しかしこれは世界の IP 需要に足りない水準で、時が経つほど IP 枯渇の問題が取り沙汰されています。これを解決するために出たのが IPv6 で、これを使えば IP 枯渇問題は一気に解決しますが、コスト問題のため置き換えが進んでいないようです。決定的にはプライベート網 - パブリック網の概念のためです。

家庭や会社でインターネットを使うと、ISP から世界で唯一のパブリック IP を 1 つ発行してもらいます。実際の PC にはそれぞれプライベート IP が入っており、外部網であるインターネットに接続するとき、ルーターの NAT 技術で各プライベート IP がパブリック IP に変換されます。つまり 1 台分の IP を複数で共有して使っているということです。

IANA(Internet Assigned Numbers Authority)は、プライベート IP アドレスとして使う次の IP アドレスブロックを予約しています。

⊙ 10.0.0.0 ~ 10.255.255.255.255

⊙ 172.16.0.0 ~ 172.31.255.255.255

⊙ 192.168.0.0 ~ 192.168.255.255

インターネット利用者のローカルネットワークを識別するために ISP が提供するパブリック IP アドレスです。

⊙ 0.0.0.0 ~ 127.255.255.255

⊙ 128.0.0.0 ~ 191.255.255.255

⊙ 192.0.0.0 ~ 233.255.255.255

⊙ 224.0.0.0 ~ 239.255.255.255

⊙ 240.0.0.0 ~ 255.255.255.255

プライベート網から外部へパケットを送るとき、ルーターがプライベート IP をパブリック IP に変えて送るため、応答パケットは変換記録を照会して元のホストに戻します。しかし外部からはルーターまでしか宛先アドレスを指定できないため、外部からアクセスできないプライベート網の運用はセキュリティ的にも優れています。

静的 NAT

トポロジ

NAT Static

PC0 ~ PC2 に 192.168.10.1 ~ 192.168.10.3 を入れ、ルーターで設定を始めます。

Router(config)#int g0/0
Router(config-if)#no shut
Router(config-if)#ip add 192.168.10.254 255.255.255.0
Router(config-if)#ip nat inside
Router(config-if)#exit
Router(config)#int se0/0/0
Router(config-if)#no shut
Router(config-if)#ip add 200.1.1.254 255.255.255.0
Router(config-if)#ip nat outside

Router0 で Gig0/0 に IP を付与し(gateway)、ip nat inside まで入力します。Se0/0/0 に IP と ip nat outside を入力します。Gig0/0 は内部から外部へ出る IP なので inside と書きます。出て行く所は当然 outside と書きます。

Router(config)#ip nat inside source static 192.168.10.1 200.1.1.1
Router(config)#ip nat inside source static 192.168.10.2 200.1.1.2
Router(config)#ip nat inside source static 192.168.10.3 200.1.1.3

内部 IP(192.168.10.1)→ 外部 IP(200.1.1.1)このようにマッピングします。

Router(config)#do sh ip nat trans
Pro  Inside global     Inside local       Outside local      Outside global
---  200.1.1.1         192.168.10.1       ---                ---
---  200.1.1.2         192.168.10.2       ---                ---
---  200.1.1.3         192.168.10.3       ---                ---

確認は [do] sh ip nat trans でできます。次に Router1 には IP だけ割り当てます。

Router(config)#int se0/0/1
Router(config-if)#ip add 200.1.1.253 255.255.255.0

PC から Router1 へ ping を打ってみましょう。

NAT: s=192.168.10.1->200.1.1.1, d=200.1.1.253 [42]
NAT*: s=200.1.1.253, d=200.1.1.1->192.168.10.1 [26]

きちんと変換されて行くのが確認できます。[ コマンド:ルーターで debug ip nat ]

動的 NAT

トポロジ

NAT dynamic

静的 NAT のときのように Gig0/0 に inside、se0/0/0 に outside を入力します。そして access list(ACL)を設定すれば OK です。

Router(config)#access-list 10 permit 192.168.10.0 0.0.0.255

access-list [リスト番号] permit [プライベート IP ネットワークアドレス] [ワイルドカードマスク]

ワイルドカードマスクは通常の netmask を逆に書くものです。255.255.255.0 → 0.0.0.255 こうすると両方とも同じ役割を果たしますが、サブネットマスクはネットワークとホストアドレスを分離する役割のために作られ連続するビットしか使えないのに対し、ワイルドカードマスクは連続しなくても使えるという特徴があります。

access-list はルーターにアクセスするプライベート IP の一覧です。192.168.10.0 帯から始まり、そのネットワークアドレスを持つすべてのプライベート IP に対して動的にパブリック IP を割り当て、使用が終われば回収して別の所に使えます。こうすれば新しい PC が入っても自動で割り当てられ、非常に便利な機能です。

Router(config)#ip nat pool Sunrin1 200.1.1.1 200.1.1.10 netmask 255.255.255.0
Router(config)#ip nat inside source list 10 pool Sunrin1

200.1.1.1 から 200.1.1.10 までのパブリック IP プールを作り、これを使うリスト 10 に付けます。

Router(config)#do sh ip nat trans
Pro  Inside global     Inside local       Outside local      Outside global
icmp 200.1.1.1:5       192.168.10.1:5     200.1.1.253:5      200.1.1.253:5
icmp 200.1.1.1:6       192.168.10.1:6     200.1.1.253:6      200.1.1.253:6
icmp 200.1.1.1:7       192.168.10.1:7     200.1.1.253:7      200.1.1.253:7

PC から ping を送ると IP が割り当てられたことが確認できます。

PAT

トポロジ

PAT

動的 NAT と同様に access list(ACL)を設定します。

Router(config)#access-list 10 permit 192.168.10.0 0.0.0.255

次に PAT を設定します。

Router(config)#ip nat inside source list 10 interface se0/0/0 overload
Router#sh ip nat trans
Pro  Inside global     Inside local       Outside local      Outside global
icmp 200.1.1.254:36    192.168.10.1:36    200.1.1.253:36     200.1.1.253:36
icmp 200.1.1.254:37    192.168.10.1:37    200.1.1.253:37     200.1.1.253:37
icmp 200.1.1.254:38    192.168.10.1:38    200.1.1.253:38     200.1.1.253:38
icmp 200.1.1.254:39    192.168.10.1:39    200.1.1.253:39     200.1.1.253:39

PAT 設定時にルーターのインターフェイスに 192.168.10.0 プライベートネットワークを付けたので、Inside global にはインターフェイスアドレスである 200.1.1.253 が付いて出て行きます。また出て入ってくるときポート番号を見て元の送信元がどこだったか確認し、ルーターが届けてくれます。ポート番号は十分たくさんあります。


原文(韓国語): tistory — 2022-01-27 公開、当ブログへ移行。この翻訳は AI の協力で作成されました。

コメント

コメントを削除しますか?

関連記事

NAT について · 나봄하랑