ひよっこエンジニアの備忘録

日常とかSEとしての備忘を書いていきます。

IPv6

[IPv6とは]
IPv4アドレスが枯渇に備えて開発されたプロトコル
IPv4の32bitに対してIPv6は128ビット(※)のアドレス長のため実質無制限にアドレスを割り当てられる。。
※最大340澗 ( 340,282,366,920,938,463,463,374,607,431,768,211,456 ) 個

特徴としては
・16進数表記
→128ビットを16bitごとにコロン(:)で区切り、8つのフィールドに分け16進数で表記。
 さらに以下のような省略表記が可能。
 -先頭の0は省略OK(0111→111,0001→1)
 -全て0のフィールドは1つの0に省略OK(0000→0)
 -全て0のフィールドが連続している場合は、0を全て省略して
2重コロン(::)に省略OK。(2001:0000:0000:aaaa...→2001::aaaa...)
 ※ただしアドレス内で一度だけしか使えない。
・自動設定機能
 →IPv6は自動設定機能を備えており、クライアントPCは自動的に
  IPv6アドレスを使用できる。
・経路集約
 →IPv6アドレスの階層構造が厳密であるため、より効率的な経路集約を実現し
  ルータの負荷を軽減。
・シンプルなヘッダ
IPv6の簡素なヘッダにより、パケット転送の際のルーティング処理による
 負荷が軽減される。
 (具体的にはチェックサムが削除されたことでエラー処理が不要になった。)
・モビリティ(移動性)
→ IPv6のMobile IPv6により移動通信中でも同一のIPアドレスを使用して通信を途切れなく通信できる。
・セキュリティ(安全性)
IPv6IPsecの実装が必須であり、実装させたい場合は、特別な機器を必要せずIPsecを実装できる。
・複数アドレス
IPv4では1NIC1アドレスだったが、IPv6はリンクローカル&グローバル等
 複数タイプのアドレスが割り当てられる。


IPv6アドレスは、プレフィックスとインターフェースIDにより構成される。
※プレフィックス=IPv4のネットワーク部に該当。
 インターフェースID=IPv4ホスト部に該当。



[IPv6アドレスの種類]
▼アドレスタイプ
・ユニキャストアドレス(1対1)
IPv4のユニキャストと同じように、1対1の通信で利用されるアドレス。
 このアドレスを使用し、1つのインターフェースを特定することができる。
マルチキャストアドレス(1対グループ)
IPv4マルチキャストと同じく、1対グループの通信で利用されるアドレス。
 マルチキャストは複数のインターフェースに割り当てることのできるアドレス。
 IPv6ではブロードキャストアドレスが存在しないため、マルチキャストアドレス
 の一部を同様の用途に割り振ることでブロードキャストと同等機能を実現。
・エニーキャストアドレス(1対グループ内の1つ)
IPv4にはないアドレス。マルチキャストと同じくグループ宛ての通信となるが
 グループに属する1つのインターフェースにパケットが到達すると、それ以上は
 配送されない。つまりグループで最も近いデバイスとだけ通信するようになる。
 エニーキャストは複数のインターフェースに割り当てることのできるアドレス。


▼ユニキャストアドレス
・リンクローカル(同セグ用)
→同セグの端末と通信する場合に使用するアドレス。
 リンクローカルアドレス宛てのパケットはルーティングされない。
 ※ルータを超えられない。
 先頭の10ビットが「1111 1110 10(FE80::/10)」続く54bitが
 全て0になるため「FE80::/64」の範囲となる。

・ユニークローカル(イントラ用)
IPv4のプライベートアドレスに相当する。異なるセグメント上の端末と
 通信できるが組織内ネットワーク(イントラネット)でのみ有効なアドレス。
 アドレスブロックは「FC00::/7」のIPv6アドレスとなるが、正確には
 以下の2つの「/8」のグループに分類することができる。
 ・FC00::/8 将来の定義用
 ・FD00::/8 アドレス中のグローバル識別子部分をランダムな値とし自由に使用可能


・グローバルユニキャスト(グローバル)
IPv4のグローバルアドレスに相当する。全てのIPv6ネットワークで一意となる。
 ローカル、組織内、インターネット等スコープの制限はなくどこでも利用可能。
 IANAが管理しており、現在解放されているグローバルユニキャストアドレスは
 以下のとおり。

 ・「 2001::/3 」から始まるアドレス→ISP
 ・「 2000::/3 」を用途別に /16 で以下のように分類。
  →「 2001::/16 」 ⇒ IPv6インターネット用アドレス
  →「 2002::/16 」 ⇒ 6to4用アドレス
  →「 2003::/16 ~ 3FFD::/16 」 ⇒ 現在、未割り当て


