目次
概要
シンプルなNATの設定について、設定ミスの切り分けと修正を行います。
ネットワーク構成
下記のネットワーク構成で、プライベートアドレスのHOSTからインターネット(200.1.1.0/24)へパケットを送信できるように、R1でNATの設定を行っています。
設定概要
R1、ISP、HOSTでのIPルーティングおよびNATの設定概要は次の通りです。
R1
interface Ethernet0/0 ip address 192.168.54.94 255.255.255.224 ip nat outside ! interface Serial1/0 ip address 192.0.2.225 255.255.255.252 ip nat inside ! ip route 0.0.0.0 0.0.0.0 192.0.2.226 ! ip nat pool test 202.18.231.33 202.18.231.38 netmask 255.255.255.248 ip nat inside source list 1 pool test overload ! access-list 1 permit 192.168.64.64 0.0.0.31
ISP
interface Loopback0 ip address 200.1.1.1 255.255.255.0 ! interface Serial0/0 ip address 192.0.2.226 255.255.255.252 ! ip route 202.18.231.32 255.255.255.248 192.0.2.225
HOST
no ip routing ! interface Ethernet0/0 ip address 192.168.54.65 255.255.255.224 ! ip default-gateway 192.168.54.94
トラブルの症状
HOSTから200.1.1.1へPingを実行してもまったく応答が返ってきません。HOSTからインターネットへの接続ができない状態です。
HOST Ping
HOST#ping 200.1.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 200.1.1.1, timeout is 2 seconds: ..... Success rate is 0 percent (0/5)
R1からは200.1.1.1のPingの応答は返ってきます。また、HOSTからR1へのPingの応答は返ってきます。そのため、R1やISPでのルーティングそのもののには問題がないと考えられます。R1でのNATの設定に問題があると想定できます。R1でのNATの動作を確認するために、次のshowコマンドを実行しました。
- show ip nat translation
- show ip interface E0/0
- show ip interface S1/0
- show ip access-list
R1 showコマンドの結果
R1#show ip nat translation R1#show ip interface E0/0 Ethernet0/0 is up, line protocol is up Internet address is 192.168.54.94/27 Broadcast address is 255.255.255.255 Address determined by non-volatile memory MTU is 1500 bytes Helper address is not set Directed broadcast forwarding is disabled Outgoing access list is not set Inbound access list is not set Proxy ARP is enabled Local Proxy ARP is disabled Security level is default Split horizon is enabled ICMP redirects are always sent ICMP unreachables are always sent ICMP mask replies are never sent IP fast switching is enabled IP fast switching on the same interface is disabled IP Flow switching is disabled IP CEF switching is enabled IP CEF Feature Fast switching turbo vector IP multicast fast switching is enabled IP multicast distributed fast switching is disabled IP route-cache flags are Fast, CEF Router Discovery is disabled IP output packet accounting is disabled IP access violation accounting is disabled TCP/IP header compression is disabled RTP/IP header compression is disabled Policy routing is disabled Network address translation is enabled, interface in domain outside BGP Policy Mapping is disabled WCCP Redirect outbound is disabled WCCP Redirect inbound is disabled WCCP Redirect exclude is disabled R1#show ip interface S1/0 Serial1/0 is up, line protocol is up Internet address is 192.0.2.225/30 Broadcast address is 255.255.255.255 Address determined by non-volatile memory MTU is 1500 bytes Helper address is not set Directed broadcast forwarding is disabled Outgoing access list is not set Inbound access list is not set Proxy ARP is enabled Local Proxy ARP is disabled Security level is default Split horizon is enabled ICMP redirects are always sent ICMP unreachables are always sent ICMP mask replies are never sent IP fast switching is enabled IP fast switching on the same interface is enabled IP Flow switching is disabled IP CEF switching is enabled IP CEF Feature Fast switching turbo vector IP multicast fast switching is enabled IP multicast distributed fast switching is disabled IP route-cache flags are Fast, CEF Router Discovery is disabled IP output packet accounting is disabled IP access violation accounting is disabled TCP/IP header compression is disabled RTP/IP header compression is disabled Policy routing is disabled Network address translation is enabled, interface in domain inside BGP Policy Mapping is disabled WCCP Redirect outbound is disabled WCCP Redirect inbound is disabled WCCP Redirect exclude is disabled R1#show ip access-list Standard IP access list 1 10 permit 192.168.64.64, wildcard bits 0.0.0.31
ここまでの情報に基づいて、トラブルの原因を突き止めてください。
問題
- なぜHOSTからインターネット(200.1.1.1)への通信ができないのですか。
- HOSTからインターネットへの通信ができるようにするためには、どのように設定を修正すればよいですか。
解答
なぜHOSTからインターネット(200.1.1.1)への通信ができないのですか。
NATの設定が間違っているため、アドレス変換が行われないから。NATの内部ネットワークと外部ネットワークの指定が逆になっている。また、NAT対象パケットを指定するアクセスリストの設定が間違っている。
HOSTからインターネットへの通信ができるようにするためには、どのように設定を修正すればよいですか。
R1
interface Ethernet0/0 ip nat inside ! interface Serial1/0 ip nat outside ! no access-list 1 permit 192.168.64.64 0.0.0.31 access-list 1 permit 192.168.54.64 0.0.0.31
ワンポイント
- NATによるアドレス変換は、内部ネットワークと外部ネットワーク間で転送されるNAT対象パケットに対して行う
- アクセスリストやルートマップによって、NAT対象パケットを指定する
解説
NATの基本的な設定についての設定ミスです。ワンポイントに挙げているNATの基本動作をしっかりと把握しておきましょう。
【NATの基本動作】
まずは、NATの基本動作のおさらいです。NATのアドレス変換は、内部ネットワークと外部ネットワーク間で転送されるNAT対象パケットに対して行います。NATの内部ネットワークと外部ネットワークの指定は、インタフェースコンフィグレーションモードで次のコマンドを使います。
(config-if)#ip nat {inside|outside}
そして、どのようにNATでアドレス変換をするかの設定がip nat inside sourceコマンドです。ip nat inside sourceコマンドの中でアクセスリストやルートマップによって、NATの対象パケットを指定することができます。アドレス変換は、ip nat inside sourceというコマンドのとおり、内部ネットワークのインタフェースで受信したNAT対象パケットの送信元IPアドレスを変換します。送信元IPアドレスをNATプール内のアドレスまたは、ルータのインタフェースのアドレスへと変換します。変換した内容は、show ip nat translationで確認できるNATテーブルに保持されます。
そして、自動的に逆方向の変換も行われるようになります。NAT変換したパケットが戻ってきた場合に元のアドレスに戻す必要があるからです。外部ネットワークで受信したパケットの送信先IPアドレスを変換します。そのときは、NATテーブルに保持されているアドレス情報に基づいて変換します。NATテーブルにないアドレスは、NATの変換を行いません。
【設定ミスの概要】
今回の設定ミスは、以下の2点です。
- 内部ネットワーク、外部ネットワークの設定ミス
- NAT対象パケットを指定するアクセスリストの設定ミス
【内部ネットワーク、外部ネットワークの設定ミス】
R1の設定でNATの内部ネットワーク、外部ネットワークは次のようになっています。
内部ネットワーク-S1/0
外部ネットワーク-E0/0
HOSTから送信されたパケットは、R1の外部ネットワークで受信します。すると、NATテーブルに何も情報がないので、NATの変換は行われずにそのままルーティングされます。ISPでそのパケットに返事をしようとすると、送信先IPアドレスは192.168.54.65です。ISPには、内部のプライベートアドレスのルート情報を登録していないので、ルーティングできません。ISPでdebug ip packetをしながら、HOSTからPingを実行するとその様子がよくわかります。
ISP debug ip packet
ISP#debug ip packet IP packet debugging is on ISP# *Mar 1 02:13:18.415: IP: tableid=0, s=192.168.54.65 (Serial0/0), d=200.1.1.1 (Loopback0), routed via RIB *Mar 1 02:13:18.419: IP: s=192.168.54.65 (Serial0/0), d=200.1.1.1, len 100, rcvd 4 *Mar 1 02:13:18.423: ICMP: echo reply sent, src 200.1.1.1, dst 192.168.54.65 *Mar 1 02:13:18.423: IP: s=200.1.1.1 (local), d=192.168.54.65, len 100, unroutable *Mar 1 02:13:20.391: IP: tableid=0, s=192.168.54.65 (Serial0/0), d=200.1.1.1 (Loopback0), routed via RIB *Mar 1 02:13:20.395: IP: s=192.168.54.65 (Serial0/0), d=200.1.1.1, len 100, rcvd 4 *Mar 1 02:13:20.399: ICMP: echo reply sent, src 200.1.1.1, dst 192.168.54.65 *Mar 1 02:13:20.399: IP: s=200.1.1.1 (local), d=192.168.54.65, len 100, unroutable *Mar 1 02:13:22.399: IP: tableid=0, s=192.168.54.65 (Serial0/0), d=200.1.1.1 (Loopback0), routed via RIB *Mar 1 02:13:22.403: IP: s=192.168.54.65 (Serial0/0), d=200.1.1.1, len 100, rcvd 4 *Mar 1 02:13:22.407: ICMP: echo reply sent, src 200.1.1.1, dst 192.168.54.65 *Mar 1 02:13:22.407: IP: s=200.1.1.1 (local), d=192.168.54.65, len 100, unroutable *Mar 1 02:13:24.371: IP: tableid=0, s=192.168.54.65 (Serial0/0), d=200.1.1.1 (Loopback0), routed via RIB *Mar 1 02:13:24.375: IP: s=192.168.54.65 (Serial0/0), d=200.1.1.1, len 100, rcvd 4 *Mar 1 02:13:24.379: ICMP: echo reply sent, src 200.1.1.1, dst 192.168.54.65 *Mar 1 02:13:24.379: IP: s=200.1.1.1 (local), d=192.168.54.65, len 100, unroutable *Mar 1 02:13:26.411: IP: tableid=0, s=192.168.54.65 (Serial0/0), d=200.1.1.1 (Loopback0), routed via RIB *Mar 1 02:13:26.415: IP: s=192.168.54.65 (Serial0/0), d=200.1.1.1, len 100, rcvd 4 *Mar 1 02:13:26.419: ICMP: echo reply sent, src 200.1.1.1, dst 192.168.54.65 *Mar 1 02:13:26.419: IP: s=200.1.1.1 (local), d=192.168.54.65, len 100, unroutable
HOSTからISPあてのパケットがNAT変換されるように、R1で内部ネットワーク、外部ネットワークを正しく設定します。
R1
interface Ethernet0/0 ip nat inside ! interface Serial1/0 ip nat outside
【NAT対象パケットを指定するアクセスリストの設定ミス】
内部ネットワーク、外部ネットワークを正しく設定しても、まだNAT変換が行われません。R1でNAT対象パケットを指定するためのアクセスリストの設定が間違っています。R1でNATの設定と関連づけているアクセスリストを確認すると、次のようになっています。
R1
R1#show run | include nat ip nat inside ip nat outside ip nat pool test 202.18.231.33 202.18.231.38 netmask 255.255.255.248 ip nat inside source list 1 pool test overload R1#show ip access-lists Standard IP access list 1 10 permit 192.168.64.64, wildcard bits 0.0.0.31
NAT対象パケットとして、アクセスリスト1を関連づけています。アクセスリスト1の中身が送信元IPアドレス 192.168.64.64 ~ 192.168.64.95 をpermitしています。HOSTのIPアドレスは192.168.54.65なので、アクセスリスト1にマッチせずNAT変換されません。R1で次のようにアクセスリストを修正する必要があります。
R1 アクセスリストの修正
no access-list 1 permit 192.168.64.64 0.0.0.31 access-list 1 permit 192.168.54.64 0.0.0.31
アクセスリストを修正して、HOSTから送信されたパケットがNAT対象パケットになれば、NAT変換が正しく行われるようになります。HOSTからISPまでの通信ができるようになります。R1でdebug ip natをしながらHOSTからPingを実行すると、次のような出力になります。また、NATテーブルにも変換したアドレス情報が登録されていることが確認できます。
R1 debug ip nat/show ip nat translations
R1#debug ip nat IP NAT debugging is on R1# *Mar 1 02:28:55.675: NAT*: s=192.168.54.65->202.18.231.33, d=200.1.1.1 [20] *Mar 1 02:28:55.763: NAT*: s=200.1.1.1, d=202.18.231.33->192.168.54.65 [20] *Mar 1 02:28:55.775: NAT*: s=192.168.54.65->202.18.231.33, d=200.1.1.1 [21] *Mar 1 02:28:55.803: NAT*: s=200.1.1.1, d=202.18.231.33->192.168.54.65 [21] *Mar 1 02:28:55.815: NAT*: s=192.168.54.65->202.18.231.33, d=200.1.1.1 [22] *Mar 1 02:28:55.819: NAT*: s=200.1.1.1, d=202.18.231.33->192.168.54.65 [22] *Mar 1 02:28:55.823: NAT*: s=192.168.54.65->202.18.231.33, d=200.1.1.1 [23] *Mar 1 02:28:55.827: NAT*: s=200.1.1.1, d=202.18.231.33->192.168.54.65 [23] *Mar 1 02:28:55.835: NAT*: s=192.168.54.65->202.18.231.33, d=200.1.1.1 [24] *Mar 1 02:28:55.835: NAT*: s=200.1.1.1, d=202.18.231.33->192.168.54.65 [24] R1#show ip nat translations Pro Inside global Inside local Outside local Outside global icmp 202.18.231.33:5 192.168.54.65:5 200.1.1.1:5 200.1.1.1:5
【設定ミスのまとめ】
NATのトラブルでの設定ミスをまとめたものが次の図です。
IPアドレッシング
- IPアドレスとは?
- なぜIPアドレスだけでなくMACアドレスも必要なの? ~IPアドレスとMACアドレスの違い~
- 通信の用途とIPアドレス ~宛先は1つ?それとも複数?~
- ユニキャストIPアドレスの構成
- クラスフルアドレス ~区切りを8ビット単位で~
- クラスレスアドレス ~区切りを好きなところに~
- IPアドレス設定の意味
- Cisco IPアドレスの設定・確認コマンド
- CiscoルータをDHCPクライアントに : ip address dhcpコマンド
- サブネッティング ~ネットワークアドレスを分割~
- サブネッティングの計算のポイント(サブネットのネットワークアドレスの簡単な求め方)
- IPアドレス計算ツール(ベータ)
- IPアドレス計算問題 ~CCNA試験対策~
- 不連続サブネット
- ネットワークアドレスの集約 ~ネットワークアドレスをまとめる~
- 自動集約
- グローバルアドレスとプライベートアドレス
- なぜプライベートアドレスではインターネットの通信ができない?
- NAT/PAT ~プライベートアドレスでもインターネットへ~
- Cisco NAT/PATのアドレスの意味
- Cisco NAT/PATの設定と確認
- Cisco NATの処理順序
- NAT 設定ミスの切り分けと修正 Part1