befs_anneの日記

雰囲気でネットワークをやっている

【資格】ネットワークスペシャリスト 平成26年 午後Ⅰ 問2のファイアウォールの仕様だとかを整理してみる

概要

ネットワークスペシャリスト 平成26年 午後Ⅰ 問2のファイアウォールの問題が何だかよくない気(俗に言う違和感)を発しているので、整理しながらこの気の発生源を突き止めてみる。

問題文から読み取れるFWの仕様

問題文から、FWの仕様に関する記述のみ抜粋する。私が想像したことはそれと分かるように記載している(つもり)。

  • Z社では、FW1を主系に設定し、FW2を副系に設定したActive-Standby冗長構成を採用し、運用を行っている。
  • 通常時、FWは、必ず主系がActive動作になり、副系がStandby動作になる仕様である。
  • FW間にはフェールオーバリンクと呼ばれる専用接続があり、設定情報の同期、管理情報の複製、及び対向FWのの動作状態の識別に使用されている。
  • FWの冗長化機能は、仮想アドレスを使用する方式ではなく、主系のIPアドレス及びMACアドレスを副系が引き継ぐ方式である。
  • 新たにActive動作となったFWは、切り替わったことを通知するフレームをFWはの各ポートから送信する。FWに接続しているスイッチは、このフレームを受信することで、レイヤ2機能で用いるテーブルを適切に更新することができる。
    • 疑問1: こんなフェールオーバ通知機構があってよいのだろうか?
      • 周囲の機器の実装に期待している?例えば、FWがフラッディングしたフレームを、ARPテーブルを持つノードが受信する→MACアドレステーブル上で、フレームを受信したポートに紐付いているMACアドレスを上書きする→MACアドレステーブル上で書き換えられたMACアドレスを、ARPテーブル上でも新しいMACアドレスに書き換える、的な……。そんなわけないか。問題中でもGrauitous ARPを引き合いに出しているということは、純粋にMACアドレステーブルしか更新しないんだと思う。
      • (追記)「FWの冗長化機能は、仮想アドレスを使用する方式ではなく、主系のIPアドレス及びMACアドレスを副系が引き継ぐ方式」だから、フェールオーバしてもゲートウェイとして提供するIPアドレスMACアドレスは変わらない。つまりフェールオーバした時にFWが通知する必要があるのは「自身のインタフェースの方向」だけだから、Gratuitous ARPはいらない、ということだと一晩寝たら気づいた。今回の障害は主系設定のFWを交換したからFWのMACアドレスが変わってしまったことによる、周囲のARPエントリとの不一致。「Gratuitous ARPだったらこんなこと起きなかった」だけであって、通常のフェールオーバにおいてもGratuitous ARPが必要だったかというと、そんなことはない(Gratuitous ARPのほうがベターだとは思う)。
  • Active動作のFWを副系から主系に切り戻すためには、手動設定が必要である(=プリエンプションしない)。
  • 起動時にフェールオーバリンクによって、他のActive動作中のFWを認識すると、主系又は副系であるかにかかわらずStandby動作に入る。このとき、FWは自己の設定情報を無視して、Active動作中のFWから設定情報を同期する。
    • 疑問2: 「起動時」とは「起動プロセス中」のことか?起動プロセスが終わった後のことか?それとも双方を含むのか?

障害発生の流れ

FW1が故障してから、U君がやらかして障害発生、解決するまでの一連の流れを、事後の調査で判明した原因も含めてまとめる。なお、問題文中では交換が済んだあたりから代替機をFW1と呼んでいるが、この記事では一貫して故障したFW1を「FW1」、代替機を「代替機」と呼ぶことにする。ただし、問題文を引用する際はその内容に準ずる。

  • FW1が故障したので、FW2にフェールオーバする。この時点でFW2は副系設定かつActive。
  • FW1の結線を外してからアンマウントする。
  • 代替機(工場設定のまま=主系設定)をマウントし、結線する(しかし、SW2との接続ができておらず)。
  • 代替機に電源投入。フェールオーバリンクが確立されていないので、現在ActiveのFW2の存在を認識できず、代替機もActiveでブートする。
  • 少し経ってからSW2のFW1接続ポートのLEDが消灯していることに気づき、挿し込む。リンクアップを確認(=FW間のフェールオーバリンクが確立)する。
    • 疑問3:「少し経ってから」とは、代替機の起動プロセス中か?それとも起動プロセスが終わった後か?
  • FW2は代替機の存在を認識し、Standbyへ移行する。同時に代替機の設定情報を自身に同期する(=Z社のフィルタリングルールを含む設定情報が失われていた理由)。
    • 疑問4: 代替機もFW2の存在を認識したのに、Standbyにならないのは何故か?
      • 他のActive動作中のFWを認識すると、「主系又は副系であるかにかかわらずStandby動作に入る」はずなので、代替機もStandbyにならなきゃおかしい。
      • 疑問1における「起動時」が「起動プロセス中」を指していて、この時点では代替機の起動プロセスが完了しているから?→だとしたらFW2も完了しているので、両方Activeのままなはず……。
      • 実はフェールオーバリンク上でアップタイムをやり取りしていて、Dual-Activeの場合は両機のアップタイムを比較して一定以上差がある場合短いほうはActiveのまま、みたいな裏設定が存在する?→問題文に書いとけよIPAナニコラタココラ。
  • 障害発生。苦情相次ぐ。
  • 代替機とFW2の設定を確認、Z社のフィルタリングルールを含む設定情報が失われていることを確認する。
  • FW1の設定情報を復元(とってあったFW1の設定情報のバックアップを代替機に投入?)し、FW2に設定情報を同期(手動?)するも、障害復旧せず。
  • 事故の原因を特定して通信を回復(=周辺機器のARPテーブルをクリア)した。障害復旧。