マルチキャストアドレス
マルチキャストアドレスは先頭の8ビットが「1111 1111(FF00::/8)」から始まる。
 次の4ビットはフラグ、次の4ビットはスコープ、最後の112ビットはグループID。
 フラグは、IANAによって永続的に割り当てられるものは 0 、
 一時的に割り当てられるものは 1 と指定。


[アドレス割り当て]
IPv6アドレスは、64ビットのプレフィックスと64ビットのインターフェースIDにより
構成される。
インターフェースIDは「手動」/「自動」のどちらかで構成。

自動で生成する場合、EUI-64と呼ばれるフォーマットを使用して自動生成する。
EUI-64は、IEEEによって標準化された64ビット長の識別子。
EUI-64による自動生成は、48ビットのMACアドレスの中央に
16ビットの「FFFE」を追加して64ビットに拡張することで
インターフェースIDが生成される。

EX)0050:5680:ABCDの場合
 1.48bitのMACを24bitに分割し「FFFE」を挿入
  0050:56FF:FE80:ABCD
 2.先頭から7bit目を反転
  00000000→00000010
3.16進数に戻してインターフェースID完成
  0250:56FF:FE80:ABCD
4.完成したインターフェースIDにプレフィックスをプラスし
  リンクローカルアドレス完成。
  FE80::0250:56FF:FE80:ABCD/64

[Neighbor Discovery]
IPv6ではNeighbor Discovery(ND)機能を使用しアドレスを解決する。
IPv4でいうARP
このNeighbor Discovery(近隣探索)は、ICMPv6の
Neighbor Solicitation(NS)メッセージを送信し、本メッセージを受信したノードは
Neighbor Advertisement(NA)メッセージを送信して応答し、ノード間で
IPv6通信が可能となる。
NSメッセージがARPリクエスト、NAメッセージがARPリプライに相当。

MACアドレスを知るため、ICMPv6のNeighbor Solicitation送信
②ICMPv6のNeighbor Advertisement受信、(これにMACアドレスが乗っている)
MACアドレス情報をキャッシュへ保存

「show ipv6 neighbors」コマンドでキャッシュ情報を確認する。


[ステートレス/ステートフル自動設定]

▼ステートレス自動設定
ステートレス自動設定では「プレフィックス」が自動的に設定され、
「インターフェースID」はEUI-64で生成される。
このステートレス自動設定はオートコンフィグレーションとも呼ばれる。
この方法はIPv6対応のルータとIPv6対応の端末とが、RSとRAメッセージを
やり取りすることで実現。

・RS(Router Solicitation/FF02::2)
 ルータ要請。IPv6対応ホストが、IPv6対応ルータに送信するメッセージ。
 IPv6のプレフィックス、デフォルトゲートウェイ等を要求するメッセージ。
・RA(Router Advertisement/FF02::1)
 ルータアドバタイズメント。RSを受信したときに応答するメッセージ。
 ホストに割り当てるプレフィックス、デフォルトゲートウェイの情報を含む。

IPv6対応のホストはインターフェースでIPv6が有効であれば、
 リンクアップした時点でリンクローカルアドレスが自動設定される。
②次にそのリンクローカルアドレスを送信元アドレスとして同セグ内のルータへ
 RS(ルータ要請)メッセージを送信し、グローバルユニキャストの
 プレフィックスを得る。
③ホストからRSメッセージを受信したルータはRA (ルータアドバタイズメント) を
 送信します。この情報にIPv6ホストに割り当てるプレフィックス、
 デフォルトゲートウェイ、有効期限などの情報が含まれています。
④RAを受信したホストは受信したプレフィックスと自身のMACアドレスを利用して
 EUI-64により生成したインターフェースIDを組み合わせることで、
 グローバルユニキャストアドレスを生成し自動設定が完了する


▼ステートフル自動設定
ステートフル自動設定では「プレフィックス と インターフェースID」を
DHCPv6サーバにより割り当てます。
またDHCPv4と同様にDNSサーバ等の情報も割り当て可能。

①Solicit(要請)/host→Server
②Advertise(通知)/Server→host
③Request(要求)/host→Server
④Reply(アドレス、オプション情報提供)/Server→host

ただしDHCPv6サーバ単体だけでは完全に機能しない。
ルータが送信するRA(Router Advertisement)のMフラグ/Oフラグという
2つのフィールドと連携する必要がある。

・Mフラグ
 IPv6アドレスをDHCPv6サーバで取得するか、RAで得たプレフィックスから
 自身で生成するかを決定。
 ONの場合、DHCPv6サーバから取得する。
 OFFの場合、RAで得たプレフィックスから自身で生成する。
