DynagenでCCIEを目指す
Marking Layer2
最終更新:
it_certification
-
view
1. 目的
- L2のマーキングの方法について確認します。
2. 構成
2.1. 設定概要
- R1, R2間はtrunkで接続します。
- static routeによってルーティングします。
- 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 = R2 f1/0 [[ROUTER R2]] f0/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 ! ! ! ip cef ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! interface FastEthernet0/0 ip address 192.168.200.1 255.255.255.0 duplex auto speed auto ! interface FastEthernet1/0 no ip address duplex auto speed auto ! interface FastEthernet1/0.10 encapsulation dot1Q 10 ip address 192.168.10.1 255.255.255.0 no snmp trap link-status ! interface FastEthernet1/0.20 encapsulation dot1Q 20 ip address 192.168.20.1 255.255.255.0 no snmp trap link-status ! ip http server ip classless ip route 192.168.201.0 255.255.255.0 192.168.10.2 10 ip route 192.168.201.0 255.255.255.0 192.168.20.2 20 ! ! ! ! ! ! ! ! line con 0 line aux 0 line vty 0 4 ! ! end
- R2
! version 12.3 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname R2 ! boot-start-marker boot-end-marker ! ! no aaa new-model ip subnet-zero ! ! ! ip cef ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! interface FastEthernet0/0 ip address 192.168.201.2 255.255.255.0 duplex auto speed auto ! interface FastEthernet1/0 no ip address duplex auto speed auto ! interface FastEthernet1/0.10 encapsulation dot1Q 10 ip address 192.168.10.2 255.255.255.0 no snmp trap link-status ! interface FastEthernet1/0.20 encapsulation dot1Q 20 ip address 192.168.20.2 255.255.255.0 no snmp trap link-status ! ip http server ip classless ip route 192.168.200.0 255.255.255.0 192.168.10.1 10 ip route 192.168.200.0 255.255.255.0 192.168.20.1 20 ! ! ! ! ! ! ! ! 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.2
3. [検証] cosによるマーキング
3.1. 設定投入
R1 Fa1/0のoutput方向で以下のマーキングを行います。
通信 | ACL | cos |
---|---|---|
SSH | permit tcp any any eq 22 | 5 |
tcp10880を使用したHTTP | permit tcp any eq 10880 any | 3 |
上記以外 | 定義なし | 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)#class-map CLASS_10880 R1(config-cmap)#match access-group name LIST_10880 R1(config-cmap)#exit R1(config)# R1(config)#policy-map POLICY_F10_OUT R1(config-pmap)#class CLASS_SSH R1(config-pmap-c)#set cos 5 R1(config-pmap-c)#exit R1(config-pmap)#class CLASS_10880 R1(config-pmap-c)#set cos 3 R1(config-pmap-c)#exit R1(config-pmap)#exit R1(config)# R1(config)# R1(config)#interface FastEthernet 1/0.10 R1(config-subif)#service-policy output POLICY_F10_OUT R1(config-subif)#exit R1(config)# R1(config)#interface FastEthernet 1/0.20 R1(config-subif)#service-policy output POLICY_F10_OUT
3.2. テストトラフィックの送信
Host OSからGuest OSへssh接続を行ったり以下要領のwgetコマンドを実行したりして、テスト用のトラフィックを送信します。
[root@localhost ~]$ wget -O /dev/null http://192.168.200.100:10880/ --2010-10-31 21:45:51-- 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 21:45:51 (8.59 KB/s) - `/dev/null' saved [44/44] [root@localhost ~]$
3.3. showコマンドによる確認
show policy-mapコマンドを発行し、設定内容を確認します。
R1#show policy-map Policy Map POLICY_F10_OUT Class CLASS_SSH set cos 5 Class CLASS_10880 set cos 3 R1#
show policy-map interfaceコマンドを発行し、パケットがどのクラスにマッチしたかを確認します。上記テストトラフィックを送信し、想定通りのクラスのカウンタが上昇した事を確認します。
R1#show policy-map interface FastEthernet 1/0.10 FastEthernet1/0.10 Service-policy output: POLICY_F10_OUT Class-map: CLASS_SSH (match-all) 92 packets, 9709 bytes <- Host OSからGuest OSへのSSH通信です。 5 minute offered rate 0 bps, drop rate 0 bps Match: access-group name LIST_SSH QoS Set cos 5 Packets marked 92 Class-map: CLASS_10880 (match-all) 4 packets, 632 bytes <- tcp10880を使用したHTTP通信です。 5 minute offered rate 0 bps, drop rate 0 bps Match: access-group name LIST_10880 QoS Set cos 3 Packets marked 4 Class-map: class-default (match-any) 0 packets, 0 bytes <- 上記以外の通信です。 5 minute offered rate 0 bps, drop rate 0 bps Match: any R1#
3.4. パケットキャプチャによる確認
R1 Fa1/0でパケットキャプチャを行います。cosによるマーキングが行われた事を確認します。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (100%)
;
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (100%)
;
4. [検証] cosを用いた
4.1. 設定投入
R2 Fa1/0のinput方向で、cosを用いてdscpでマーキングします。詳細は以下の通りです。
通信 | cos | ip precedence |
---|---|---|
SSH | 5 | EF |
tcp10880を使用したHTTP | 3 | AF11 |
上記以外 | 定義なし | default |
投入するconfigは以下の通りです。
R2(config)#class-map CLASS_SSH R2(config-cmap)#match cos 5 R2(config-cmap)#exit R2(config)# R2(config)#class-map CLASS_10880 R2(config-cmap)#match cos 3 R2(config-cmap)#exit R2(config)# R2(config)# R2(config)#policy-map POLICY_F10_IN R2(config-pmap)#class CLASS_SSH R2(config-pmap-c)#set dscp ef R2(config-pmap-c)#exit R2(config-pmap)#class CLASS_10880 R2(config-pmap-c)#set dscp af11 R2(config-pmap-c)#exit R2(config-pmap)#exit R2(config)# R2(config)# R2(config)#interface FastEthernet 1/0.10 R2(config-subif)#service-policy input POLICY_F10_IN R2(config-subif)#exit R2(config)# R2(config)#interface FastEthernet 1/0.20 R2(config-subif)#service-policy input POLICY_F10_IN
4.2. テストトラフィックの送信
Host OSからGuest OSへssh接続を行ったり以下要領のwgetコマンドを実行したりして、テスト用のトラフィックを送信します。
[root@localhost ~]$ wget -O /dev/null http://192.168.200.100:10880/ --2010-10-31 21:45:51-- 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 22:12:38 (8.59 KB/s) - `/dev/null' saved [44/44] [root@localhost ~]$
4.3. showコマンドによる確認
show policy-mapコマンドを発行し、設定内容を確認します。
R2#show policy-map Policy Map POLICY_F10_IN Class CLASS_SSH set dscp ef Class CLASS_10880 set dscp af11 R2#
show policy-map interfaceコマンドを発行し、パケットがどのクラスにマッチしたかを確認します。上記テストトラフィックを送信し、想定通りのクラスのカウンタが上昇した事を確認します。
R2#show policy-map interface FastEthernet 1/0.10 FastEthernet1/0.10 Service-policy input: POLICY_F10_IN Class-map: CLASS_SSH (match-all) 102 packets, 8412 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: cos 5 QoS Set dscp ef Packets marked 102 Class-map: CLASS_10880 (match-all) 16 packets, 2528 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: cos 3 QoS Set dscp af11 Packets marked 16 Class-map: class-default (match-any) 4 packets, 597 bytes 5 minute offered rate 0 bps, drop rate 0 bps Match: any R2#
4.4. パケットキャプチャによる確認
R2 Fa0/0でパケットキャプチャを行います。dscpによるマーキングが行われた事を確認します。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (100%)
;
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (100%)
;
5. [補足] cosの適用
5.1. cosの適用
cosによるマーキングはoutput方向のみです。また、native vlanに対しても適用する事ができません。trunkはdot1q, ISLの両方をサポートします。
もし、input方向やnative vlanに対して設定を行おうとした場合は、ちゃんとエラーメッセージを出力してくれます。エラーメッセージの例は以下の通りです。
もし、input方向やnative vlanに対して設定を行おうとした場合は、ちゃんとエラーメッセージを出力してくれます。エラーメッセージの例は以下の通りです。
R1(config-pmap)#interface FastEthernet 0/0 R1(config-if)#service-policy input POLICY_F00_IN Process 'set' action associated with class-map CLASS_SSH failed: Set cos not supported in input policy R1(config-if)#