根本原因

障害復旧後に作成された「表1 FW故障時の交換作業手順」を見るに、FW1が故障した場合の手順の最初に「代替機の主系設定が解除されていることを確認する」とある。障害復旧後の事実確認においては「FW1が主系設定であったので…」の文言があるため、そもそもの原因は「代替機が工場出荷状態のままであり、工場出荷状態では主系設定になっている」ことが原因であると言えそう。

L2SW(SW2)の存在意義

障害発生の契機はU君が半挿しのケーブルをカチッとしてしまったことだが、これはあくまで契機であって原因ではない。「あってよかったSW2!」ということにもなっていない。フェールオーバリンクが確立しているかどうかだけであればFW間を直接接続していても分かるわけで、やはりSW2の存在意義はフェールオーバリンクが落ちている時に、SW2のポート状態からどちらのFWのポートが落ちているか(=故障しているか)を判断できる、ということのみであると言えそう。そんなことのために障害ポイント増やすかね?

主系と副系、ActiveとStandby

主系「設定」という言葉が問題文中にあることから、主系と副系には何らかの設定差異があることが分かる。単なる呼び名(奇数系と偶数系的な)や、それに基づく「もともと」Activeであるノードかどうか、だけではなさそう。起動時に主系設定だったら他のActive機を探して、いなければ自身がActive機になる。いればStandby機になる。ただし、疑問2と疑問4で提起している通り「起動時」の定義はあいまい。一方、起動時に副系設定だった場合は、Active機が存在するかどうかに関わらずStandby機になり、Active機がいたらその設定情報を自身に同期する。たぶん。

所感

「起動時」の定義とか「Dual-Activeの時の挙動」の定義がグダグダなんだと思う。CiscoのASAの挙動と酷似しているという情報もいただいたが、ごめんなさいもう眠くて何も考えられません。

フェールオーバーの設定 - Cisco Systems

【資格】ネットワークスペシャリスト 平成26年秋期 午後Ⅰ 問3

概要

ネットワークスペシャリスト 平成26年度午後Ⅰ問3の復習。ネットワークセキュリティがテーマの問題。

設問1

穴埋め。正答数を稼ぎやすいので全問正解したいところだが、5問中2問間違った。

ひとつはDDoSについて。Distributed Denial of Serviceの略だが、この問題では「XXX型DoS攻撃」のXXX、すなわちDistributedを日本語で何と訳すかという問題だった。いやらしい、いやらしすぎる。答えは「分散型」だった。かなり悔しい思いをしたので忘れないだろう。

e-words.jp

もうひとつはDNSの攻撃手法(DNSXXX攻撃)。攻撃対象のホストのIPアドレスを偽装して脆弱性をほったらかしにしているオープンリゾルバにクエリを送り、攻撃対象のホストに対して大量のDNSレスポンスを食らわせるDDoSの一種は「DNSアンプ」と回答したのだが、RFC5358とやらの記述を引用し、今は「DNSリフレクター」というらしい。

技術解説:「DNS Reflector Attacks(DNSリフレクター攻撃)」について

JPRSでは公式文書における本攻撃手法の名称として「DNS Amp攻撃」を使用してきましたが、今後はRFC 5358[BCP140]における記述に従い「DNS Reflector Attacks(DNSリフレクター攻撃)」を使用します。

e-words.jp

設問2

(1)

「踏み台」が正答のようだが、これはあくまで俗語であって問題の正答とすべきではないのでは……(IPAの公式解答も見たけど同じく「踏み台」になっていた)。個人的には(NW機器間の配線を指す)「わたり」と同一線上に存在する表現なんだけど。

(2)

FWが大量かつ大きいサイズのICMPを利用したDDoS攻撃に対応するために必要な機能は?という問題。

www.atmarkit.co.jp

「echoデータ」フィールドには、ICMPエコー・メッセージを利用するアプリケーションが何らかの値をセットしておく(データの内容は何でもよい)。一般的には、バイナリ・データ(0x00~0xffまでを順番に1ずつ変更したもの)が使われることが多い。

ICMPはメッセージ部が可変長になっており、内容は送信者の任意である。受信者はリプライの際に全く同じメッセージをリプライするようで、メッセージ部のサイズが大きいと往路と復路の両方で帯域や機器に負荷がかかる。これらを踏まえて「一定以上のサイズのICMPエコーを破棄する機能」でも大丈夫そうだが、IPAの回答例を見ると「断片化されたICMPエコーを許可しない機能」となっている。でかい=(FWに到着する頃には)断片化されている、ということだろうか?

ちなみにICMPフラッドについてググっている時に「smurf攻撃」がひっかかったのでメモしておく。

e-words.jp

攻撃の経路としてはDNSリフレクタと同様か。

設問3

(1)

問題中では「DMZDNSサーバのキャッシュ機能を無効にする」設計になっており、これをしないことによるセキュリティリスクを答える問題。DNSキャッシュポイズニング絡みだろうと思ったが、うまく文に出来なかった。