・Oフラグ
 IPv6アドレス以外のパラメータをDHCPv6サーバから取得するか、
 取得しないかを決定。
 ONの場合、DHCPv6サーバから取得する。
 OFFの場合、DHCPv6サーバから取得しない(手動設定)

Ciscoのインターフェースはデフォルトで、MフラグOフラグともに
OFF( 0 )のためステートレス自動設定となる。
※アドレスは自身で生成、その他(DNS等)は手動設定
Mフラグ、Oフラグの設定方法は以下のコマンドにより変更可能

 ◆ Cisco IOS - M(Managed)フラグのON(1)にするための設定
 Cisco(config-if) # ipv6 nd managed-config-flag
 ◆ Cisco IOS - O(Other Config)フラグのON(1)にするための設定
 Cisco(config-if) # ipv6 nd other-config-flag

またDHCPv6-PD(prefix delegation)と呼ばれる
ホストまたはルータにプレフィックスのみを払い出すものもある。

uRPF(Unicast Reverse Path Fowarding)

[uRPFとは]
受信したパケットの送信元IPアドレスとルーティングテーブルの情報を基に、
パケットをフィルタリングする機能。
送信元IPアドレスがルーティングテーブルに存在しているかを確認し、
存在する場合はパケット転送を行い、存在しない場合は破棄する。

[uRPFモード]
uRPFには以下3つのモードがある。
・Loose Mode
→受信したパケットの送信元IPアドレスがルーティングテーブルに存在するか確認し、
 存在する場合はパケットを転送、存在しない場合はパケットを破棄する。
・Strict Mode
→受信したパケットの送信元IPアドレスと受信したインターフェースの組み合わせが
 ルーティングテーブルに存在するか確認し、存在する場合はパケットを転送
 存在しない場合はパケットを破棄する。
・VRF Mode
→受信したパケットに対応するVRFインスタンスごとにLoose Modeと同様の処理を行う。
 (前提として機器がVRFに対応している必要あり。)

[処理順序]
uRPFと ACLを適用している場合は以下の順で処理される。
1. インバウンドACLの処理
2. uRPFの処理
3. ルーティング処理
4. アウトバウンドACLの処理

[uRPF設定]
(config-if)#ip verify unicast source reachable-via { any | rx } [ allow-default ] [ allow-self-ping ] [ ACL番号 ]

▼パラメータ詳細
・{ any | rx }
 →uRPFモードの指定
  ・any:Loose Mode
  ・rx:Strict Mode
・allow-default
 →受信したパケットの送信元アドレスの確認にデフォルトルートを含める。
・allow-self-ping
 →ルータ自身からのpingを許可する。
  ※uRPFが有効なインターフェースは、
   デフォルトで自身のアドレスへのpingを破棄する。
ACL番号
 →uRPFによるチェックで破棄対象となったパケットを
  再チェックするためのACL番号を指定。
  ACLで許可されたパケットはuRPFで破棄対象となっても許可される。

正直文章だけ読んでもよくわからなかったのでGNS3でラボを作ってみた。
▼ラボ構成
f:id:nrlay00:20180326004839p:plain

これで1.1.1.1のPCから10.0.0.254までのPingを打ってみた結果、
想定通り疎通NG。
一応uRPFの設定外して疎通OKになるか試してみたら、、
疎通NGとなった。
よく考えたら1.1.1.0/24向けの戻りルートがないので
Ping通るはずがないですね…
不正なUDP通信をブロックするための機能なのか??と
推測しつつも、ラボ設定の正当性に若干疑問が残る状態で終了。

uRPFの設定入れるくらいなら素直にACL入れたほうが
分かりやすい気がするがどうなんだろう…

VACL(Vlan access-list)

[VACLとは]

VLANに着信するトラフィック(IN方向)に対して適用できるACL
L2経由、L3経由関係なく、以下のようなトラフィックをフィルタリング可能。
・VLAN内部でブリッジングされるトラフィック
・VLAN間でルーティングされるトラフィック

※通常のACLと違い送信トラフィック(OUT方向)は制御できないため注意。

[VACL設定]

VACLは、①ACL定義/②VACL定義/③VACL適用の三段階で設定する。

 ①ACL定義
 standard:
  (config)# access-list number [ permit | deny ] protocol src-ip mask
 extended:
  (config)# access-list number [ permit | deny ] protocol src-ip mask src-port dst-ip mask dst-port
 ※標準、拡張(名前付きでもOK)どちらでも設定可能。
  トラフィックの許可/拒否はVACL側で設定するため、
  この段階ではpermit/denyを意識しなくて良い。

 ②VACL定義
 (config)# vlan access-map map-name [ sequence-number ]
 (config-access-map)# match [ mac | ip ] address acl-number | acl-name
 (config-access-map)# action [ drop [ log ] | forward ]
