DynagenでCCIEを目指す
Marking Layer3
最終更新:
it_certification
-
view
1. 目的
- L3のマーキングの方法について確認します。
2. 構成
2.1. 設定概要
- 初期設定はIPアドレスのみです。
- Host OS側でApacheを起動させます。
2.2. 構成図

2.3. netファイル
model = 3620 [localhost] [[3620]] image = C:\Program Files\Dynamips\images\c3620-j1s3-mz.123-18.bin ram = 128 [[ROUTER R1]] f0/0 = NIO_gen_eth:\Device\NPF_{8B89D910-5ED3-4A43-9DE9-6A272A3D7592} f1/0 = NIO_gen_eth:\Device\NPF_{5933302A-7AAA-475C-A8FE-A6B82B0C0F98}
2.4. 初期設定
- R1
! version 12.3 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname R1 ! boot-start-marker boot-end-marker ! ! no aaa new-model ip subnet-zero ! ! no ip domain lookup ! ip cef ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! interface FastEthernet0/0 ip address 192.168.200.1 255.255.255.0 duplex auto speed auto ! interface FastEthernet1/0 ip address 192.268.201.1 255.255.255.0 duplex auto speed auto ! ip http server ip classless ! ! no cdp run ! ! ! ! ! ! line con 0 line aux 0 line vty 0 4 ! ! end
2.5. Apache 設定
ホストOSにApacheをインストールし、ポートベースのバーチャルホストを定義します。構築方法はトップページ/手順書 サーバ系/Apache HTTP Server バーチャルホストの設定を参考にして下さい。
この検証例で実際に使用したhttpd.confの要所となる部分を以下に記載します。
この検証例で実際に使用したhttpd.confの要所となる部分を以下に記載します。
Listen 10880 Listen 10881 Listen 10882 NameVirtualHost *:10880 NameVirtualHost *:10881 NameVirtualHost *:10882 <VirtualHost *:10880> DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs" </VirtualHost> <VirtualHost *:10881> DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs10881" </VirtualHost> <VirtualHost *:10882> DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs10882" </VirtualHost>
2.6. サーバ側 ルーティング設定
- Host OS
route add 192.168.201.0 mask 255.255.255.0 192.168.200.1
- Guest OS
route add -net 192.168.200.0/24 gw 192.168.201.1
3. [検証] DSCPによるマーキング
3.1. 設定投入
R1 Fa0/0のinput方向で以下のマーキングを行います。
通信 | ACL | DSCP |
---|---|---|
SSH | permit tcp any any eq 22 | EF |
tcp10880を使用したHTTP | permit tcp any eq 10880 any | AF11 |
上記以外 | 定義なし | default |
投入するconfigは以下の通りです。
R1(config)#ip access-list extended LIST_SSH R1(config-ext-nacl)#permit tcp any any eq 22 R1(config-ext-nacl)#exit R1(config)# R1(config)# R1(config)#ip access-list extended LIST_10880 R1(config-ext-nacl)#permit tcp any eq 10880 any R1(config-ext-nacl)#exit R1(config)# R1(config)# R1(config)#class-map CLASS_SSH R1(config-cmap)#match access-group name LIST_SSH R1(config-cmap)#exit R1(config)# R1(config)# R1(config)# R1(config)#class-map CLASS_10880 R1(config-cmap)#match access-group name LIST_10880 R1(config-cmap)#exit R1(config)# R1(config)#policy-map POLICY_F00_IN R1(config-pmap)#class CLASS_SSH R1(config-pmap-c)#set ip dscp ef R1(config-pmap-c)#exit R1(config-pmap)# R1(config-pmap)# R1(config-pmap)#class CLASS_10880 R1(config-pmap-c)#set ip dscp af11 R1(config-pmap-c)#exit R1(config-pmap)#exit R1(config)# R1(config)#interface FastEthernet 0/0 R1(config-if)#service-policy input POLICY_F00_IN R1(config-if)#exit R1(config)# R1(config)#
3.2. テストトラフィックの送信
Host OSからGuest OSへssh接続を行ったり以下要領のwgetコマンドを実行したりして、テスト用のトラフィックを送信します。
[root@localhost ~]# wget -O /dev/null http://192.168.200.100:10880/ --2010-10-31 12:46:59-- http://192.168.200.100:10880/ Connecting to 192.168.200.100:10880... connected. HTTP request sent, awaiting response... 200 OK Length: 44 [text/html] Saving to: `/dev/null' 100%[================================================>] 44 --.-K/s in 0s 2010-10-31 12:46:59 (8.59 KB/s) - `/dev/null' saved [44/44] [root@localhost ~]#
3.3. showコマンドによる確認
show policy-mapコマンドを発行し、設定内容を確認します。
R1#show policy-map Policy Map POLICY_F00_IN Class CLASS_SSH set ip dscp ef Class CLASS_10880 set ip dscp af11 R1#
show policy-map interfaceコマンドを発行し、パケットがどのクラスにマッチしたかを確認します。上記テストトラフィックを送信し、想定通りのクラスのカウンタが上昇した事を確認します。
R1#show policy-map interface FastEthernet 0/0 FastEthernet0/0 Service-policy input: POLICY_F00_IN Class-map: CLASS_SSH (match-all) 247 packets, 20946 bytes <- Host OSからGuest OSへのSSH通信です。 5 minute offered rate 0 bps, drop rate 0 bps Match: access-group name LIST_SSH QoS Set dscp ef Packets marked 247 Class-map: CLASS_10880 (match-all) 9 packets, 1290 bytes <- tcp10880を使用したHTTP通信です。 5 minute offered rate 0 bps, drop rate 0 bps Match: access-group name LIST_10880 QoS Set dscp af11 Packets marked 9 Class-map: class-default (match-any) 19 packets, 2492 bytes <- 上記以外の通信です。 5 minute offered rate 0 bps, drop rate 0 bps Match: any R1#
3.4. パケットキャプチャによる確認
R1 Fa0/0でパケットキャプチャを行います。Fa0/0ではDSCPによるマーキングが行われていない事を確認します。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (100%)
;
R1 Fa1/0でパケットキャプチャを行います。DSCPによるマーキングが行われた事を確認します。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (100%)
;~
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (100%)
;
4. [検証] ip precedenceによるマーキング
4.1. 設定投入
R1 Fa0/0のinput方向で以下のマーキングを行います。
通信 | ACL | ip precedence |
---|---|---|
SSH | permit tcp any any eq 22 | 5(critical) |
tcp10880を使用したHTTP | permit tcp any eq 10880 any | 3(flash) |
上記以外 | 定義なし | default |
投入するconfigは以下の通りです。
R1(config)#no policy-map POLICY_F00_IN R1(config)# R1(config)# R1(config)#policy-map POLICY_F00_IN R1(config-pmap)#class CLASS_SSH R1(config-pmap-c)#set ip precedence 5 R1(config-pmap-c)#exit R1(config-pmap)# R1(config-pmap)#class CLASS_10880 R1(config-pmap-c)#set ip precedence 3 R1(config-pmap-c)#^Z R1# *Mar 1 00:09:21.219: %SYS-5-CONFIG_I: Configured from console by console R1# R1# R1#show policy-map Policy Map POLICY_F00_IN Class CLASS_SSH set ip precedence 5 Class CLASS_10880 set ip precedence 3 R1# R1# R1#show policy-map interface FastEthernet 0/0 R1# R1#
no policy-map POLICY_F00_INを実行すると、interfaceに対するpolicy適用の設定も消えてしまうようです。interfaceに対する設定を再投入します。
R1#configure terminal Enter configuration commands, one per line. End with CNTL/Z. R1(config)#interface FastEthernet 0/0 R1(config-if)#service-policy input POLICY_F00_IN R1(config-if)#^Z R1# *Mar 1 00:11:34.347: %SYS-5-CONFIG_I: Configured from console by console R1# R1#show policy-map interface FastEthernet 0/0 FastEthernet0/0 Service-policy input: POLICY_F00_IN Class-map: CLASS_SSH (match-all) 0 packets, 0 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: access-group name LIST_SSH QoS Set precedence 5 Packets marked 0 Class-map: CLASS_10880 (match-all) 0 packets, 0 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: access-group name LIST_10880 QoS Set precedence 3 Packets marked 0 Class-map: class-default (match-any) 0 packets, 0 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: any R1#
4.2. テストトラフィックの送信
Host OSからGuest OSへssh接続を行ったり以下要領のwgetコマンドを実行したりして、テスト用のトラフィックを送信します。
[root@localhost ~]# wget -O /dev/null http://192.168.200.100:10880/ --2010-10-31 14:06:42-- http://192.168.200.100:10880/ Connecting to 192.168.200.100:10880... connected. HTTP request sent, awaiting response... 200 OK Length: 44 [text/html] Saving to: `/dev/null' 100%[================================================>] 44 --.-K/s in 0s 2010-10-31 14:06:42 (8.59 KB/s) - `/dev/null' saved [44/44] [root@localhost ~]#
4.3. 設定確認
showコマンドやパケットキャプチャにより設定を確認します。
R1#show policy-map interface FastEthernet 0/0 FastEthernet0/0 Service-policy input: POLICY_F00_IN Class-map: CLASS_SSH (match-all) 178 packets, 14864 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: access-group name LIST_SSH QoS Set precedence 5 Packets marked 178 Class-map: CLASS_10880 (match-all) 38 packets, 20180 bytes 5 minute offered rate 1000 bps, drop rate 0 bps Match: access-group name LIST_10880 QoS Set precedence 3 Packets marked 38 Class-map: class-default (match-any) 7 packets, 857 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: any R1#
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (100%)
;
5. [補足] ログ併用不可
5.1. 設定例
ログ出力を行うACLとclass-mapを併用する事はできないようです。
R1(config)#logging buffered 4096 R1(config)# R1(config)# R1(config)#ip access-list extended LIST_SSH R1(config-ext-nacl)#permit tcp any any eq 22 R1(config-ext-nacl)#exit R1(config)# R1(config)#no ip access-list extended LIST_SSH R1(config)# R1(config)# R1(config)#ip access-list extended LIST_SSH R1(config-ext-nacl)#permit tcp any any eq 22 log R1(config-ext-nacl)#exit R1(config)# R1(config)# R1(config)#ip access-list extended LIST_10880 R1(config-ext-nacl)#permit tcp any eq 10880 any log R1(config-ext-nacl)#exit R1(config)# R1(config)#class-map CLASS_SSH R1(config-cmap)#match access-group name LIST_SSH access-lists with 'log' keyword are not supported R1(config-cmap)#^Z R1# *Mar 1 00:03:08.783: %SYS-5-CONFIG_I: Configured from console by console R1#show class-map Class Map match-any class-default (id 0) Match any Class Map match-all CLASS_SSH (id 1) Match none R1#
6. [補足] match-all, match-any
6.1. 誤設定の投入
CCIE筆記試験では、match-allによる設定ミスの例がよく出題されます。match-allによる設定ミスのシナリオを例示したいと思います。
想定する通信は以下の通りです。
想定する通信は以下の通りです。
通信 | ACL | DSCP |
---|---|---|
SSH | permit tcp any any eq 22 | EF |
tcp10880を使用したHTTP | permit tcp any eq 10880 any | AF11 |
tcp10881を使用したHTTP | permit tcp any eq 10881 any | AF11 |
上記以外 | 定義なし | default |
誤って投入してしまったconfigは以下の通りです。
R1(config)#ip access-list extended LIST_SSH R1(config-ext-nacl)#permit tcp any any eq 22 R1(config-ext-nacl)#exit R1(config)# R1(config)#ip access-list extended LIST_10880 R1(config-ext-nacl)#permit tcp any eq 10880 any R1(config-ext-nacl)#exit R1(config)# R1(config)# R1(config)#ip access-list extended LIST_10881 R1(config-ext-nacl)#permit tcp any eq 10881 any R1(config-ext-nacl)#exit R1(config)# R1(config)#class-map CLASS_SSH R1(config-cmap)#match access-group name LIST_SSH R1(config-cmap)#exit R1(config)# R1(config)# R1(config)#class-map CLASS_10880_10881 R1(config-cmap)#match access-group name LIST_10880 R1(config-cmap)#match access-group name LIST_10881 R1(config-cmap)#exit R1(config)# R1(config)#policy-map POLICY_F00_IN R1(config-pmap)#class CLASS_SSH R1(config-pmap-c)#set ip dscp ef R1(config-pmap-c)#exit R1(config-pmap)# R1(config-pmap)#class CLASS_10880_10881 R1(config-pmap-c)#set ip dscp af11 R1(config-pmap-c)#exit R1(config-pmap)#exit R1(config)# R1(config)# R1(config)# R1(config)#interface FastEthernet 0/0 R1(config-if)#service-policy input POLICY_F00_IN R1(config-if)#
6.2. 誤設定の確認
想定と異なり、AF11にマークされるパケットが1つもない事を確認します。
R1#show policy-map Policy Map POLICY_F00_IN Class CLASS_SSH set ip dscp ef Class CLASS_10880_10881 set ip dscp af11 R1# R1# R1#show policy-map interface FastEthernet 0/0 FastEthernet0/0 Service-policy input: POLICY_F00_IN Class-map: CLASS_SSH (match-all) 118 packets, 9700 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: access-group name LIST_SSH QoS Set dscp ef Packets marked 118 Class-map: CLASS_10880_10881 (match-all) 0 packets, 0 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: access-group name LIST_10880 Match: access-group name LIST_10881 QoS Set dscp af11 Packets marked 0 Class-map: class-default (match-any) 8 packets, 1232 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: any R1#
6.3. 再設定の投入
上記の設定でAF11にマッチするパケットが1つもないのは、CLASS_10880_10881に分類されるのは、「tcp10880かつtcp10881」と設定されているからです。想定通りの通信をさせるためには、「tcp10880またはtcp10881」と定義しなければなりません。
このような設定を定義するのが、match-anyキーワードです。以下のようにclass-mapを定義する時は、match-allかmatch-anyを選択する事ができます(省略するとmatch-allになります)。
このような設定を定義するのが、match-anyキーワードです。以下のようにclass-mapを定義する時は、match-allかmatch-anyを選択する事ができます(省略するとmatch-allになります)。
R1(config)#no policy-map POLICY_F00_IN R1(config)#no class-map CLASS_10880_10881 R1(config)# R1(config)# R1(config)#class-map ? WORD class-map name match-all Logical-AND all matching statements under this classmap match-any Logical-OR all matching statements under this classmap R1(config)#class-map
match-anyキーワードを用いて、再度設定を投入します。
R1(config)#class-map match-any CLASS_10880_10881 R1(config-cmap)#match access-group name LIST_10880 R1(config-cmap)#match access-group name LIST_10881 R1(config-cmap)#exit R1(config)# R1(config)#policy-map POLICY_F00_IN R1(config-pmap)#class CLASS_SSH R1(config-pmap-c)#set ip dscp ef R1(config-pmap-c)#exit R1(config-pmap)# R1(config-pmap)#class CLASS_10880_10881 R1(config-pmap-c)#set ip dscp af11 R1(config-pmap-c)#exit R1(config-pmap)#exit R1(config)# R1(config)# R1(config)#interface FastEthernet 0/0 R1(config-if)#service-policy input POLICY_F00_IN R1(config-if)#^Z
6.4. 再設定の確認
CLASS_10880_10881がmatch-allからmatch-anyに変わった事を確認します。また、AF11にマークされたパケットが存在する事を確認します。
R1#show policy-map interface FastEthernet 0/0 FastEthernet0/0 Service-policy input: POLICY_F00_IN Class-map: CLASS_SSH (match-all) 38 packets, 2728 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: access-group name LIST_SSH QoS Set dscp ef Packets marked 38 Class-map: CLASS_10880_10881 (match-any) <- match-allからmatch-anyに変わった事を確認します。 8 packets, 1197 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: access-group name LIST_10880 4 packets, 616 bytes 5 minute rate 0 bps Match: access-group name LIST_10881 4 packets, 581 bytes 5 minute rate 0 bps QoS Set dscp af11 Packets marked 8 <- AF11にマークされたパケットが存在する事を確認します。 Class-map: class-default (match-any) 4 packets, 591 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: any R1#