9-WAN(2:BGP)
David Bombal Vlog 007より
・ぶっちゃけCCNAで問われているのは、 シングルホーム+ipv4+ebgpのコンフィグのみ。
・/8のipは使われ方に慣習がある。
BGPはTCPに依拠していて・・・下記状態を経る。
・Idle: ピア通信してない。ルータがネイバーを探してる状態
・Idle(admin):ネイバー関係がadmin-downされてる状態
・Connect: TCPハンドシェイクが終わったよ
・OpenSent/Active:ピア確立試行のためOpenメッセージが送られたよ
・OpenConfirm:ルータがOpenメッセージへの返答を受け取ったよ
・Established:ルータがBGPピアリングsessionを確立したよ。ゴール。
※sh ip bgp summary では、established状態は state:ブランクになる。
パス情報をネイバーと交換できていますよ、ということ。
command:
R1(conf)#router bgp 65001
(conf-router)#neighbor 8.8.8.2 remote-as 65002 (隣のASを指定)
(conf-router)#network 17.1.1.0 mask 255.255.255.0 (下記参照)
R2(conf)#router bgp 65002
(conf-router)#neighbor 8.8.8.1 remote-as 65001
(conf-router)#network 15.1.1.0 mask 255.255.255.0
・IGPにおけるnetworkコマンド
ルーティングプロトコルを有効化するインターフェースの指定
・BGPにおけるnetworkコマンド
自分のAS内のルート情報をBGPルートとしてアドバタイズするネットワークの指定
(比較:eigrp)
(conf)#router eigrp 1000
(conf-router)#network 192.168.1.0 0.0.0.255
※ワイルドカードマスクを使う点、AS番号は"EIGRP AS"という
EIGRPのシステム内の管理番号として捉えるので、
BGPのAS番号とは意味合いが違うという点に注意
9-WAN (1)
9-1~9-4_WANの概要勘所
地理的に離れすぎているのでフツーのLANでは繋げられない。
⇒WANを使おう。
★構造
CPE-|-localloop-中継網-localloop-|-CPE
|=demarc:分界点。
・概念整理
中継網とローカルループ:拠点間を接続するための中継回線。
CPE= Customer Premises Equipment
= DTE+DCE
DTE=Data Terminal Equipment 早い話がルータなど
DCE=Data Communication/Circuit-Terminating Equipment
データ回線終端装置。DTEとWANの信号を相互変換して伝送する。
クロック信号を送る。大抵ルータに組み込まれてる。
=DCE=CSUorDSUorモデム
CSU= Channel Service Unit
DSU=Digital Service Unit
MODEM= MOdurator-DEModurator (変調・復調器)
電話用のアナログ信号を電気信号に変換する。
※DSL=Digital Subscribed Line 電話線を利用した高速データ通信の総称
いくつか種類によってxDSLと呼ばれる。
ADSLのAはAsymmetricのAで、UP(0.5Mbps)に比べて
Down(1.5Mbps)が高速なので個人ユーザ向けに普及した。
普通の電話音声の信号とデータ通信用の信号を分けるスプリッタ
LANの信号をアナログ信号に変換するADSLモデムを使用。
自宅側:壁面のモジュラジャック-スプリッタ-電話とADSLモデム-LANという構成。
ISP側:電話線-MDF-スプリッタ-交換機を介した電話のPTSN/DSLAMで集約した
インターネット回線という構成。
★WANサービスの種類
-1 専用線:Point-to-point.電気通信事業者が2拠点間を1:1でつなぐ。
-2 交換型WAN: 回線交換(PSTN,ISDN)あるいは
パケット交換(IP-VPN/広域Ethernet/フレームリレー/ATM)
-3 インターネット:ブロードバンドVPN(DSL/CATV/FTTH/Wireless LAN)
・概念整理
-PSTN=Public Switched Telephone Network
モデムを使ってダイヤルアップで電話網に接続し使用するWAN
-ISDN=電話網を使うが、音声映像FAXデータなどが1NWに統合されているWAN
-IP-VPN=中継網は、インターネットではない。
通信事業者独自の閉域IP通信網で中継。
帯域自体はほかのユーザーと共用しているので輻輳はする。
-広域Ethernet=冒頭のWANの説明からすこし矛盾しそうだが
SwitchとVlanを駆使して繋げてL2のEthネットワークを広域にしたもの。
拠点が複数あっても1つの巨大なLANのように自社NWを構築できる。
-フレームリレー(obsolete)=X.25というパケット交換プロトコルから
エラー訂正機能を抜いて高速化した方式。
フレームリレースイッチの網で中継網を作っておき、
その中で論理的な仮想回線を構築して拠点間接続を行う。
ということは、例えば10の拠点間接続がしたければ
各CPEから中継網に1本ずつシリアルで繋げばよくて、
10C2=45本の専用線を用意する必要なんてないということ。
-ATM(obsolete)=Asynchronous Transfer Mode:セル交換方式。
セルと呼ばれる53バイトの固定長データにパケットを分割して伝送する。
-ブロードバンドVPN=ブロードバンドを介したVPNサービス。
WANの中継網にインターネットを利用しているVPNを
インターネットVPNとも呼ぶ。
インターネットを介したWAN接続では、中継網で
ブロードバンドサービスを経由する。
-CATV=電話線ではなくケーブルテレビ網を使ったインターネット接続サービス。
加入者自宅付近数百mのCoaxケーブルと残部の光ファイバの組み合わせで構成。
ケーブルモデムはテレビ局側にある。
-FTTH=お馴染みのFiber to The Home.
電気信号と光信号を変換するのはONU:Optical Network Unit.
-WirelessWan=携帯電話のワイヤレスネットワークを使ったWANサービス
中継網を含めケーブルの敷設が不要であるため広範囲をカバー可能.
★同期/非同期のシリアル回線でデータ転送をする際にデータリンク層でのカプセル化をする
プロトコルは2種類。HDLCとPPP。
High-level Data Link Protocol /Point to point Protocol
・Cisco独自のカプセル化タイプがHDLC(※Ciscoのs/ifではデフォルトでこれ。)
注意:i/fでカプセル化タイプの明示的設定をしないと、デフォルトでHDLCになる。
→これはsh intではEncapsulation HDLCと表示されてくれるが、
sh runでは「何も表示されない」ので注意。
・ベンダフリーのカプセル化タイプがPPP.覚えることが多いのはこっち。
RFC1661により定義されている。
-リンクの確立、維持、切断、認証などに使用するLCPと、
上位のネットワーク層のプロトコルを識別するNCPの2つのサブプロトコルから成る。
PPPは、LCPでリンクを確立させるフェーズ、PAP/CHAPで認証するフェーズ、
NCPでNW層のプロトコルを対応させてパケットを伝送するフェーズの3段階を踏む。
-LCPのオプションとして認証機能があり、その2大プロトコルがPAPとCHAP.
PAP:パスワードが平文で送られる+LCP接続確立と認証の2wayハンドシェイク
送信元から送信先へ接続要求⇒LCPで接続確立
⇒PW送信⇒PW検索・合致・認証許可通知
※デフォルトで無効化されているので、
使いたければ(config-if)#ppp pap sent-username Hogeuser HogePWを入力
CHAP:パスワードは暗号化して送り、MD5でハッシュ値を出して確認。
3wayハンドシェイクで定期的にpeerの認証を実施。
LCP接続確立⇒「送信先」がチャレンジ乱数を送信し認証要求
⇒「送信元」がチャレンジ乱数と認証パスワードを元にMD5でハッシュ値を出す
⇒送信先が、送ってたチャレンジ乱数と、ホスト名に対応する認証PWを使って
MD5でハッシュ値を計算し、一致を確認。
※要はPAPよりもセキュア。
〇LCPでリンクが確立されていると、sh intの結果で対象ifに「LCP Open」が表示される。
リンクが確立されていないと、「LCP Closed」と出る。
★MLPPP -マルチリンクPPP
複数の物理Serial i/fをグループ化して、
EtherChannelみたいなやつだが、それをPPPでやる。
※もともとのifのipは削除する。
●マルチリンクをつくる
(config)#int multilink 1 (1とは、マルチリンクバンドル:リンクの束なりの名前)
(config-if)#ip address 192.168.12.1 255.255.255.0 (マルチリンク用の単一のipを振る)
(config-if)#ppp multilink (明示的にマルチリンクを有効化)
(config-if)#ppp multilink group 10 (インターフェースのグループ名を決定)
●各i/fに設定していく
(config)#int s0
(config-if)#encapsulation ppp
(config-if)#ppp multilink
(config-if)#ppp multilink group 10
(config)#int s1
(config-if)#encapsulation ppp
(config-if)#ppp multilink
(config-if)#ppp multilink group 10
。。。
※sh ppp multilink、 sh int multilink (バンドル番号) で各設定を確認できる。
★PPPoE- PPP over Ethernet
要するに、CPEのクライアントと、ISP側のサーバ(集約ルータ)とのPPP通信。
クライアントPCがブロードバンドサービスでインターネット接続をしたい場合、
素のEthernetフレームには認証機能がなく、それをそのままパケット化として
通信事業者の集約ルータに送るのはまじで危険すぎる。
⇒クライアントPCや、CPEにPPPでフレームをカプセル化するクライアントソフトを入れておいて
CHAPやハンドシェイクなど認証機能を使えるようにし、回線事業者のPPPoEサーバと通信させ
回線事業者の集約ルータまでの通信をセキュアにしようというのがPPPoE。
・PPPoEの通信には下記の通り2種類ある。
-①Discovery Stage: 要はPPPoEサーバの発見とMACアドレスの解決
PADIでクライアントからブロードキャストでWAN側のPPPoEサーバを探索
PADOで応答を返してくれたらMACアドレスがわかるので
PADRでPPPoEセッションの開始要求を出し
PADSでセッションIDの応答を返してもらって、②へ移る。
-②PPP Session Stage:要は認証などによるPPPセッションの確立
LCPでネゴシエートし、CHAP(PAPも一応含む)で認証し、
IPアドレスを取得するためのIPCPネゴシエーションを使ってセッションを確立させる。
※Ciscoルータ●as CPEをPPPoEのクライアントに設定したい
10.1.1.0/24
□\
□ーSW-------(fa0)●(fa1)=====(ISP----◎----Internet
□/
①まず、●~◎のイーサネットリンクをPoint to Pointのようにする。
CPE(conf)#int dialer 5 (0~255までならなんでも)
CPE(conf-if)#ip address negotiated (PPP/IPCPで集約ルータからipアドレスをもらう)
CPE(conf-if)#ip mtu 1492 (カプセル化の分、ヘッダの最大サイズは小さく。)
CPE(conf-if)#encapsulation ppp
CPE(conf-if)#dialer pool 10 (物理ifに関連付けるための番号)
CPE(conf-if)#ppp authentication chap callin (chap認証)
CPE(conf-if)#ppp chap hostname User1 (chap認証)
CPE(conf-if)#ppp chap password HogePW (chap認証)
CPE(conf-if)#dialer-group 1
CPE(conf-if)#exit
CPE(conf)#dialer-list 1 protocol ip permit (※dialer-group番号から、PPPoEの開始トラフィックを指定し許可)
◎WAN側につながる物理ifの設定
CPE(conf)#int fa1
CPE(conf-if)#pppoe-client dial-pool-number 10
CPE(conf-if)#no ip addr (もともとのipは消す)
●LAN側の物理ifの設定
CPE(conf)#int fa0
CPE(conf-if)#ip addr 10.1.1.1 255.255.255.0
CPE(conf-if)#ip tcp adjust-mss 1452
②プライベートIPを、PATで集約ルータからもらったグローバルIPに変える設定
CPE(conf)#access-list 1 permit 10.1.1.0 0.0.0.255
CPE(conf)#ip nat inside source list 1 interface dialer 5 overload
CPE(conf)#int fa0
CPE(conf-if)#ip nat inside
CPE(conf-if)#int fa1
CPE(conf-if)#ip nat outside
③CPEをDHCPサーバとして機能させて、各端末にipを振る
CPE(conf)#ip dhcp excluded-address 10.1.1.1 10.1.1.100
CPE(conf)#ip dhcp pool CPE
CPE(conf-dhcp)#network 10.1.1.0 255.255.255.0
CPE(conf-dhcp)#default-router 10.1.1.1 (fa0のこと)
CPE(conf-dhcp)#dns-server 10.1.1.5
CPE(conf-dhcp)#domain-name hoge.com
④デフォルトルートをダイヤラーのifに
CPE(conf)#ip route 0.0.0.0 0.0.0.0 dialer 5
・・・以上の設定を#sh ip int bri、#sh pppoe session、#sh ip routeで確認可能
打つがよい。
・telnet先のルータのI/fにつながったケーブルの種類が知りたい。
あと対象のルータがDCEかDTEか知りたい。
DCEの場合、DTEへ送るクロック信号のクロックレートを確認したい。
⇒#show controllers s/0/0/0
・DCEからDTEへ送るクロック信号のクロックレートを変更したい
⇒(config)#int s/0/0
(config-if)#clock rate 128000 ※※単位はbps
・OSPFやEIGRPのメトリック計算で使うので設定帯域幅を変更したい
⇒(config-if)#bandwidth 256 ※※単位はkbps
・シリアルi/fのカプセル化タイプを設定したい
(config-if)#encapsulation ppp ※※HDLCはCiscoルータではデフォルト。
・PPPの認証機能でホスト名、ユーザアカウント、
PWを設定し、PAP/CHAPを指定したい。
(config)#hostname Hogehoge
(config)#username userHoge password pwHoge
またはvtyの設定と同様、内部でMD5で暗号化したい場合
#username userHoge secret pwHoge
(config-if)#ppp pap sent-username userHoge password pwHoge
※※papを使う場合、papはセキュアでないので
デフォで無効化されてるのを有効化してやる必要あり。
(config-if)#ppp authentication chap pap
※※この書き方は先にchap次にpapを実施、ということ。片方だけでも良い。
★WANに使うシリアルi/fの状態で、line protocolだけdownになる
⇒encapsulationが不一致
バックツーバック接続の場合、DCE側にClock rateの設定が抜けてる
9-5 VPN
おそらく今日のEnterprise Networkで一番大事な概念。
WAN構築ソリューションの主流。
公衆回線としてのインターネットを利用する「インターネットVPN」と、
電気通信事業者の専用ネットワークを利用する「IP-VPN」がある。
(詳細はあとまわし)
6. IPv6
6-IPv6
とりあえずI/Fにこうコマンド打つとv6の設定ができるよ
★フツーにグローバル(文書用だが)ユニキャスト
Router(config)#int gi0/0
Router(config-if)#ipv6 address 2001:db8:2:2::1/64
Router(config-if)#no shut
★1個はフツーに、もう1個はEUI-64を使ってみる
Router(config)#int gi0/1
Router(config-if)#ipv6 address 2001:db8:1:1::1/64
Router(config-if)#ipv6 address 2001:db8:1:1::/64 eui-64
Router(config-if)#no shut
★ipv6ルーティングを有効化
Router(config)#ipv6 unicast-routing
★リンクローカルアドレスを自動設定
Router(config-if)#ipv6 enable
★リンクローカルアドレスを手動設定 ※リンクロに限らず、グロユニキャでも 手動設定する場合は上述のipv6 enableが暗黙で設定されてくれる。
Router(config-if)#ipv6 address FE80::1 link-local
★RAを使ってIPv6アドレス(グロユニキャ)を自動取得 ※defaultオプションで、デフォルトルートを登録可
Router(config-if)#ipv6 address autoconfig [default]
★ACLをつくりたい (最後の行で暗黙のpermitがキャンセルされてるので途中工夫)
Router(config)#ipv6 access-list Hoge
Router(config-ipv6-acl)#permit tcp 2001:db8:1:1::/64 host 2001:db8:2:2::100 ep 23
Router(config-ipv6-acl)#permit icmp any any nd-ns
Router(config-ipv6-acl)#permit icmp any any nd-na
Router(config-ipv6-acl)#deny ipv6 any any
★ACLをi/fに設定したい。
Router(config-if)#ipv6 traffic-filter Hoge in
★設定確認したい
Router#sh run | begin fast →eui-64で設定されたアドレスは具体的に見えないので注意
Router#sh ivp6 int bri→お手頃
Router#sh ipv6 route ルーティングテーブルが見える
Router#sh ipv6 neighbors →ネイバーテーブルが見える ※REACH:到達可能な状態で通信可能 STALE:動いてない。最近通信してない。 stale:古仏語で「動かない」
Router#sh ipv6 access-list →ipv6の部分は省略可。アクセスリストが見える。
★ping
★/etc/host的なことをしたい
Router(config)#ipv6 host hogehoge 2001:db8:1:1::1
★DNSレコードをアウトソースするなら
Router(config)#ip name-server DNS鯖のアドレス
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 6-1 ICND1でエニーキャストマルチキャストは一応やったので
ユニキャストについてしつこく見ていく。
そもそも:IPv6のアドレスには
有効範囲と送付先で3*3=9通りの分類がある。
有効範囲:
・リンクローカル:特定サブネットのみで有効。
つまりルータを超えることはない。
アドレス自動設定やルーティングプロトコルで使用。
そもそもリンクとはサブネット内のつながりを表す。
・ユニークローカル
ルータを飛び越えはするが、特定の組織内でのみ有効。
つまるところipv4で言うプライベートアドレス
・グローバル
ISPや、レジストリから取得できる、有効範囲制限のないアドレス。
つまるところipv4で言うグローバルアドレス。
送付先:
・1対1:ユニキャストアドレス
特定単数のI/Fに向けられたアドレス。
128ビットのうち前半64bitsがprefix、後半64bitsがInterface ID.
・1対多:マルチキャストアドレス
特定グループへの宛先アドレス。
・1対one of any:エニーキャストアドレス
これはipv6特有。
近傍複数ノードのI/Fが、同じユニキャストアドレスを持てる。
そのアドレスを持つ、最も近いノードのI/Fに転送される。
★んで、今回はユニキャストアドレスを具に見ていく。
・グローバルユニキャストアドレス
2000::/3 (ビットで言うと001.....)で始まる。
2001::/16がIPv6インターネット用に使われる。
2002::/16は6to4トンネル用。2003://16-は未割当。
3FFE::/16を実験用に使ってたりもしたけど今は廃止されてる。
prefixにはISP等から割り当てられる48bitsのGlobal Routing Prefixと
その後ろに16bits分のsubnetIDがある。16bitsだから65536個分 サブネットが作れるわけやね。
このsubnetIDをSLA:Site-Level Aggregationとも呼ぶ。
・ユニークローカルユニキャストアドレス
もう一度言うがこれはプライベートアドレスっぽいやつ。
FC00::/7 (ビットで言うと1111 110...)で始まるが、
8ビット目(Lと言う)はグローバルIDの使用方法のビットで
通常L=1となるので
結局FD00::/8 (ビットで言うと1111 1101....)を使うことになる。
・リンクローカルユニキャストアドレス
ルータを超えないサブネット内で使われるアドレス。
リンクローカルアドレスとあぶれびえられることもある。
FE80::/10 (ビットで言うと1111 1110 10 ....)で始まる。
プレフィクスで使うのが10ビットなので、残りの54ビットは0になる。
I/F IDは、EUI-64フォーマットでMACアドレスから自動生成できるので
これを利用してDHCPがなくてもリンクローカルアドレスを自動付与できる。
・その他のアドレス
-loopback = ::1 (127.0.0.1的なやつ)
-unassigned = :: (アドレスがないという意味でRouting対象外。)
※IPアドレスの自動取得を試みるデバイスの送信元IPとかがこれに。
-Document = 2001:db8::/32 社内文書用などのアドレス。
インターネット上で通信できないように設定されている。
-IPV4射影アドレス=::FFFF:+ipv4 (80bitは0、16ビットは1、残りにipv4アド)
IPv4アドレスしかサポートしてないノードとの通信用。
IPv4互換アドレスの廃止に伴いこちらを使用。
★EUI-64
MAC Address 00-AB-65-23-45-98 が与えられたとき
EUI-64からインターフェースIDを自動生成してみようぜ
1. MACアドレスをベンダコードとシリアルの24ビットずつに分けます
00-AB-65 と 23-45-98
2. 真ん中に16ビット分FFFEをぶっこみます。
00-AB-65-FF-EE-23-45-98
3. Universal/Localビット:先頭から7ビット目を反転させる。
U/Lビットが1→ MACアドレスではローカル、I/F IDではグローバル
U/Lビットが0 → MACアドレスではグローバル、I/F IDではローカル
グローバル(一意)なMACアドレスを変換する場合、普通00→02になる。
02-AB-65-FF-EE-23-45-98
4. IPv6っぽい表記にして完成
02AB:65FF:EE23:4598
★IPv4→v6への移行方法
・デュアルスタック = 1台の機器で両方サポートする
・トンネリング = IPv6パケをIPv4ヘッダでカプセル化してv4NWを通す
・トランスレータ =NAT-PTなどでNWの出口でipv6に変換しちゃう
★近隣探索:ND
ICMPv6 近隣探索
→同一セグメント上にあるノードを探索しネイバーテーブルにまとめる。
要はARPテーブルのようなもの。
下記133-137のICMPメッセージを送受信してテーブルをつくる。
133 RS:Router Solicitation ルータ要請
134 RA:Router Advertisement ルータ広告
-RS/RAで何ができるか
・ホストにIPv6アドレスを自動割り当て
・Prefixを検出し、リンクでいける範囲とルータを飛び越える範囲を識別
・NextHop検出
・同一リンク上で、ノードが接続できるルータを検出
・リンクMTUやホップリミットを検出
135 NS: Neighbor Solicitation 近隣要請
136 NA: Neighbor
-NS/NAで何ができるか
・MACアドレスとIPv6アドレスの関連付け(ARPのようなもの)
・重複アドレス検出:DAD
・近隣ノードの到達不能状態の検出
137 :Redirect
-IPv4でいうICMPリダイレクトと同様に最も効率の良い転送先を通知
★ACL:アクセスリスト
名前付きしか作れないのでむしろわかりやすい。
暗黙のdenyに加えて、nsとnaを許可する暗黙のpermitがあることに注意。
つまるところ末尾に以下が自動付加されていることになる。
・permit icmp any any nd-ns
・permit icmp any any nd-na
・deny ipv6 any any
5. ACL_advanced
5. ACL:アクセスリスト
ルータのIFに設定するパケットの許可/不許可リストのこと。各IFにinかoutで設定する。
NAT、ルータフィルタリング、VPN、別プロトコルによるルート情報再配布なんかに使うよ。
OUTBOUNDとは、ルータを抜けて出て行くパケ、INBOUNDとはルータに入ってくるパケ。
つまりデバイスへのin/outであって、決してそのIFを含むセグメントへのin/out「ではない」。
あとルータから発信されるパケについてはスルーしちゃうのでスプーフィングが弱点。
暗黙のdenyに気をつけてね。
ACLには、全部で以下のものがあるよ。それぞれどんなアクセス要件かコマンドから考えてね。
・番号付きACL
-番号付き標準ACL 送信元ipでしか判断出来ないから宛先に近いifまで行かないと設定できない。
例1:(config)#access-list 10 deny host 192.168.1.1
(config)#int fa0/1
(config-if)#ip access-group 10 in
例2:(config)#access-list 1401 permit 192.168.0.0 0.0.0.255
(config)#int fa0/1
(config-if)#ip access-group 1401 out
-番号付き拡張ACL 宛先ipどころかレイヤ4まで使うので細かく設定できる。送信元近くのifでもOK
protocol、送信元(ip→wildcard→port条件)、宛先(ip→wildcard→port条件) [establish(TCPのみ)]、[log]の順は不変。
例1:(config)#access-list 136 permit tcp 172.16.1.0 0.0.0.255 host 172.16.2.1 eq 25
(config)#int fa0/2
(config-if)#ip access-group 136 out
例2: (config)#accessl-list 2259 deny icmp 192.168.1.64 0.0.0.31 any echo
(config)#accessl-list 2259 deny icmp 192.168.1.64 0.0.0.31 any echo-reply
(config)#int Gib0/1
(config-if)#ip access-group 2259 in
例3: (config)#access-list 100 permit ip any any
(config)#int fa0/1
(config-if)#ip access-group 100 in
※番号の予約状況
標準:1-99、1300-1999
拡張:100-199、2000-2699
AppleTalk:600-699
IPX標準:800-899
IPX拡張:900-999
・名前付きACL
-名前付き標準ACL 名前は、大文字小文字も区別されるからね。
例:(config)#ip access-list standard HogeHoge
(config-std-nacl)#permit any
(config-std-nacl)#deny 192.168.1.0 0.0.0.255
(config-std-nacl)#exit
(config)#int fa0/1
(config-if)#ip access-group HogeHoge out
。o〇(やべっ↑でステートメントの順番逆にしちゃった!)
(config)#ip access-list standard HogeHoge
(config-std-nacl)#no 10
(config-std-nacl)#25 permit any
-名前付き拡張ACL
例:(config)#ip access-list extended FugaFuga
(config-ext-nacl)#permit tcp any any established
(config-ext-nacl)#permit icmp any any echo-reply
(config-ext-nacl)#permit icmp any any unreachable
(config-ext-nacl)#permit icmp any any time-exceeded
(config-ext-nacl)#exit
(config)#int fa0/1
(config-if)#ip access-group FugaFuga in
★ip access-list standard/extended 番号で、番号なんだけど文字列の名前リストとして作成することも可能。
★TCP/IPのアプリケーション層プロトコルとポート番号を丸暗記なさる
DHCP= UDP 67(server) 68(client)
TFTP = UDP 69
HTTP = TCP 80
NTP = UDP 123
BGP = TCP 179
RIP = UDP 520
★検証用こまんど
・とりあえず全部教えろ:sh run
↑ifのところで適用されてるACLの名前/番号と、in/out設定状況までわかる
・ぜんぶのACLを、ステートメント行も含めて1個ずつ表示したい:sh access-lists
・ステートメント行も含めてACLを表示したいけど目的の1個だけでいい:例:sh access-lists HogeHoge
・ステートメント行も含めてACLを表示したいけどIPv4のだけでいい:例: sh ip access-lists
※注意:sh access-listsはin/outまでは分からないよ。
・in/outを手っ取り早く分かりたい:sh ip interface fa0/1
※↑ipに特化したifの情報が他にもズラッと出る
・
2.STP
2.STP
2-1 STPとは IEEE802.1D デフォルトで有効
〇要するに:
ループ構造のネットワークの一部ノードを停止して木の幹みたいに切り開き、
フレームのループを防ぐプロトコル。あくまでスイッチングループの回避であって、
ルーティングループの回避でないことに注意。
なお障害発生時ににはちゃんと停止ノードを自動で切り替えてくれる。
なんでループ構造にしちゃうかというと、シングルポイント障害を冗長構成で乗り切るため。
しかしフレームのループは帯域が埋まっちゃうし、
場合によってはSWの複数ポートで同じフレームを何度も受信するので
MACアドレステーブルが何度も書き換わって負荷はかかるわ不安定になるわ良いことなし。 ※ スイッチでなくブリッジが主体だった頃にできたプロトコルなので、
Bridgeという呼称がよく出てくるが気にしない。
〇BPDU:
STP自動で動けるのは、スイッチ同士が一定間隔で情報交換をしているから。
STPが有効なスイッチはBridge Protocol Data Unit:BPDUというフレームを交換する。
一度後述するルートブリッジが決まってしまうと、
そのルートブリッジからSTPが有効な各スイッチへ届くよう、
01-80-C2-00-00-00へマルチキャストするようになる。
・ BPDUには通常動作用のConfiguration BPDUと、
トポロジ変更通知用のTopology Change Notification BPDUがある。
TCN BPDUは細かく分けると、下記のデータ構造の中のTypeと、 flag(1byte)の中の2ビットの組み合わせによって3つに分かれる。
・TCN BPDU(Topology Change Notification)
ルートブリッジじゃないノードにおいてリンク障害が発生するか、
もしくはBPDUがMax Age分届かない状態のときにHello Time(def:2s)ごとに発信する。
トポロジの変更をルートブリッジに向けて通知するBPDUになる。
Typeは普段が0x00のところ、このデータは0x80になっている。
・TC BPDU(Topology Change):
フラグのTCビットが1になっている。
BPDUを受信したルートブリッジがネットワーク全体にトポロジの変更を通知するために、
Max Age(def:20s)+Forward Delay(Def:15s)の間発信する。
※TCを受信し、トポロジ変更を認識した各SWはTCを転送し、MACアドレステーブルのエージングタイムを縮める。
(Def:300s→15s=Forwarding Delay)
・TCA BPDU(Topology Change Ack):
フラグのTCビットとTCAビットが1になっている。
TCNを受信したときのAcknowledgeとして発信する。
注!:TCNはルートブリッジに届くまで転送される。
TCNを受信した非ルートブリッジはTCAを返信するが、
自身もTCNを生成してルートブリッジへ発信する。
BPDUフレームはイーサネットヘッダとFCSの間に挟まれている計35バイトのデータ。下記左端はバイト数。
2 Protocol ID 常に0
1 Protocol Version .1Dの場合は0x00
1 BPDU Type Conf.BPDUなら0x00、TCNなら0x80、 RSTP:IEEE802.1wなら0x02
1 Flag 位相変更の通知のハンドシェイクに使う。使うのは2ビット分で、頭のTCとケツのTCAビットのみ。
8 Root ID ルートブリッジのIDだが、スイッチ起動時は自身のIDになる
4 Root Path Cost ルートブリッジへの距離:パスコストの累積
8 Bridge ID 自身のブリッジID = Priority + MAC address
2 Port ID BPDUを送信したポートのID = Port Priority + Port番号
2 Message Age ルートブリッジまでのホップ数
2 Max Age BPDUを最後に受信してからルートブリッジがイカれてんな、と判断するまでの最大経過時間。def:20s
2 Hello Time BPDUの送信感覚:def:2s
2 Forward Delay forward状態までの遅延時間:def:15s
listening や learningにポートの状態をとどめておく時間
〇ポートの状態
Disable: 何もしない。STPが無効のとき、あるいはリンクアップしていない(shutdown)とき。
Blocking:データフレームは送受信せす、BPDUは受信するだけ。
基本的にBPDUを受信している限りは状態が維持されるが、
1.Max Age(def:20s)ぶんBPDUを受信しなかったり、
2.直接接続しているリンクがダウンしたり
3.スイッチを起動したりリンクアップした直後のブロッキング状態の場合は
Listeningに移行する。※2.3は即時。
Listening:Blockingの次の状態。データフレームは送受信せず、BPDUは送受信する。
この状態でスイッチ間でBPDUを交換し、ルートブリッジやポートの役割を決定する。
Forwarding Delay(def:15s)分だけ継続
Learning:Listeningの次の状態。データフレームは送受信しないが、その送信元MACアドレスだけ
テーブルに追加する、(フレーム自体は破棄)BPDUはリスニング同様送受信する。
Forwarding Delay分だけ継続。
Forwarding:Learningの次の状態。データフレームは送受信し、送信元MACアドレスも学習。
BPDUを送受信する。ずっと状態を継続する。
・すべてのスイッチポートがBlockingかForwardingに落ち着く状態を「収束:Convergence」という。
これが短ければよいが、無印STPは1つのポートで20+15*2=50sかかる計算になる。
〇ポートの種類
指定ポート:DP。NW内にルートブリッジから最も近いポート:要するにだいたいルートブリッジのポート。
ルートポート:RP。ルートブリッジに最も近いSWのポート:要するに指定ポートの対向ポート。
非指定ポート:NDP。優先度が低く選ばれなかったポート。
〇ルートパスコスト
10Gbps=2
1Gbps=4
100Mbps=19
10Mbps=100
●2-2 STPはいい動きをしているね
・数珠繋ぎの3台のスイッチがあるとする。
□
/ \
.□――□
3台のスイッチの各ポートは、起動時にblocking→listeningになって
ブリッジIDからルートブリッジを選定、指定ポート、ルートポート、非指定ポートを決定。
次いで優先度が低くルートブリッジから遠くて対向ポート番号も大きい非指定ポートはブロッキングに。
指定ポートとルートポートはフォワーディングになる。
・障害がおこると、ルートブリッジが直接検知するか、TCN、TCでNDPをRPにする。
ーーーーーーーーーぶっちゃけあとはほとんど、上記原則の応用でわかる。
●2-3~2-5
・CSTとはCommon Spanning Treeのこと。どのVLANでもおんなじトポロジのスパニングツリーになる。
トラフィックは全部、非ブロッキングポートで処理されるので負荷分散なにそれ美味しいの状態。
・PVST+とは:Per Vlan Spanning Tree Plusのこと。VLANごとに、DP NDP RPの構成を変え、ロードバランシングする。
リンク障害が起こった時だけ、CSTと同様に全VLANで同じフォワーディングポートが使われるようになる。
Catalystスイッチではだいたいデフォ有効。
(conf)#spanning-tree mode pvst
・MSTとは:Multiple Spanning Treeのこと。MSTP(p:protocol)とも。IEEE802.1s
PVST+だと、VLANごとに全部バラバラの構成を処理していてスイッチに負荷がかかるし、
VlanごとにBPDUを送るから帯域を食ってしょうがない。
→共通のトポロジを持った複数のVLANグループをまとめて1つのSTPインスタンスとして扱う。
インスタンスごとに一つのルートブリッジを選出し、ブロッキング状態の非指定ポートを決定。
VLANごとがインスタンスごとになるので、帯域とスイッチへの負荷が減る。
2-6
覚えきれてないコマンド群
()#show spanning-tree detail:統計情報まで出るぜ
()#show spanning-tree root: VLANごとのルートブリッジが表示されるぜ
()#show spanning-tree interface: VLANごとのSTPポートの状態が表示されるぜ
(conf)#spanning-tree vlan 10 priority n*4096
(conf)#spanning-tree vlan 10 root priority →ダイナミックな設定。これを実行したスイッチのvlan10は、
強制的にルートブリッジになるようなIDを設定される。
(conf)#spanning-tree vlan 10 root secondary →上記と同様、2番目にプライオリティが低くなるように自動設定する。
2-7 PortFastとBPDUガード
要するに:Edgeのコンバージェンスは、ListeningもLearningも要らなくね?
起動したら即Forwardingでよくね?という設計思想のもと開発されたCisco独自機能。
Edge=ネットワークの枝葉の部分:アクセスポートで繋がってる端末などのこと。
例外的にトランクで繋がってるサーバも含むけど基本的にはほとんどアクセスポート。
Portfastを有効化すると、当該ポートはblockingからすぐForwardingに移行する。
Portfastを有効化したポートで、もしBPDUを受信した(エッジじゃないということになる)場合に
ポートをerr-disabledにする機能をBPDU Guardという。
コマンド?
→ifごとに有効化
(conf-if)#spanning-tree portfast
(conf-if)#spanning-tree bpduguard enable
もしくはSW全体で有効化
(conf)#spanning-tree portfast default
(conf-if)#spanning-tree portfast bpduguard degault
2-8 RSTP IEEE802.1w
・STPのコンバージェンスを早くしたい。50秒は掛かりすぎ。
(config)#spanning-tree mode rapid-pvst で有効化。
・リンクタイプの区別
全二重だったらポイントツーポイントリンク。高速コンバージェンス可能
半二重だったらシェアードリンク。これは従来のSTPと同じタイマー依存。
・Portfastで言うエッジのポート:Edge Portも織り込み済で、即Forwardingにさせられる。
・ポートの状態がまとまった
disable, blocking, listeningはMACアドレス学習もフレーム転送もしないので動作が一緒。
→まとめちゃえばよくね?ということで一括でDiscardingになりました。
learningとforwardingは一緒。
・非指定ポートの役割が細分化
Blockingにも2種類あるよな…ということで分けた。
1.Alternative Port :ルートポート上にリンク障害が発生したとき、即時Discarding→forwardingへ遷移しルートポートの役割を引き継ぐ。
覚え方:オルのル=ルート
2.Backup Port: あるセグメントで指定ポートを持つスイッチがそのセグメントに対して2本以上のリンク:冗長リンクを持ってるときに
その2本以上のうち1本はDiscardingになるが、指定ポートにリンク障害が発生したら
即時Discarding→forwardingに遷移し、指定ポートの役割を引き継ぐ。
・状態遷移の方法が超高速化:プロポーザルとアグリーメント
フラグで未使用だった6ビット分を使って
「俺が指定/代替orバックアップ/ルート ポートになりますよ」という提案を隣接ポート間で
proposal BPDUとしてお互いに送る。相手の提案でOKな場合、飲む方がagreement BPDUを送る。
agreementまでだいたい1秒かからない。
注意:
・rstpの状態確認:#show spanning-tree でよい
・#show spanning-tree vlan x でinterfaceが表示されたとき、
type Peer(STP)→対向はrstpでなくstpになってるということ。
1.C 2.B 3.C 4.D 5.B 6.A,E 7.A 8.bcd 9.cd 10 c RSTP: 11 A,E 12 A,D,F.G 13 a 14 a,D, F,.G
1.Vlan
1.Vlan
s◇1-1~1-3s◇1-1~1-3
複数SWにわたってVLANを構成するときにトランクポートを使うとよい。
Ciscoに依存しないプロトコルがIEEE802.1Q。
Type/Lengthの間に下記のようにタグを挟む。
6 6 4 2 46-1500 4
|宛て先MAC|送信元MAC| タグ |T/L| データ | FCS |
タグの構成: | TPID |Priority|CFI| VOD |
TPID: Tag Protocol Identifier。タグが入ったフレームですよと明示
Priority:フレームの優先度を決める
CFI: Canonical Format Indicator : MACアドレスの標準形式かどうか。
VID:VLAN Identifier:フレームが該当するVLAN番号
・Native Vlanの挙動:
トランク同士のリンクで、両端のN-VLAN番号が一致していれば
タグなしフレームを送受信できる。
------------------------------------------------------------------------------------
vlan2, 3を作成して、fa0/2をvlan2、fa0/3~6までを
vlan3のアクセスポートにしたいとき。
SW#en
SW(config)#vlan 2
SW(config-vlan)#name VL2
SW(config-vlan)#exit ←exitして初めてV-lanが作成される
SW(config)#vlan 3
SW(config-vlan)#exit
SW(config)#interface fastethernet 0/2
SW(config-if)#switchport mode access
SW(config-if)#switchport access vlan 2
SW(config-if)#interface range fastethernet 0/3 - 6 ←fa0/1のifの設定から範囲設定に移るとき
SW(config-if-range)#switchport mode access
SW(config-if-range)#switchport access vlan 3
SW(config-if-range)#end
★上記状態で#show vlanすると…
★ports部分は、shutdownだろうがSTPのブロッキングポートだろうがアクセスポートとして認識されているものが全部表示される。
VLAN Name Status Ports
--------------------------------------------------------------------------
1 default active Fa0/1, Fa0/7, Fa0/8....以下略。
2 VL2 active Fa0/2
3 VLAN0003 active Fa0/3, Fa0/4, Fa0/5 Fa0/6 ★トランクポートの場合はifとして表示されず。
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
VLAN Type SAID MTU Parent RingNo BridgeNo Stp BrdgMode Trans1 Trans2
★sh vlanの後半部分に、MTUやSTPの状態が表示される。
ちなみにこの部分はsh vlan briefだと省略される。
-------------------------------------------------------------------------------------------------
1 enet 100001 1500 - - - - - 0 0
2 enet 100002 1500 - - - - - 0 0
3 enet 100003 1500 - - - - - 0 0
1002 fddi 101002 1500 - - - - - 0 0
1003 tr 101003 1500 - - - - - 0 0
1004 fdnet 101004 1500 - - - ieee - 0 0
1005 trnet 101005 1500 - - - ibm - 0 0
Remote SPAN VLANS
--------------------------
Primary Secondary Type Ports
----------------------------------------------------------------------------------------------------------
★スイッチポートの情報
#show interfaces fastethernet 0/2 switchport
Name: Fa0/3
Switchport: Enabled
Administrative Mode: Static access ★ここがdynamic autoで
Operational Mode: Static access ここがstatic accessであるとかもアリ。Administrative Trunking Encapsulation: dot1q
Operational Trunking Encapsulation: native
Negotiation of Trunking: Off
Access Mode VLAN: 2 ★割り当てられたV-lan id
Trunking Native Mode VLAN: 1 (default)
Administrative Native VLAN tagging: enabled
★トランクポートだと(PKTオリ設定)
Switch#show interfaces GigabitEthernet0/1 switchport
Name: Gig0/1
Switchport: Enabled
Administrative Mode: trunk
Operational Mode: trunk
Administrative Trunking Encapsulation: dot1q
Operational Trunking Encapsulation: dot1q
Negotiation of Trunking: Off
Access Mode VLAN: 1 (default)
Trunking Native Mode VLAN: 99 (Inactive)
Voice VLAN: none
Administrative private-vlan host-association: none
(中略)----
Operational private-vlan: none
Trunking VLANs Enabled: ALL
Pruning VLANs Enabled: 2-1001
Capture Mode Disabled
Capture VLANs Allowed: ALL
Protected: false
Appliance trust: none
〇Rev トランクポートの設定とネゴシエーション
・DTPってなんだっけ:Dynamic Trunking Protocol... Cisco独自プロトコル。
アクセス/トランクの切り替えや、
汎用規格IEEE802.1Q/独自規格ISLの切り替えが動的にできる。
コマンド:(config-if)#switchport mode dynamic desirable / dynamic auto
dynamic desirable / dynamic autoの2種のオプションで設定。
desirableだと積極的にトランクポートになるよう働きかけ、
対向がdesirable/auto/trunkだとこちらもトランクになる。
autoだと消極的になりこちらからは働きかけない。
対向がtrunkかdesirableだとトランクになり、
対向がaccessかautoだとアクセスになる。
・DTPを使わないスタティックな設定はこう。
SW(config)#interface fastethernet 0/2
SW(config-if)#switchport trunk encapsulation dot1q ★IEEE802.1QとISLをどっちもサポートしている場合のみ
SW(config-if)#switchport mode trunk
SW(config-if)#switchport nonegotiate ★明示的にトランクにしているのでDTPは使わない。
※スタティックに片方をtrunk、もう片方をaccessにした時の動作
VLAN1\ /VLAN1
SW1(access)→→→(trunk)SW2
VLAN2/ \VLAN2
アクセスポートから発射されるフレームにはタグがない。
タグがないフレームは、トランクポートで受信されるとNative Vlanとして扱われる。 →つまり、SW1のアクセスから発射されたフレームがSW2のトランクポートのNative Vlanと同じVlan-idのものなら通信が成立するが、
それ以外のVlanのものを発射してもトランクポートで破棄されてしまう。
〇Rev Native-Vlanの設定方法
(config-if)#switchport trunk native vlan 99
★Trunking Vlan Enabledを限定したい::trunk allowed vlan
例えば、fa0/x同士をトランクで繋げたSW1、SW2があって、
SW1ではVLAN1,2,3 SW2ではVLAN1,2があり、 各Vlan用に2個ずつ
Faが割り当てられてその先に1台ずつ端末があるというケースで
SW1のVlan3のある端末からARPリクエストがブロキャされたとしよう。
・フレームはSW1のVlan3のその端末が繋がるポートで受信された後どうなるか。
ブロキャドメインはVlanごとに区切られるから、
ブロキャの飛んでいく先はまず SW1 Vlan3の残りのポートである。
これはいいとして、実はSW1のトランクポートにもフレームが飛んでいき、
VLAN3のタグでSW2まで転送されてしまう。
当然、SW2にはVlan3用のポートがなく、フレームは破棄される。
結局、トランクから送信したフレームは無駄なのであった。
→こういうのを防ぎたい。
SW1とSW2のトランクリンクはVlan1,2だけで必要十分なのだし。
→トランクポートの設定時、SW1,SW2の両方で、
最初から以下のようにコマンドを打つがよい。
SW(config)#interface fastethernet fa0/x
SW(config-if)#switchport mode trunk
SW(config-if)#switchport nonegotiate
SW(config-if)#switchport trunk allowed vlan1,2 ・・・★ここが肝。
もしtrunkの許可Vlanを追加でenabl/removりたければ、
両SWで下記のようなコマンドを打ってみるがよい。
SW(config-if)#switchport trunk allowed vlan add 30
★1,2に加えて30が追加で許可される。
SW(config-if)#switchport trunk allowed vlan except 30
★30以外全部許可されることになる
SW(config-if)#switchport trunk allowed vlan remove 2
★vlan2が許可リストから外される。
SW(config-if)#switchport trunk allowed vlan all
★全部(1~4094まで)のvlan-idがトランクで許可される。
★トランクポートの状態を確認しよう(PKTオリ設定:roasのとき)
Switch#show interfaces trunk
Port Mode Encapsulation Status Native vlan
Gig0/1 on 802.1q trunking 99
Port Vlans allowed on trunk
Gig0/1 1-1005
Port Vlans allowed and active in management domain
Gig0/1 1,10,20 ★トランク通っていいVlanリスト
Port Vlans in spanning tree forwarding state and not pruned ※
Gig0/1 1,10,20
※ちなみに、VTPプルーニングだと、上記のtrunk allowed vlanを自動で設定できる…。マジかよ。
◇1-4 VTP
VTPとは:「トランクポート」間で、Vlan情報を共有できる。
どのポートに割り当てたかまでは共有されないがかなり設定を省力化可能
・リビジョン番号は大きいほうに統一される。
その場合、更新があった方のリビジョン番号が増え、そっちに設定がマージされる。
知らなかったこと:
(conf)#vtp pruning
:前述の #switchport trunk allowed vlan xxxxxxxのコマンドを勝手にやる。
使わないvlan情報が落ちてくれる。
(conf)#vtp mode transparent
:自身のリビジョン番号は増えず、
更新もされないがvtp情報の転送だけしてくれる。-1
(conf)#vtp mode off:完全に機能をoffにする。
・vtpのバージョンについて
デフォルト:ver1
トークンリング環境で使いたい:ver2
VLAN ID 1006-4094も使いたい:ver3
・vlan とvtpの情報を消したい:
→#delete startup-config
#delete vlan.dat もしくは #delete flash:vlan.dat
※vlan.datはNVRAMでなくflashメモリ上にある
vlan.datにはパスが予め通っているので名前指定だけでflashと判断してくれる。
◇1-5音声VLAN
・要するに:access portなのにvoice vlanでは複数のvlanを扱うことができる。
switchport access voice vlan 20 などしてVLAN-IDを専用のidを設定しておき、
CDPでスイッチがIP電話を検出+VLAN-ID通知すると、
IP電話は802.1Qタグを付けてフレームを送る。
→トランクポートのようにスイッチが音声VLANのフレームを識別してくれる。
データVLANと音声VLANという腑分け。
◇1-6 VLAN間ルーティング
★Roasでわかってないこと
あるサブifのVLANをネイティブVLAN1にしたとき:encapsulation dot1q 1 nativeコマンドが必要
物理ifをネイティブVLANにしたとき:上記オプションは不要。
・・・なんで????
注:ISLをサポートしている:Catalyst2970, 6500
dot1qのみ:2940,2950,2955, 4000-
dot1qのみのSWはencapsulation dot1qオプション自体必要ないはずだが…
★L3SWでVLAN間ルーティングする時のポイント
→物理ポートと仮想ポートを設定する。
物理ポートはトランクでL2SWのトランク同士と繋げる。
仮想ポートは、各VLANのデフォルトゲートウェイとなり、
Roasで言うところのサブインターフェイスと同等のもの。
SVI:switch virtual interfaceをつくるとはどういうことなのか。
→要するに,vlanを作っておいて
(conf)#interface vlan 1
(conf-if)#ip address 192.168.1.254 255.255.255.0
(conf-if)#no shutdown
とすればよい。 こうするとvlanに設定したipが
仮想i/fかつvlanのデフォルトゲートウェイとして機能する。
ルーティングを有効にする
(conf)#ip routing
あとはL3SWとアクセス層の各SWをトランクでつないで、
アクセス層の各SWの端末へのポートをアクセスポートにして
vlanを割り当てていけばよい。
★アクセス層の各SWには、他ネットワークからリモートで入れるように
・管理VLAN:vlan1の仮想i/fにipアドレスを設定
・ip default-gateway で DGWを設定しておくのがよい。
----------------------------------------------------------------
コマンドたちよ
★MACアドレスを知りたい:
show mac address-table (interface ...)
★トランクとかアクセスとか滅茶苦茶細かくポートの状態を知りたい:
show interface switchport