【ネットワーク入門】NAT(Static/Dynamic/PAT)について

  • URLをコピーしました!
目次

はじめに

こんにちは。ネットワークエンジニアの「だいまる」です。

今回は、CCNPの学習の一環としてNAT(Network Address Translation)についてまとめていきたいと思います。

NATとは

NAT(Network Address Translation)とは、IPアドレスを変換する技術であり、プライベートアドレスとグローバルアドレスを変換します。

インターネットの説明は割愛しますが、個人や企業がLANからインターネットに接続する際にはプライベートアドレスとグローバルアドレスを変換することで通信が可能となります。

NATは一般的に内部(LAN)から外部(インターネット)に通信を開始する場合に変換・紐づけられ、通信が可能となります。

また、CiscoではNATの用語として以下を定義しているので覚えておきましょう。(CCNPの教材を引用)

No用語内容
1内部ローカルアドレス内部ネットワークのホストのIPアドレス(プライベートIPアドレス)
2内部グローバルアドレス外部ネットワークから見たホストのIPアドレス(グローバルIPアドレス)
3外部ローカルアドレス内部からみた外部のホストのIPアドレス(グローバルIPアドレス)
4外部グローバルアドレス外部ネットワークのホストに割り当てられるIPアドレス(グローバルIPアドレス)

基本的には上記の通りですが、外部アドレスに関しては外部グローバルアドレスは、場合によってはプライベートアドレスになる可能性もあります。(外部ネットワークも同様にNATを利用していた場合等)

外部ネットワーク(10.1.0.0/30)
外部ネットワーク(10.1.0.0/30)
内部ネットワーク(192.168.1.0/24)
内部ネットワーク(192.168.1.0/24)
Router1
Router1
L2SW
L2SW
Router2
Router2
Router3
Router3
ter3
ter3
Router4
Router4
.1
.1
.2
.2
.254
.254
.1
.1
.2
.2
内部ローカルアドレス
内部ローカルアドレス
内部グローバルアドレス
内部グローバルアドレス
外部アドレス
外部アドレス
Text is not SVG – cannot display

Static NATとは

NATの概要がわかったところでもう少し細かい部分を見ていきます。

まずはじめに「Static NAT」です。

Static NATは名前の通り、プライベートアドレスとグローバルアドレスの紐付けを手動で決めるNATのことです。

設定方法

STEP
内部ローカルと内部グローバルの紐付け定義
(config)# ip nat inside source static <Local Address> <Global Address>
STEP
内部NWと外部NWの定義
(config-if)# ip nat [inside | outside]

実機確認

今回実機確認で利用した構成は以下の通りとなります。

外部ネットワーク(10.1.0.0/30)
外部ネットワーク(10.1.0.0/30)
内部ネットワーク(192.168.1.0/24)
内部ネットワーク(192.168.1.0/24)
Router1
Router1
L2SW
L2SW
Router2
Router2
Router3
Router3
ter3
ter3
Router4
Router4
.1
.1
.2
.2
.254
.254
.1
.1
.2
.2
内部ローカルアドレス
内部ローカルアドレス
内部グローバルアドレス
内部グローバルアドレス
外部アドレス
外部アドレス
Text is not SVG – cannot display

事前確認では特に設定が入ってないことが自明なので説明は割愛します。

Router3にNATの設定を追加したログを以下に記載します。

Router3#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router3(config)#interface gigabitEthernet 0/1
Router3(config-if)#ip nat outside
Router3(config-if)#exit
Router3(config)#interface gigabitEthernet 0/3
Router3(config-if)#ip nat inside
Router3(config-if)#exit
Router3(config)#ip nat inside source static 192.168.1.2 10.2.0.1
Router3(config)#end

上記設定を追加するとすぐにNATの紐付けが行われます。

Router3#show ip nat translations
Pro Inside global         Inside local          Outside local         Outside global
--- 10.2.0.1              192.168.1.2           ---                   ---
Router3#

紐付けが行われているので内部からの通信はもちろん、外部から疎通が可能となります。

Router4#ping 10.2.0.1 repeat 100
Type escape sequence to abort.
Sending 100, 100-byte ICMP Echos to 10.2.0.1, timeout is 2 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (100/100), round-trip min/avg/max = 1/2/4 ms
Router4#

