qualification資格取得でネットワークエンジニアへの道が開けます。資格取得に役立つ勉強法を自身の体験を交えて紹介します。現在、過去数百に及ぶ記事を只管修正中(ちょwww)。23:29:13元ネットワークエンジニアのCiscoのL3SWのACL設定にresequence(リシーケンス)なる機能が搭載されるようになったことを今頃知った罠(ガーソwwwww)00今回は、現役のNW技術者であれば、既にご存知の方も多いかと存じますが、CiscoのNW機器のACL(アクセスリスト)の編集を行う上で便利な機能を紹介いたします(ぇ。ネットワークエンジニアの業務を離れて早6年ほどになり、最近のNW機器の事について殆ど把握出来ていないのが現状です^^;。そのような中、昔では到底叶わなかった事が、今では当たり前のように用いられているという技術の進歩に驚きを隠せずにいます(ぇ。当時、今回紹介する機能が実装されていれば、もっと楽に作業できたことでしょう(ぁ。ありそうでなかった機能なので作業をする側としてはとてもありがたいんだけどね。最近のなんちゃらNP(笑)にはその機能について出題されているのカナ(ぇ。して、なんちゃらNPの更新時に受ける試験でその事について出題されるのカモナー(ニヤw)。とりま、後学のためにもここでしっかりと学んでおくのが得策カモネw。アクセスリストについて軽く説明させていただいた後で本題に入らせていただきたいと存じます。ネットワークを制御するアクセスリストとは何ぞや(ぇアクセスリストとはネットワークの通信の制限を行う際に設定するリストで、例えばIPアドレス単位で通信を制限したり、通信プロトコルで制限したり、通信ポートで制限したりなど、通信を行う範囲を制限することで、アクセス制御を行うことの出来る仕組みとなります。今回はアクセスリストの説明が主眼ではないため、細部についてまでは触れないことを予めお断りしておきます(えーw)。IPアドレスの場合であれば、あるネットワークだけ通信を許可または拒否、あるいはあるサブネットの範囲のみ通信を許可又は拒否したい場合に用いることができます。サブネットとはネットワークを分割する単位のことで、ネットワークの範囲を拡大したり縮小したりする技術のことです。細かくネットワークを区切り、管理範囲を明確にしたい場合や、限りあるIPアドレスを有効活用するために用いられます。4)と呼ばれており、ネットワーク上の端末に割り当てることのできる上限値は2^32(2の32乗)の約43億となっています。6)が用意されており、その移行に向けた動きが既に始まっています。そのため、現在ではIPv4とv6の混在状態となっており、既に枯渇したIPv4を有効活用するため、ネットワークをサブネット単位に分割したり、あるネットワーク内でのみ通用するアドレス(プライベートアドレスと言う)を使用することで、IPv6への完全移行を終えるまでの暫定措置として現在も尚IPv4が用いられています。IPv6の上限値は2^128(2の128乗)で、有限値ではありますが、ほぼ無限に近い数の端末に割り振ることができると言われています。Things)などの電化製品等のネットワーク化にも十分耐えうる量で、まず枯渇しないと言われるほどの膨大な数値になります。これだけ膨大な数を誇っているにも関わらず、技術体系の複雑さや管理が困難な理由でその普及はなかなか進んでいないのが実情です(ガーソorz)。よって、当面の間はIPv4との共存になるものと思われます^^;。「標準アクセスリスト」って何ぞや(ぇこのようにIPアドレスによって制御が可能なリストを「標準アクセスリスト」と呼びます。標準アクセスリストには、「番号付き標準アクセスリスト」と「名前付き標準アクセスリスト」がありますが、今回は一般的によく用いられる「番号付きアクセスリスト」を取り上げます。「名前付き標準アクセスリスト」また別の機会に取り上げるカモナー(えーw)。その場合、以下のような設定が可能です。Switch)とはネットワーク層の通信(IPアドレス)が可能な機器(スイッチ)尚、実際にアクセスリストを設定する際には、L3SWのグローバルコンフィグレーションモードと呼ばれるモードに入って作業を行います。0.0.0.255意味)アクセスリスト10番の192.16810.0/24(source:送信元)※からのIP通信を許可(permit)つまり、標準アクセスリストでは、送信元(source)のIPアドレスを設定することができ、IPアドレスによる通信の可否を設定することができるわけです(ぇ。「deny」は通信を拒否する時に用います。※この場合「/24」とはCIDR表記と呼ばれるもので、簡単に言えばIPv4アドレス(2^32乗)のうち、2^24乗をネットワークのアドレスとして使用していますという意味になります。逆に言えば、ネットワーク上の端末にはそれ以外の2^8(256)個のアドレスを割り当てる事ができることを表しています。厳密には、ネットワークそのものを表すネットワークアドレスとネットワーク内の全端末に通信を行うブロードキャスト通信を除いた254(256-2)個のアドレスを割り当てる事ができます。サブネットマスク表記であれば、「255.255.255.0」となり、「255.255.255」の部分がネットワーク部分になることを表しています。それ以外の「0」の部分が端末に割り当てる範囲となります。ネットワーク用語ではそれぞれ「ネットワーク部」、「ホスト部」と言ったりします。wildcardとは「ワイルドカードマスク」のことで、サブネットマスク同様にネットワークの範囲を表すものとなります。詳しい説明はここでは省きますが、サブネットマスクの排他的論理和を取ったものがワイルドカードマスクとなります。この辺りはまた別の機会に説明するカモナー(えー)。「標準アクセスリスト」の他に「拡張アクセスリスト」なるものも存在する!?更に、IPアドレスに加え、そのアドレスで許可又は拒否する通信プロトコル、例えば有名な所では通信の疎通確認等に用いる「Ping」で使われている、OSI基本参照モデルで言うところのネットワーク層のプロトコルに相当するICMPに制限を掛けることも可能です。ある範囲のネットワークやサブネットの範囲のみPingによる応答を受け付けないと言った設定が可能なわけです。Protocol)など、通信を行う際の約束事(このことを通信プロトコルと言う)でも制御することができます。通信を行う際にアプリケーション等が利用する通信ポート単位でも制限を掛けることができます。通信ポートとは、例えば電子メールを送信する際に利用するメール送信用に設けられた通信路のことを指したりします。Protocol)という25番ポートであったり、電子メールを送信する際にユーザIDやパスワードによる認証を行うSMTP-AUTH(Authentication)が使用する587番ポート(サブミッションポートとも言う)を指しています。その他にもWebページにアクセスするための通信路である80番ポートなどがあります。Protocol)でご存知の方も多いかと存じます。そのhttpを暗号化したhttps(443番ポート)などもあります。このようにIPアドレスに加え、プロトコル単位、ポート単位等で細かく制御できるアクセスリストを「拡張アクセスリスト」と呼びます。この場合も標準アクセスリストと同様、「番号付き拡張アクセスリスト」と「名前付き拡張アクセスリスト」がありますが、今回は「番号付き拡張アクセスリスト」についてご説明いたします。厳密にはもう少し複雑なのですが、概ね次のような構文になります。※22番ポートは遠隔アクセスによる通信を指し、認証時及び通信時に暗号化による通信を行う尚、wildcardの「0.0.0.0」は単体のホスト、この場合は172.16.10.1の端末を指します。172.16.10.1」としても同じ意味となります。CIDR表記で言う所の「172.16.10.1/32」を指し、端末そのものとなります。拡張アクセスリストでは、送信元(source)及び宛先(dest)のIPアドレスを設定することができ、またプロトコル(tcp)単位やポート単位(22)の細かな設定での制御が可能となります。その他にも様々な条件でアクセスリストを作成することが可能ですが、まずはこれらが基本となって、アクセス制御ができるということを理解しましょう。その上で、これからお話する内容をご覧いただければより理解が深まるものと存じます。Cisco機器のACLはシーケンス番号で管理する時代に!?それでは、ここからいよいよ本題に入らせていただきます。これまで簡単にアクセスリストについて説明してきましたが、番号付きアクセスリストについては特に触れなかったため、ここで軽く補足しておきたいと存じます。番号付きアクセスリストには、標準と拡張の2種あることは既に延べた通りですが、その中でも今回は「番号付き拡張アクセスリスト」を例に出して説明したいと存じます。今回、わたしが実際に作業を行った機器は、Cisco製のL3SWのCatalyst3850で、IOSは「IOS-XE」と呼ばれる比較的新しいモデルのものになります。通常、アクセスリストが設定されているか否かを調べる際は、CiscoのL3SWの場合、以下のコマンドを投入し、その結果を確認することで、機器に設定されているアクセスリストを確認します。今回は調査を行いたいので、特権モードにてshowコマンドを用います。access-lists上記のコマンドを入力して実行すると以下のように設定状況が表示されます。このように表示されない場合もあり、その場合は、NW機器に用いられているOS(Ciscoの場合はIOSと言います)のバージョンや型式が古いことが考えられます。version」と入力して実行します。any両者の違いは、シーケンス番号と呼ばれるアクセスリストを管理するための番号が表示されているか否かになります。105」とは番号付き拡張アクセスリスト105番という意味になります。このようにアクセスリストを番号で管理することから、「番号付きアクセスリスト」と呼ばれるわけです(ぇ。シーケンス番号とはアクセスリストの番号毎に設定を並べるためのもので、この番号でアクセスリストを管理することができます。25」の「10」というのがシーケンス番号を表しています。このシーケンス番号ですが、特に何も指定しなければ、アクセスリストを追加した際に自動的に末尾に追加されます。初期値は10で、何も設定しなければリストを追加する度に10ずつ増えてゆき、最大で何と2147483647(21億4748万3647)個※まで割り当てることができます(ちょwww)。※注:Catalyst3850の場合、機種によって割り当て数が異なる可能性あり尚、シーケンス番号を明示的に指定してアクセスリストを設定することで、任意の場所にアクセスリストを設定することができます。シーケンス番号を明示的に指定してアクセスリストを追加する際の手順は以下の通りです。53これにより、シーケンス番号120のアクセスリストを明示的に追加することができます。access-lists」の結果から明示的(120)に53番ポート(dnsサービス)の許可設定がなされていることがわかります。そのメリットといえば、類似した設定の内容でアクセスリストを纏めたり、リストを削除する際にシーケンス番号単位での削除が可能になったことです。最近のCisco機器はACL設定をシーケンス番号を用いて削除可能!?その際は以下のように設定します。23※「no+シーケンス番号」のみでも設定したアクセスリストを削除できますが、その場合、行番号を間違えると即座にリストが消えてしまいます><。誤削除のリスクを回避するため、「no+シーケンス番号+アクセスリスト」で削除することをオススメします^^;。このように入力した場合、仮に削除したいシーケンス番号を間違えたとしても、アクセスリストと一致しないので、削除する際にエラーが出て削除できないため、誤って削除するリスクを回避できます。実は、一昔前のCisco機器では、このように設定したアクセスリストを選択して削除するということができませんでした^^;。スポンサーリンク昔のCisco機器にはアクセスリストを個別削除する機能がなかった!?先の例を見てもわかる通り、古いIOSを搭載した機種には、シーケンスで管理する機能がなく、アクセスリスト番号でのみ管理する形態となっていました。わたしがかつてネットワークエンジニアとして日々CiscoのNW機器を設定していた折には、まさにこのリスト単位の設定のみが可能であったわけです^^;。23」というリストをアクセスリスト番号105番から削除しようとしても個別に削除することができなかったことを意味しています(ぇ。23」のリストのみ消えそうに思えますが、この作業を行うと、何と番号付き拡張アクセスリスト105番ごとごっそりと消えてしまいます(マジカwwwww)。これって本当に恐ろしいことですね(ガクブルwwwww)。105番のリストの中にアクセスリストの定義が100個あったとしたら、その定義が問答無用で全て消えてしまうわけですから><。うっかり消しチャッタ(てへぺろw)では済まない事態となってしまうわけデス(ヲィwwwww)。よって、当時アクセスリストを削除する際には、本番環境に影響が出ないよう、アクセスリストの設定を変更したconfigを作成して一度に流し込んでいました^^;。コマンドで個別削除が行えなかったからね^^;。マジマンドクセー時代ですタ(ダマレカスwwwww)。変更前の設定のバックアップを取った上での作業ですけどね^^;。万一間違ったconfigを流し込んだら大変ですからね^^;。今から思えばよくもまあ、こんな不便な時代にアクセスリストを駆使してネットワークを構築していたものだと我ながら思います><。今尚、同じ仕様だと思い込んで作業していたのですが、レビューの折にこのような個別削除が行えることを知って軽くカルチャーショックを受けた俺ガイル(だめぽwwwww)。そのおかげでアクセスリストの削除が楽になって大助かりなんだけどね(ニヤw)。早くこの仕様にしなかったのか声を大にして叫びたいゾ(ダマレクズwwwww)。この後、更に便利な機能があることを知って驚愕することになるんだけどね(ちょwww)。その機能はある程度の慣れが必要なんだけどね(ぇ。うまく使わないと思わぬ弊害をもたらす事になりそうです^^;。ほんと、無知というのは罪だねぇ(ヲィwwwww)。NW機器の設定なんぞ行ったのマジで6年ぶりくらいでヲワタorz。Cisco機器のシーケンス番号は振り直しが可能!?これまで、アクセスリストの概要から始まり、シーケンス番号を用いたアクセスリストの設定方法について説明してきました。今回お話する内容は、そのシーケンス番号を実は振り直すことが可能だと言うことデス(ぇ。いうことかというと、シーケンス番号のデフォルト設定でお話した通り、シーケンス番号の初期値は10から始まり、以降10ずつ増えていくのが通例となっています。簡単に言えば今回紹介させていただく手法を用いれば、その初期値の設定を任意に行うことが可能となり、またその初期値からの数値の間隔も任意に設定することが可能となります(ぇ。通常10を初期値とするシーケンス番号の並びを初期値を1からとし、以降1ずつ増加させたり、初期値と100とし、以降100ずつ増加させるといったことが可能になります。そのために用いるのが今回ご紹介する「リシーケンス(resequence)」という手法です。以下、具体的にその設定方法を見ていきたいと存じます。1意味:アクセスリスト105番のシーケンス番号の初期値(starting-sequence-number)を1に、以降1ずつ増加(increment)させる上記の設定を行なうと以下の通りとなります。見ての通り、初期値が1でシーケンス番号が1ずつ増えていますね。この状態で初期値を100、増加値を100とした場合は以下の通りとなります。53以下略こちらは初期値を100とし、以降100ずつ増えているのがわかると思います。このように、リシーケンス(resequence)の設定を用いることでシーケンス番号を自在に操ることができるようになります。アクセスリストでリシーケンス(resequence)が必要になる場面とは!?このことは例えばデフォルト状態の初期値が10で以降10ずつ増えるシーケンス番号の設定で、次のようにアクセスリストの管理上の都合で、途中で複数のアクセスリストを追加したい場合などに重宝します。anyこのような場合、そのまま追加設定すると以下の通りとなります。53以下略このように順番通りには並ぶのですが、これまで10毎に並んでいた法則が崩れ、アクセスリストの管理上問題になる可能性があります。そのような際に先ほどのリシーケンス(resequence)設定を用いることで、一定の間隔で並び直すことができます。53赤字で示した通り、10毎に並び直しが行なわれ、21番のシーケンス番号は30に、22番のシーケンス番号は40と、それぞれ10毎に数値の振り直しが行なわれます。アクセスリストが追加されたことにより、後続のシーケンス番号30のアクセスリストはシーケンス番号50に、シーケンス番号120のアクセスリストは60にぞれぞれ並び直しが行なわれます。次のようにシーケンス番号の間隔以上のアクセスリスト追加が求められた場合などにもリシーケンス(resequence)機能は重宝します(ぇ。シーケンス番号の初期値はデフォルト値の10で、以降10ずつ増えると仮定した場合で考えます。既存のシーケンス番号20~30の間に追加したいとします。53以上、新たに10個のアクセスリストを追加します。access-lists」の実行結果には既にシーケンス番号30のアクセスリストがあり、そのまま追加すると既存の設定を上書きすることになり、従来ある設定が書き換わってしまいます。そこで、以下のようにリシーケンス(resequence)を行い、初期値を100、以降100ずつ増える設定にし、その状態で先の10個のアクセスリストの追加を行います。初期値を100としているのは、計算を楽にするためデス(ニヤw)。俺数学苦手だもん(ヲィwww)。上記の通り、初期値が100で以降100ずつ増加する形に番号の振り直しが行われます。この状態であれば、シーケンス番号200~300の間に10個のアクセスリストを追加すれば良いので、問題なく行なえることがわかります。追加する際には次のように振り直した状態に合わせた形でアクセスリストを追加します。上記の通り、問題なく追加することができます。後はこの状態で初期値を10に設定し、以降10ずつ追加するようにリシーケンス(resequence)すれば、デフォルトの設定値に戻すことができます。大事なのは順番通りに並んでいることですので、特段デフォルト状態に戻す必要がないことをお断りしておきます。後述するリシーケンス(resequence)の頻度にも影響することとなりますからネ(ぇ。53上記の通り、デフォルトの並びに戻すことができます。以上、リシーケンス(resequence)の活用方法になります。リシーケンス(resequence)を使用する際の注意点(ぇ前述した通り、アクセスリストのリシーケンス(resequence)機能を使うことで、シーケンス番号を振り直すことができますが、その使用を行う際には幾つか注意すべきことがあります。それは、リシーケンス(resequence)は多用すべきではないということです(ぇ。いうことかと言うと、一度リシーケンス(resequence)を行うとNW機器に大きな負荷が掛かり、場合によっては現行のNWの通信に影響する可能性があるということです。確かに、数行程度のアクセスリストであれば、振り直しを行なったとしても、それほどNW機器に与える影響は多くはないと思いますが、これが数百~数千行以上となると、アクセスリストの振り直しに掛かる負担が大きくなることは想像に難くないと思います^^;。よって、あまりリシーケンス(resequence)を多用するとNW機器に良くない影響を与えることになり、好ましいとは言えません。リシーケンス(resequence)を何度も行うとシーケンス番号の並びが何度も変わるため、場合によっては計算が複雑になり、設定誤りを起こす可能性を否定できません。したがって、リシーケンス(resequence)を行う際には、なるべく少ない回数で効率よく行い、NW機器の負荷を軽減させると共に、簡易な計算で済むように考慮する必要があります。以上、使いこなせれば便利な機能ではありますが、使用する際は間違えることのないよう慎重に作業するようにしましょう。ほんと、何時の間にこんな便利な機能が実装されたんだか(ダマレゴミwwwww)。時代の流れというのはほんと残酷だねぇ(マテw)。