正答は「DNSキャッシュが改ざんされる」とある。

www.atmarkit.co.jp

ここで、フルリゾルバのキャッシュに何らかの偽情報を注入することができると、エンドユーザーのクエリに対して偽情報を答えさせることができ、エンドユーザーを偽のWebサイトに誘導したり、エンドユーザーのメールなどを盗んだりすることができる。この行為を「DNSキャッシュポイズニング(キャッシュ汚染)攻撃」と呼ぶ。一度キャッシュへの注入が成功するとキャッシュでの生存期間、誘導が成功する。生存期間の長い情報を注入することで、汚染を長く継続することができる。

キャッシュ機能を無効にしておけば、悪意のあるDNSレスポンスがキャッシュされることはない。

(2)

DNSサーバの設計に携わったことがないので未知の世界だった。与えられた条件は以下の通り。

  • DNSサーバが管理するドメインDMZと内部セグメントに分けて、それぞれでゾーン転送を行う。
  • DMZDNSサーバはキャッシュ機能を向こうにしたセカンダリ(DNSサーバ)の冗長構成として、DMZに存在するグローバルIPアドレスを割り当てられたWebサーバの名前解決に使用する。
  • 内部セグメントのプライマリDNSサーバは、DNSの問い合わせを受けずにセカンダリDNSサーバにだけゾーン転送する。
  • 内部セグメントのセカンダリDNSサーバは、内部セグメントに設置されたデータベースサーバの名前解決に使用する。

ゾーン転送のおさらいをしておく。更新したゾーン情報をセカンダリに同期するための機能。

3 Minutes Networking No.68

www.atmarkit.co.jp

TSIG(Transaction Signature)は、なりすましセカンダリに対してゾーン転送することを防ぐための機能。

www.atmarkit.co.jp

(3)

内部から外部への不正な通信を発見、防止するためのFWでの対策を2つ挙げろ、という問題。これ、ネスペの不文律なのか知らないが、「XXまたは◯◯」かつ「2つ挙げよ」の場合、XXでひとつ、◯◯でひとつ回答するということらしく、それに則ると発見と防止それぞれのために必要な対策を答えることになる。

「通信の宛先が海外など不審なものでないかを確認する」「ペイロードが機密情報かどうかを確認する」と回答したのだが、前述の不文律もあるので「うーんそういうんじゃないんだよね」とバツ食らう気がする。正答は「内部から外部への通信に対する遮断ルールを設定する」(防止)「FWで遮断した通信の結果ログを監視する」(発見)ということらしい。一般的にはホワイトリストを用いると思うのだが、前者はあらかじめ某国宛の通信を遮断しておくとかそういうことだろうか……。あまり納得がいかない問題。

設問4

(2)

(インシデント)対処結果の報告の後、将来発生するインシデントへの対応として、セキュリティ担当者が実施すべき事項を述べよ、という問題。「恒久的な防止のための対策を検討する」と回答したのだが、どうやら「将来発生するインシデント」という文言があることによって「再度発生すること」を前提としているようで、次回同じことが起きた時により迅速に対応できるよう「対処結果の評価を行いインシデントの対処方法を見直す」が正答となっていた。

所感

セスペはネスペの部分集合のような気がしてきた。セキュリティ分野の問題でもあまり点を取れていないので、セスペの参考書を見直すのもいいかもしれない。通勤バッグが重たくなる……。

【資格】ネットワークスペシャリスト 平成26年秋期 午後Ⅰ 問2

概要

ネットワークスペシャリスト 平成26年度午後Ⅰ問2の復習。ファイアウォールの障害対応がテーマの問題。問題集はまだ1周目だが、この問題だけ回答を書いた紙をどっかにやってしまったので、実質2周目である。故に全問正解した。1周目は半分くらいしか解けていなかったような……。

設問1

穴埋め。特に迷うことなく全問正解。唯一気になったのはステートフルフェールオーバーの「ステートフル」の定義。

www.infraexpert.com

FWにおいてステートフルと言えば後から続くのはインスペクションの方が印象が強く、「ステートフルフェールオーバー=設定情報の同期」というのがあまりピンと来なかった。

設問2

(3)

この問題のAct-Sbyで動作する2台のFWの間に1台SWが存在する。どうやら障害切り分けの際にメリットがあるということらしく、そのメリットとは何か答えよというのが問題。

答えは、FW間を接続するリンクの両端のポートのうちどちらかが故障してダウンした場合、SWがないと両ポートともダウンしてしまうが、SWを挟んでおけば故障していない方のポートはアップしたままなので、切り分けがカンタン!というものである。

障害ポイントを増やす以上のメリットがあるとは思えないが、よくある選択なのだろうか?

(5)

この問題で使用されているFWはF/Oの際にActive系が(Gratuitous ARPではなく)フレームで通知するため、ARPテーブルの更新がされない。Act系の装置が故障し予備機に入れ替えた際に通信断が起きたのはこれが原因であり、(Gratuitous ARPを出さないことやAct-Sbyの決定アルゴリズムがあまりにお粗末なのを嘆いてもしかたがないので)「FWを交換したら周りの装置のARPテーブルを手動でクリアしよう!」という運用になった。

じゃあどの機器のARPテーブルを更新すればいいの?が問題であり、これは単純にFWと接続されている、ARPテーブルを持つ(=L3を認識する)機器を答えればよい。

