IPsecとQoS。AX620Rで同時に設定!使用例もわかりやすく解説します
こんにちは。
クレスコ・デシタルテクノロジーズのH.I.です。IT業界は2年目になります。
私は普段、金融系企業のネットワークシステムの設計構築業務を担当しています。
本記事では、現場で学んだIPsecとQoSの簡単な概要から、実務環境での使用例と
AX620R-2215に2つの機能を同時に設定する方法についてご紹介させていただきます。
■あわせて読まれている資料:
対応事例やネットワークサービス一覧を掲載!
→ネットワークテクノロジーサービス
目次[非表示]
- 1.IPsecとは
- 2.QoSとは
- 3.実務環境での使用例
- 4.同時に設定する際の注意点
- 5.設定方法とログ確認
- 5.1.①アドレスなど、諸設定
- 5.2.②IKEv2設定
- 5.3.③カラーリング設定
- 5.4.④QoS設定
- 5.5.⑤WireSharkキャプチャ
- 6.まとめ
- 7.引用元
IPsecとは
IPsec(Security Architecture for IP)とは、それ自体はプロトコルではなく、
インターネットでセキュアな通信を実現するためのフレームワークです。
金融系企業にかかわらず、現代における情報社会では、セキュアな通信環境が求められています。
どのようにして安全に通信するのか、その仕組みを紹介します。
IPsecにはトランスペアレントモードとトンネルモードと呼ばれる二つの通信モードがあります。
トランスペアレントモードでは、パケットの元のIPヘッダを変更せず、Layer4以上のデータ部のみを暗号化します。
それに対して、トンネルモードでは元のIPヘッダからペイロード部までを暗号化します。新たなIPヘッダを付与して、そのIPヘッダに基づいてパケットを転送します。
以上から、IPsecではトンネルモードが多く採用されています。
IPsecは複数のプロトコルから構成されていますが、
ここではルータに設定する際に重要な2つのプロトコルについてご説明します。
・IKE(Internet Key Exchange)
IKEとは、暗号化通信をするために必要な秘密鍵を安全に共有するためのプロトコルです。
IKEには、IKEv1とIKEv2がありますが、IKEv2はv1と比較してセキュリティ面が強固かつ設定も簡素なため、IKEv2が主流となっています。
暗号化区間において、IKEパケットのやり取りを行いIKEv2SA(Security Association)を確立することでセキュアな通信を可能にします。
IKEに関しては、過去のDT-blogにも掲載されておりますので、ぜひそちらの記事もご覧ください。
IPsecのパケットロス発生原因と対策 | 株式会社クレスコ・デジタルテクノロジーズ
・ESP(Encapsulated Security Payload)
ESPとは、認証と暗号化を行うセキュリティプロトコルです。
ESPでは元の転送パケットのIPヘッダ、TCP/UDPヘッダ、ペイロード部を暗号化します。
その際、パケット転送のために新しいIPヘッダを付与するので、
パケット内の送信元/宛先IPアドレスを暗号化することができます。
下図はトンネルモード通信でESPプロトコルを適用した際のカプセル化を示したものです。
※参考
ESPトレーラとは、次ヘッダやパディングのことを指します。
暗号化範囲のサイズを16Byteの整数倍に調整する機能などを持ちますが、ここでの説明は割愛します。
実務環境では、WANをまたぐ区間にトンネルインターフェースを作成し、
トンネルインターフェースにIPsecモードを適用します。
トンネル区間内では新IPヘッダのカプセル化により、IPsecルータ同士が通信しているように偽装されます。
QoSとは
QoS(Quality of Service)とは、通信サービスの質を保つために、通信の順番や量を調整する技術のことです。
通信に優先度を付与して優先度順にパケットを転送する優先制御や、アプリケーションごとに帯域幅を確保しておく帯域制御があります。
業務で発生する通信の中でも、重要度が高い通信もあれば低い通信もあると思います。
ここでは分類した通信に優先度を設定し、優先度の高いパケットから転送する
PQ(Priority Queue)についてご説明します。
PQを設定するには、まず重要度ごとにアクセスリストを使って、
送信元/宛先アドレスやポート番号などをポリシーとして通信を分類します。
そして、分類した通信にhigh,medium,normal,lowなどの優先度を設定します。
PQでは、上位の優先度のパケットがすべて転送されてから、次の優先度のパケットを転送します。
実務環境での使用例
これらの機能を実際にどのように使用しているかご紹介します。
IPsecは言わずもがなだとは思いますが、よりサイバー攻撃を受けるリスクが高いWAN区間にて暗号化通信を実施しています。
金融系企業で発生する通信は大きく勘定系通信と通常の業務通信に分けることができます。
QoSは、お客様の信頼に関わる勘定系通信等を最重要優先度に位置付け、通信が落ちないように適用します。
こうすることで、通常の業務通信で回線帯域を圧迫してしまう状況になったとしても、
より優先度の高い勘定系通信を流すことができます。
また、WAN区画で冗長化構成を構築している際にやり取りされる生死監視パケットも、他の通信に圧迫されて通信できなくなっては困りますので、高優先度に設定します。
同時に設定する際の注意点
暗号化とQoSを同時に適用する場合、単にそれぞれの設定をルータに流し込んでもうまく機能しません。
なぜなら、QoSは送信元/宛先アドレス、ポート番号などをポリシーとしてアクセスリストで分類した通信に対して優先度を設定しますが、暗号化通信によってそのポリシーとなるアドレスが偽装されてしまうからです。
アドレスによる通信の識別をすることができないので、対応策としてカラーリングの設定を適用します。
カラーリングとは、パケットに対してDSCP(後章にて説明)もしくは、IP Precedenceの値を付与する機能です。
具体的には、IPヘッダ内のToSフィールド(8bit)と呼ばれる部分のPrecedence(前3bit)を能動的に設定します。
ESPプロトコルの機能によってIPヘッダが暗号化されても、新IPヘッダは元のIPヘッダのPrecedenceを引き継ぐので、設定したPrecedence値で通信を識別することができます。
IP PrecedenceとToSは似たようなニュアンスで使われますが、簡単に単語の意味を解説しておきます。
-
ToS(Type of Service)=ToSフィールド
IPヘッダ内に存在する8bit(1Byte)のフィールド -
ToS値=IP Precedence値(単にPrecedence値とも)
ToSフィールド内の前3bitの値。8(2の3乗)段階の優先度を表す。 -
IP Precedence
IP Precedence値=ToS値を用いてパケットの優先度を表す仕組み
設定方法とログ確認
それでは実際にAX620R-2215(Ver10.6.21)にて設定する方法を紹介します。
以下に簡単な構成を用意しました。
RT-AとRT-B間をWAN区間と想定し、暗号化通信をします。
拠点Aから拠点Bに通信するとき、端末B1向けを第一優先、端末B2向けを第二優先、
その他通信を最低優先度とするケースでのQoSを適用する例を紹介します。
実務環境で使用されるイメージとしては、B1向けを勘定系通信、B2向けは重要度の高い業務通信、その他を優先度の低い業務通信として見立ててください。
RT-Aへの設定コンフィグを記載します。
①アドレスなど、諸設定
1-1. UFS(Unified Forwarding Service)キャッシュ有効化
ip ufs-cache enable
AX620R-2215 の各機能(ルーティングやNAT)で保持しているキャッシュを一元化して管理する機能のことをUFSキャッシュと言います。
複数サービスの検索結果(キャッシュ)を統合することで、必要な検索回数を減らし高速な転送を実現できます。
1-2.インターフェース、アドレス設定
device GigaEthernet0
no shutdown
device GigaEthernet2
vlan-group 1 port 1
interface GigaEthernet0.0
ip address 192.168.1.1/28
no shutdown
interface GigaEthernet2:1.0
ip address 172.16.1.254/24
no shutdown
②IKEv2設定
2-1.ルーティング設定
ip route 192.168.1.16/28 192.168.1.2 GigaEthernet0.0
ip route 10.255.1.0/24 Tunnel1.0
トンネルを生成するためのルーティングと、
生成したIPsecトンネルで通信するためのルーティングを設定します。
2-2.IKEv2認証情報設定
ikev2 authentication psk id keyid ID_A key char key_A
ikev2 authentication psk id keyid ID_B key char key_B
認証方式に事前共有鍵を指定し、自装置と対向装置のID と鍵の組み合わせをそれぞれ設定します。
2-3.IKEv2プロファイル設定
ikev2 profile IKE-PROFILE
anti-replay off
child-proposal enc aes-cbc-256
child-proposal integrity sha1
local-authentication psk id keyid ID_A
sa-proposal enc aes-cbc-256
sa-proposal integrity sha1
sa-proposal dh 2048-bit
ここでは暗号化アルゴリズム、認証アルゴリズム、自装置のIKEv2情報などを設定しています。
また、QoSとIPsecを併用する場合、IPsecのリプレイ防御機能によって通信が廃棄されてしまうため、「anti-replay off」でIPsecのリプレイ防御機能を無効化する必要があります。
2-4.Tunnel Interface設定
interface Tunnel1.0
tunnel mode ipsec-ikev2
ip unnumbered GigaEthernet0.0
ikev2 binding IKE-PROFILE
ikev2 connect-type auto
ikev2 outgoing-interface GigaEthernet0.0 auto
ikev2 peer 192.168.1.17 authentication psk id keyid ID_B
no shutdown
ここではトンネルインターフェースを作成します。
IPsecトンネルモード、IKEv2プロファイルの設定や、接続先の登録をします。
2-5.確認コマンド
以下コマンドでIKEv2SAを確認することができます。
双方向分のSAが確立されていれば問題ありません。
RT-A(config)# show ikev2 sa
IKEv2 SA - 2 created
③カラーリング設定
優先度は以下の表に従って対応させます。
3-1. 暗号化前のアドレスでアクセスリストにて通信を分類
ip access-list list_pre7 permit ip src any dest 10.255.1.1/32
ip access-list list_pre6 permit ip src any dest 10.255.1.2/32
ip access-list list_pre0 permit ip src any dest any
ここで分類したアクセスリストごとにPrecedence値を割り当てるので、リスト名を「list_preX」にしています。リスト名は制御文字、空白を含まない15文字以下で任意に設定してください。
パケットの分類の定義に合致しないパケットは、全て「normal」キューに格納されることになるので、「ip src any dest any」をprecedence0で設定します。
ちなみに、UDPのポート番号500はISAKMPプロトコルの第一メッセージを送信する際に
使われるポートです。SA確立のための最初のIKEパケットのやりとりになります。
ここでの詳しい説明は割愛します。
3-2. 設定したいPrecedenceごとにクラスマップを作成
class-map match-any class_precedence7
match ip access-list list_pre7 normal
class-map match-any class_precedence6
match ip access-list list_pre6 normal
class-map match-any class_precedence0
match ip access-list list_pre0 normal
ここでの「normal」は優先度を設定しない場合のデフォルト値として表示されます。
3-3. Precedenceを設定するためのポリシーマップ作成
policy-map set-precedence
class class_precedence7
set ip precedence 7
class class_precedence6
set ip precedence 6
class class_precedence0
set ip precedence 0
class class-local
class class-default
クラスに分類されなかったパケットは、ルータ内部で生成されたパケットの場合はローカルクラスに、それ以外の場合はデフォルトクラスに分類されます。
「class-local」と「class-default」はnoコマンドで削除できません。
ここで注意してほしいのが、クラスマップの書く順番です。
ポリシーマップでprecedence値の設定はコマンド順の上のポリシーから割り振りが行われます。
今回の例ですと、accesslist list_ precedence0 src any dest anyのため
それより後に優先度の高いPrecedenceを設定しようとしてもlist_ precedence0に合致してしまい、
下のポリシーが適用されません。
後からポリシーを追加する際は書く順番に気をつけましょう。
例:
policy-map set-precedence
class class_precedence7
set ip precedence 7
class class_precedence0
set ip precedence 0
class class_precedence6
set ip precedence 6
この順番ですとprecedence 6が適用されません。
また、クラスマップやポリシーマップの変更を行った際には、
帯域制御/優先制御の初期化コマンドで変更を反映させる必要があります。
clear policy-map interface
3-4.トンネルインターフェースに適用
interface Tunnel1.0
service-policy output set-precedence
送信パケットに対してprecedence値を設定するポリシーを適用します。
ここまでしてようやくprecedence値による通信の識別が可能となったので、QoSを適用していきます。
④QoS設定
4-1. 設定したprecedenceで通信を分類
ip access-list pq_list_high permit ip src any dest 192.168.1.17/32 precedence network
ip access-list pq_list_medium permit ip src any dest 192.168.1.17/32 precedence internet
ip access-list pq_list_sub-d permit ip src any dest 192.168.1.17/32 precedence routine
実際にPQを適用するリストなのでリスト名を「pq_list_XXX」にしています。
末尾のprecedenceの後ろの単語は、上記優先度対応表の最右列に記載しています。
precedence network(=precedence値が7)の通信をリスト名「pq_list_high」に分類します。
4-2. クラスマップで優先度を設定
class-map match-any class-pq
match ip access-list pq_list_high high
match ip access-list pq_list_medium medium
match ip access-list pq_list_sub-d sub-d
「pq_list_high」に分類された通信に優先度highを設定します。
4-3. ポリシーマップ作成
policy-map policy-pq
class class-pq
class class-local
class class-default
4-4. 物理インターフェースに適用
interface GigaEthernet0.0
service-policy enable
service-policy output policy_pq
4-5.確認コマンド
以下コマンドにて、ポリシーマップがどのインターフェースに適用されているか確認することができます。
RT-A(config)# show policy-map interface
Interface GigaEthernet0.0
Output policy-map policy-pq attached
Interface Tunnel1.0
Output policy-map set-precedence attached
⑤WireSharkキャプチャ
実際に暗号化とQoSが適用できているか、ポートミラーリング機能(ベンダによっては、モニターセッションやモニターポートと呼ばれる)をトンネル内の機器に設定して、トンネル内のパケットをWireSharkでキャプチャします。
5-1.Ping実施
●端末A(172.16.1.1)→端末B1(10.255.1.1)
送信元/宛先アドレスがWAN区間のIPアドレスに変換されています。
また、DSCP値がPrecedence7に対応したCS7になっています。
DSCPの詳しい説明は割愛しますが、ToSフィールドの前3bitがPrecedenceだったのに対して、DSCPは前6bitで表されるパケット優先度を設定するための値です。Precedence値に比べてより細かな(64段階)優先制御が可能です。
●端末A(172.16.1.1)→端末B2(10.255.1.2)
B1向けの通信と同様に送信元/宛先アドレスがWANのIPアドレスに変換されています。
WAN区間で盗聴されてもどこ宛の通信かわからないことが示されたと思います。
ですが、DSCP値がPrecedence6に対応したCS6になっていますね。
これにより通信の優先度の制御は問題なく行うことができます。
5-2.InOutグラフ(UDP通信)
実際に優先度が想定通り適用されているか、WireSharkの「入出力グラフ」を使って確認します。
帯域を圧迫するほどの通信を流すために、パケット生成ソフトの「nana」を使用します。
以下手順で通信を発生させます。
①最高優先度のB1向け通信を流し続ける。
②最低優先度の通信を回線帯域を圧迫するほどの発生させる。
③第二優先のB2向け通信を帯域の約40%発生させる。
④第二優先のB2向け通信を帯域を圧迫するほど発生させる。
この状況で、B2向けの通信が最低優先度の通信より優先され、かつ、
B1向けの通信が切断されなければ想定通り優先度が適用されています。
WireSharkの入出力グラフでDSCP値にてソートし、各通信の通信量を確認します。
フィルタは「ip.dsfield.dscp==0」のように入力してください。
上記グラフから、B1向け通信(赤線)は切断されず、B2向けの通信(緑線)はその他の通信よりも優先して通信しているので、想定通り暗号化している通信にもQoSが適用されていることがわかります。
まとめ
本記事では、IPsecとQoSの簡単な概要から、実際の使用例や設定方法を紹介しました。
それぞれの技術単体でもとても奥が深いものとなっていますので、もし興味を引く技術がありましたら、是非ご自身で深堀りしてみてください。
ここまで長文にお付き合いいただきありがとうございました。
次回以降のDT-blogもよろしくお願いいたします!
■サービス資料一覧はこちら↓
引用元
- DT-blog
https://biz.cresco-dt.co.jp/blog/c44
- NEC コマンドリファレンスマニュアル・設定事例集
https://jpn.nec.com/univerge/ix/Support/Troubleshooting/internetvpn-2.html
https://jpn.nec.com/univerge/ix/Support/Troubleshooting/qos-1.html
https://jpn.nec.com/univerge/ix/faq/qos.html#Q1-3
https://jpn.nec.com/univerge/ix/Manual/index.html
- IPsec関連
https://www.infraexpert.com/study/ipsec6.html
https://www.infraexpert.com/study/ipsec5.html
https://www.nic.ad.jp/ja/tech/ipa/RFC2406JA.html#2.4
https://hirotanoblog.com/ipsec-esp/729/#toc4
https://it-trend.jp/encryption/article/64-0080
https://itmanabi.com/ipsec/
https://milestone-of-se.nesuke.com/nw-basic/ipsec/ipsec-summary/
- QoS関連
https://www.infraexpert.com/study/telephony6.html
https://www.infraexpert.com/study/qos3.htm
https://www.infraexpert.com/study/qos5.htm
https://www.infraexpert.com/study/qos7.htm
https://www.itbook.info/study/qos5.html
https://www.itbook.info/study/qos10.html