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#