日本国内からのアクセスのみ許可するようなルールを作成したいという背景のもと、アクセス許可するIPアドレスを一覧化する必要がありました。設定するサーバにスクリプトを設置して実現できたので備忘録としてメモします。管理しているIPアドレスを一覧化して公開しており、今回はAPNICから引っ張ってきています(以下URL)http://ftp.apnic.net/stats/apnic/delegated-apnic-latest使用条件として以下の記載があります(日本語訳の不備はあしからず)。自由に使えるが正確性は保証しないとのこと。ありがとうございます。これらのファイルは、これらのレポートに記載されている情報の使用に起因する損失または損害に対して、APNICが一切の責任を負わないという条件で、自由にダウンロードして使用することができます。APNICは、これらの報告書の正確性を保証する能力を最大限発揮するよう努めています。APNICはこの点に関していかなる保証もいたしません。APNICとは、アジア太平洋地域のIPアドレスやAS番号の割り当てや管理を行っています。JPNICはその配下で日本国内における同管理を行っている機関です。詳しくは、JPNICとは。やり方まず、APNICから先ほどのIPアドレスの一覧を引っ張ってくるのですが、アジア全域のIP一覧となっているため、日本国内のIPを取り出す必要がある。ような表示に整形する必要がある。※APNICから公表されている形式としては、以下のようになっている。-5apnic|JP|ipv4|1.0.16.0|4096|20110412|allocatedapnic|JP|ipv4|1.0.64.0|16384|20110412|allocatedapnic|JP|ipv4|1.1.64.0|16384|20110412|allocatedapnic|JP|ipv4|1.5.0.0|65536|20110401|allocatedapnic|JP|ipv4|1.21.0.0|65536|20100616|allocated4カラム目がIPアドレス、その隣の5カラム目がIPの数。あれば256と記載されている。サブネットの形式では書かれていない。)ので、IPの数からサブネットを割り出す必要がでてくる。答えからいうと以下で。${LST}done簡単に説明をば。使用しているが、以下のどちらかでも代用可能。inodeが変わってしまうし、このリスト自体はfirewalldに読み込ませることを前提としており、常に存在している必要がある。削除した時点でfirewalld的にはよくない気がするので(確認はしていない)削除→作成ではなく。内容を空に、を選択した。「IPアドレス/IP数を抽出」は単純にほしいデータ(4~5カラム目)をgrepしているだけ。「IP数からサブネットマスクを割り出す」のは、ネットワークで使用可能なIPの数(/24なら256など)は÷2していくと最後は1になる。「IPの数÷2」するたびに32から1を引いていくと、IPの数が1になった時にサブネットマスクの値がわかる。IPの数が1でない場合は、この処理を行うようwhileループを使う。同じことが当然できるんだけど、以下のようにすることで処理時間を短縮できる。1))こうすることで処理時間が以下のように変わってくる。