はじめに
こんにちは。ネットワークエンジニアの「だいまる」です。
今回は、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を利用していた場合等)
Static NATとは
NATの概要がわかったところでもう少し細かい部分を見ていきます。
まずはじめに「Static NAT」です。
Static NATは名前の通り、プライベートアドレスとグローバルアドレスの紐付けを手動で決めるNATのことです。
設定方法
(config)# ip nat inside source static <Local Address> <Global Address>
(config-if)# ip nat [inside | outside]
実機確認
今回実機確認で利用した構成は以下の通りとなります。
事前確認では特に設定が入ってないことが自明なので説明は割愛します。
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になります。
設定方法(一部順不同)
(config)# ip nat pool <プール名> <開始IP> <終了IP> [netmask <サブネットマスク> | prefix-length <length>]
(config)# access-list <ACL番号> permit <NWアドレス> <ワイルドカード>
(config)# ip nat inside source list <ACL番号> pool <プール名>
(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)はアドレスに加えてポート番号の変換も行います。
そうすることでアドレス数が一致しなくても同時接続できるようになるのです。
設定方法
(config)# ip nat pool <プール名> <開始IP> <終了IP> [netmask <サブネットマスク> | prefix-length <length>]
(config)# access-list <ACL番号> permit <NWアドレス> <ワイルドカード>
(config)# ip nat inside source list <ACL番号> pool <プール名> overload
(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の試験も間近となっているので深掘りのスピードを上げていきたいと思います。
コメント