NAT(Network Address Translation)
IPヘッダ内のIPアドレスを変換する技術で、プライベートIPアドレスをグローバルIPアドレスに付け替える。1対1のアドレス変換を行う。
変換用のグローバルIPアドレスは、ISPから割り当てられているものを使用する必要がある。
Ciscoルータでは以下のように内部と外部に区分けされ、インターフェイスに設定を行う。
-
inside local(内部ローカルアドレス)
内部ネットワークから見た内部のネットワーク。LAN内のネットワークに割り当てられているプライベートIPアドレスのこと。 -
inside global(内部グローバルアドレス)
外部ネットワークから見た時の内部のIPアドレス。NATによって変換されたグローバルIPアドレスのこと、 -
outside local(外部ローカルアドレス)
内部ネットワークから見た外部のIPアドレス。内部からパケットを送信する場合、宛先となるのがこのアドレス。 -
outside global(外部グローバルアドレス)
外部ネットワークから見た外部のIPアドレス。通常NATでは外部ローカルアドレスと外部グローバルアドレスは同じになる。
一方向NAT(Unidirectional NAT)
Traditional NAT,Outbound NATとも呼ばれる。内部から通信をスタートして外部とやり取りするのは可能だが、外部からスタートして内部と通信することは出来ないNATのこと。一般的なネットワークの接続の際に用いられる。内部からスタートして外部に出る際にNAT変換が行われ、外部から戻ってくる通信は最初の変換情報を基にNAT変換が行われて内部に届く。
外部から内部にアクセスされることがないため、内部のネットワークを保護することができる。
双方向NAT(Bi-directional NAT)
Two-Way NATとも呼ばれ、内部・外部それぞれ通信をスタートしてやり取りすることができるNATのこと。
スタティックNAT
1対1のアドレス変換技術で、管理者が手動でNATテーブルに内部ローカルアドレスと外部グローバルアドレスの変換の組み合わせを登録していく。ルータはその内容を基にアドレス変換を行う。あらかじめ組み合わせが固定で決まっているため、常に同じIPアドレスに変換される。
外部のネットワークからスタートして内部のネットワークへ通信することも可能となるため、双方向NATの動作になる。
1つの内部ローカルアドレスに対して1つの内部グローバルアドレスの割り当てになるため、用意されている内部グローバルアドレスの数だけしか同時に外部と通信ができない。
設定を行う際は以下の2点を行う必要がある
- ルータのインターフェイスにインサイド、アウトサイドの指定
- 内部ローカルアドレスと内部グローバルアドレスの組み合わせをNATテーブルに登録
ip natコマンド
書式:ip nat [inside | outside]
ルータのインターフェイスにインサイド、アウトサイドの指定を行うコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。
オプション | 意味 |
---|---|
inside | 内部インターフェイスを指定する |
outside | 外部インターフェイスを指定する |
ip nat inside source staticコマンド
書式:ip nat inside source static [内部ローカルアドレス] [内部グローバルアドレス]
内部ローカルアドレスと内部グローバルアドレスの組み合わせをNATテーブルに登録するコマンド。グローバルコンフィギュレーションモードで行う必要がある。
ダイナミックNAT
複数の内部グローバルアドレスをアドレスプールとして設定しておき、外部に通信する際アドレスプールから選択されたIPアドレスの1つに変換される。スタティックNATと違い、常に同じ内部グローバルアドレスに変換されるわけではない。
外部に通信する際に、リアルタイムに自動でNATテーブルに登録されるため、内部から通信するまでは内部ローカルアドレスがどの内部グローバルアドレスに変換されるかわからない。一方向NATの動作となる。
ダイナミックNATもスタティックNAT同様に、1つの内部ローカルアドレスに対して1つの内部グローバルアドレスという1対1の割り当てとなるので、アドレスプールに用意されている内部グローバルアドレスの数だけしか同時に外部と通信できない。
設定を行う際は以下のことを行う必要がある
-
ip nat
コマンドでインサイド、アウトサイドの指定 - 変換の対象となる内部ローカルアドレスのリストを作成する
- アドレスプールを作成する
- 内部ローカルアドレスのリストとアドレスプールを紐づける
ip nat poolコマンド
書式:ip nat pool [プール名] [開始アドレス] [終了アドレス] netmask [サブネットマスク]
外部に出ていくために使われる内部グローバルアドレスをアドレスプール作成するコマンド。グローバルコンフィギュレーションモードで行う必要がある。
オプション | 内容 |
---|---|
プール名 | プール名を定義 |
開始アドレス | アドレスプールの最初のIPアドレスを指定(グローバルアドレスの最初のIPアドレスを指定) |
終了アドレス | アドレスプールの最後のIPアドレスを指定(グローバルアドレスの最後のIPアドレスを指定)。割り当てるIPアドレスが1つの場合は、開始アドレスと同じものを指定 |
サブネットマスク | プールしたアドレスのサブネットマスクを指定 |
ip nat inside source listコマンド
書式:ip nat inside source list [ACL] pool [プール名]
内部ローカルアドレスのリストとアドレスプールを紐づけるコマンド。グローバルコンフィギュレーションモードで行う必要がある。
内部ローカルアドレスのリストを作成するにはACLを使用する。ACLでpermitとなっている行に該当するパケットは、送信元IPアドレスがNATにより変換される。denyはNATの変換が行われない。
ACLは用途によって動作が異なるので注意する
NAPT(Network Address Port Translation)
NATの技術を拡張したもので、1対多のアドレス変換が行えるためIPアドレスを節約し、内部ネットワークの多くのホストから同時にインターネットを利用できる。全て同じグローバルIPアドレスに変換される。また、IPアドレスだけではなく、TCPまたはUDPのポート番号も変換しNATテーブルに登録する。
ダイナミックNAT同様に、外部ネットワークからスタートする通信は内部ネットワークには入れない。
IPマスカレードやオーバーローディング(オーバーロード)、CiscoではPAT(Port Address Translation)とも呼ばれる。
設定を行う際は以下のことを行う必要がある
-
ip nat
コマンドでインサイド、アウトサイドの指定 - ACLで内部ローカルアドレスのリストを作成する
- アドレスプールを利用する場合は作成する(なくても問題ない)
- 内部ローカルアドレスのリストとアドレスプールまたは外部インターフェイスを紐づける
ip nat inside source listコマンド
書式:ip nat inside source < list | route-map <ルートマップ>> | interface <インターフェイス>> overload
内部ローカルアドレスのリストとアドレスプールを紐づけるコマンド。グローバルコンフィギュレーションモードで行う必要がある。overloadを付けることでNAPTになる。
clear ip nat traslationコマンド
書式:clear ip nat traslation *
NATテーブルの削除を行うコマンド。特権EXECモードで行う必要がある。*(アスタリスク)をつけることで、NATテーブルの全エントリを削除することができる。
設定の確認
show ip nat translationsコマンド
NATによるアドレスの変換状況を確認するコマンド。特権EXECモードで行う必要がある。
通信を行った後で実行しないと何も表示されない
Pro Inside global Inside local Outside local Outside global
icmp 100.10.10.9:161 192.168.1.1:161 172.16.10.1:161 172.16.10.1:161
icmp 100.10.10.9:162 192.168.1.1:162 172.16.10.1:162 172.16.10.1:162
icmp 100.10.10.9:163 192.168.1.1:163 172.16.10.1:163 172.16.10.1:163
icmp 100.10.10.9:164 192.168.1.1:164 172.16.10.1:164 172.16.10.1:164
show ip nat statisticsコマンド
アドレス変換の統計情報を確認するコマンド。特権EXECモードで行う必要がある。
debug ip natコマンド
NATの変換情報をリアルタイムで確認するコマンド。特権EXECモードで行う必要がある。
スタティックNATの拡張機能
スタティックNATはLAN内にインターネット上へ公開したいサーバがある際などに使用されることが多くなっている。このような特徴からいくつかの追加機能が用意されている。
ip nat inside source static extendableコマンド
書式:ip nat inside source static [内部ローカルアドレス] [内部グローバルアドレス] extendable
スタティックNATでextendableオプションを使用するコマンド。グローバルコンフィギュレーションモードで行う必要がある。このオプションを使用することで、スタティックNATで1対多のIPアドレス変換を行うことが可能。
書式:ip nat inside source static < tcp |udp> <内部ローカルアドレス> <ポート番号> <内部グローバルアドレス> <ポート番号> extendable
スタティックNAPT(静的NAPT:NAPTと同じように変換すること)の設定をするコマンド。グローバルコンフィギュレーションモードで行う必要がある。通信の種別ごとに変換するIPアドレスを変えることができるため、外部からやってくる通信によってアクセスする内部の端末を振り分けることが可能。
DHCP(Dynamic Host Configuration Protocol)
PCなどの機器にネットワークへの接続に必要となるIPアドレスやサブネットマスクなどの情報を自動的に割り当てるためのプロトコル。DHCPサーバ(ポート:67)とDHCPクライアント(ポート:68)から成り立ち、トランスポート層にUDPを使用する。
DHCPで割り当てられる主な情報
- IPアドレスとサブネットマスク
- デフォルトゲートウェイ
- DNSサーバ
-
DHCP DSICOVER
DHCPクライアントから同じネットワーク全体に対し、ブロードキャストアドレス255.255.255.255
に送信する -
DHCP OFFER
DHCP DSICOVERを受け取ったDHCPサーバは、DHCPクライアントに対して送信し、貸し出す予定のIPアドレスと関連するネットワークの情報を伝達する。 -
DHCP REQUEST
DHCPクライアントは、DHCPサーバから送信されたDHCP OFFERの情報に問題がなければ、ブロードキャストアドレス255.255.255.255
に送信し、DHCPサーバに対してIPアドレスなどを正式に要求する。 -
DHCP ACK
DHCPサーバは、DHCP REQUESTの応答として承認する場合に送信をする。DHCPクライアントは受け取ったDHCP ACKの内容に基づいてネットワークの設定を行う。問題があった場合は、DHCP NACKを返す。
Gratuitous ARP
DHCPサーバからDHCPクライアントにIPアドレスが割り当てられる際に、DHCPクライアントが他のホストへすでに同じIPアドレスが割り当てられているかどうかを確認するために使用する。いわば、IPアドレスの重複(コンフリクト)の検出を行う。
DHCPの設定
ルータはDHCPサーバとしてもDHCPクライアントとしても動作させることができる。
DHCPサーバにするためには以下のことが必要になる。
- アドレスプールの作成
- 配布するIPアドレスのネットワークとサブネットを指定
- デフォルトゲートウェイの指定
- リース期間の指定
- DNSサーバの指定(必須ではない)
- 除外アドレスの指定
設定後、PCを起動するとIPアドレスが自動で割り振られる。
ip dhcp poolコマンド
書式:ip dhcp pool [プール名]
アドレスプールを作成するコマンド。グローバルコンフィギュレーションモードで行う必要がある。プール名には任意の名前を指定する。実行すると、DHCPコンフィギュレーションモードに移行しプロンプトが変化する。
networkコマンド
書式:network [ネットワーク] [サブネットマスク | /プレフィックス]
DHCPプールで使用するネットワークとサブネットマスクを指定するためのコマンド。DHCPコンフィギュレーションモードで行う必要がある。ここで指定したネットワーク内からIPアドレスが配布される。
R1(config)#ip dhcp pool R2_LAN
R1(dhcp-config)#network 192.168.11.0 255.255.255.0
default-routerコマンド
書式:defautlt-router [IPアドレス]
DHCPクライアントにデフォルトゲートウェイのIPアドレスを設定するコマンド。DHCPコンフィギュレーションモードで行う必要がある。
leaseコマンド
書式:lease [日] [時] [分]
DHCPクライアントにIPアドレスを貸し出すリース期間を設定するコマンド。DHCPコンフィギュレーションモードで行う必要がある。設定を省略した場合、デフォルトの有効期限(1日)で設定される。
dns-serverコマンド
書式:dns-server [DNSサーバのIPアドレス] [DNSサーバのIPアドレス]
DHCPクライアントにDNSサーバのIPアドレスを設定するコマンド。DHCPコンフィギュレーションモードで行う必要がある。複数指定が可能。
domain-nameコマンド
書式:domain-name <ドメイン名>
DHCPクライアントにドメイン名を配布するコマンド。DHCPコンフィギュレーションモードで行う必要がある。
ip dhcp excluded-addressコマンド
書式:ip dhcp excluded-address [開始アドレス] [終了アドレス]
IPアドレスをアドレスプールから除外するコマンド。グローバルコンフィギュレーションモードで行う必要がある。開始アドレスと終了アドレスで指定した範囲のIPアドレスが除外され、DHCPクライアントに配布されなくなる。終了アドレスを省略した場合、開始アドレスのみ除外される。
ip address dhcpコマンド
DHCPクライアントの設定を行うコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。設定を行うことで、ルータのインターフェイスのIPアドレスをDHCPサーバから割り当てることができる。
コマンド実行後、no shutdown
コマンドにてインターフェイスを有効化する必要がある。
ルータをDHCPクライアントととして設定した場合、デフォルトゲートウェイのIPアドレスの情報を基にデフォルトルートを自動生成する。その際、アドミニストレーティブディスタンス値は254になる。
optionコマンド
書式:option <オプション番号> ip < IPアドレス>
オプションの設定を行うコマンド。DHCPコンフィギュレーションモードで行う必要がある。設定を行うことで、多くの情報を伝えることが可能になる。
オプション番号 | 意味 |
---|---|
7 | ログサーバのアドレス |
43 | WLCのIPアドレス |
66 | TFTPサーバ名 |
69 | SMTPサーバのアドレス |
70 | POP3サーバのアドレス |
72 | Webサーバのアドレス |
DHCPの確認
DHCPクライアントであるルータにどういったIPアドレスが割り当てられているかは以下のコマンドで確認する必要がある。
-
show ip interfacw brief
コマンド(サブネットマスク確認不可) -
show interfaces
コマンド -
show dhcp lease
コマンド
running-config
で確認することはできない
DHCPサーバ側ではどういったIPアドレス割り振られたかを確認するコマンドがいくつか存在する。
show ip dhcp poolコマンド
DHCPサーバで設定したアドレスプールを確認をするコマンド。特権EXECモードで行う必要がある。ネットワークの範囲に対して次に割り当てる予定のIPアドレス、配布されているIPアドレスの数を確認することができる。
Router2#show ip dhcp pool
Pool DHCPPOOL :
Utilization mark (high/low) : 100 / 0
Subnet size (first/next) : 0 / 0
Total addresses : 254
Leased addresses : 0
Excluded addresses : 1
Pending event : none
1 subnet is currently in the pool
Current index IP address range Leased/Excluded/Total
192.168.1.1 192.168.1.1 - 192.168.1.254 0 / 1 / 254
show running-config
でもDHCPプールに設定された割り当てアドレスの範囲を確認することができる。
show ip dhcp bindingコマンド
IPアドレスの割り当て状況を確認するコマンド。特権EXECモードで行う必要がある。配布したIPアドレスと配布されたPCのMACアドレスなどが確認できる。
DHCPプールに設定されたアドレス範囲は確認できないので注意
Router2#show ip dhcp binding
IP address Client-ID/ Lease expiration Type
Hardware address
192.168.1.150 0001.4305.811E -- Automatic
192.168.1.151 00D0.5863.70E0 -- Automatic
show ip dhcp conflictコマンド
コンフリクトが発生したIPアドレスの一覧を確認するコマンド。特権EXECモードで行う必要がある。IPアドレスの重複はGratuitous ARPまたはpingによって検出される。一度コンフリクトが発生したIPアドレスはルータ内に記録され、次からは配布されずアドレスプールから除外される。
show dhcp leaseコマンド
DHCPによって取得した情報を表示するコマンド。特権EXECモードで行う必要がある。自身に割り当てられたIPアドレスや、デフォルトゲートウェイのIPアドレスを確認することができる。
clear ip dhcp conflictコマンド
コンフリクト情報を消去して再度クライアントに配布するコマンド。特権EXECモードで行う必要がある。
DHCP設定例
DHCP設定例
Router2にDHCPの設定を行い、各PCにIPアドレスを付与し最終的にRouter3への疎通確認を行う。
Router2(config)#interface FastEthernet 0/0
Router2(config-if)#ip address 192.168.1.1 255.255.255.0
Router2(config-if)#no shutdown
%LINK-5-CHANGED: Interface FastEthernet0/0, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
Router2(config-if)#exit
Router2(config)#interface FastEthernet 0/1
Router2(config-if)#ip address 10.10.10.1 255.255.255.0
Router2(config-if)#no shutdown
Router2(config-if)#
%LINK-5-CHANGED: Interface FastEthernet0/1, changed state to up
Ruter3(config)#interface FastEthernet 0/0
Ruter3(config-if)#ip address 10.10.10.2 255.255.255.0
Ruter3(config-if)#no shutdown
Ruter3(config-if)#
%LINK-5-CHANGED: Interface FastEthernet0/0, changed state to up
初期設定が完了したらRouter2にDHCPの設定を行っていく。
##DHCPPOOLという名前でアドレスプールを作成
Router2(config)#ip dhcp pool DHCPPOOL
##DHCPプールで使用するネットワークを192.168.1.0で指定する
Router2(dhcp-config)#network 192.168.1.0 255.255.255.0
##デフォルトゲートウェイの設定
Router2(dhcp-config)#default-router 192.168.1.1
Router2(dhcp-config)#
Router2(dhcp-config)#end
Router2#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
##IPアドレスの配布を192.168.1.150から行うようにし、それ以前の番号は除外する
Router2(config)#ip dhcp excluded-address 192.168.1.1 192.168.1.149
Router2(config)#
これで各PCのIP Configurationの設定をDHCPに変更すると、192.168.1.150
から割り当てられる
ただ、このままpingを打ってもRouter3には192.168.1.0
のセグメントの登録がないため疎通できない。以下の設定を追加で行う
Ruter3(config)#ip route 192.168.1.0 255.255.255.0 10.10.10.1
Ruter3(config)#end
Ruter3#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 10.10.10.0/24 is directly connected, FastEthernet0/0
L 10.10.10.2/32 is directly connected, FastEthernet0/0
S 192.168.1.0/24 [1/0] via 10.10.10.1
これで改めてpingを打つと疎通確認できるようになる。
DHCPリレーエージェント
異なるネットワーク上に配置されたDHCPサーバにDHCPのメッセージを転送するための機能のこと。ルータに設定を行うと、ブロードキャストアドレス宛のメッセージをユニキャストアドレス宛てに変換してDHCPサーバに転送する。
デフォルト状態ではルータに届いたDHCP-DISCOVERは破棄される
ip helper-addressコマンド
書式:ip helper-address [DHCPサーバのIPアドレス]
CiscoルータでDHCPリレーエージェントの設定を行うコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。設定するインターフェイスは、ブロードキャストが着信するインターフェイスとなる。
DNS(Dynamic Name System)
ドメイン名とIPアドレスの対応情報を管理すること。ドメイン名とIPアドレスの対応は、「1対1」 「多対1」 「1対多」のいずれの設定も可能。ドメイン名からIPアドレスを解決する(フォワードルックアップ)、またその逆のことを名前解決(リバースルックアップ)という。
ドメインの範囲を分けて分散して管理するために、階層構造を取っている。一番上のルートドメインから始まり、その下にjpやcomといったトップレベルドメイン、更にその下にcoやneなどの第2レベルドメインと続く。
それぞれのドメイン情報を保持しているサーバを権威サーバと呼ぶ。
DNSルートサーバは、エニーキャストアドレスを使用して運用されている。複数のDNSルートサーバに同じIPアドレスを割り当て、エニーキャストアドレスとして運用することで、冗長化による耐障害性の向上や、サーバの地理的な分散配置が可能になる。
CiscoルータはDNSサーバとしても、クライアントとしても動作することができる。
ip dns serverコマンド
DNSサーバ機能を有効化するコマンド。グローバルコンフィギュレーションモードで行う必要がある。
ip hostコマンド
書式:ip host [ホスト名] [IPアドレス]
DNSサーバが回答する名前とIPアドレスのペアを登録するコマンド。グローバルコンフィギュレーションモードで行う必要がある。
ip domain lookupコマンド
DNSによる名前解決を行うコマンド。グローバルコンフィギュレーションモードで行う必要がある。
ip name-serverコマンド
書式:ip name-server [IPアドレス]
DNS参照先のIPアドレスを指定するコマンド。グローバルコンフィギュレーションモードで行う必要がある。
ip domain nameコマンド
書式:ip domain name [ドメイン名]
自身の所属するドメイン名を登録するコマンド。グローバルコンフィギュレーションモードで行う必要がある。ホスト名のみで問い合わせた場合に自動的に補完される。
ip domain listコマンド
書式:ip domain list [ドメイン名]
ホスト名のみでの問い合わせ時に自動的に補完されるドメイン名のリストコマンド。グローバルコンフィギュレーションモードで行う必要がある。
ip domain nameコマンドと両方が設定されている場合、ip domain nameコマンドで設定したドメイン名は補完には使用されず、ip domain listコマンドで設定したドメイン名のみ使用される。複数のドメイン名を指定した場合、その全てのドメイン名が順に補完され、問い合わせが行われる。