※シーケンスナンバーは通常のACLと同様10区切りで設定する
 (若番から順番にチェックされていく)
 「match」で参照するACLを定義し「action」で許可/拒否の設定を行う。
 →ややこしいが「match ip address ~」の後はipアドレスではなく
  ACL番号orACL名を書くため注意。

 ③VACL適用
 (config)# vlan filter map-name vlan-list vlan-id
 ※「vlan filter ~」の後にVACL名、「vlan-list ~」の後に
  VACLを適用するVLAN番号を記載しマッピングする。

STP動作メモ

STP(SpanningTree Protocol:IEEE802.1D)
●ルートブリッジ選定
☆ルートブリッジ=ブリッジID(BID)が最小のスイッチ

BIDとは
→スイッチごとに一意な8バイトの値
→ブリッジプライオリティ(2バイト)+MACアドレス(6バイト)
 =BID(8バイト)

ブリッジプライオリティは2バイトのため0~65535の間の4096区切りで
定義される。(デフォルト中間地点の32768)

ブリッジプライオリティはデフォルト固定値のため、
基本的には最少MACアドレスのSWがルートブリッジとなる。

またブリッジプライオリティは4096区切りであれば手動で設定変更できるが、
自動で変更する以下マクロコマンドも存在する。
・(config)#spanning-tree vlan root primary
 →指定したVLAN内でブリッジプライオリティを最小にする
・(config)#spanning-tree vlan root secondary
 →指定したVLAN内でブリッジプライオリティを2番目に小さい値にする
 ※ブリッジプライオリティをデフォルト値であれば以下になる。
 ・primaryは24576「32768-8096=24576」
 ・secondaryは28672「32768-4096=28672」

なお「show span」で確認すると設定値よりもブリッジプライオリティが
若干高く見えるが、VLANIDがブリッジプライオリティ値に加算されるため。


●Roleの決定
ルートポート(RP)→BPDUを受信するポート
指定ポート(DP)→BPDUを送信するポート
非指定ポート(NDP)→RP、DPどちらにも選ばれなかったポート、
           通称ブロッキングポート

選定要素は下記の通り
・ルートブリッジへのパスコスト合計値が最小
→パスコストはリンクごとの帯域で決定(10G-2/1G-4/100M-19/10M-100)
・送信元ブリッジIDが最少
・送信元ポートIDが最少
→ポートIDは下記2バイトの値
 ポートプライオリティ(デフォルト128)+ポートインデックス(Fa0/1、0/2...)
→ポートプライオリティを弄ってなければ若番ポートの方が小さい値となる

●ポート状態憑依
ブロッキング
→最大遅延タイマー(デフォルト20秒)
→BPDU受信・データフレームは転送しない状態。
 直接接続されたリンク障害はブロッキングを飛ばしてすぐにリスニングへ移行
②リスニング
→転送遅延タイマー(デフォルト15秒)
→BPDU送受信・データフレームは転送しない状態。ここでBPDUを交換してRoleを確定させる
③ラーニング
→転送遅延タイマー(デフォルト15秒)
→BPDU送受信・データフレームは転送しない状態。MACアドレステーブルを構築し
 データフレーム転送準備を行う(まだデータフレームは転送しない)
フォワーディング
→BPDU送受信・データフレームを転送する状態。
※リンクダウンしているポートはDisable状態となりフレームを転送しない
※各種タイマー値は手動で変更可能だがルートブリッジのタイマー値に従う。
 (エッジスイッチのタイマー値を変えてもルートブリッジがデフォルトのままなら意味ない)

●STP ToolKit
・Portfast
→サーバやPC向けポートに設定する技術。STPのコンバージェンスタイマー50秒を飛ばして
 即フォワーティングへ移行する。
・BPDUガード
→PortfastポートでBPDUを受診した場合、ポートをerr-disable状態にする機能。
 不正なスイッチが接続されることを防ぐ。
・BPDUフィルタ
→PortfastポートでのBPDU送信を抑制する機能。
 グローバルで設定する場合とポートに設定する場合で動作が異なるため注意が必要。
 ▲グローバル…PortfastポートでBPDUを受信した場合、Portfast状態を解除し
        通常のSTPポートとしてBPDUを送受信させる
 ▲ポート単位…PortfastポートでBPDUを受信した場合、BPDUを無視する(自分から送信もしない)
