国別 IP アドレス割り当てリスト

サーバを立てているとあちこちから不正アクセスがくるもので、特に不正アクセスが多い国はアクセス禁止にしているサイトもあると思います。

そこで、どの国がどの IPを使っているかは、IPを管理している組織 IANA(Internet Assigned Numbers Authority) で調べることができます。といっても、IANAは地域別に以下のように分かれているので、実際の国別のIPの管理はこれらの組織が行っていますが、どこにリストがあってどうやって見ればよいかよくわからなかったので、調べてみました。組織へのリンクと、割り当てのリストへのリンク(allocation and assignment reports)です。delegated-apnic-日付というファイル名でアップロードされています。

ファイルには、以下のようなリストが載っています。ipv4と書いてある行が調査の対象行です。

apnic|NZ|asn|2.102|1|20090305|allocated
apnic|NZ|asn|2.104|1|20090409|allocated
apnic|AU|asn|2.105|1|20090421|allocated
・・・
apnic|JP|ipv4|58.0.0.0|131072|20050106|allocated
apnic|IN|ipv4|58.2.0.0|65536|20050110|allocated
apnic|JP|ipv4|58.3.0.0|32768|20050304|allocated
・・・・

ヘッダにフォーマットの説明へのリンクが載っていましたので見てみたところ、以下のようなフォーマットらしいです。(サイトから引用)

registry|cc|type|start|value|date|status[|extensions...]
registry One value from the set of defined strings:

{afrinic,apnic,arin,iana,lacnic,ripencc};
cc ISO 3166 2-letter code of the organisation to which the allocation or assignment was made, and the enumerated variances of:

{AP,EU,UK}

These values are not defined in ISO 3166 but are widely used.

type Type of Internet number resource represented in this record. One value from the set of defined strings:{asn,ipv4,ipv6}
start In the case of records of type ‘ipv4′ or ‘ipv6′ this is the IPv4 or IPv6 ‘first address’ of the range.In the case of an 16 bit AS number the format is the integer value in the range 0 to 65535, in the case of a 32 bit ASN the value is in the range 0 to 4294967296. No distinction is drawn between 16 and 32 bit ASN values in the range 0 to 65535.
value In the case of IPv4 address the count of hosts for this range. This count does not have to represent a CIDR range.In the case of an IPv6 address the value will be the CIDR prefix length from the ‘first address’ value of <start>.In the case of records of type ‘asn’ the number is the count of AS from this start value.
status Type of allocation from the set:

{allocated, assigned}

This is the allocation or assignment made by the registry producing the file and not any sub-assignment by other agencies.

extensions Any extra data on a line is undefined, but should conform to use of the field separator used above.

説明を読む限り、startが割り当て開始のIPアドレス、valueがそのアドレスから割り当てられているIPアドレス数のようです。

つまり以下の行の場合、

apnic|JP|ipv4|58.65.32.0|8192|20060921|allocated

JP(日本)に、58.65.32.0から8192個のIPのIPが割り当てられているということになります。これをIPの範囲で計算すると、8192/256=32なので、

58.65.32.0 ~ 58.65.63.255

となります。 計算できなくIPの基本を知らない人は別途勉強してください。

下記参考ページに、これらの計算を処理してくれるperlのスクリプトを公開してくれていますので、リストを作成したい場合は参照してみてください。

参考
http://fetus.k-hsu.net/document/network/ipv4assign/

http://www.nminoru.jp/~nminoru/memo/ip-address/what_country_from.html


ファイルサーバへのアクセスが異常に遅い@Windows XP or Vista

Windowsからファイルサーバ上のファイルにアクセスしようとすると、異常に遅いことがあります。

サーバ側に問題がない時は、WindowsのWebClientというサービスが悪さをしている可能性が高いです。

WebClientは、HTTPでファイルの共有を行うプロトコルWebDAV用のサービスです。 このサービスが起動していると、ファイルサーバへのアクセス時に必ずWebDAVによるアクセスが試されるようです。このときファイルサーバ側でHTTPのポートへのアクセスがあるとrejectでパケットエラーを返してくれればよいのですが、セキュリティ上の理由で応答なしにしているとタイムアウトするまでファイルサーバへのアクセスが止まってしまいます。これが原因のようです。

maznはWebDAVを使用しているので、なんとも迷惑なサービス仕様です。サーバ側にApacheなどのWebサーバが起動していると、以下のようログが出力されます(Debianの例)。随分前からこのログは見たことあったけど、これが原因だとは知りませんでした。

