2017年12月16日(土) - 21:54 | カテゴリ:
Network
Linuxサーバ、FirewallアプライアンスでIPアドレスを国レベルで遮断を行いたい場合、
RIRが公開しているIPアドレスリストをスクリプトに食わす場合がある。
この元となるRIR公開ファイルが曲者で、IPアドレスがCIDRで記載されていない為、
自力でCIDR形式に修正するか、別途CIDR形式に直してある有志が公開したファイルを使うかになる。
今まで、筆者も修正済みファイルを利用していたのだが、
仮想サーバ台数が増えてきたり、ラズパイからも取得したかったり、IPv6網から取得したかったりと、
色々と要望が増えてきたが全てを満たすサイトが中々見つからなかった。
という事で、今回は国別IPv4/IPv6アドレスリストを自力で生成し、
IPv4/IPv6デュアルスタック運用している自鯖で公開してみた。
あと、ついでにリスト生成に使っているスクリプトも手前味噌だが公開してみた。
wiki:CountryCode IPList
IPアドレスリストのダウンロードURLやスクリプト仕様などは、上記のwikiを参照してください。
処理速度優先&本気で書くならば、C++辺りで記載するのが良いのだろうが、
今回は可読性維持したまま、サクッとスクリプト処理したかったので使い慣れているPerlを採用。
スクリプト内の変数初期化が重複していたり、処理が冗長な箇所もあるがキニスルナ
使う事の多そうな「テキスト・圧縮形式(3種)」を用意してみた。
ただ、転送容量が増えすぎたり負荷が上がる様なら公開ファイル形式を減らしたり、
別のレンタルサーバに移動するかも…
ただ、どの程度のサーバ負荷がかかるか未知数な所もあるので、
暫くの間は動作ログを確認しながら経過観察して考える事にする。
« 続きを隠す
2017年11月26日(日) - 21:33 | カテゴリ:
Network
以前の記事でも紹介した通り、自宅のテスト用に導入したTunnelBrokerを常用しているのだが、
その際に『折角だからIPv6 Certificationも点数MAXのLevel Sageにするか』と奮起して実現した筆者。
Level Sageにするには「Tシャツのサイズを入力する」というアメリカンジョークっぽい判定基準がある。
そこもちゃんと入力して、念願の1500点Level SageでIPv6でキャッキャと楽しんでいた所…

国際郵便で本当にTシャツが届いてしまった (´∀`;)
ちなみに、e-maのど飴はサイズ比較用
ネット上だと結構前に着弾報告があるのだが、まさか来るとは思わなかった…


『凄く… マニアックです…』
生地は普通のプリントTシャツだった。
寝間着として使うにもこの時期は寒すぎるので、ひとまず押し入れの奥に入れておこう。
お披露目だと、来夏のOSS辺りをターゲットに考えてみるか ヘ(゚∀゚ヘ)
« 続きを隠す
2017年11月18日(土) - 18:37 | カテゴリ:
Linux
以前購入したCrystalSignalPiを弄ろうとは思いつつも、
別の自鯖障害が立て続けに発生して手を付けられずにいた。
それらも1ヶ月程で粗方潰し混んだので、スクリプトをサクッと作成して連携してみた。

実際にアラートを発生で光らせてみた。
写真じゃわからないが、10秒ほど点滅で光るようにしてある。
zabbixからパトライトを光らせるスクリプトがそこら中で公開されているので、
今回はそれらを参考にしながら使い慣れたperlでサクッと作成。所用時間・3時間程度

仕組みは簡単で、zabbix serverから適当なサーバを監視しておき、
アラートが上がったタイミングでalertscriptsに設置した自作スクリプトを実行し、
CrystalSignalPiのAPIを叩く形にした。
作成したスクリプトは現物をwikiに掲載したので、
使いたい人はソースをコピペしてご利用下さい。
………
zabbixとの連携方法は色んな所で公開されているので省略
ただ、上記のスクリプトはアラートレベル事に引数で処理分岐させる構造なので、
自鯖ではレベル事にアクションを登録してみた。

一応、アラートを強制停止させるクリアアクションも作成。
ns-labだとアラート内容によってアテンション先が微妙に変化する事情もあり、
結果として上の方法で落ち着いた。
登録内容を簡略化する場合、アクションを1つだけにしてzabbixのマクロを使いつつ
アラートレベルを引数で渡してあげるのが良いかも。
………
1週間テスト稼働させた所、アラートバースト時に光りすぎる事も無いし、
スクリプトエラーも出ていないのでとりあえず成功と言えそう。
スクリプトの中身はcurlでAPIを叩いているだけなので、
CrystalSignalPi側がIPv6になったとしても問題無く実行出来るはず。
ラズパイ真骨頂のIoT的な使い方ではないけれど、
物さえあれば簡単にこんな事も出来るという実用例でした。
« 続きを隠す