恥ずかしながら1周目はまんまとひっかかって「SW1」と書いたわけだが、この問題でのSWはL2スイッチなのでARPテーブルは(管理用IP以外は)持たないと考えてよい。

設問3

(1)

まず、企画部と営業部のVLAN間ルーティングを廃止したことでFW直下のL3SWは不要になる。次に何と交換するかだが、DMZでWebサーバとDNSサーバを収容しているSW4と交換すれば、FW故障交換の際のARPテーブル更新がサーバ2台分からL3SWの1台分だけで済む。よってL3SWとSW4を交換するのが得策と言える。

(2)

L3SWを廃して仮想FWを各VLANのデフォルトゲートウェイにするということなので、2台のFWを2台のルータ、各仮想FWはマルチグループHSRPをイメージすると分かりやすい。Act系のFWを各インスタンスで別にすれば、物理FWの負荷分散が可能になる。

atnetwork.info

所感

FWの間にSW置くって……アリですか?

【資格】初級ウェブ解析士 受験後記

概要

今年の春にセスペを取得した後、秋のIPA試験まで時間があるので幅を広げる意味でウェブ解析を勉強してみようと思い立った。

SDNやパブリッククラウドが盛んになってきた頃から「ネットワークだけでご飯食べていけるのか?」という思いが常にあるし、それ以上にネットワークに限らずIT技術全般に対する興味が大きくなってきていたので、全レイヤの玄関口を覗くぐらいのことはしようと思っていた(最初の試みをウェブ解析にしたのにも色々理由はあるけれど、ここでは割愛する)。

メインウェポンにしようとは思っていないので、基本的な概念や用語を覚えられればいいかということで、WACAという団体が認定している初級ウェブ解析士を取得することにした。

www.web-mining.jp

取得までの道のり

CBTに合格することとレポート提出が認定の要件となっている。また講座が存在するが、初級ウェブ解析士の認定においては任意受講。 テキスト¥4,320、講座の受講¥10,800、受験¥17,280と最大で¥32,400かかる。私はフルで支払ったクチ。

予習

講座は1日限りでテキストの予習が前提とされていたため、1ヶ月前にAmazonでテキストを購入して一通りノートにまとめた。

テキストはそれなりの値段するだけあって、フルカラーで内容が充実している。が、そんなメリットを吹き飛ばさん勢いでとにかく 誤字脱字が多い。誤変換や「てにをは」の誤りだけでなく、講座の時に発覚したのは、「練習問題の正答例が誤っていた」こと。テキストとしてあってはならない致命的なミスだと思う。

講座

私はこちらにお願いした。

後藤塾 | ウェブ解析士認定講座で最も多くの講座を開催し、最も高い合格率のウェブ解析士認定講座を主催している後藤塾サイト

ウェブ解析というものの考え方を実践形式で学ぶことができて、とてもよい講座だった。この資格を取るうえで唯一納得できる出費。 受講者のレベルはまちまちで、企業に所属して業務としてウェブ解析を行っている方もいれば、個人事業主でサイトを運営している方もいた。

試験直前

講座を受けてその日のうちに試験、という方が大半だったが、私は業務経験がないこともあり不安だったので試験日を講座の一週間後にしていた。

資格取得において最も重要なのは テキストおよび講座で頒布された資料が持ち込み可 であるという点。結果テキストには大量の付箋が生い茂り、どんな問題が出ても一発で参考ページを開けるという状態にして試験に臨んだ。

試験

80%超の正答率で合格した。

時間と問題数のバランスが絶妙で、落ち着いて分かる問題から解いていく、というオーソドックスな作戦が功を奏したと思う。全問回答し終えた後に全問丁寧に見直してちょうど1時間だった。

レポート

実際にGAを使用してのレポート作り。とは言っても1から作成するわけではなくて、あらかじめGoogleスプレッドシートで作成されているテンプレートに沿ってGAを参照しながら値を埋めていき、それらの値から導き出せる仮説や対策を記載する形式。講座を受講した場合は講師に提出する。

このテンプレートも少々粗いと思った。文字列の揃えがバラバラだったり。あとグレーの罫線は私なら消す。

その後

今日(CBT受験から1.5ヶ月ほど)合格証が届いた。レポートを提出してからはそのフィードバックなどは特にないしメールでも正式に認定した旨の連絡は受けていない(と思う)が、試験結果は認定証の発送を以て替えさせて頂きます的なことなのだろうか?とにかく合格していてよかった。

所感

色々粗がありつつも、受験してよかった。難易度は、業務としてウェブ解析を経験している方であれば合格はそれほど難しくないと思う。私のように実務経験がない方の場合は、講座の受講はほぼマストと言っていい。テキストをしっかり読み込んで付箋を茂らせれば受講しなくてもなんとかなりそうだけれど、「資格を取る」という目的以上のメリットがあの講座にはあると思うので、ぜひ受講してほしい。

テキストの誤字脱字は早急に対策すべき。

【資格】ネットワークスペシャリスト 平成26年秋期 午後Ⅰ 問1

概要

Python写経を日課として組み入れることができずもどかしいが、残り1ヶ月をきったネスペを優先して勉強している最中。

ネットワークに携わって数年、ネスペの問題ですらまだまだ新しい発見があるので、試験対策がてら記事にしたためることにする。