192.168.0.1 - - [25/Apr/2009:20:12:22 +0900] "OPTIONS / HTTP/1.1" 401 401 "-" "Microsoft-WebDAV-MiniRedir/5.1.2600"

WebDAVサービスを使用しなければコントロールパネルのサービスの設定よりwebclientを無効にすればOKです。WebDAVを使用する場合は止められないので、サーバ側のファイアーウォールでHTTPのアクセスを許可して、応答を返すようにしてあげる必要があります。

サーバ側の設定を変えることができない場合はクライアント側で何か設定できればよいですが難しいので、やはりwebclientを止めて、別のWebDAVクライアントを使うしかないかもしれません。

参考 : http://www.monyo.com/technical/windows/41.html


rpmが削除できない@CentOS 5.2

rpm -e でパッケージ削除中に誤ってCtrl-Cを押してしまい、中途半端に削除が中断してしまい、完全にパッケージを削除できなくなってしまいました。

# rpm -e postgresql-server
サービス postgresql に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
エラー: %preun(postgresql-server-8.1.11-1.el5_1.1.i386) スクリプトの実行に失敗しました。終了ステータス 1

rpmのデータベースが壊れたわけではないようで、rpm –rebuildをしても直りません。仕方なく以下の方法で直しました。

完全に削除できていないので、再度同じrpmをインストールしてあげます。まずはインストールされていたパッケージを用意します。ここではOS付属のpostgresql-serverを例にあげます。

OS付属のパッケージはyumでインストールできますが、パッケージのダウンロードだけという機能はありませんので、Web上から直接ダウンロードするか、以下のようにしてダウンロードだけできるユーティリティをインストールしてダウンロードします。

# yum install yum-utils
~出力省略~
# yumdownloader postgresql-server

/var/cache/yum/base/packages にrpmファイルがダウンロードされるので、ここに移動します。

# cd /var/cache/yum/base/packages
# ls
postgresql-server-8.1.11-1.el5_1.1.i386.rpm

これを普通にインストールしようとしても、すでにインストールされているのでインストールできないので、–forceオプションをつけてインストールします。

# rpm -ivh --repackage postgresql-server-8.1.11-1.el5_1.1.i386.rpm
準備中...                ########################################### [100%]
        パッケージ postgresql-server-8.1.11-1.el5_1.1 は既にインストールされています。
# rpm -ivh –force postgresql-server-8.1.11-1.el5_1.1.i386.rpm
準備中…                ########################################### [100%]
   1:postgresql-server      ########################################### [100%]

インストール完了後、再度削除してあげると綺麗に削除されます。

# rpm -e postgresql-server

もう少し壊れにくいように作ってもらいたいですね。


Portable Ubuntu for Windows

Portable Ubuntu for Windowsなるものがあるらしいです。Windows上でLinuxカーネルを動かす技術-coLinuxを使用して、Linuxを動作させるので、別途パーティションを作ってインストールといった面倒なことをしなくてもよいLinuxです。

5年ぐらい前にcoLinuxを使ってみた時は、結構不安定でしたし、フリーのXサーバとしてcygwinのXを使っていたのですが、これもまた不安定。しかしPortable UbuntuにはXmingっていうXサーバが同梱されているようです。これもフリーですし、今でも結構活発に開発されているので、結構期待できそうです。

ということで、今度少し触ってみます。


USB LANアダプタ GU-1000Air 購入@Ubuntu 9.04 beta

プラネックスのUSBギガビットLANアダプタ GU-1000Airを購入。

搭載コントローラにASIX AX88178と書いてあり、なんとなくLinuxでも動きそうなので選択。案の定Ubuntu 9.04では何もせずに認識され、普通に使えました。(ギガビットのスイッチないので、100Mでしか試していません)

# dmesg | grep asix
[   15.402716] eth1: register 'asix' at usb-0000:00:1d.7-2, ASIX AX88178 USB 2.0 Ethernet, 00:90:xx:xx:xx:xx
[   15.407852] usbcore: registered new interface driver asix
# lsmod | grep as
asix                   22528  0
usbnet                 23944  1 asix
mii                    13312  4 asix,usbnet,8139too,8139cp

Linuxで動くUSB-LANアダプタを探している人はご参考あれ。

ちなみに、付属のCDに入っているWindowsやMacのドライバがネット上で公開されていません。 CDバックアップとっておかないとやばいな。