・ルートガード
→管理外のスイッチがルートブリッジになることを防ぐ機能。
 ルートガードが有効なポートで上位BPDU(プライオリティが小さい)を受信すると
 ルート不整合状態(root-inconsistent:BPDUの転送を止める)へ移行し
 ルートブリッジが変わることを防ぐ。ちなみにルートガードのみグローバルでは設定できない
・ループガード
→STPプロセス障害や単一リンク障害によりBPDU受信不可になった際、
 代替ポートやルートポートが指定ポートになりループが起こることを防ぐ機能。
 指定ポート以外のポートからBPDUを受信した場合、
 ルート不整合状態(root-inconsistent:BPDUの転送を止める)へ移行する

・UplinkFast
→NDPポートをもつスイッチの直接リンク障害発生時アップリンクを高速で切り替える。
 直接リンク障害発生時NDPポートを5sec以内にフォワーディング状態に切り替える
・BackboneFast
→NDPポートをもつスイッチの間接リンク障害発生時経路を高速で切り替える
 間接リンク障害発生時NDPポートをすぐにリスニング状態に切り替える
 ※フォワーディングではなく飽くまでもリスニング状態への移行となるため
  フォワーディング状態に切り替わるまでに
  転送遅延タイマー15sec ×2回分(リスニング/ラーニング)の30sec程度要する

●diameteroftheSTPdomain(dia)
→端末が接続された任意の2つのポイントの間にあるブリッジの最大数。
 IEEEでは、デフォルトのSTPタイマーに最大直径7ブリッジを考慮するように推奨。
●bridgetransitdelay(transitdelay)
 →論理的にはブリッジにおける遅延。
 IEEEの推奨するブリッジでの最大伝送遅延は1秒。
●BPDUtransmissiondelay(bpdu_delay)
→ポートでBPDUが受信されてからコンフィギュレーションBPDUが
 別ポートへ実際に伝送されるまでの遅延。
 IEEEの推奨する、最大のBPDU伝播遅延は1秒。
●messageageincrementoverestimate(msg_overestimate)
→各ブリッジがBPDUを転送する前にmessageage(メッセージ経過時間)に
 追加する増分値。
 Ciscoスイッチは(おそらく他のすべてのスイッチも)、
 BPDUを転送する前にmessageage(メッセージ経過時間)に1秒加算する。
●lostmessage(lost_msg)
→ブリッジ型ネットワークの端末から相手側の端末にBPDUが移動する間に
 失われる可能性のあるBPDUの数。
 IEEEでは、消失する可能性のあるBPDU数を3に設定するように推奨。
●transmithaltdelay(Tx_halt_delay)
→ポートのブロックが必要と判断されてからブリッジが実際にポートを
 ブロッキング状態に移行するまでに必要な最長時間。
 このパラメータを1秒に設定することを推奨。
●mediumaccessdelay(med_access_delay)
→デバイスが初回伝送時にメディアへのアクセスを取得するのに必要な時間。
 これはCPUがフレーム送信を決定してから、フレームが実際にブリッジを
 離れ始める瞬間までの時間。
 IEEEではこの最長時間を0.5秒に設定することを推奨。


●コマンド
<設定>
・portfast
→(config)#spanning-tree pordtfast default
 (config-if)#spanning-tree portfast
・uplink fast
→(config)#spanning-tree uplinkfast
・backbonefast
→(config)#spanning-tree backbonefast

・BPDUガード
→(config)#spanning-tree portfast bpduguard default
 (config-if)#spanning-tree bpduguard enable
・BPDUフィルタ
→(config)#spanning-tree portfast bpdufilter default
 (config-if)#spanning-tree bpdufilter enable
・ルートガード
→(config-if)#spanning-tree guard root
・ループガード
→(config)#spanning-tree loopguard default
 (config-if)#spanning-tree guard loop

<確認>
・show span
・show span sum
・show span de
・show span inconsistentports

CDP/LLDP

[CDP/LLDPとは]

隣接する機器に対して、自分の機器情報をアドバタイズするために使用するL2プロトコル

・CDP(Cisco Discovery Protocol)
シスコ独自プロトコル、デフォルトで有効。
・LLDP(Link Layer Discovery Protocol)
IEEE802.1ABで定義されたマルチベンダ対応プロトコル、デフォルト無効。

LLDPの拡張版としてLLDP-MED(LLDP Media Endpoint Discovery)がある。
LLDP-MEDはエンドポイントデバイス(IP Phone等)とネットワークデバイス(スイッチ等)の間で
動作するプロトコル

CDPとLLDPの機能差異
f:id:nrlay00:20170201234637j:plain


⇛あまりにもまとめ方が適当すぎたので下記追記
取得可能な情報は以下
CDP
→version1と2で取得内容に差異あり
デフォルトでversion2が有効