問題概要

  • 予備校内のネットワーク構成に関する問題。
  • 拠点は本部と支部1~5、それぞれに業務系と動画系のセグメントが存在する。
  • 拠点間は2つの広域イーサで接続され、それぞれ業務系通信用、動画系通信用として使い分けている。
  • エッジルータは2台で筐体冗長しており、VRRPを使用して拠点内部のPCやサーバに対してデフォルトゲートウェイを提供している。VRRPインスタンスも業務系と動画系の2つ存在する。
  • 拠点間の経路情報はエッジルータが広域イーサを通してOSPFでやり取りしている。拠点内の経路を提供する上で最も短いプレフィックスを広告している。

設問1

  • 問題文

    • 本文中のア〜オに入れる適切な字句または数値を答えよ。
  • 回答

ウとエを間違えた。ウは「CoS」と回答した。CoSはVLANタグ内に含まれるフィールド。

www.infraexpert.com

www.infraexpert.com

DiffServは単語は知っているけどどのような動きをしているのかは全く把握していなかった。勉強するのもCCNP取った時以来だ……。

www.infraexpert.com

CoSを利用したL2マーキングの場合はトランクリンクでしかQoSできないので、ToSでのQoSが一般的。 ToSを利用したQoSは以下の2つに分かれる。

  • IP Precedene
    • 8ビットあるToSフィールドのうち、先頭3ビットだけ使う。
    • 23で8段階あるが、111と110が予約されているので実質6段階。
    • 内訳
      • 111: Network Control(予約済)
      • 110: Internetwork Control(予約済)
      • 101: Critical
      • 100: Flash Override
      • 011: Flash
      • 010: Immidiate
      • 001: Priority
      • 000: Routine
  • DSCP(Differentiated Services Code Point)
    • ToSフィールドのうち、先頭6ビットを使う。
    • はじめの3ビットが優先レベル、続く3ビットが破棄レベル。
    • 26の64段階かと思いきや、使われないビットパターンがあるため実際は21段階。
    • DSCPによる処理の決定をPHB(Per Hop Behavior)というらしい。
    • 何より驚きなのは、正式名称が「〜Protocol」ではないこと。
    • 内訳
      • Default
        • 文字通りデフォルトの優先度。ビットパターンは000 000(=0)。
        • CSの000 000と重複するのは……?
      • CS(Class Selector)
        • IP Precedenceとの下位互換性を保つための段階。優先レベル部の3ビットのみを使用し、破棄レベル部はすべての段階で000。
        • ビットパターンの解釈の仕方はIP Precedenceと全く同じ。
      • AF(Assured Forwarding)
        • 確認転送。優先レベル部が001(低)〜100(高)の4パターン、破棄レベル部が010(低)、100、110(高)の3パターンで変化するので計12段階。
      • EF(Expedited Forwarding)
        • 緊急転送。破棄されない。通常は音声トラフィックに割り当てる。ビットパターンは101 110(=46)。

QoSは以下の一連の処理によって行われる。

  • (着信)
  • 分類
    • IPアドレスやポート番号の他に、前述のIP Precedence値やDSCP値によって通信を分類する。
  • マーキング
    • 分類の結果をパケットにマーキングする。IP Precedence値やDSCP値。
  • キューイング
    • 送信する前に、分類(マーキング)毎のキューにパケットを貯める。
  • スケジューリング
    • どのキューにあるパケットを優先して送信するかを決める。
    • 色々な方式があるが、あるキューを最優先として、その他のキューに帯域幅制限を設けるLLQ(Low Latency Queuing)が主に使われる。
  • (送信)

参考ページにシェーピングとポリシングの説明がある(いつもどっちがどっちか忘れる)がまた別の機会に確認する。

設問2

(1)

VRRPの問題。

業務系セグメントのPCのデフォルトゲートウェイ設定については、ルータ間のVRRPの仮想IPアドレスを指定している、という回答をした。これでも正解になりそうな気がするが、問題集の回答例を見る限りは「業務系セグメント用のVRRPインスタンスの仮想IPアドレス」をデフォルトゲートウェイとして指定している、とするのがベストか?

また、2つある広域イーサ網のうち片側を使わせるためにVRRPの設定をどのようにすればよいかという問題については、拠点内の各ルータはそれぞれ別の広域イーサ網につながっているため、業務系VRRPインスタンスはA系のルータ、動画系VRRPインスタンスはB系のルータがマスターになるようにプライオリティを調整すればよい。また細かい話だが、万全を期すのであればVRRPは各ルータをマスター/バックアップと呼ぶ。HSRPはアクティブ/スタンバイなので注意する。HSRPがネスペに出ることはない。はず。

(2)

OSPFの問題。

支部1の各セグメントが10.1.1.0/24、10.1.2.0/24であり、問題文の制約上「最もプレフィックスが短くなるように経路情報の集約を行う設計」になっているはずなので、10.1.0.0/16とした。ABRという単語の意味を思い出すのに(まばたきほどだが)時間がかかったことを正直に記しておく……。

www.infraexpert.com

(3)

障害時の通信経路の問題。

ポイントはルータのWAN側ポート障害時。(対向のオブジェクトトラッキングをしていなければ)対向ルータのWAN側ポートが故障していてもVRRPのステータスは変わらない、という点がポイント。

(4)

業務系通信の帯域幅不足を補うための運用フォローについての問題。

障害時は両セグメントの通信が一方の広域イーサ網に集中してしまい、優先されない業務系通信の応答が遅れてしまうので、「業務系システムのアクセス集中を避けるための方策を定め、マニュアル配布及び掲示板で利用者に周知することにした。」さてどのような方策を周知したでしょうか?

