ネットワークスペシャリスト 令和元年 秋季試験 午後Ⅰ 問2を解説していきます。
出題テーマ:LB(負荷分散装置)
メインとなる出題テーマはLB(負荷分散装置)でした。
WebサービスをLBを用いて負荷分散されるように構築するという内容でしたので、DNSやHTTP、特にX-Forwarded-For(XFF)などの踏み込んだ内容も出題されていました。
出題されている問題自体のレベルはネットワークスペシャリストでよく出題されるような内容なのですが、問題を解くにあたってはこれらの知識が必要となります。
- LB(負荷分散装置)
- DNS
- HTTP
- X-Forwarded-For(XFF)
LBの操作・構築経験があるという方は、ルータやスイッチの操作・構築経験があるという方と比較するとかなり少ないかと思います。
これらの知識を知っている方やLBの操作・構築経験があるという方は、比較的簡単に解くことができた問題だと思いますが、知識や経験がないという方は別の問題を解いた方がよいかと思います。
LB(負荷分散装置)
LBがある構成の場合、クライアントはサーバではなくLB宛に通信を行います。
そして、LBが設定に基づいてサーバへ通信を振り分けて、サーバの負荷を分散させます。
言葉と図で書いても、LB(負荷分散装置)の基本的な動作はすごく簡単ではあります。
これだけですとLBを導入するメリットが伝わりませんので、もう少し詳しくご紹介していきます。
まずは振り分け方法ですが、均等に振り分けたり、サーバ側が同じ処理能力をもっていない場合がありますので、2:1のようにあえて偏りをつけて振り分けることも可能です。
また、コネクションの少ないもの、あまり負荷がかかっていなさそうなサーバへ振り分けることもできます。
その他にも振り分け方法があり、振り分け方法を細かく設定することができます。
次はサーバの障害時への対応です。
LBは一定間隔でサーバに対して死活監視を行っています。
監視が途絶えたサーバ、つまりは障害が発生している可能性があるサーバには通信を振り分けないようにしますので、設定変更などを行わずともサービスを継続して提供することができます。
これを応用すると特定のサーバに対して通信を振り分けないことも可能です。
通信を振り分けないようにしている期間で、設定変更やアップデートなどのメンテナンス作業を行うことができます。
ざっくりとではありますが、以上が簡単なLBの説明となります。
設問1
AレコードはIPアドレスを定義する資源レコードです。
Aレコードで登録した場合は、利用者が『shop.asha.com』の名前解決要求を行った場合にT社WAFサービスのIPアドレス(IP-w1)を返答します。
CNAMEはドメインの別名(エイリアス)を定義する資源レコードです。
CNAMEで登録した場合は、利用者が『shop.asha.com』の名前解決要求を行った場合に、『waf-asha.tsha.net』が返答され、利用者はこのドメインの名前解決要求をT社が管理するDNSサーバに行い、その返答をもってWAFサービスへアクセスを行います。
下線部としては、『T社はIP-w1を変更する場合があるので、CNAMEレコードを登録する方式を推奨している。』とあります。
Aレコードを用いて登録した場合は、T社がIP-w1を変更するたびにA社も設定変更をしなければならなくなってしまうわけです。
一方で、CNAMEを用いれば、T社がIP-w1を変更したとしても『waf-asha.tsha.net』の名前解決を行うためにT社のDNSサーバへ問い合わせがいきますので、A社としては設定変更を何も行わなくてよいとなります。
よって解答例としては、『T社がIP-w1を変更しても、A社は設定変更を何も行わなくてよいということ(37文字)』と解答することができます。
IPアドレスで登録するかドメイン名で登録するかの違いまで落とし込むことができれば、ネットワークスペシャリストでよく問われる内容となりますので解答することができたかと思います。
解答できなかった方も、IPアドレスで登録するかドメイン名で登録するかの違いはよく出題されますので、覚えておきましょう。
設問2 (1)
基本的には知識の問題となります。
まずは【ア】から考えていきます。
ラウンドロビンで負荷分散を行う場合、今回の問題ではサーバが8台ありますので、1回目の問い合わせはサーバ1、2回目の問い合わせはサーバ2、3回目の問い合わせはサーバ3というように『ア:順番』に通信を振り分けます。
次に【イ】について考えていきます。
LBの死活監視機能について出題されています。
重要な部分として、『LBとWebサーバ間の通信にHTTPを用い、ポート番号にHTTPのウェルノウンポート番号を用いることにした。』とあります。
なので、LBはHTTPのウェルノウンポートである『イ:80』で監視を行っていると考えることができます。
【ウ】について考えていきます。
監視方法としては、表1に記載があるようにGETリクエストを行っています。
そして、Webサーバから正常にレスポンスがある場合、ステータスコードとして『200:OK』が返答されますので、【ウ:200】となります。
【エ】について考えていきます。
Cookieの発行はWebサーバ(LB)側が行います。
その際、『エ:Set-Cookie』ヘッダに追加を行います。
最後に【オ】について考えていきます。
Webサーバ(LB)から受け取ったCookieを、クライアントはHTTPリクエスト時に『オ:Cookie』ヘッダに追加して送信します。
【ウ】~【オ】についてはHTTPに関する少し踏み込んだ知識なので、解答できなくてもしょうがないかとは思います。
設問2 (2)
LBでは通信の振り分けを行います。
ラウンドロビン方式で振り分けを行うとありましたが、単にこの振り分け方法だけを行った場合に、クライアントからの通信のたびに異なるサーバに振り分けが行われる可能性があります。
Webサーバ側としてはいきなり処理や入力途中のリクエストが来ることになり、不整合が生じてしまいます。
そこで用いるのが、セッション維持(パーシステンス)です。
セッション維持を用いることで、初回に振り分けが行われたサーバをLBが一定時間記憶しておき、その時間内はそのサーバに振り分け続けることで不整合を回避します。
今回は、『セッション維持機能には、HTTPリクエストの送信元IPアドレスに基づいて行う方式と、LBによって生成されるセッションIDに基づいて行う方式がある。』とあるようにHTTPリクエストの送信元IPアドレスに基づく方式とCookie・セッションIDに基づく方法の2通りが設定可能のようですが、送信元IPアドレスに基づく方式だと問題があるようです。
WAFサービスを利用した場合の通信経路について確認していきます。
WAFはクライアントからのHTTPリクエストとWebサーバからのHTTPレスポンスを検査対象とします。
そのため、『WAFサービスは、アクセスを許可したHTTPリクエストの送信元IPアドレスを、HTTPヘッダのX-Forwarded-Forヘッダフィールド(以下、XFFヘッダという)に追加する。XFFヘッダへの追加後に、HTTPリクエストの送信元IPアドレスを、HTTPレスポンスがWAFサービスに送られるようにするためのIPアドレス(以下、IP-w2)に変更する。』とあります。
つまり、WAFサービスを経由した場合はすべて送信元IPアドレスがIP-w2になってしまうため、送信元IPアドレスに基づいて行う方式を採用していた場合、8台あるWebサーバのどれか1台にしか通信が振り分けられず偏りが生じてしまうわけです。
ということで解答例としては、『通信が偏ること(7文字)』となります。
設問2 (3)
利用者からの通信はWAFサービスで一度復号化され検査を受けたあと、再度暗号化された状態(HTTPS)でLBに到着します。
LBではCookieの追加や、Cookieに基づいて負荷分散を行う必要があるので暗号化された状態(HTTPS)ですとこの処理を行うことができません。
なので、LBにてHTTPSを復号化し、暗号化されていないHTTPの状態でこの処理を行います。
その後LBでは復号化したHTTPの状態でWebサーバへ通信の振り分けを行います。
通信の復号化を行わないのであれば、TLSアクセラレーションを用いる必要はありません。
しかし、今回は設問2(1)で解答したようなCookieの追加やCookieを参照してセッション維持を行いますし、先の設問とはなりますが設問3(3)の処理でも復号化が必要となります。
ということで、解答例としては『HTTPヘッダの参照と編集する処理(17文字)』となります。
ネットワーク機器において一番処理能力が必要とされるのが、SSL/TLSの暗号化と復号化です。
専用のハードウェア(チップやASIC)にて、SSL/TLSの暗号化と復号化を行わせて、もともとのCPUやメモリは本来の振り分けなどの処理に影響がないようにするというのがTLSアクセラレーション機能です。
自作PCやゲーミングPCを購入されたことがある方はイメージしやすいと思いますが、グラフィックボードで高レートの映像の処理を行わせるように重い処理を専用のハードウェアにやらせるというイメージとなります。
ただし、LB自体の金額も結構するのですが、このTLSアクセラレーション機能付きの機器となると当然金額も上乗せとなります。
導入前には性能試験を行ったり、メーカーやベンダーに依頼して、この機能が本当に必要なのかを確認すると良いかと思います。
設問3 (1)
WAFサービスの停止期間は『WAFサービスを経由せずに、利用者のWebブラウザとWebシステム間で直接通信させるために、WAFサービス導入時に設定変更を予定している【カ】の設定を変更すること』とあり、通常はWAFサービスを介して通信が行われますが、WAFサービスが停止している期間は利用者から直接通信が行われるようです。
重要な部分として、『FWに設定しているWebシステムへのアクセス制御について、IP-w2を送信元とする通信だけを許可するように、設定を変更することにした。』とあります。
FWはWAFサービスを導入した際に上記のように、WAFサービスを介しての通信以外を受け付けない設定となっています。
この状態で利用者から直接通信が行われる場合は、送信元は不特定多数となりFWにて通信が遮断されてしまいますので、この点を変更する必要があると考えることができます。
よって解答例としては、『カ:FW』、『変更内容:送信元をany、宛先はLB、サービスはHTTPSの通信を許可すること(34文字)』となります。
設問3 (2)
下線部としては、『図2中の資源レコードの1行を書き換える』とあります。
WAFという文字が入っていますので、変更すべきレコードが『shop IN CNAME waf-asha.tsha.net.』であるというところまではわかった方は多いかと思います。
このCNAMEレコードにより『shop.asha.com』にアクセスしようとしたらWAFサービスへ誘導されますが、今回はWebシステム宛、LBがある構成ですのでLB宛に通信をさせるように変更すればよいのです。
なので、クライアントがLBにアクセスしてくれるようにするためには、『shop.asha.com』についてDNSの問い合わせを行ったらLBのIPアドレスを返答するように変更してあげればよく、『shop A IN 199.α.β.2』と変更すればよいと考えることができます。
レコードの記載方法については、表に同じAレコードの記載がありますので、そちらを参考にすればよいかと思います。
設問3 (3)
まずはX-Forwarded-For:XFFについて紹介していきます。
今回のWAFサービスはHTTPリクエストとHTTPレスポンスを検査対象としていますので、サーバからのHTTPレスポンスがWAFサービスに返答される必要があります。
そのため、送信元IPアドレスはもともとのクライアントのIPアドレスとなっているところから、WAFサービスのIPアドレス(IP-w2)に書き換えを行います。
これで、サーバからのHTTPレスポンスはWAFサービスに返答されるようになりますが、サーバ側としてはクライアントのIPアドレスがわからない状態となります。
通信上としては困りませんが、サーバでロギングなどを行う際に、すべてWAFサービスからの通信と記録されてしまい、実際はどのIPアドレスからの通信なのかを特定することが難しくなってしまいます。
そこで用いるのが、X-Forwarded-For:XFFです。
XFFヘッダ部分にクライアントのIPアドレスを挿入し、サーバはXFFヘッダを参照することでクライアントのIPアドレスを知ることができます。
実案件的には、インターネットブレイクアウトをする際に用いるプロキシサーバ(ネットワーク機器のプロキシサーバ機能)でも同じように送信元IPアドレスが変更となってしまい、上位のプロキシサーバやクラウドプロキシサーバ上で元のクライアントのIPアドレスがわからない状態となりますので、このような場合にXFFを用いることが多いかと思います。
問題解説に戻ります。
下線部として、『WebAPのアクセスログについて、WAFサービスの有無にかかわらず、XFFヘッダの情報からWebシステムへのアクセス時の送信元IPアドレスを記録することとし、LBに設定を追加した。』とあります。
WAFサービスでは『WAFサービスは、アクセスを許可したHTTPリクエストの送信元IPアドレスを、HTTPヘッダのX-Forwarded-Forヘッダフィールド(以下、XFFヘッダという)に追加する。』ということを行っています。
正常時はWAFサービスがXFFに送信元IPアドレスを追加しています。
WAFサービスの停止時は、WAFサービスを介して通信を行いませんので、上記のXFFヘッダに追記されていないためWebサーバでログを記録することができません。
WAFサービスの停止時は、利用者からLBに対して直接通信が行われますので、LBでXFFヘッダに追加してあげることでWebサーバでログを記録することができるようになります。
ということで解答例としては、『XFFヘッダに送信元IPアドレスを追加する設定(23文字)』と解答することができます。
ちなみに、この設定をLBに行った場合に、正常時WAFサービス→LBと通信が行われる場合はどうなるかというと、ちゃんと『クライアント、WAFサービス』のように上書きではなく追記という処理が行われますので、複数のIPアドレスが記載されるようになります。
公式解答例との比較
私の解答と公式解答を比較してみました。
満点ではないにせよ、少なくとも7割~8割程度は取れているかと思いますので合格ラインには達していると思います。
予想配点はあくまで予想ですので参考程度でお願いします。
出題テーマとしてはLB(負荷分散装置)で、LBの他にもDNS、HTTPヘッダ、特にX-Forwarded-For(XFF)についての知識がないと解答することが難しかったと思います。
問題自体のレベルはIPアドレスで登録するかドメインで登録するかや、FWの穴あけというようなネットワークスペシャリストでよく出題される問題でしたので、知識やLBの操作・構築経験があるという方は比較的簡単に解くことができたかと思います。
総じて、難易度としてはやや難しいだったと思います。
本番では知識や経験、なんなら初耳の出題テーマが出題されることもあります。
もちろん予習をするに越したことはないのですが、出題範囲が広く、何が出題されるかわからない状況では、予習に膨大な時間がかかってしまいます。
それでは、勉強に疲れてしまいますので、せめて過去問で出題されたテーマぐらいは抑えるようにしておきましょう。
本番で出題されてしまった場合は、潔くその問題を捨てて別の問題を選択するようにしましょう。
配点 |
|||
設問1 | T社がIP-w1を変更しても、A社は設定変更を何も行わなくてよいということ(37文字) | T社がIP-w1を変更しても、A社DNSサーバの変更作業が不要となる。 | 8点 |
設問2 (1) | ア:順番 イ:80 ウ:200 エ:Set-Cookie オ:Cookie |
ア:順番 イ:80 ウ:200 エ:Set-Cookie オ:Cookie |
各2点 |
設問2 (2) | 通信が偏ること(7文字) | 負荷が偏る。 | 5点 |
設問2 (3) | HTTPヘッダの参照と編集する処理(17文字) | HTTPヘッダを編集する処理 | 6点 | 設問3 (1) | カ:FW 変更内容:送信元をany、宛先はLB、サービスはHTTPSの通信を許可すること(34文字) |
カ:FW 変更内容:任意のIPアドレスからWebシステムへのHTTPS通信を許可する。 |
2点 8点 |
設問3 (2) | shop IN A 192.α.β.2 | shop IN A 192.α.β.2 | 5点 |
設問3 (3) | XFFヘッダに送信元IPアドレスを追加する設定(23文字) | XFFヘッダに送信元IPアドレスを追加する設定 | 6点 |
引用元
問題および解答例に関しては、独立行政法人 情報処理推進機構(IPA)より引用しています。