info description
Device-ID 隣接デバイスのホスト名
Local Interface 自身のインターフェース情報
Holdtme CDP情報を保持する時間 (デフォルト:180秒)
Capability 隣接デバイスのデバイスタイプ (スイッチの場合:S)
Platform 隣接デバイスのモデル情報(例:CISCO2921)
Port ID 隣接デバイスのインターフェース情報(例:Gig0/1)
Address 隣接デバイスネットワーク層のアドレス
IOSSoftware 隣接デバイスIOSソフトウェア、バージョン情報

↓以下version2のみ対応↓

VTP Domain 隣接デバイスのVTPドメイン名(only CDPv2)
Native VLAN 隣接デバイスのネイティブVLANの情報(only CDPv2)
Full/Half Duplex 隣接デバイスのインターフェースのDuplexの情報(onlyCDPv2)

[CDP/LLDPのメリット・デメリット]

メリット
 IPアドレス/機種/自分&対向機器の接続ポート/IF情報などが知れる。
 隣接機器の情報が知れるため、実質L1レベルの確認も可能(ケーブル接続が正しいか)
デメリット
 cdp/lldpパケットは暗号化されないため、設定情報が盗聴されるリスクあり。
 必要なければ無効にしておくこと推奨。

[コマンド]

コマンドはCDP/LLDPで結構酷似している。

設定コマンド
・機器全体で有効にする
cdp lldp
(config)# cdp run/(config)# lldp run

・ポート単位で有効にする
cdp    lldp
(config-if)# cdp enable/(config-if)# lldp enable

基本的に無効にしたければ先頭に「no」をつけるだけだが、
ポート指定でLLDPの送受信を無効にする場合は、、

(config-if)# no lldp receive(受信)
(config-if)# no lldp trancemit(送信

と若干書き味が違うので注意。


確認コマンド
下記コマンドで知りたいことは大体わかるかと。

sh cdp nei
sh cdp nei de
sh lldp nei
sh lldp nei de

cdpとlldpで若干取得結果は違うようです。
f:id:nrlay00:20170202001301p:plain


簡単ですがCDP/LLDPはこんな感じ。
Cisco独自、マルチベンダがそれぞれどちらを覚えて
なおかつHellotimeとHoldtimeの違いを理解できれば大丈夫かと思います。
(正直実務では無効に設定しているところが多いかと思うので)

AAA(AuthenticationAuthorizationAccounting)

[AAAとは]

Authentication(認証)、Authorization(認可)、Accounting(アカウンティング)の略称。
これら3つの異なるセキュリティ機能を設定するためのアーキテクチャ上の枠組みのこと。

Authentication

→ユーザー名/パスワードを確認しネットワークにアクセスするための認証。