回答例としては「緊急時のみアクセスしてもらうようにする」「利用者をグルーピングし利用時間帯を分ける」だったが、これら(特に前者)は障害の都度周知してやってもらうことでは?一度周知しただけで利用者はその通りに利用してくれるだろうか?納得しかねるが、これら以外の答えを思いつかないのでそういうことなのだと思う。

設問3

WAN高速化装置に関する問題。扱ったことがないので全くイメージが沸かなかった。

www.netone-pa.co.jp

(1)

PBRにおいてCIFSを何によって識別するか?

「宛先IPアドレスがFSのものであること」「宛先ポート番号がCIFSで利用しているものであること」を条件にすればよい。 CIFSのポート番号は445のみが今時っぽい。

mount.cifs

(2)

WASによる高速化はどのような時に有用か?

回答例が「ラウンドトリップタイムが大きい時」だった。なんだこの野暮ったい問題は……。ある意味ボーナス問題ってこと?

(3)

WASがデータの高速化処理を自動的に停止する機能が、どのような時に有用か?

もう片方のWASが壊れている時、というのが回答例。

所感

WAN高速化装置って一体何……?

【写経】【更新中】『みんなのPython 第3版』 Chapter 03 条件分岐とループ(最終更新: 20160906)

概要

『みんなのPython 第3版』から、「Chapter 03 条件分岐とループ」のサンプルコードを写経する。

03-01 if文で条件分岐する

  • if文の簡単な例
>>> year = 1868
>>> if year == 1868:
...     print("明治元年")
... 
明治元年
>>> 

else文を使う

  • else文の簡単な例
    • 条件が成り立たなかった時に実行したい命令がある時に使う。
>>> year = 1900
>>> if year == 1868:
...     print("明治元年")
... else:
...     print("明治", year-1867, "年")
... 
明治 33 年
>>>

elifを使った条件分岐

  • ifとelseだけを使った例
>>> year = 1912
>>> if year == 1868:
...     print("明治元年")
... else:
...     if year == 1912:
...             print("大正元年")
...     else:
...             print("明治", year-1867, "年")
... 
大正元年
>>>
  • elif文を使った例
>>> year = 1912
>>> if year == 1868:
...     print("明治元年")
... elif year == 1912:
...     print("大正元年")
... else:
...     print("明治", year-1867, "年")
... 
大正元年
>>> 
  • wareki.py
[~ 21:56:53 bef]$ cat wareki.py 
#!/usr/bin/env python
# encoding: utf-8

year = int(input("西暦:")) # キーボードから西暦を入力

if year == 1868:
    print("明治元年")
elif year < 1912:
    print("明治", year-1867, "年")
elif year == 1912:
    print("対象元年")
elif year < 1926:
    print("大正", year-1911, "年")
elif year == 1926:
    print("昭和元年")
elif year < 1989:
    print("昭和", year-1988, "年")
elif year == 1989:
    print("平成元年")
else:
    print("平成", year-1988, "年")

input()
[~ 21:56:58 bef]$ 

(20160905)

比較演算子

>>> year = 1868
>>> year == 1868
True
>>> year == 1912
False
>>> year
1868
>>> 
  • turtle4.py
[python_shakyo 23:55:35 bef]$ cat turtle4.py 
#!/usr/bin/env python
# encoding: utf-8

from turtle import *

speed('fastest')

for i in range(40):
    forward(100)
    if i % 4 == 1:
        right(160)
    elif i % 4 == 3:
        right(20)
    else:
        right(10)

input()
[python_shakyo 23:55:42 bef]$ 

複雑な比較 - 論理演算

論理演算子の優先順位

  • 正常に動作しない例
    • 「18歳以下、65歳以上、ただし0歳を除く」のつもりだが、0歳でTrueになる。
      • andがorよりも優先されているから。
>>> age = 0
>>> if age <= 18 or age >= 65 and age != 0:
...     print("True")
... else:
...     print("False")
... 
True
>>> 

- ()で優先順位を指定

age = 0 if (age <= 18 or age >= 65) and age != 0: ... print("True") ... else: ... print("False") ... False

(20160906)

【和訳】HP5120 Smart Link

概要

英語のドキュメントを読むのが面倒なので、日本語に訳しておく。

参照ドキュメント

https://h20565.www2.hpe.com/hpsc/doc/public/display?sp4ts.oid=4174705&docLocale=en_US&docId=emr_na-c03996810

概要

背景

シングルポイント障害の回避とネットワーク信頼性を保証するために、一般的にはアップリンクを2台の異なる機器に接続する。

2本のアップリンクで冗長性が実現できてはいるものの、ループの可能性をはらんでおり、多くの場合、STPかRRPPを利用することになる。しかし、前者は収束時間が長く、後者は構成や設定が複雑になりやすいし、そもそもリング型ネットワークに使われるものである。

Smart Linkは、STPの収束時間の遅さを改善した機能である。リンク冗長性と高速収束の両方を保ち、プライマリリンクに障害が発生した時は高速でバックアップリンクに切り替わる。Smart Linkには以下のような機能がある:

  • 二重化リンクの提供
  • 1秒以下での収束
  • 容易な設定

用語

Smart Linkグループ

