24
4月
0

CIDRを算出するスクリプトを作ってみた。


IPアドレスとネットマスクからCIDRを算出するスクリプトを作ってみました。
いったい何のために???というのも、まだ試してはいないのですが、Postfixのsmtpd_client_restrictions部分にcidr_tableを導入してみようかと思ったのです。


国内のIPの場合はsmtpd_client_restrictions部分では無条件にOKにしてその他は従来のスパムフィルターを通すといった試みをしてみようかと思ったわけです。

で、作成したのがコレです。

↑には6つのスクリプトが入っています。

getApnicipv4.plはApnicに登録されている各国毎のIPを拾ってきます。

> perl getApnicipv4 jp > apnicJp.lst

のように実行すると日本のIP一覧をwgetしてきてapnicJp.lstに標準出力します。

中国のIP一覧なら

> perl getApnicipv4 cn > apnicCn.lst

といった感じ。

getJpnicipv4.plはJPNICが管理しているIP一覧を取ってきます。

> perl getJpnicipv4.pl > jpnic.lst

といった感じ。

で、makeCidr.plが↑で取ってきたIP一覧からCIDRを生成するスクリプト。

> perl makeCidr.pl < apnicJp.lst > cidr.tmp
> perl makeCidr.pl < jpnic.lst >> cidr.tmp

といった感じ。

> echo ‘192.168.0.0-192.168.255.255’ | perl makeCidr.pl

というように単体でも使用できます。

dupRemove.plはmakeCidr.plで作成した一覧から重複しているものを削除するためのスクリプト。

> perl dupRemove.pl < cidr.tmp > cidr.lst

という感じ。

clientCidr.plですが、これはPostfixのsmtpd_client_restrictionsで使用するためのcidr_tableを生成するためのスクリプト

> perl clientCidr.pl OK < cidr.lst > client_cidr

といった感じ。
引数(OK)はRESULTを指定します。

拒否するならば

> perl clientCidr.pl REJECT < cidr.lst > client_cidr

といった感じ。

dupCheck.plはclientCidr.plで作成した一覧から重複しているものを標準出力します。

> perl dupCheck.pl < client_cidr

最後はこれで目視して重複したものを削除してやる必要があります。

添付されているclient_cidrは私が上記を実行して作成したcidr_tableです。

まだアドレスの範囲的に重複しているものが多数ありますが、キリがないので放置です:)

Enjoyed reading this post?
Subscribe to the RSS feed and have all new posts delivered straight to you.
Post your comment