Dynamic NATとは

次に「Dynamic NAT」についてまとめていきたいと思います。

Dynamic NATは指定したプライベートアドレスレンジと指定したグローバルアドレスレンジを動的に紐づけるNATです。

クライアント(プライベートアドレス)が多数の場合、手動で1つ1つ紐づけることは手間もかかり困難だと思います。

そんな時に利用されるのがこのNATになります。

設定方法(一部順不同)

STEP
内部グローバルのプールを定義
(config)# ip nat pool <プール名> <開始IP> <終了IP> [netmask <サブネットマスク> | prefix-length <length>]
STEP
変換元となる内部ローカルアドレスの範囲をACLで定義
(config)# access-list <ACL番号> permit <NWアドレス> <ワイルドカード>
STEP
ACLとアドレスプールの紐付け
(config)# ip nat inside source list <ACL番号> pool <プール名>
STEP
内部NW/外部NWの定義
(config-if)# ip nat [inside | outside]

実機確認

Dynamic NATの実機確認を行いたいと思います。

先程と同様にRouter3に設定を追加したのでその際のログを以下に記載します。

Router3#conf t
Enter configuration commands, one per line.  End with CNTL/Z.

Router3(config)#ip nat pool test 10.2.0.1 10.2.0.2 netmask 255.255.255.0

Router3(config)#access-list 1 permit 192.168.1.0 0.0.0.255


Router3(config)#ip nat inside source list 1 pool test
Router3(config)#end

上記の設定だけでは、NATの紐付けは行われていません。

Router3#show ip nat translations
Router3#
Router3#

変換元のエンドポイントが外部向けに通信を行って初めて変換・紐付けが行われるのです。

Router1#ping 10.1.0.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.0.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 2/2/4 ms

Router3#show ip nat translations
Pro Inside global         Inside local          Outside local         Outside global
icmp 10.2.0.1:9           192.168.1.2:9         10.1.0.2:9            10.1.0.2:9
--- 10.2.0.1              192.168.1.2           ---                   ---
Router3#

PAT(NAPT)とは

最後にPAT(NAPT)についてですが、これはプライベートアドレスよりもグローバルアドレスの数が少ない場合に同時接続を行うために利用されます。

今までのNATはアドレスとアドレスの紐付けでしたが、PAT(NAPT)はアドレスに加えてポート番号の変換も行います。

そうすることでアドレス数が一致しなくても同時接続できるようになるのです。

設定方法

STEP
内部グローバルのプールを定義
(config)# ip nat pool <プール名> <開始IP> <終了IP> [netmask <サブネットマスク> | prefix-length <length>]
STEP
変換元となる内部ローカルアドレスの範囲をACLで定義
(config)# access-list <ACL番号> permit <NWアドレス> <ワイルドカード>
STEP
ACLとアドレスプールの紐付け
(config)# ip nat inside source list <ACL番号> pool <プール名> overload
STEP
内部NW/外部NWの定義
(config-if)# ip nat [inside | outside]

実機確認

PATの設定は以下のコマンドで行なっております。

Router3#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router3(config)#ip nat pool test 10.2.0.1 10.2.0.1 netmask 255.255.255.0
Router3(config)#access-list 1 permit 192.168.1.0 0.0.0.255
Router3(config)#ip nat inside source list 1 pool test overload
Router3(config)#end
Router3#

そして、Router1とRouter2からそれぞれ外部宛にPingを行なった後にNATの変換状況を確認すると以下のようになりました。

Router3#show ip nat translations
Pro Inside global         Inside local          Outside local         Outside global
icmp 10.2.0.1:3           192.168.1.1:3         10.1.0.2:3            10.1.0.2:3
icmp 10.2.0.1:10          192.168.1.2:10        10.1.0.2:10           10.1.0.2:10
Router3#

上記の出力結果よりも同じアドレスに対して異なるプライベートアドレスがアサインされていることがわかると思います。

このように対応することでPATが可能となります。

最後に

今回はネットワークアドレスの変換技術であるNATについてまとめました。

CCNPの試験も間近となっているので深掘りのスピードを上げていきたいと思います。

  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次