Smart Linkグループは、マスターポートとスレーブポートから構成される。片方はトラフィック転送を行い、もう片方はスタンバイポートとしてトラフィック転送はブロックされている。ポートのシャットダウンや単方向リンクの検出などによってアクティブポート障害が発生した時、スタンバイポートがアクティブ状態になり、元々のアクティブポートはブロック状態に切り替わる。

マスター/スレーブポート

マスターポートとスレーブポートは、Smart Link内のポートの役割である。2つのポートがSmart Linkグループ内でupである時、マスターポートは優先的にパケットを転送し、スレーブポートはスタンバイ状態になる。マスターポート障害が発生した時、スレーブポートはトラフィック転送を代わりに行う。

マスター/スレーブリンク

マスターポートに接続されているリンクがマスターリンクで、スレーブポートに接続されているリンクがスレーブリンクである。

フラッシュメッセージ

フラッシュメッセージは、Smart Linkグループ内でリンクの切り替わりが発生した時に、他の機器に対してMACアドレス転送エントリとARP/NDエントリ(註: IPv6でのMACアドレス解決メカニズム)をリフレッシュするよう通知するために使われる。フラッシュメッセージは一般的なマルチキャストデータパケットであり、ブロック状態の受信ポートにはブロックされる。

プロテクテッドVLAN

Smart Linkグループは、いくつかのデータVLAN(プロテクテッドVLAN)の転送状態を操作する。Smart Linkグループ毎に異なるプロテクテッドVLANを持つ。プロテクテッドVLANにおけるポート状態はSmart Linkグループ内のポート状態に左右される。

(註: Switchover対象のVLAN。プロテクテッドVLANとして指定したVLANのみがSmart Linkグループ内のAct/Sby状態の影響を受けると思われる。)

送信コントロールVLAN

送信コントロールVLANは、フラッシュメッセージを送信するために使われる。リンクの切り替わりが発生した時、下位機器(downstream device)は、送信コントロールVLAN内でフラッシュメッセージをブロードキャストする。

受信コントロールVLAN

受信コントロールVLANは、フラッシュメッセージを受信および処理するために使われる。リンクの切り替わりが発生した時、(アップリンクに位置する)機器は、受信コントロールVLAN内でフラッシュメッセージを受信および処理し、MACアドレス転送エントリとARP/NDエントリをリフレッシュする。

(註: フラッシュメッセージをやり取りするVLAN。前者はSmart Linkグループ設定ビュー、後者はインタフェース設定ビューで設定する。)

Smart Linkの動作

リンク保護の仕組み

図22の場合、デバイスCのポート1のリンクはマスターリンク、ポート2のリンクはスレーブリンクとなる。ポート1がフォワーディング状態、ポート2はスタンバイ状態になる。マスターリンクに障害が発生した時、ポート2は転送処理を代わりに行い、ポート1はブロックされスタンバイ状態へ移行する。

NOTE: ポートがフォワーディング状態に切り替わった時、ポート状態が変わったことがログとして通知される。

トポロジチェンジの仕組み

リンクの切り替わりによって、全てのデバイスが持つMACアドレス学習とARP/NDエントリはタイムリーなものでなくなってしまうため、正しいトラフィック転送のために、これらフォワーディングエントリを更新する仕組みが必要になる。以下2つの仕組みが提供されている。

  • アップリンクからのトラフィックによるMACアドレス学習

    • この仕組みは、他ベンダ機器を含むSmart Linkをサポートしていない機器が存在する環境でも有効である。
  • フラッシュアップデート

    • Smart Linkが有効な機器がフラッシュメッセージをバックアップリンクの先にある機器に送信する。この仕組みは、アップリンクの機器がSmart Linkのフラッシュメッセージを処理できる必要がある。

ロールプリエンプションの仕組み

図22の場合、デバイスCのポート1のリンクはマスターリンク、ポート2のリンクはスレーブリンクとなる。ポート1がフォワーディング状態、ポート2はスタンバイ状態になる。マスターリンクに障害が発生した時、ポート1は自動的にブロックされ、スタンバイ状態になり、ポート2はトラフィック転送を代わりに行う。マスターリンクが復旧した時、以下のうちどちらかが起きる:

  • Smart Linkグループにロールプリエンプションを設定していない場合、安定したトラフィック転送を維持するため、トラフィック転送をブロックされたままのポート1は、すぐにトラフィックの転送をすることはなく、次のリンクの切り替わりまでブロック状態を維持する。
  • Smart Linkグループにロールプリエンプションを設定している場合、ポート1はリンクが復旧した後すぐにトラフィックの転送を(ポート2の)代わりに始める。ポート2は自動的にブロックされ、スタンバイ状態へ移行する。

負荷分散の仕組み

リングネットワークでは、複数VLANのトラフィックを転送しうる。Smart Linkは負荷分散を実装することで、複数Smart Linkグループ内において複数VLANのトラフィックを転送することができる。

(註: 使わなそうだからペンディング。)

(20160826)

Smart Linkの連携の仕組み

Smart LinkとMonitor Linkの連携

Smart Linkは、上位機器のアップリンクの故障およびその回復を検知することができない。上位機器のアップリンク状態を監視するため、Monitor Link機能を(上位機器に)設定することができる。Monitor Linkはアップリンクポートのup/down状態をダウンリンクポートのup/down状態と同調させ、下位機器のSmart Linkによるリンク切り替えの契機となる。

Smart LinkとCFD(Conectivity Fault Detection)のCC(Continuity Check)機能の連携

