sshdに対する不要な攻撃を遮断するために日本国外からのアクセスをはじくことを考えた。 さて、国内向けのIPアドレス空間のリストってどこで見れるのだろうか。
日本でIPアドレスを割り当てている組織はJPNICなので、ここから 探してみる。あ、あった。
「サブネットの最初のアドレス」〜「最後のアドレス」という表記なので、iptablesで使うためにCIDR表記に しなければいけない。
def cidr_notation(nw_addr, br_addr) prefix = 32 - (long(nw_addr) ^ long(br_addr)).to_s(2).length "#{nw_addr}/#{prefix}" end def long(addr) addr.split(/\./).inject(0) {|r,i| (r << 8) + i.to_i} end
……あまりうまくないかな。これを使って上記のページからリストを得る。
require 'open-uri' IP_ADDR=/\d+\.\d+\.\d+\.\d+/ ADDR_BLOCK_LISTS = %w(http://www.nic.ad.jp/ja/dns/jp-addr-block.html http://www.nic.ad.jp/ja/dns/ap-addr-block.html) ADDR_BLOCK_LISTS.each do |url| open(url) do |f| f.read.scan(/(#{IP_ADDR}).*?(#{IP_ADDR})/om).each do |nw_addr, br_addr| puts cidr_notation(nw_addr, br_addr) end end end
Rubyist Magazineの増井さんへのインタビューを 読んで、初めてopen-uriを使ってみる。便利。
こんなものがあった。
ふと思い立って、その日のニュースを表示させるtDiaryプラグインを作ってみた。 最近のニュースを見ても面白くないので、日付を指定した閲覧時のみ表示するようになっています *1。 擬似的にセクションを作っているために実装はかなりイリーガルな感じ。
なんでこんなものを作ったかというと、単純に数年後に見たときに楽しいだろうなぁと。 でも、わざわざそれを見るために自分で手を動かさなければならないというのは、今の WWW(を使って構築されている世界)の弱点というか伸びる余地のある部分だよなぁなんてことを思いつつ作業。
検索エンジンのおかげでWWWから「現在の情報」について切り出すことは簡単。 いや、「現在の情報」っていうのは限定しすぎで単一の事象*2については 時系列を遡っていく事も簡単に出来る(場合が多い)けれども。 ただ、並列的にそれらの情報を見ようとするととたんに難しくなる。
つまり、このプラグインはバラバラに存在していたローカルな出来事とグローバルな出来事という2つの系を 関連づけて任意の時点でぶった切って見れるようにしたものと言うことが出来る訳ですね。大風呂敷を広げすぎだけど。
もう少し考えてみれば、例えばWikiである時点でのスナップショットが表示できると面白いだろうな。 検索をかけてもリンクを辿って別のページに行っても同じ時点での情報が出てくる、みたいな。 すでにどこかにありそうだ。