※認証オプション
サービスタイプ
・login(コンソール、telnetssh
・ppp(ppp認証)
方式リスト
・任意のリスト名(特定のinterface、lineに適用される。)
・default(全interface、lineに適用される。)
認証方式
・local(ローカルデータベース)
・group radius(RADIUSサーバ)
・group tacacs(TACACS+サーバ)
・none(認証なし)
・group (任意のグループ名にAAAサーバ軍を関連付けたもの)

Authorization

→何の実行を許可するかの権限割当て

Accounting

→ユーザの履歴を記録(ログ情報収集や課金管理等)
※AAAの実装は、IEEE802.1X認証とセットでよく使用されるのでIEEE802.1Xもあわせて覚えておくこと。

AAAがCiscoルータやCatalystなどで実装される場合、セットで
RADIUSサーバやTACACS+サーバが使用される。

またRadiusサーバなどリモートサーバ認証だけでなくローカル認証も可能。
(ルータのコンソールポート、補助ポート、vtyポートへのアクセス認証など)
ただしローカル認証ではAAAで実装できる範囲、拡張性、柔軟性が乏しい。

AAAのイメージ図
f:id:nrlay00:20170109042732p:plain

用語

サプリカント(Supplicant)

IEEE802.1Xにおけるクライアントのこと。またはクライアントに
インストールするソフトウェア。
認証を受けるクライアントはPCにインストールする必要があるが、
最近のPCには標準搭載されている。

認証装置(Authenticator)

サプリカントと認証サーバの仲介役となるネットワーク機器
IEEE802.1X対応のLANスイッチまたは無線LANアクセスポイントのこと。
(イメージ的にはサプリカントと認証サーバ間のプロキシとして動く)

これらの機器はサプリカントと認証サーバとの認証結果を受けて、ネットワークへの
アクセス制御を行う。Ciscoは有線/無線LANスイッチともにIEEE802.1Xに標準対応。

認証サーバ(Authentication Server)

ユーザ認証を行うサーバのこと。IEEE802.1X/EAPに対応したRadiusサーバを使用する。

EAP(Extensible Authentication Protocol)

PPP(Point-to-Point Protocol)を拡張したプロトコルであり、
データリンク層プロトコルと認証プロトコルの仲介役となる。

CA(認証局

証明書を発行するための機関。

AAAを実装するメリット

集中管理 その1

CiscoルータやCatalystへのログイン認証用として、
ローカルにline vty やenableパスワードを設定せずに
認証用のユーザID/パスワード情報を認証サーバ側で
一括管理することができる。
※AAAを実装してローカルで管理する設定も可。

集中管理 その2

ネットワークにアクセスする認証用のユーザ/パスワードを
ローカルデータベースで管理せずにRADIUSサーバで
一括管理することができる。
※ AAAを実装してローカルで管理する設定も可。

RADIUSのサポート

AAAを実装することにより、標準規格であるRADIUSプロトコル
サポートされるようになる。(TACACS+はcisco独自)
これによりCisco ISEなどのRADIUSサーバだけでなく、MSなど
他メーカーのRADIUSサーバを使用して認証ができるようになり
マルチベンダーの認証、認可環境を構築することができる。


AAAフロー


f:id:nrlay00:20170110075224p:plain

設定

1. AAAの有効化

(config)#aaa new-model
※AAAが無効の状態だとaaa authentication等のAAA関連のコマンドが弾かれる。

2. 認証を行うRadiusサーバのIPアドレスとキーの指定

(config)#radius-server host {IPアドレス} [key {キー}]

3. IEEE802.1xの認証方法を定義

(config)#aaa authentication dot1x default group radius
※通常はradiusを指定し、2で指定したRadiusサーバにて認証を行う)

4. IEEE802.1xをグローバルで有効化

(config)#dot1x system-auth-control

5. インターフェースのアクセスポート化(IEEE802.1xはアクセスポートにのみ設定可能)

(config)#interface {インターフェース}
(config-if)#switchport mode access

6. IEEE802.1xのポートの状態を指定

(config-if)#dot1x port-control {auto | force-authorized | force-unauthorized}

・auto 
radiusでの認証が成功すれば許可ステートへ
 認証失敗となれば無許可ステートへと移行する。
・force-authorized 
→強制的に許可ステートへ移行しフレームを送受信する。
 (つまり認証不要でサービスが使える)
・force-unauthorized
→強制的に無許可ステートへ移行しフレームを送受信させない。
 (authorizedの逆でどの端末を繋いでもサービスは使えない。)




#AAAに関しては、正直自分の理解力が足りず完全に理解できていない。
 あとでしっかり見直さないとだめですね。。

SPAN(Switched Port ANalyzer)

[SPANとは]

パケットキャプチャを行う際にCatalystスイッチに実装するミラーリング機能のことです。
Catalystではポート上またはVLAN上を流れるトラフィックを、SPANを利用することにより
Wiresharkが入ったPCに接続しているポートに、トラフィック(パケット)のコピーを送信できる。
※STP(SpanningTreeProtocol)と雰囲気似ているが別のプロトコルなので注意。

▼SPAN用語

・送信元ポート      パケットキャプチャの対象となるポート。VLANを送信元とすることも可能。
・宛先ポート      ネットワークアナライザを接続するポート。SPAN専用ポートにする必要がある。
・NWアナライザ WireSharkSnifferなどのパケットキャプチャソフトがインストールされたPC。

パケットのコピーを送信するだけなのでコンフィグ設定を間違えない限り、SPANの設定が
既存通信に影響を与えることはない。(宛先ポートの指定先があっている前提だが)
#PCにアドレスをいようがなかろうが問題ない(コンソール接続を想像すればいいかも)

この宛先ポートはSPAN専用ポートにする必要がある。SPAN専用ポートではSPANセッションの
トラフィック以外を受信したり送信したりすることはない。
送信元にVLANを指定することもできるが、VLANと物理ポートの双方を設定することはできない。

簡単に図を作ってみたがこんなイメージ
f:id:nrlay00:20170109004829p:plain

PC1..SPAN送信元の入力部分(モニタ対象)
PC2..SPAN送信元の出力部分(モニタ対象)
PC3..SPAN宛先(モニタポート)


SPANには大きく分けて以下2種類がある。
・ローカルSPAN
 →単一スイッチ上の送信元/宛先ポートをサポート
・リモートSPAN(RSPAN)
 →複数スイッチを介した送信元/宛先ポートをサポート
※ちなみに上図はローカルSPAN

[リモートSPAN(RSPAN)概要]

RSPANは複数スイッチ上で行うSPANのこと。RSPANで指定する送信元ポート or 送信元VLAN、
宛先ポートはNW上の複数のスイッチにまたがることが可能。

RSPANではRSPAN用のVLANを存在させる必要があり、RSPANを行う全てのスイッチ上で
RSPAN用VLANを作成する必要がある。(なおRSPAN VLANはトランクポートで伝達する必要あり)


f:id:nrlay00:20170109021646p:plain

[SPAN設定]

ローカルSPAN設定

新しくSPANセッションを作成するためには下記を指定する。
・送信元ポート/VLAN(モニターされる側)
・宛先ポート(モニターする側)
※既存のSPAN設定が存在する場合は、no monitor sessionによって既存SPAN設定を削除しなければならない。 

◆ 送信元ポート・送信元VLAN - monitor sessionコマンド

(config)# monitor session number source [ interface id | vlan id ] [ , | - ] [ both | rx | tx ]

number    :SPANセッションのセッション番号。1 ~ 66 まで指定することができる。
interface id :モニターする対象となるポート番号。
vlan id    :モニターする対象となるVLAN番号( interface を指定した場合は vlan は指定しない )
both    :送受信トラフィックをモニターする ( デフォルトの設定 )
rx    :あるいは、受信トラフィックのみをモニターする。
tx    :あるいは、送信トラフィックのみをモニターする。

◆ 宛先ポート - monitor sessionコマンド

(config)# monitor session number destination [ interface id ] [ , | - ] [ encapsulation replicate ]

number    :SPANセッションのセッション番号。sourceで指定したものと同じ値を指定する。
interface id :ネットワークアナライザが接続するポート番号。
encapsulation replicate:
  タグ付きのトラフィックを受信したい場合に指定する。これを指定しない場合
  デフォルトでタグなしの状態でパケットが宛先ポートに転送されることになる。

filter vlanコマンドを使用することにより、トランクポート上で受信するトラフィック対象の
VLANトラフィックを指定することができる。

ex)2-6までのVLANをフィルタリング
Catalyst(config)# monitor session 1 source interface FastEthernet 0/1
Catalyst(config)# monitor session 1 filter vlan 2 - 6
Catalyst(config)# monitor session 1 destination interface FastEthernet 0/24 encapsulation replicate