Smart Linkは中間機器やネットワーク経路における障害(片方向リンク、誤接続ファイバ、パケットロスなど)およびその回復を検知することができない。リンク状態を監視するため、Smart Linkはlink detection protocol(LDP)を使わなければならない。障害(もしくはその回復)を検知した時、link detection protocolはSmart Linkに対してリンク切り替えを発生させるために通知を送信する。

(註: よく分からないのでペンディング。)

Smart Link設定タスクリスト

Smart Linkデバイスは、Smart Linkをサポートしており、かつSmart Linkグループとフラッシュメッセージを送信するためにコントロールVLANが設定されている機器を指す。

アソシエイテッドデバイスは、Smart Linkをサポートしており、特定のコントロールVLANからフラッシュメッセージを受信する機器を指す。

  • タスク
    • Smart Linkデバイスの設定
      • プロテクテッドVLANをSmart Linkグループに設定
      • メンバーポートをSmart Linkグループに設定
      • ロールプリエンプションをSmart Linkグループに設定(任意)
      • フラッシュメッセージの送信を有効化(任意)
      • Smart LinkとCCの連携を設定(任意)
    • アソシエイテッドデバイスの設定
      • フラッシュメッセージの受信を有効化

Smart Linkデバイスの設定

設定条件

  • ポートをSmart Linkグループのメンバーとして設定する前に、ループを防ぐためポートをシャットダウンしておく。Smart Linkグループの設定が全て終わってから、ポートをupにする。
  • スパニングツリーとRRPPを無効にし、それらのポートはどのアグリゲーショングループにも参加させない。

(註: Smar LinkのメンバポートとしてLAGが使えないわけではなく、LAGのメンバポートのみをSmart Linkグループに所属させてはいけないということ?)

NOTE: スパニングツリーを無効化にしている間ループが発生するかもしれないが、Smart Linkはその影響を受けない。

プロテクテッドVLANをSmart Linkグループに設定

MSTIを参照するかたちでプロテクテッドVLANをSmart Linkグループに設定する。プロテクテッドVLANを設定する前に、MSTIとプロテクテッドVLANとなるVLANをマッピングする(PVSTモードの場合、システムが自動的にVLANとMSTIマッピングする)。

(註: MST関連の設定をしなくて済むPVSTがベターだと思ったが、xSTPを有効にしていなくてもMSTI 0は存在する模様。全VLANをプロテクテッドVLANにするのであれば、これを指定すればよい。)

# システム設定ビューへ移行
system-view

# MSTリージョン設定ビューへ移行
stp region-configuration

# VLAN-MSTIマッピングテーブルを設定

## アプローチ1: VLANをひとつずつMSTIにマッピング
instance {instance-id} vlan {vlan-list}

## アプローチ2: マッピングルールを作成してそれに従ってマッピング
vlan-mapping modulo {modulo}

# MSTリージョン設定を有効化
active region-configuration

# 現在のMSTリージョン設定を確認
display stp region-configuration

# システム設定ビューへ移行
quit

# Smart Linkグループを作成し、Smart Link設定ビューへ移行
smart-link group {group-id}

# プロテクテッドVLANをSmart Linkグループに作成
protected-vlan reference-instance {instance-id-list}

メンバポートを設定

Smart Linkグループ設定ビューとインタフェース設定ビューのどちらでも設定することができる。

(註: どちらで設定しても機能には影響がないが、どちらで設定してもdisplay current-configurationではインタフェース配下に表示される。Smart Linkグループの設定から続けてやってしまいたい場合は前者、display thisで確認しながら設定していく場合は後者を推奨する。)

Smart Linkグループ設定ビューの場合

以下の通り:

# システム設定ビューへ移行
system-view

# Smart Linkグループを作成し、Smart Linkグループ設定ビューへ移行
smart-link group {group-id}

# メンバポートをSmart Linkグループに設定
port {interface-type} {interface-number} {master | slave}

インタフェース設定ビューの場合

以下の通り:

# システム設定ビューへ移行
system-view

# L2イーサネットインタフェース設定ビュー、もしくはL2アグリゲートインタフェース設定ビューへ移行
interface {interface-type} {interface-number}

# メンバポートをSmart Linkグループに設定
port smart-link group {group-id} {master | slave}

ロールプリエンプションをSmart Linkグループに設定(任意)

# システム設定ビューへ移行
system-view

# Smart Linkグループ設定ビューへ移行
smart-link group {group-id}

# ロールプリエンプションを有効化(デフォルト: 無効)
preemption mode role

# プリエンプションディレイを設定(デフォルト: 1秒)
preemption delay {delay-time}

NOTE: プリエンプションディレイはロールプリエンプションを有効にした後のみ影響する。

フラッシュメッセージの送信を有効化(任意)

Smart Linkグループに設定されたコントロールVLANは、他のSmart Linkグループに設定されたものであってはならない。設定したコントロールVLANは既に定義されているものかつプロテクテッドVLANとして設定されていること。Smart Linkグループに所属しているコントロールVLANは、同じSmart LinkグループのプロテクテッドVLANでなければならない。コントロールVLANを削除しないこと。さもなければ、フラッシュメッセージが正しく送信されない。

system-view

smart-link group {group-id}

# フラッシュアップデートを有効にし、コントロールVLANを指定(デフォルト: 有効、コントロールVLANはVLAN1)
flush enable [control-vlan {vlan-id}]

(20160827)