リモートSPAN設定

1.RSPAN用のVLANを新規作成(RSPANを実装する全てのCatalystにRSPAN用VLANを作成すること)

 SW1(config)# vlan [vlan id]
 SW1(config-vlan)# remote-span

2.RSPAN送信元|宛先セッション番号を送信元ポートorVLAN|宛先ポートに関連付ける。

▼送信元
SW1(config)# monitor session number source [ interface id | vlan id ] [ , | - ] [ both | rx | tx ]
▼宛先
 SW2(config)# monitor session number source remote vlan id

3.RSPAN送信元|宛先セッション番号をRSPAN VLANに関連付ける。
 
▼送信元
SW1(config)# monitor session number destination remte vlan id
▼宛先
 SW2(config)# monitor session number destination [ interface id ] [ , | - ] [ encapsulation replicate ]


特筆すべきローカルSPANセッションとRSPANセッションの仕様
・同じSPANのセッションにモニター対象ポートの「送信元ポート」と「送信元VLAN」を混在させられない。
・1つのSPANセッションに複数の宛先ポートを設定できるが、指定できる最大の宛先ポートは「 64 」個。
Catalystスイッチは最大2つの送信元セッション( ローカルSPANとRSPANの送信元セッションの2つ )を
サポートする。従って、同じスイッチ内でローカルSPANの実行とRSPANの実行が1つずつ可能である。
・SPANでキャプチャされる受信トラフィックは、スイッチが変更または処理を行う前のパケット
・SPANでキャプチャされる送信トラフィックは、スイッチが変更または処理を行った後のパケット

★LAGインターフェースは送信元には設定できるが、宛先には設定できない。
★宛先に指定したインターフェースはSTPに参加できない。
★異なるセッションでは送信元は同じポートを指定できる、宛先は共有することができない
→例えば下記configを投入するとセッション1は正しく設定されるが、セッション2は
 後から重複した宛先を指定したため宛先が設定されず不完全となる。

 ----------------------------------------------
 monitor session 1 source int fa0/1
 monitor session 1 destination int fa0/24
 monitor session 2 source int fa0/1
 monitor session 2 source int fa0/2
 monitor session 2 destination int fa0/24
 ----------------------------------------------


[確認コマンド]
SPANステータスの確認
→show monitor session [session number]

RSPAN VLANの確認
→show vlan remote-span

宛先ポートはshow int上で line protocol is down(monitoring)と表示される。