全 UserAgent とサーバの全ディレクトリに対し、ロボットのアクセスを拒否する場合の意思表示をするための robots.txt の例。
2003-06-08 の「ロボット避け meta 要素 <meta name="robots" content="noindex,nofollow">」では html の meta 要素によるロボット避けのみしか書かなかったのでメモ。
大文字小文字は関係なし。改行文字は CRLF でも LF でもどちらでも良い。これをサーバのルートに置く。http://sonic64.com/ だったら http://sonic64.com/robots.txt だ。
2003-06-08 の「ロボット避け meta 要素 <meta name="robots" content="noindex,nofollow">」では html の meta 要素によるロボット避けのみしか書かなかったのでメモ。
- robots.txt の例
robots.txtUser-agent: *
Disallow: /
大文字小文字は関係なし。改行文字は CRLF でも LF でもどちらでも良い。これをサーバのルートに置く。http://sonic64.com/ だったら http://sonic64.com/robots.txt だ。
業務で使っている開発 PC 群を接続するために、100Base-TX 24ポートのスイッチングハブを選定して購入した。
週明けに該当のスイッチをテストしてみたが、障害は再現しなかった。このまま使い続けるのも怖いので、予防交換することにした。また、予備のスイッチングハブの在庫も切らしていたので、都合2台分のスイッチングハブを調達することになった。
・100Base-TX で、ポート数24以上のレイヤ2スイッチングハブ。
・可能な限り安く。メーカーやブランドは問わない。
・コンソールからの接続は不要。
・VLAN を切ったりはしない。QoS も不要。
要するに、ポート単価が安い 100Base-TX スイッチならなんでもよい。もし、値段を気にせず性能重視で何でも買っていいと言われたら、Cisco の Catalyst 2950 の24ポートモデルでも買うだろうけど、サーバを接続するわけじゃないので今回は不要。
接続する開発 PC 群は動画や音声を扱わないので、100Base-TX で十分。ただ、たまにギガバイト単位でログやバックアップデータを流したりすることもあるので、100Mpbs は欲しい。
実効性能はそこそこでいい。そもそも、今のスイッチならワイヤスピード出るでしょう? 廉価な機種では全ポートでフルにトラフィック流せばバックプレーンが飽和するかもしれないけど、繋ぐのは開発 PC なのでそんなトラフィックが発生することはまずありえない。
コンソールからメンテしたりする機能は不要。壊れたら交換するだけ。統計も取る必要がないので SNMP なども不要。VLAN も不要。IP 電話は別のネットワークなので、QoS (Quality of Service) も不要。
まず、いくつかウェブのお店を見てまわった。上記要件の24ポート 100Base-TX スイッチだと、だいたい1万円から2万円くらいだった。
検討したメーカーはコレガ、アライドテレシス、バッファロー、シスコ、ネットギア、プラネックス。オーバースペック過ぎる製品しか持たないメーカーもあった。2万円というのは、そういったものは除外した価格。
検討した中では、バッファローの LSW-TX-24NSR が手頃な値段で良さそう。24ポートの 100Base-TX AUTO-MDX 対応スイッチで、実売1万円を切っていたのはこれだけだ。税、送料、振り込み手数料込みで1万円と考えてポート数の24で割ると、ポート単価417円。これで十分でしょう。
ちなみに、Amazon の LSW-TX-24NSR の商品画像は間違ってるね。どう見ても USB ハブです。商品名に「10/100M スイッチングHub」って入ってるのに、商品画像には USB2.0 とか書いてあって笑える。
私が探した限りでは、NTT レゾナントが運営する NTT-X Store だけが見積もりの自動発行機能を備えていた。ただし、仮の見積もりであるため、当日限り有効という制約が付く。有効期限が短くても無いよりは良いので、ここで見積もりを取得。ショッピングカートに入れた後に、画面下部の「購入手続き/見積書作成」のボタンを使って得た。
NTT-X Store
あと、近所のコジマ電気とヤマダ電機に見積もりを FAX してくれるよう電話で依頼した。内容としては、「貴店で取り扱っているなかで最も安価な24ポートの100Base-TX スイッチ2台分の見積もりをください」というもの。もし在庫があればそのまま店舗に行って調達するところだが、今は見積もりを取るだけのために店舗に行く時間的余裕はない。後輩に頼んでもいいんだけど、一度は一通りの手続きを経験しておきたかったので自分でやることにした。
まずコジマ電気。私が電話したコジマ電気の支店では、店頭でしか見積もりを発行していないとのこと。それは残念。仕方がない、またの機会ということで。ヤマダ電機は見積もりを FAX してくれた。ありがたい。発行された見積もりの機種は奇しくもバッファローの LSW-TX-24NSR だった。しかし、残念ながら今回は送料を含めても NTT-X の方が安い。結局、NTT-X から購入することにした。
- 開発 PC を接続している 100Base-TX スイッチの調子が悪い
とある土曜日の昼下がり。仕事場のネットワークが突然不通となった。開発 PC 群を繋ぐスイッチングハブが壊れた模様。私は障害発生当時に現地にいなかったため、電話当番として出勤していた後輩が対処してくれた。該当のスイッチを再起動しても状況が改善しなかったとのこと。あくまでも開発 PC 接続用のネットワークなので、冗長系は用意していない。後輩はとりあえず障害が発生していない島に迂回して接続するようにしてくれていた。ありがとう。週明けに該当のスイッチをテストしてみたが、障害は再現しなかった。このまま使い続けるのも怖いので、予防交換することにした。また、予備のスイッチングハブの在庫も切らしていたので、都合2台分のスイッチングハブを調達することになった。
- 開発 PC 群接続用スイッチングハブの要件定義
要件定義。・100Base-TX で、ポート数24以上のレイヤ2スイッチングハブ。
・可能な限り安く。メーカーやブランドは問わない。
・コンソールからの接続は不要。
・VLAN を切ったりはしない。QoS も不要。
要するに、ポート単価が安い 100Base-TX スイッチならなんでもよい。もし、値段を気にせず性能重視で何でも買っていいと言われたら、Cisco の Catalyst 2950 の24ポートモデルでも買うだろうけど、サーバを接続するわけじゃないので今回は不要。
接続する開発 PC 群は動画や音声を扱わないので、100Base-TX で十分。ただ、たまにギガバイト単位でログやバックアップデータを流したりすることもあるので、100Mpbs は欲しい。
実効性能はそこそこでいい。そもそも、今のスイッチならワイヤスピード出るでしょう? 廉価な機種では全ポートでフルにトラフィック流せばバックプレーンが飽和するかもしれないけど、繋ぐのは開発 PC なのでそんなトラフィックが発生することはまずありえない。
コンソールからメンテしたりする機能は不要。壊れたら交換するだけ。統計も取る必要がないので SNMP なども不要。VLAN も不要。IP 電話は別のネットワークなので、QoS (Quality of Service) も不要。
- バッファローの LSW-TX-24NSR が手頃な値段で良い
まず、いくつかウェブのお店を見てまわった。上記要件の24ポート 100Base-TX スイッチだと、だいたい1万円から2万円くらいだった。
検討したメーカーはコレガ、アライドテレシス、バッファロー、シスコ、ネットギア、プラネックス。オーバースペック過ぎる製品しか持たないメーカーもあった。2万円というのは、そういったものは除外した価格。
検討した中では、バッファローの LSW-TX-24NSR が手頃な値段で良さそう。24ポートの 100Base-TX AUTO-MDX 対応スイッチで、実売1万円を切っていたのはこれだけだ。税、送料、振り込み手数料込みで1万円と考えてポート数の24で割ると、ポート単価417円。これで十分でしょう。
ちなみに、Amazon の LSW-TX-24NSR の商品画像は間違ってるね。どう見ても USB ハブです。商品名に「10/100M スイッチングHub」って入ってるのに、商品画像には USB2.0 とか書いてあって笑える。
- 見積もりを即時発行できるネットショップって NTT-X Store くらいしかない?
上記要件でまずは見積もり。ネットで見積もりを即時発行してくれるところって少ない。まず、amazon はダメ。ヘルプを検索しても見積もり発行機能は見つけられなかった。他の量販店のウェブサイトでも同様。いつも価格リストを送ってくれている愛三電気も、見積もり自動発行フォームはない模様。私が探した限りでは、NTT レゾナントが運営する NTT-X Store だけが見積もりの自動発行機能を備えていた。ただし、仮の見積もりであるため、当日限り有効という制約が付く。有効期限が短くても無いよりは良いので、ここで見積もりを取得。ショッピングカートに入れた後に、画面下部の「購入手続き/見積書作成」のボタンを使って得た。
NTT-X Store
あと、近所のコジマ電気とヤマダ電機に見積もりを FAX してくれるよう電話で依頼した。内容としては、「貴店で取り扱っているなかで最も安価な24ポートの100Base-TX スイッチ2台分の見積もりをください」というもの。もし在庫があればそのまま店舗に行って調達するところだが、今は見積もりを取るだけのために店舗に行く時間的余裕はない。後輩に頼んでもいいんだけど、一度は一通りの手続きを経験しておきたかったので自分でやることにした。
まずコジマ電気。私が電話したコジマ電気の支店では、店頭でしか見積もりを発行していないとのこと。それは残念。仕方がない、またの機会ということで。ヤマダ電機は見積もりを FAX してくれた。ありがたい。発行された見積もりの機種は奇しくもバッファローの LSW-TX-24NSR だった。しかし、残念ながら今回は送料を含めても NTT-X の方が安い。結局、NTT-X から購入することにした。
- 購入
Web から注文。個人だったらクレジットカードで決済するところだが、今回は経理処理の関係上銀行振り込みとした。Windows のタスクマネージャの「ネットワーク」タブで、「タブを常にアクティブにする(T)」を選択しておけば、タスクマネージャ起動直後から計測している状態にできる。
しかし、「ネットワーク」タブには不便な点がある。タスクマネージャを起動した後、一度「ネットワーク」タブを選択してからでないと計測を開始しないのだ。計測には負荷がかかるからこういう仕様なんだろうが、手間がかかる。可能なら、タスクマネージャ起動直後から計測をしていてほしい。
最近、この不便さを解消する設定項目を見つけた。
1. タスクマネージャの「ネットワーク」タブを開く。
2. オプション(O) の「タブを常にアクティブにする(T)」を選択する。
たったこれだけ。
また、タスクマネージャのユーザーインターフェイスは表示系の設定は「表示 (V)」で、その他の設定は「オプション(O)」で設定するため、私にはわかりにくかった。また、ある程度使い慣れたツールなので、まさかそんなオプションがあるとは思わなかったということもある。
ユーザーインターフェイスの設計ってやっぱり難しいなあ。今回の場合、どうなっていれば私は迷わなかったんだろう? 一覧性のあるオプション設定画面でもあれば良かったのかな。
- タスクマネージャのネットワークタブは一度選択してからでないと計測がおこなわれない
タスクマネージャは、マシンのリソースの使用状況や起動中のプロセスを表示するツールだ。WidnowsXP や Windows Server 2003 では、タスクマネージャに機能追加が行われて、「ネットワーク」というタブが追加された。「ネットワーク」タブではマシンのネットワークインターフェイスのトラフィックを表示することができるようになった。しかし、「ネットワーク」タブには不便な点がある。タスクマネージャを起動した後、一度「ネットワーク」タブを選択してからでないと計測を開始しないのだ。計測には負荷がかかるからこういう仕様なんだろうが、手間がかかる。可能なら、タスクマネージャ起動直後から計測をしていてほしい。
最近、この不便さを解消する設定項目を見つけた。
- タスクマネージャのネットワークタブを常にアクティブにして、常に計測状態にする
タスクマネージャのネットワークタブを常にアクティブにして、タスクマネージャ起動直後から計測状態にする方法。1. タスクマネージャの「ネットワーク」タブを開く。
2. オプション(O) の「タブを常にアクティブにする(T)」を選択する。
たったこれだけ。
- 「オプション」の項目が動的に変化することに気づかなかった
なぜこんな簡単な手順に気づかなかったか。その理由は、タスクマネージャのオプションを選んだときに表示される項目は、現在表示しているタブによって動的に変化するからだ。また、タスクマネージャのユーザーインターフェイスは表示系の設定は「表示 (V)」で、その他の設定は「オプション(O)」で設定するため、私にはわかりにくかった。また、ある程度使い慣れたツールなので、まさかそんなオプションがあるとは思わなかったということもある。
ユーザーインターフェイスの設計ってやっぱり難しいなあ。今回の場合、どうなっていれば私は迷わなかったんだろう? 一覧性のあるオプション設定画面でもあれば良かったのかな。
Solaris で一枚の NIC に複数の IP アドレスを設定する方法のメモ。論理的インターフェイスとか、仮想インターフェイスと呼んだりするもの。
ネットワークインターフェイス (NIC) の情報は以下の通り。でも、これだけだと何もわからないなあ。
作業前に ifconfig して現在の状況を確認。
その後、ifconfig インターフェイスの作成と有効化。ブロードキャストアドレスはサブネットマスクから計算してくれるようなので明示的には指定していない。
ifconifg して確認。できてるできてる。
再起動後もこのインターフェイスが必要なので、起動スクリプトに追加しておきたい。でも、Solaris ではどこが適切なんだろう? ランレベル3のときに起動する Squid のためだけのインターフェイスなので、/etc/init.d に追加して /etc/rc3.d にシンボリックリンクを作ってもいいのだが、どちらかというとシステム系の設定だから、別のところがいいんだろうなあ。調査中。
確認すると、インターフェイスが無くなっている。これでよしと。
すると、ターミナルが反応しなくなった。ネットワークが全部切断されてるようだ。このテストマシンはキーボードもディスプレイも接続していないので、対処する方法がない。仕方ないので電源をプチって切りました。ごめんなさいごめんなさい。
- 対象マシンと OS
対象はいつもの Solaris 2.6 マシン。2006-05-11 の「Squid と Squirm でリダイレクタ付き SSL リバースプロキシ」で、SSL 用に IP アドレスを追加する必要が出たので設定。$ uname -a
SunOS lodis 5.6 Generic_105181-32 sun4u sparc SUNW,Ultra-1
ネットワークインターフェイス (NIC) の情報は以下の通り。でも、これだけだと何もわからないなあ。
$ dmesg
(略)
SUNW,hme0: FEPS (Rev Id = 22) Found
SUNW,hme0 at sbus0: SBus0 slot 0xe offset 0x8c00000 and slot 0xe offset 0x8c02000 and slot 0xe offset 0x8c04000 and slot 0xe offset 0x8c06000 and slot 0xe offset 0x8c07000 Onboard device sparc9 ipl 6
SUNW,hme0 is /sbus@1f,0/SUNW,hme@e,8c00000
SUNW,hme0: Using Internal Transceiver
SUNW,hme0: 100 Mbps full-duplex Link Up
作業前に ifconfig して現在の状況を確認。
$ /sbin/ifconfig -a
lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST> mtu 8232
inet 127.0.0.1 netmask ff000000
hme0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu 1500
inet 10.64.128.202 netmask ffffff00 broadcast 10.64.128.255
- 論理インターフェイスの追加
まず、ホスト名定義ファイルを /etc に追加。ファイル名の書式は hostname.IF:N で、IF にインターフェイス名、N に 1 から始まる番号を入れる。私の環境だったら以下のようにした。# echo ivalice >/etc/hostname.hme0:1
その後、ifconfig インターフェイスの作成と有効化。ブロードキャストアドレスはサブネットマスクから計算してくれるようなので明示的には指定していない。
# ifconfig hme0:1 10.64.128.204 netmask 255.255.255.0 up
ifconifg して確認。できてるできてる。
# ifconfig -a
lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST> mtu 8232
inet 127.0.0.1 netmask ff000000
hme0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu 1500
inet 10.64.128.202 netmask ffffff00 broadcast 10.64.128.255
ether 8:0:20:86:c3:47
hme0:1: flags=843<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.64.128.204 netmask ffffff00 broadcast 10.64.128.255
再起動後もこのインターフェイスが必要なので、起動スクリプトに追加しておきたい。でも、Solaris ではどこが適切なんだろう? ランレベル3のときに起動する Squid のためだけのインターフェイスなので、/etc/init.d に追加して /etc/rc3.d にシンボリックリンクを作ってもいいのだが、どちらかというとシステム系の設定だから、別のところがいいんだろうなあ。調査中。
- 論理インターフェイスの無効化
インターフェイスを無効化するには down を付けて ifconfig する。# ifconfig hme0:1 0 down
確認すると、インターフェイスが無くなっている。これでよしと。
# ifconfig -a
lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST> mtu 8232
inet 127.0.0.1 netmask ff000000
hme0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu 1500
inet 10.64.128.202 netmask ffffff00 broadcast 10.64.128.255
ether 64:64:64:64:64:64
- man ifconfig
参考にした ifconfig の man page。LOGICAL INTERFACES
Solaris TCP/IP allows multiple logical interfaces to be
associated with a physical network interface. This allows a
single machine to be assigned multiple IP addresses, even
though it may have only one network interface. Physical
network interfaces have names of the form driver-name
physical-unit-number, while logical interfaces have names of
the form driver-name physical-unit-number:logical-unit-
number. A physical interface is configured into the system
using the plumb sub-command. For example:
ifconfig le0 plumb
Logical interfaces do not need to be "plumbed". Once a phy-
sical interface has been "plumbed", logical interfaces asso-
ciated with the physical interface can be configured by nam-
ing them in subsequent ifconfig commands. However, only
root can create or delete a logical interface. For example,
when executed by root the command:
ifconfig le0:1
allocates a logical interface associated with the physical
interface le0 and reports its status. When executed by a
non-privileged user, ifconfig will report the status of the
interface if it already exists, or give an error message if
it does not exist.
A logical interface can be configured with parameters
(address, netmask, and so on) different from the physical
interface with which it is associated. Logical interfaces
that are associated with the same physical interface can be
given different parameters as well. Each logical interface
must be associated with a physical interface. So, for exam-
ple, the logical interface le0:1 can only be configured
after the physical interface le0 has been plumbed.
To delete a logical interface, simply name the interface
specifying an address of 0, after ensuring that the inter-
face has been marked as "down". For example, the command:
ifconfig le0:1 0 down
will delete the logical interface le0:1.
- 失敗
調査の過程で /etc/hostname.IF:N ファイルを作らず、かつサブネットマスクを指定せず、そのうえ N に2を指定してテキトーに ifconfig してみた。# ifconfig hostname.hme0:2 10.64.128.204 up
すると、ターミナルが反応しなくなった。ネットワークが全部切断されてるようだ。このテストマシンはキーボードもディスプレイも接続していないので、対処する方法がない。仕方ないので電源をプチって切りました。ごめんなさいごめんなさい。
業務で SSL 対応のリバースプロキシを作ることになった。Squid とリダイレクタの Squirm を使って実現しようとしたが、Squirm 1.0betaB が POST メソッドに対応していないために別の構成をとることとなった。
第二候補は Apache 2.2 系 + mod_proxy だ。しかし、運用するマシンも OS も古いし、Apache を使ったリバースプロキシの運用ノウハウはあまりないため、Squid では役者不足の時だけお出まし願う予定。第三候補は Pound だが、これもノウハウがないので今回の案件ではまず使わないだろう。ちなみに運用マシンは Solaris 2.6。現在テスト中のマシンのスペックは以下の通り。
SSL の部分は透過的な SSL アクセラレータを別途利用する予定なので、Squid はとくに何もしない。
Squid は前の担当者がインストールしていた squid-2.5.STABLE12 を使う。安定版の最新は 2006年3月12日リリースの squid-2.5.STABLE13 だが、とくに問題がなければ squid-2.5.STABLE12 のまま運用に乗せる予定。
つまり、以下のように外向けの URL のパス部分を基準に中継先を決めるようにしたい。
example.jp/sonic64/ へのリクエストは sonic64.intranet.example.jp にリダイレクト。
example.jp/landscape/ へのリクエストは landscape.intranet.example.jp にリダイレクト。
この要件は Squid 単体では実現できないので、リダイレクタと呼ぶサブシステムと Squid を連携させて成し遂げる。今回はリダイレクタには Squirm (スクワーム) を使うことにした。採用の理由は解説しているウェブサイトがあったことと、ライセンスが GPL だから。Perl か C でリダイレクタを書いても良いんだけど、広く使われているものがあるならそっちの方がいい。
http://squirm.foote.com.au/
上記サイトから squirm-1.0betaB.tar をダウンロード。tar ball を展開した後は、サイトに書かれていた説明に従ってコンパイルとインストールを進める。
なんだか結構手間がかかるなあ。「configure script の動作について知って欲しいから」みたいなことが上記サイトに書かれてたけど、そういうことなのか。
正規表現ライブラリのコンパイルと make は終わった。しかし、いざ make install しようとしたらエラー。
install のオプションがおかしいの? 私は make はよく知らないんだけど、これはコマンドラインの指定の仕方がおかしいってエラーだよね。Squirm のサイトに書かれてる記述が変なのかな。それとも、私が使ってる make がおかしいのかな。そういえば、私の使っている make って GNU make じゃなくて Solaris の特別な make なの? 確認してみる。
以下の出力を見る限り、ごく普通の GNU make のようだ。
仕方がない。結局 make install がやってることって、ファイルのコピーとパーミッションの設定とかでしょう? というわけで、とりあえず手作業で /usr/local/squirm へファイルをコピーしてパーミッションを設定した。strip はやったんだっけ? まあとりあえずはどちらでもいいや。
squid.conf には以下のリダイレクタのための設定を追加。
Squid 起動。とりあえず何パターンかのリダイレクトを試してみたが、うまく動いているようだ。
しかし、ASP.NET + IIS 6.0 を動かしているサーバにリダイレクトしたときの挙動を確認しようとしたときに問題発生。どうも HTTP の POST メソッドによるリクエストがリダイレクトされていない模様。リダイレクタに処理が渡らず、Squid だけで処理しているように見える。これは Squid が悪いのか? Squirm が悪いのか?
squirm-1.0betaB の squirm.c の load_in_buff()
となると、Apache + mod_proxy を使うか、あとはリバース先のサーバ構成を変えるか、自分でリダイレクタを書くか。うーん。
いろいろ検討した結果、URL のパス部分を基準にした振り分けは要件として必須でないということになり、リダイレクタを使う必要はなくなった。つまり、Squid だけでよいということだ。
1.0BetaB から一気にバージョンが進んで 1.26 になってるわけだから、もしかして POST メソッドにも対応してるかもしれない。もう必要なくなったけど、一応 tar ball をダウンロードしてソースだけは見てみよう。
squirm 1.26 の squrim.c
上記を見る限り、Squirm 1.26 なら HTTP POST メソッドにも対応してるようだ。もしかしたら、対応しているように見せかけて、別のところでリダイレクトせずに素通ししてるかもしれないけど、さすがにそんなことはなさそう。POST 対応してるなら最初からこれ使えば良かったね。
- Squid を使って SSL リバースプロキシ
今回の案件で使うリバースプロキシソフトウェアの第一候補は Squid (スキッド) だ。他の担当者が作りかけていたということと、Squid なら組織内で利用している実績があって運用のノウハウ比較的もあるというのが理由。第二候補は Apache 2.2 系 + mod_proxy だ。しかし、運用するマシンも OS も古いし、Apache を使ったリバースプロキシの運用ノウハウはあまりないため、Squid では役者不足の時だけお出まし願う予定。第三候補は Pound だが、これもノウハウがないので今回の案件ではまず使わないだろう。ちなみに運用マシンは Solaris 2.6。現在テスト中のマシンのスペックは以下の通り。
$ uname -a
SunOS sonic64 5.6 Generic_105181-32 sun4u sparc SUNW,Ultra-1
$ dmesg
cpu0: SUNW,UltraSPARC (upaid 0 impl 0x10 ver 0x40 clock 200 MHz)
SunOS Release 5.6 Version Generic_105181-32 [UNIX(R) System V Release 4.0]
Copyright (c) 1983-1997, Sun Microsystems, Inc.
mem = 131072K (0x8000000)
avail mem = 125919232
SSL の部分は透過的な SSL アクセラレータを別途利用する予定なので、Squid はとくに何もしない。
Squid は前の担当者がインストールしていた squid-2.5.STABLE12 を使う。安定版の最新は 2006年3月12日リリースの squid-2.5.STABLE13 だが、とくに問題がなければ squid-2.5.STABLE12 のまま運用に乗せる予定。
- Squid + Squirm でリダイレクタ付きリバースプロキシ
いろいろな事情を検討した結果、外向けのドメインは一つにしておきたい。しかし、リバースプロキシは複数のドメインにリクエストを中継したい。つまり、以下のように外向けの URL のパス部分を基準に中継先を決めるようにしたい。
example.jp/sonic64/ へのリクエストは sonic64.intranet.example.jp にリダイレクト。
example.jp/landscape/ へのリクエストは landscape.intranet.example.jp にリダイレクト。
この要件は Squid 単体では実現できないので、リダイレクタと呼ぶサブシステムと Squid を連携させて成し遂げる。今回はリダイレクタには Squirm (スクワーム) を使うことにした。採用の理由は解説しているウェブサイトがあったことと、ライセンスが GPL だから。Perl か C でリダイレクタを書いても良いんだけど、広く使われているものがあるならそっちの方がいい。
- Squirm のコンパイルとインストール
Squirm - A redirector for Squidhttp://squirm.foote.com.au/
上記サイトから squirm-1.0betaB.tar をダウンロード。tar ball を展開した後は、サイトに書かれていた説明に従ってコンパイルとインストールを進める。
cd regex
./configure
make clean
make
cp -p regex.o regex.h ..
cd ..
make
なんだか結構手間がかかるなあ。「configure script の動作について知って欲しいから」みたいなことが上記サイトに書かれてたけど、そういうことなのか。
正規表現ライブラリのコンパイルと make は終わった。しかし、いざ make install しようとしたらエラー。
# make install
install -m 755 -o root -g root -d /usr/local/squirm \
/usr/local/squirm/bin
usage: install [options] file [dir1 ...]
make: *** [install] Error 2
install のオプションがおかしいの? 私は make はよく知らないんだけど、これはコマンドラインの指定の仕方がおかしいってエラーだよね。Squirm のサイトに書かれてる記述が変なのかな。それとも、私が使ってる make がおかしいのかな。そういえば、私の使っている make って GNU make じゃなくて Solaris の特別な make なの? 確認してみる。
以下の出力を見る限り、ごく普通の GNU make のようだ。
$ make -v
GNU Make version 3.78.1, by Richard Stallman and Roland McGrath.
Built for sparc-sun-solaris2.6
仕方がない。結局 make install がやってることって、ファイルのコピーとパーミッションの設定とかでしょう? というわけで、とりあえず手作業で /usr/local/squirm へファイルをコピーしてパーミッションを設定した。strip はやったんだっけ? まあとりあえずはどちらでもいいや。
- squirm.conf と squid.conf を設定して動作確認
squirm.conf に以下を設定。regex ^http://.*?/ivalice/(.*) http://ivalice.intranet.example.jp/\1
regex ^http://.*?/landscape/(.*) http://landscape.intranet.example.jp/\1
squid.conf には以下のリダイレクタのための設定を追加。
redirect_program /usr/local/squirm/bin/squirm
redirect_children 10
Squid 起動。とりあえず何パターンかのリダイレクトを試してみたが、うまく動いているようだ。
しかし、ASP.NET + IIS 6.0 を動かしているサーバにリダイレクトしたときの挙動を確認しようとしたときに問題発生。どうも HTTP の POST メソッドによるリクエストがリダイレクトされていない模様。リダイレクタに処理が渡らず、Squid だけで処理しているように見える。これは Squid が悪いのか? Squirm が悪いのか?
- Squirm は POST をリダイレクトしない
Squirm のソースを確認してみた。あー、なるほど。対応しているのは GET メソッドだけで、POST メソッドによるリクエストは受け付けないようになってる。Squid というより Squirm の仕様なのか。squirm-1.0betaB の squirm.c の load_in_buff()
/* all methods must be GET */
if((strcmp(in_buff->method, "") == 0) ||
(strcmp(in_buff->method, "GET"))) {
#ifdef DEBUG
log(LOG_DEBUG, "in_buff.method not \"GET\"\n",
in_buff->src_address);
#endif
return 1;
}
となると、Apache + mod_proxy を使うか、あとはリバース先のサーバ構成を変えるか、自分でリダイレクタを書くか。うーん。
いろいろ検討した結果、URL のパス部分を基準にした振り分けは要件として必須でないということになり、リダイレクタを使う必要はなくなった。つまり、Squid だけでよいということだ。
- Squirm は バージョン 1.26 が最新
今ふと Squirm のサイトを見ると、なんだかページの上の方に「Squirm は 1.26 が最新だよ。でも、ドキュメント書く暇がないよ。」みたいなことが書いてある。気づかなかった。Note: This web page documents version 1.0-BetaB. There is, in fact, a newer version: squirm-1.26, but I haven't documented it yet. This new version has some new features:
new squirm.conf file allows different redirection lists based upon different sets of source network addresses in CIDR notation.
Automagic accelerator string generation.
It compiles with a simple 'make'
A few other minor features.
Use your systems regex library
1.0BetaB から一気にバージョンが進んで 1.26 になってるわけだから、もしかして POST メソッドにも対応してるかもしれない。もう必要なくなったけど、一応 tar ball をダウンロードしてソースだけは見てみよう。
squirm 1.26 の squrim.c
/* match_method() returns 1 on match, 0 for no-match */
int match_method(char *method, int accept) {
lower_case(method);
/* match all first */
if (accept == ALL) {
return 1;
}
/* and then the most common */
if (strcmp(method,"get") == 0) {
return ((GET & accept) != 0 ? 1 : 0);
}
if (strcmp(method,"put") == 0) {
return ((PUT & accept) != 0 ? 1 : 0);
}
if (strcmp(method,"post") == 0) {
return ((POST & accept) != 0 ? 1 : 0);
}
if (strcmp(method,"head") == 0) {
return ((HEAD & accept) != 0 ? 1 : 0);
}
return 0;
}
上記を見る限り、Squirm 1.26 なら HTTP POST メソッドにも対応してるようだ。もしかしたら、対応しているように見せかけて、別のところでリダイレクトせずに素通ししてるかもしれないけど、さすがにそんなことはなさそう。POST 対応してるなら最初からこれ使えば良かったね。
「自分のペースでゆったり学ぶ TCP/IP」 を読了。「圏外からのひとこと」「アンカテ(Uncategorizable Blog)」の essa さんが新人向けの教育本として超おすすめと書いてた本。たまたま見かけたので読んでみた。
アンカテ(Uncategorizable Blog) - 新人向けネットワーク教育超オススメ本
http://d.hatena.ne.jp/essa/20060324/p1
確かに良くできてる。
ネットワークでもプログラミングでも、機能をカプセル化してレイヤに分ける重要性を理解することが鍵となるが、それを繰り返し解説している。「『ホームページ』や『メール』は使ったことあるけど、それらのサービスがどう成り立っているかは知らない」というレベルの人には良い本だ。
入門書としては最適。ただ、概念を理解する上で不要な要素はかなり削り、本質の説明にページを費やしている本なので、それ以上を求めるのは酷。とっかかりとして読んだ後は、他の本に進んだり、ウェブサイトで補ったり、経験を積んでいくのがよいだろう。
理解しなければならないポイントは強調されているし、節ごとにまとめが入るので本質を理解しやすい。説明は会話形式で進められるので、この形式に抵抗がある人には読みにくいかもしれないが。
244ページで、「インターネットで最も重要なサービスは DNSであり、Web じゃない」とい言い切っているのが良い。ネットワークがどう成り立っていて、欠かせない要素とは何なのかを伝えようとしているのがわかる。
著者略歴。網野衛二 (あみのえいじ) さん。失礼ながら初めて聞く名前だ。ん? 網野さんが管理している「3分間 Networking」って、あのサイトか! 過去に読んだことあるよ。ICMP というか ping の説明のところで突然入る「沈黙の艦隊」ネタが好きだった。
3 Minutes Networking No.35 第35回レイヤ3 ICMP(ping)
http://www5e.biglobe.ne.jp/~aji/3min/35.html
他のページでもやってた。沈黙の艦隊好きなんだなあ。
アンカテ(Uncategorizable Blog) - 新人向けネットワーク教育超オススメ本
http://d.hatena.ne.jp/essa/20060324/p1
- 新人向けの本として良くできてる
確かに良くできてる。
ネットワークでもプログラミングでも、機能をカプセル化してレイヤに分ける重要性を理解することが鍵となるが、それを繰り返し解説している。「『ホームページ』や『メール』は使ったことあるけど、それらのサービスがどう成り立っているかは知らない」というレベルの人には良い本だ。
入門書としては最適。ただ、概念を理解する上で不要な要素はかなり削り、本質の説明にページを費やしている本なので、それ以上を求めるのは酷。とっかかりとして読んだ後は、他の本に進んだり、ウェブサイトで補ったり、経験を積んでいくのがよいだろう。
理解しなければならないポイントは強調されているし、節ごとにまとめが入るので本質を理解しやすい。説明は会話形式で進められるので、この形式に抵抗がある人には読みにくいかもしれないが。
244ページで、「インターネットで最も重要なサービスは DNSであり、Web じゃない」とい言い切っているのが良い。ネットワークがどう成り立っていて、欠かせない要素とは何なのかを伝えようとしているのがわかる。
著者略歴。網野衛二 (あみのえいじ) さん。失礼ながら初めて聞く名前だ。ん? 網野さんが管理している「3分間 Networking」って、あのサイトか! 過去に読んだことあるよ。ICMP というか ping の説明のところで突然入る「沈黙の艦隊」ネタが好きだった。
3 Minutes Networking No.35 第35回レイヤ3 ICMP(ping)
http://www5e.biglobe.ne.jp/~aji/3min/35.html
博士:
そうだ。
それで水中にある物体を探すソナーが出す信号音の事を探信音[ping]という。このコマンドの名前の由来はそれらしい。
助手:
探信音…。
博士:
うむ。
探信音を出すと、音が物体に当たって跳ね返ってくる。そこから擬音の[ping]が使われているのではないかな。
助手:
…。
…!! 交響曲(シンフォニー)です!!
博士:
…沈黙の艦隊かよ。
他のページでもやってた。沈黙の艦隊好きなんだなあ。
助手:
探信音(ピンガー)ー!!
博士:
おいおい。
助手:
浮上角(アップトリム(20°から最大!! 前部タンク全ブロー、機関全速!!
* ssh + bzip2 + gpg で bzip2 の internal error number 1007 エラー
この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ssh] [gpg] [ネットワーク] [PC]
毎日リモートにあるサーバのバックアップを ssh + tar + bzip2 + gpg で取っているのだが、7回に一回くらいの頻度で、tar の中から呼び出してる bzip2 が internal error number 1007 というエラーを出力してしまう。
クライアントは cygwin 環境。転送しているデータはだいたい数百メガバイトから数ギガバイトくらいのオーダー。下り 1.5Mbps の ADSL の回線で接続している。
エラーの内容は、bzip2/libbzip2 のバグか、メモリなどのハードウェア障害が考えられるというもの。散発的に発生するようなら ハードウェア障害の疑いがあるので、memtest86 などのメモリチェックツールで確認してとのこと。結構レアなエラーみたいだね。
私のマシンのメモリは 1GB * 2 の DDR-SDRAM ECC なし の Unbuffered なのがいけないの? でも、今までは問題なかった。もしかして私のマシン、壊れてきてるの? ネットワーク経由でやってるから、前段の ssh からうまくデータを受け取れてないとか? でもそれだったら bzip2 の内部エラーにはならず、もっと前の方でエラーになるだろうしなあ。
これだけじゃよくわからない。もっと詳細なログが必要だな。とりあえずログのレベルを上げた上でログを検分し、ハードウェアの交換も視野に入れた上で調査していこう。
クライアントは cygwin 環境。転送しているデータはだいたい数百メガバイトから数ギガバイトくらいのオーダー。下り 1.5Mbps の ADSL の回線で接続している。
bzip2/libbzip2: internal error number 1007.
This is a bug in bzip2/libbzip2, 1.0.3, 15-Feb-2005.
Please report it to me at: jseward@bzip.org. If this happened
when you were using some program which uses libbzip2 as a
component, you should also report this bug to the author(s)
of that program. Please make an effort to report this bug;
timely and accurate bug reports eventually lead to higher
quality software. Thanks. Julian Seward, 15 February 2005.
*** A special note about internal error number 1007 ***
Experience suggests that a common cause of i.e. 1007
is unreliable memory or other hardware. The 1007 assertion
just happens to cross-check the results of huge numbers of
memory reads/writes, and so acts (unintendedly) as a stress
test of your memory system.
I suggest the following: try compressing the file again,
possibly monitoring progress in detail with the -vv flag.
* If the error cannot be reproduced, and/or happens at different
points in compression, you may have a flaky memory system.
Try a memory-test program. I have used Memtest86
(www.memtest86.com). At the time of writing it is free (GPLd).
Memtest86 tests memory much more thorougly than your BIOSs
power-on test, and may find failures that the BIOS doesn't.
* If the error can be repeatably reproduced, this is a bug in
bzip2, and I would very much like to hear about it. Please
let me know, and, ideally, save a copy of the file causing the
problem -- without which I will be unable to investigate it.
エラーの内容は、bzip2/libbzip2 のバグか、メモリなどのハードウェア障害が考えられるというもの。散発的に発生するようなら ハードウェア障害の疑いがあるので、memtest86 などのメモリチェックツールで確認してとのこと。結構レアなエラーみたいだね。
私のマシンのメモリは 1GB * 2 の DDR-SDRAM ECC なし の Unbuffered なのがいけないの? でも、今までは問題なかった。もしかして私のマシン、壊れてきてるの? ネットワーク経由でやってるから、前段の ssh からうまくデータを受け取れてないとか? でもそれだったら bzip2 の内部エラーにはならず、もっと前の方でエラーになるだろうしなあ。
これだけじゃよくわからない。もっと詳細なログが必要だな。とりあえずログのレベルを上げた上でログを検分し、ハードウェアの交換も視野に入れた上で調査していこう。
RingServer は巨大ミラーサーバ群。様々なソフトウェアをミラーして、本家サイトにトラフィックが集中することを防いだり、他のサイトがダウンしている間もファイルの取得ができるようにしている。私の場合、Cygwin をインストールするときや、Linux ディストリビューションの ISO イメージやパッケージ、Firefox や Mozilla をダウンロードするときなどにお世話になっている。
Ring Server Project - FAQ
http://www.ring.gr.jp/ring/uvoice.html
うーん、これはアーカイブへのリンクではなくウェブサイトへのリンクの張り方についての問答な気がする。ファイルやディレクトリへの直リンクも http://www.ring.gr.jp/ でいいのかな? RingServer へリンクを張るなら負荷分散システムの TENBIN とか DNSBALANCE などを経由した方がいい、という話をどこかで読んだ覚えがあるんだけど、公式にはそうは言ってないってことか。
それとも、www.ring.gr.jp にアクセスすると自動的に振り分けられるのかな? トップページにアクセスすると右上の served by のロゴが仕事場と自宅で異なっているような気がするので、ネットワーク的な距離に応じて自動的に変わってるのかも。上記 FAQ には「負荷分散の意味から」という記述もあるし、www.ring.gr.jp に張っておけばいいんだろうな。
追記。
いくつか言及を頂いた。ありがとうございます。結局みんなどの URL にリンクを張るのかは自分で決めてるようだ。TENBIN や DNSBALANCE による負荷分散をさせたいと考える人はその URL でリンクすればいい、そうでなければ www.ring.gr.jp でいいというのが私の結論。
私の使っているプロバイダの上流がパワードコムだったから、たいていここを利用していた。お世話になりました。私のサイトから張っていたリンクも修正しておこう。
- RingServer へのリンクの張り方
RingServer は大量のミラーサーバを抱えていて、かつそれぞれのサーバは ring.sakura.ad.jp や ring.ocn.ad.jp というように異なる名前が付けられている。リンクするときはどこのサーバに張るのが良いのだろう?Ring Server Project - FAQ
http://www.ring.gr.jp/ring/uvoice.html
自分のホームページから RingServer へリンクを張ってもよろしいでしょうか?
はい,ご自由にどうぞ.
リンク先は負荷分散の意味から各サーバへの直接リンクではなく,WWWについてはhttp://www.ring.gr.jp/へ、FTPについてはftp://ftp.ring.gr.jp/へお願いいたします.
ただし,個人のホームページではなく,相当なアクセス数が見込まれるような商用WWWからリンクされる場合には事前に一声かけて下さい.
うーん、これはアーカイブへのリンクではなくウェブサイトへのリンクの張り方についての問答な気がする。ファイルやディレクトリへの直リンクも http://www.ring.gr.jp/ でいいのかな? RingServer へリンクを張るなら負荷分散システムの TENBIN とか DNSBALANCE などを経由した方がいい、という話をどこかで読んだ覚えがあるんだけど、公式にはそうは言ってないってことか。
それとも、www.ring.gr.jp にアクセスすると自動的に振り分けられるのかな? トップページにアクセスすると右上の served by のロゴが仕事場と自宅で異なっているような気がするので、ネットワーク的な距離に応じて自動的に変わってるのかも。上記 FAQ には「負荷分散の意味から」という記述もあるし、www.ring.gr.jp に張っておけばいいんだろうな。
追記。
いくつか言及を頂いた。ありがとうございます。結局みんなどの URL にリンクを張るのかは自分で決めてるようだ。TENBIN や DNSBALANCE による負荷分散をさせたいと考える人はその URL でリンクすればいい、そうでなければ www.ring.gr.jp でいいというのが私の結論。
- パワードコムの RingServer がサービスを終了していた
昨年12月でパワードコムの RingServer がサービスを終了していた。株式会社パワードコムのサーバは,12/20でサービスを終了いたしました.いままでどうもありがとうございました.(2005/12/20)
私の使っているプロバイダの上流がパワードコムだったから、たいていここを利用していた。お世話になりました。私のサイトから張っていたリンクも修正しておこう。
* 暗号化に WEP しか使えないニンテンドーDS は無線 LAN のセキュリティを弱くする
この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [セキュリティ] [ゲーム] [ネットワーク]
暗号化に WEP しか使えないニンテンドーDS は無線 LAN のセキュリティを弱くする。
これは 2006-01-29 の「ニンテンドーDS を考慮した無線 LAN のセキュリティ設定」では本筋ではないので書かなかった。ユーザーの設定で解決するには難しく、完全に解決するには機器の買い増しなどが必要になるし、「より強固なセキュリティ」よりも「最低限のセキュリティ」を重視したからだ。
ネットワーク全体で AES などが使えなくなる。ニンテンドーDS が WEP しか使えないという問題の本質はここにある。
2006-01-29 では「WEP128 を使って通信を暗号化すればいい」と書いたが、WEP は暗号強度が弱いので本当は AES を使いたいところ。しかし、ニンテンドーDS が参加すると無線 LAN 全体で WEP を使わなければならなくなる。無線 LAN における暗号は、そのネットワークに参加するすべてのクライアントが使える方式を選択しなければならないからだ。
ニンテンドーDS だけ WEP を使って、他のクライアントは AES を使うということができればいいのだが、それをするためには後述する何らかの方法で 無線 LAN アクセスポイントを追加しなければならない。
たとえば、IEEE 802.11b と IEEE 802.11a を同時使用可能な無線 LAN アクセスポイントを使う。ニンテンドーDS を IEEE 802.11b + WEP で接続し、他のクライアントは IEEE 802.11a + AES で接続すればよい。私の使っている無線 LAN アクセスポイント AirStation WHR-G54S では IEEE 802.11b にしか対応してないので、買い換えになってしまうけど。
または、Wi-Fi USB コネクタを使い、既存の無線 LAN アクセスポイントとチャンネルを離してそれぞれ独立した無線 LAN ネットワークとして運用する。
ただ、それだけのためにわざわざ Wi-Fi USB コネクタを買うのも不経済だ。PC を立ち上げていないと使えないし。
“PSP”(プレイステーション・ポータブル)|“PSP” システムソフトウェア アップデート
http://www.playstation.jp/psp/update/ud_01_hty.html
結局、ニンテンドーDS が AES をサポートしてくれれば済むことだが、コストをかけられないゲーム機では難しいのだろう。2006年3月発売予定と発表されたニンテンドーDS の軽量化版「ニンテンドーDS Lite」が AES をサポートしてくれればいいのになあ、と思ったりもしている。現行のニンテンドーDS よりも1800円高い価格設定とのことだし、やってくれるとうれしいんだけどな。
私は速度と強度のバランスがとれている AES が好き。AES については 2004-04-30 の「暗号技術入門 秘密の国のアリス を発注」で書いた「暗号技術入門」がわかりやすかった。2004-11-09 の「GMail をバックアップストレージとして使う」でも暗号化は AES256 を使っているし、2005-08-16 には「C# でファイルを暗号化・復号化する」というメモも書いた。
これは 2006-01-29 の「ニンテンドーDS を考慮した無線 LAN のセキュリティ設定」では本筋ではないので書かなかった。ユーザーの設定で解決するには難しく、完全に解決するには機器の買い増しなどが必要になるし、「より強固なセキュリティ」よりも「最低限のセキュリティ」を重視したからだ。
- ニンテンドーDS が WEP しか使えないという問題の本質
WEP よりも強度の強い AES (Advanced Encryption Standard) などを使っている 無線 LAN ネットワークにニンテンドーDS が参加する場合、ニンテンドーDS が使用可能な WEP までネットワーク全体の暗号の強度を落とさなければならない。ネットワーク全体で AES などが使えなくなる。ニンテンドーDS が WEP しか使えないという問題の本質はここにある。
2006-01-29 では「WEP128 を使って通信を暗号化すればいい」と書いたが、WEP は暗号強度が弱いので本当は AES を使いたいところ。しかし、ニンテンドーDS が参加すると無線 LAN 全体で WEP を使わなければならなくなる。無線 LAN における暗号は、そのネットワークに参加するすべてのクライアントが使える方式を選択しなければならないからだ。
ニンテンドーDS だけ WEP を使って、他のクライアントは AES を使うということができればいいのだが、それをするためには後述する何らかの方法で 無線 LAN アクセスポイントを追加しなければならない。
- 解決方法は 無線 LAN アクセスポイントの追加
根本的な解決策は、ニンテンドーDS 専用の無線 LAN アクセスポイントを追加で設置することだ。たとえば、IEEE 802.11b と IEEE 802.11a を同時使用可能な無線 LAN アクセスポイントを使う。ニンテンドーDS を IEEE 802.11b + WEP で接続し、他のクライアントは IEEE 802.11a + AES で接続すればよい。私の使っている無線 LAN アクセスポイント AirStation WHR-G54S では IEEE 802.11b にしか対応してないので、買い換えになってしまうけど。
または、Wi-Fi USB コネクタを使い、既存の無線 LAN アクセスポイントとチャンネルを離してそれぞれ独立した無線 LAN ネットワークとして運用する。
ただ、それだけのためにわざわざ Wi-Fi USB コネクタを買うのも不経済だ。PC を立ち上げていないと使えないし。
- ニンテンドーDS が AES に対応してくれればなあ・・・
SCE の PSP (プレイステーションポータブル) はファームウェアのバージョンアップで AES への対応を果たした。PSP はコンテンツ保護のために AES をハードウェアで処理する機能を持っているようなので、それを活用するようにしただけなのかもしれないけど、とにかく実現したことは素晴らしい。“PSP”(プレイステーション・ポータブル)|“PSP” システムソフトウェア アップデート
http://www.playstation.jp/psp/update/ud_01_hty.html
PSP システムソフトウェア バージョン 2.50の更新内容 [2005.10.13]
[ネットワーク設定]のセキュリティ方式に[WPA-PSK(AES)]を追加しました。
結局、ニンテンドーDS が AES をサポートしてくれれば済むことだが、コストをかけられないゲーム機では難しいのだろう。2006年3月発売予定と発表されたニンテンドーDS の軽量化版「ニンテンドーDS Lite」が AES をサポートしてくれればいいのになあ、と思ったりもしている。現行のニンテンドーDS よりも1800円高い価格設定とのことだし、やってくれるとうれしいんだけどな。
- 補足 AES (Advanced Encryption Standard) とは
AES について、Airstation のヘルプから引用。AES
AES(Advanced Encryption Standard)は、次世代の標準暗号とし て米国NISTで採用されたデータの暗号/複合化方式です。このエアステーシ ョンではIEEE802.11i(WPA)を用いた場合、データの暗号化方式として指定 することができます(AES/CCM)。 従来の暗号化方式と比較し、第三者からの攻撃・改竄などに対して強く、 セキュリティを大幅に強化することができます。また、このエアステーショ ンはAES暗号/復号化のための専用ハードウェアを持っており、速度低下など のデメリットを受けずに強力な暗号を使用することができます。 また、AESを利用するためには、接続する無線LAN機器全てがAESをサポート している必要があります。
私は速度と強度のバランスがとれている AES が好き。AES については 2004-04-30 の「暗号技術入門 秘密の国のアリス を発注」で書いた「暗号技術入門」がわかりやすかった。2004-11-09 の「GMail をバックアップストレージとして使う」でも暗号化は AES256 を使っているし、2005-08-16 には「C# でファイルを暗号化・復号化する」というメモも書いた。
私はニンテンドーDSのWI-FIコネクションを利用した通信を行うために無線LANを導入した。ニンテンドーDSを繋ぐ事を考慮した無線 LAN アクセスポイントのセキュリティ設定についてのメモ。
私はすべて手動で設定した。「AOSS」や「らくらく無線スタート」などの自動設定システムを使うと、セキュリティ的に甘い設定になってしまうかもしれないし、何より私はエンジニアなのでセキュリティと使い勝手のバランスをどう取るかを自分で決めたかったからだ。
他の人に勝手に無線 LAN に接続されてしまう。
無線 LAN では、何も制限していない場合は電波が届けばだれでも接続できてしまう。近所の子供がマリオカートのWIFI対戦のために接続してくるくらいならかわいいものだが、特定のサイトを攻撃する際の踏み台や、掲示板に殺人予告を書くために使われる恐れもある。
無線 LAN を流れるデータを読み取られる。
こっちは実際はあまり問題にならない。盗聴されると困るデータは、最初から暗号化されて通信することが多いからだ。ただ、Windows ファイル共有などではデータが暗号化されないので、財務データを記録したファイルなどを無線 LAN 上でやりとりするのはリスクがある。新たな情報漏洩の口ができるという意味で、有線の LAN のときよりはリスクが増えてしまう。
・指定した MAC アドレスを持つクライアントのみ接続許可する。
・SSID を知っているクライアントのみ接続許可する。
・WEP128で通信を暗号化する。
上記はどれか一個で十分というものではない。できる限りすべて実施しておくことが重要。攻撃側は一番弱いところだけを突けばよいので、防御側の私は弱いところをできる限り減らすようにする必要があるからだ。
ただし、MAC アドレスを好きな値に変更できるクライアントもあるので、MAC アドレス自体を知られてしまうとクライアントを偽装されてしまう。MAC アドレス制限だけでなく、他の対策と組み合わせることが重要。
ニンテンドーDS 本体の MAC アドレスは、WI-FI コネクション設定画面のオプションで「本体情報」を見ることで確認できる。00-09-BF-64-64-64 などと表示される。
SSID も MAC アドレスと同じく知られてしまうと効果がない。やはり他の対策と組み合わせることが重要。
ニンテンドーDS の WIFI 接続先設定画面で、無線 LAN アクセスポイントの SSID を入力できる。
ただし、WEP128の暗号化は強度が弱く暗号解読ツールも出回っているので、暗号化しているから絶対通信内容が漏洩しない、というわけではない。つまり他の対策と組み合わせることが重要。
暗号化方式には他に AES と TKIP があるが、ニンテンドーDS は AES も TKIP もサポートしていないので、これらを選ぶとニンテンドーDS を接続できなくなってしまう。WEP64 というのもあるが、WEP128よりも暗号化強度が弱い。現在のところ、WEP128 がニンテンドーDS で使用できる一番強固な暗号だ。
追記。おいでよ どうぶつの森に付いてきた「ニンテンドー Wi-Fi コネクション ガイドブック」19ページによると、ニンテンドーDS は WEP128よりも強固な WEP152 もサポートしている。しかし、私の AirStation WHR-G54S は WEP128 までしか対応していないので WEP128 を選択した。
ニンテンドーDS の WIFI 接続先設定画面で、無線 LAN アクセスポイントの WEP キーを入力できる。アルファベット13文字または 0-9とA-F までの26文字を入力する。
2006-01-30 に「暗号化に WEP しか使えないニンテンドーDS は無線 LAN のセキュリティを弱くする」という記事を書いた。
- 私の無線 LAN 環境
ちなみに、私が利用している無線 LAN アクセスポイントは 2005-11-18 の「ニンテンドーWi-Fiコネクション用 無線LANルータ/アクセスポイント選び」で購入した、バッファローの AirStation WHR-G54S という無線 LAN ルータだ。私の無線 LAN には ニンテンドーDS のほかに、PC2台も接続している。私はすべて手動で設定した。「AOSS」や「らくらく無線スタート」などの自動設定システムを使うと、セキュリティ的に甘い設定になってしまうかもしれないし、何より私はエンジニアなのでセキュリティと使い勝手のバランスをどう取るかを自分で決めたかったからだ。
- セキュリティ的に弱い無線 LAN を使っているとどうなるのか
無線 LAN のセキュリティが弱いままだと、以下のような事態を招くおそれがある。他の人に勝手に無線 LAN に接続されてしまう。
無線 LAN では、何も制限していない場合は電波が届けばだれでも接続できてしまう。近所の子供がマリオカートのWIFI対戦のために接続してくるくらいならかわいいものだが、特定のサイトを攻撃する際の踏み台や、掲示板に殺人予告を書くために使われる恐れもある。
無線 LAN を流れるデータを読み取られる。
こっちは実際はあまり問題にならない。盗聴されると困るデータは、最初から暗号化されて通信することが多いからだ。ただ、Windows ファイル共有などではデータが暗号化されないので、財務データを記録したファイルなどを無線 LAN 上でやりとりするのはリスクがある。新たな情報漏洩の口ができるという意味で、有線の LAN のときよりはリスクが増えてしまう。
- ニンテンドーDS を接続する無線 LAN で最低限設定すべきセキュリティの項目は3つ
私が無線 LAN アクセスポイントに設定した項目は3つ。とりあえずこれだけやっておけば大丈夫。実は、この3項目はニンテンドーDS を接続するしないに関係なく、無線 LAN セキュリティの基本だ。・指定した MAC アドレスを持つクライアントのみ接続許可する。
・SSID を知っているクライアントのみ接続許可する。
・WEP128で通信を暗号化する。
上記はどれか一個で十分というものではない。できる限りすべて実施しておくことが重要。攻撃側は一番弱いところだけを突けばよいので、防御側の私は弱いところをできる限り減らすようにする必要があるからだ。
- 指定した MAC アドレスを持つクライアントのみ接続許可する
MAC アドレスというのはネットワーク機器一つ一つに割り振られた ID。クライアントの MAC アドレスを無線 LAN アクセスポイントに事前に登録しておき、登録された MAC アドレスを持つ機器からの接続だけを許可する。ただし、MAC アドレスを好きな値に変更できるクライアントもあるので、MAC アドレス自体を知られてしまうとクライアントを偽装されてしまう。MAC アドレス制限だけでなく、他の対策と組み合わせることが重要。
ニンテンドーDS 本体の MAC アドレスは、WI-FI コネクション設定画面のオプションで「本体情報」を見ることで確認できる。00-09-BF-64-64-64 などと表示される。
- SSID を知ってるクライアントのみ接続許可する
無線 LAN クライアントからアクセスポイントに存在確認要求があったとき、SSID が一致しないときは要求を無視するようにする。これにより「SSID を知っているクライアントだけにアクセスポイントが見える」という状態にすることができる。SSID も MAC アドレスと同じく知られてしまうと効果がない。やはり他の対策と組み合わせることが重要。
ニンテンドーDS の WIFI 接続先設定画面で、無線 LAN アクセスポイントの SSID を入力できる。
- WEP128で通信を暗号化する
データを WEP キーを使って暗号化し、「WEP キーを知っているクライアントのみ通信ができる」という状態にすることができる。ただし、WEP128の暗号化は強度が弱く暗号解読ツールも出回っているので、暗号化しているから絶対通信内容が漏洩しない、というわけではない。つまり他の対策と組み合わせることが重要。
暗号化方式には他に AES と TKIP があるが、ニンテンドーDS は AES も TKIP もサポートしていないので、これらを選ぶとニンテンドーDS を接続できなくなってしまう。WEP64 というのもあるが、WEP128よりも暗号化強度が弱い。現在のところ、WEP128 がニンテンドーDS で使用できる一番強固な暗号だ。
追記。おいでよ どうぶつの森に付いてきた「ニンテンドー Wi-Fi コネクション ガイドブック」19ページによると、ニンテンドーDS は WEP128よりも強固な WEP152 もサポートしている。しかし、私の AirStation WHR-G54S は WEP128 までしか対応していないので WEP128 を選択した。
ニンテンドーDS の WIFI 接続先設定画面で、無線 LAN アクセスポイントの WEP キーを入力できる。アルファベット13文字または 0-9とA-F までの26文字を入力する。
- 追記
追記。2006-01-30 に「暗号化に WEP しか使えないニンテンドーDS は無線 LAN のセキュリティを弱くする」という記事を書いた。
* rsync と ssh でミラーリングアップロード
この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ssh] [ネットワーク] [sonic64.com]
当サイト Landscape - エンジニアのメモのコンテンツのアップロードに、rsync を使うようにしてみた。
使ってみると、rsync は実に良くできた便利なツールであることがわかった。ちなみに今までは lftp を使っていた。詳しくは 2004-05-08 の「lftp を使った ftp ミラーリングと便利機能」を参照。さくらインターネットを使う前までは ftp しか許可されていなかったので仕方がないが、もっと早くから rsync に切り替えるべきだった。
コマンドの意味。
-t はファイルのタイムスタンプを転送先に反映させる。
-r はディレクトリを再帰的に転送する。
-z は圧縮を有効にする。
--include=*.html* --exclude=* はとりあえずあらゆるファイルとディレクトリを転送の対象外にして、その後 .html の拡張子を持つファイルのみ明示的に転送を許可している。要するに html だけ転送しているわけだ。$HOME/public_html/log.sonic64/*.html を転送対象に指定してもいいのだが、ファイル数が多すぎるために引数が長すぎるというエラーになってしまう。それを回避するため、$HOME/public_html/log.sonic64/ を転送対象として指定してから --include=*.html* --exclude=* で対象を *.html に絞っている。もっと上手いやり方もあると思うが、とりあえずこれで。
-e は ssh を使って接続を構成する。暗号化や公開鍵暗号による認証を利用できる。
ちなみに、ローカルに存在しないファイルをリモートから削除したい場合は、--delete オプションを指定する。私の場合はリモートにのみ存在するファイルやディレクトリがあるし、Landscape のコンテンツは増える一方で減ることはまずないので指定していない。
13460480 バイトしか送信していないのに、合計サイズが43120469 バイトになっている。これは圧縮の恩恵だ。
私の使っている回線のアップロード速度は、理論値で 512Kbps。実際の速度はだいたい秒間50KB くらいになる。 Landscape のコンテンツは合計で50MB 弱。圧縮せずに転送すると単純計算で1000秒、すなわち17分弱かかることになる。圧縮を有効にするだけで、17分が6分程度に短縮される。これは非常に便利だ。
ちなみに、-W オプションは 後述する「rsync アルゴリズム」を無効にするためのオプション。今回は圧縮による速度向上度合だけを計測したいので -W を指定したが、私の平常時の運用では指定していない。-v は詳細な転送情報を表示するためのオプション。
rsync アルゴリズムの良いところは、ファイルを一定サイズごとのブロックに分割して必要なブロックだけを転送している点にある。大きなファイルの一部分だけが変更されたとしても、変更を含むブロックだけを転送すればよいことになり、転送量を減らすことができる。
P2P ファイル共有ソフトの Winny でも類似の機能を実装している。2005-11-29 の「Winny の技術を読了」には詳しく書かなかったが、Winny はダウンロードに失敗しても、最初からダウンロードをやり直す必要はない。Winny は共有ファイルを64KB ごとのブロックに区切り、そのブロック単位でデータをやりとりするからだ。これと同じようなもの。
以下は記事を追加してミラーリングを行った場合。
今の Landscape の HTML は、新規記事が追加されるとサイドバーに新規記事へのリンクなどが追加されるため、全ファイルが更新される。ftp だったら全ファイルを再アップロードする必要があるところだが、rsync は全ファイルの全データ分を転送するという挙動を見せていない。送っているのは 1771974 バイトだけ。ブロックの差分だけ転送している結果だ。このおかげで、通常の 19.98 倍という速度を達成している。素晴らしい。
ローカル生成 + サーバへ一括転送という仕組みのツールなら rsync は非常に有用だ。記事数2000くらいまでなら、今の仕組みのままでも大丈夫そうだ。rsync にはもっといろんな機能があるだろうから、しばらくは man rsync をじっくり読んでみることにする。
使ってみると、rsync は実に良くできた便利なツールであることがわかった。ちなみに今までは lftp を使っていた。詳しくは 2004-05-08 の「lftp を使った ftp ミラーリングと便利機能」を参照。さくらインターネットを使う前までは ftp しか許可されていなかったので仕方がないが、もっと早くから rsync に切り替えるべきだった。
- rsync でミラーリングアップロード
以下のコマンドで、ローカルで生成済みの Landscape のコンテンツをリモートのさくらインターネットのサーバに転送している。rsync -t -r -z --include=*.html* --exclude=* -e "ssh -i $HOME/.ssh/sonic64.com_upload" $HOME/public_html/log.sonic64/ sonic64@sonic64.com:/home/sonic64/www/sonic64
コマンドの意味。
-t はファイルのタイムスタンプを転送先に反映させる。
-r はディレクトリを再帰的に転送する。
-z は圧縮を有効にする。
--include=*.html* --exclude=* はとりあえずあらゆるファイルとディレクトリを転送の対象外にして、その後 .html の拡張子を持つファイルのみ明示的に転送を許可している。要するに html だけ転送しているわけだ。$HOME/public_html/log.sonic64/*.html を転送対象に指定してもいいのだが、ファイル数が多すぎるために引数が長すぎるというエラーになってしまう。それを回避するため、$HOME/public_html/log.sonic64/ を転送対象として指定してから --include=*.html* --exclude=* で対象を *.html に絞っている。もっと上手いやり方もあると思うが、とりあえずこれで。
-e は ssh を使って接続を構成する。暗号化や公開鍵暗号による認証を利用できる。
ちなみに、ローカルに存在しないファイルをリモートから削除したい場合は、--delete オプションを指定する。私の場合はリモートにのみ存在するファイルやディレクトリがあるし、Landscape のコンテンツは増える一方で減ることはまずないので指定していない。
- rsync のデータ圧縮
rsync ではデータの圧縮をサポートしている。圧縮を使う場合は -z を指定する。テキストファイルを一気にミラーリングする場合などは、転送量を三分の一程度に減らすことができる。$ rsync -W -v -t -r -z --include=*.html* --exclude=* -e "ssh -i $HOME/.ssh/sonic64.com_upload" $HOME/public_html/log.sonic64/ sonic64@sonic64.com:/home/sonic64/www/sonic64
sent 13460480 bytes received 17636 bytes 45457.39 bytes/sec
total size is 43120469 speedup is 3.20
13460480 バイトしか送信していないのに、合計サイズが43120469 バイトになっている。これは圧縮の恩恵だ。
私の使っている回線のアップロード速度は、理論値で 512Kbps。実際の速度はだいたい秒間50KB くらいになる。 Landscape のコンテンツは合計で50MB 弱。圧縮せずに転送すると単純計算で1000秒、すなわち17分弱かかることになる。圧縮を有効にするだけで、17分が6分程度に短縮される。これは非常に便利だ。
ちなみに、-W オプションは 後述する「rsync アルゴリズム」を無効にするためのオプション。今回は圧縮による速度向上度合だけを計測したいので -W を指定したが、私の平常時の運用では指定していない。-v は詳細な転送情報を表示するためのオプション。
- rsync アルゴリズムと転送量の削減
rsync は独自の rsync アルゴリズムを使ってデータ転送量を削減している。しかもこれは圧縮と組み合わせることができる。rsync アルゴリズムの良いところは、ファイルを一定サイズごとのブロックに分割して必要なブロックだけを転送している点にある。大きなファイルの一部分だけが変更されたとしても、変更を含むブロックだけを転送すればよいことになり、転送量を減らすことができる。
P2P ファイル共有ソフトの Winny でも類似の機能を実装している。2005-11-29 の「Winny の技術を読了」には詳しく書かなかったが、Winny はダウンロードに失敗しても、最初からダウンロードをやり直す必要はない。Winny は共有ファイルを64KB ごとのブロックに区切り、そのブロック単位でデータをやりとりするからだ。これと同じようなもの。
以下は記事を追加してミラーリングを行った場合。
$ rsync -v -t -r -z --include=*.html* --exclude=* -e "ssh -i $HOME/.ssh/sonic64.com_upload" $HOME/public_html/log.sonic64/ sonic64@sonic64.com:/home/sonic64/www/sonic64
sent 1771974 bytes received 389842 bytes 40407.78 bytes/sec
total size is 43182507 speedup is 19.98
今の Landscape の HTML は、新規記事が追加されるとサイドバーに新規記事へのリンクなどが追加されるため、全ファイルが更新される。ftp だったら全ファイルを再アップロードする必要があるところだが、rsync は全ファイルの全データ分を転送するという挙動を見せていない。送っているのは 1771974 バイトだけ。ブロックの差分だけ転送している結果だ。このおかげで、通常の 19.98 倍という速度を達成している。素晴らしい。
ローカル生成 + サーバへ一括転送という仕組みのツールなら rsync は非常に有用だ。記事数2000くらいまでなら、今の仕組みのままでも大丈夫そうだ。rsync にはもっといろんな機能があるだろうから、しばらくは man rsync をじっくり読んでみることにする。
ipchains で OutGoing (外向き) のパケットを DENY する。
諸般の事情で iptables じゃなくて ipchains を使った。
REJECT はパケットを捨てた上で、拒否したことを ICMP を使って発信元に通告する。
ipchains -A output -d 10.87.64.215 -j DENY
諸般の事情で iptables じゃなくて ipchains を使った。
- DENY/DROP と REJECT の違い
DENY と DROP は同義で、パケットを単に捨てるだけ。発信元へはなにも返さない。REJECT はパケットを捨てた上で、拒否したことを ICMP を使って発信元に通告する。
2005-11-23 の「無線 LAN ルータ WHR-G54S のファームウェア更新に失敗」で書いた、バッファローの無線 LAN ルータ WHR-G54S の修理についてのメモ。
- 修理の流れ
11/24 にコンビニに持ち込んでバッファローの修理センターへ発送。クロネコヤマトで630円くらいだったかな。クロネコヤマトの荷物お問い合わせシステムによると、以下のようになっていた。一部伏せ字。
荷物状況 日 付 時 刻 担当店名 担当店コード
発送 11/25 16:56 宇都宮******宅急便センタ− *******
作業店通過 11/25 19:07 栃木ベース店 022990
作業店通過 11/26 05:23 名古屋ベース店 054990
配達日・時間帯指定(保管中) 11/26 08:35 南忠次宅急便センター 054181
配達完了 11/28 11:52 南忠次宅急便センター 054181
さらに、以下をバッファローのサイトから閲覧できた。
修理期間データ
https://online.buffalo.jp/newirai/noukisearch.asp
修理予約日 2005/11/23
修理品到着日
修理受付日 2005/11/29
修理完了予定日 2005/12/15
修理完了日 2005/11/30
発送日 2005/11/30
修理の状況を閲覧できるのはいいシステムだね。安心感がある。バッファロー、なかなかやるな。ただ、どうもデータの反映が遅い模様。イベントが発生してから2日くらい経たないと上記サイトに反映されない感じ。11/30 に閲覧しても「修理受付日」さえ記録されていなかったし。
最終的に、修理が終わって私の家に着いたのが12/2くらいだったかな?
平均修理期間について
・弊社での平均修理期間は製品到着後、弊社営業日で7日〜10日を予定しています。
(お客様から製品をご送付頂く期間・弊社より製品を返送する期間は修理期間に含んでおりません)
修理に要する期間は予想より短かった。短かった理由は本体が完全に交換になったからだろう。ファームウェアが吹っ飛んでしまったら、修理方法は他にないということか。フラッシュ ROM を交換できる仕組みになってないのかな?
- 修理内容と修理費用
本体は完全に交換となったので、本体に貼ってあったシリアルナンバーのシールは手作業で貼り替えてあった。シールの左上の角には剥がして皺が寄った跡がある。名誉の負傷と呼ぶことにしよう。修理代金は無料だった。これで有償だったらバッファロー製品は二度と買わないところだったけど、この対応なら及第だ。今後もおつきあいしたいところ。ちなみに、バッファローの修理センターへの返送にかかる送料のみ負担した。まあ、これは仕方ないでしょう。逆に私に送られてくるときの送料はバッファロー負担。
- 修理後の経過
本体が交換になったので、設定はやり直し。設定をファイルにダンプしておいたのだが、トラブルがあると困るので手で丹誠込めて設定し直した。いまのところ快調に動作している。「Winny の技術」を読了した。この本はピアツーピア (P2P) のファイル共有ソフト Winny を、その作者の金子勇氏が解説した技術解説本。純粋に Winny の設計と実装を解説した技術本であるため、Winny の使い方や法律論などは載っていない。
2005-10-05 の『Winny の技術解説本「Winny の技術」を発注』で購入しておいたのだが、読むのがだいぶ遅くなってしまった。
- 資料的価値がある
今まで Winny のソースコードやプロトコルは非公開だった。Winny の設計や実装を学ぶためには、配布された実行ファイルをソースコードに逆変換したりするリバースエンジニアリングや、通信パケットを解析するのが一般的だったようだ。また、作者自身とユーザーが掲示板などに書き込んだ情報を元に推測するということもおこなわれていた。Winny のネットワークは大規模といえるレベルまで成長しており、その設計と実装を作者自らが解説したこの本は、資料的価値がある。以下に参考になった部分を列挙する。
- 上流と下流によるノードの重み付け
Winny では、Winny ネットワークに参加するノードを対等な関係とするのではなく、上流と下流という概念を取り入れ、回線速度や処理性能で分類している。過去の P2P アプリケーションは参加するノードが入り交じり、全体の効率を落としていた。回線と処理性能に余裕があるノードは上流に位置づけ、大量のデータをやりとりさせる。また、人気のあるファイルは上流でキャッシュするようにし、Winny ネットワーク内での流通速度を上げる。一方、回線や処理性能に余裕のない下流ノードは上流のノードにぶら下がるようにし、相応の負荷に抑える。
この仕組みであれば、上流は負荷が高いがその分大量のファイルを受信できるし、下流よりも広い範囲でファイルを探すことができる。下流は自分の身の丈にあった範囲でファイルを探すことができ、それぞれの住み分けができる。
上流と下流の概念があることで、どんな参加ユーザーでも受け入れることができ、ネットワーク全体の受容能力が高まる。ネットワークの価値は、まず参加しているノードの数で決まる。もちろん、各ノードの持っているリソースの質も重要だが、量は質に転換する。それを踏まえた設計になっているのが素晴らしい。
- クラスタリングによる分割統治
Winny はクラスタという概念を取り入れ、ネットワークの規模が大きくなっても効率を落とさない仕組みを実現している。参加しているノードの数が増え、ファイルの流通量が爆発的に増えると、流通量全体に占める目当てのファイルの比率が下がる。これはネットワークが成長すると避けられない事態だ。この問題への対処は上流と下流だけでは難しい。そのため、目当てのファイルや保持しているファイルの傾向でノードを分類し、集団 (クラスタ) を形成するようになっている。これにより、目当てのファイルの検索ヒット率と、キャッシュヒット率が向上する。
問題解決の基本は「分割して統治せよ」だ。上流と下流という一次元の軸しかなかった Winny ネットワークにクラスタという別の次元の軸を与えることで、大量のノードを分割して統治することができる。しかも、お互いのクラスタは明確に分割されるのではなく、ある程度のつながりを保持したままゆるく分割されていく。良くできた仕組みだ。
- 自動ダウンロード、自動ハッシュチェック
Winny は自動ダウンロード、自動リトライ、自動ファイルハッシュチェックなど、Winny ネットワークとアプリケーションの信頼性を高める仕組みを導入している。欲しいファイルを「予約」して Winny を起動しておけば、あとは Winny 自身が勝手にファイルを持っているノードを検索し、リクエストを発行してダウンロードし、ファイルの整合性のチェックまでしてくれる。
この仕組みはユーザの手間を減らすという点で非常に強力だ。とくに、ネットワークアプリケーションで懸念されるデータ化けやファイル破損を、MD5 ハッシュのチェックをおこなうことで回避している点が良い。TCP 自体にエラーチェックの仕組みがあるが、アプリケーションが保証していることが重要だ。
この仕組みがあることで、数百メガバイトを超えるファイルの共有も安心してできるようになる。チェックは自動でおこなわれるので、ユーザーに手間をかけさせない。安心して任せられるので、流通するファイルが増える。その結果、Winny ネットワークはより大きくなる。
全体的に見て、Winny はファイルの交換を促進する良い仕組みを持っている。IX やプロバイダーが Winny のトラフィックの増加に悩んでいたようだが、これだけの機能を備えていれば、それも頷ける。
- 疑問点
共有できるファイルサイズの上限が 2GB というのはちょっと少ない。たとえば、Debian GNU/Linux sarge の DVD ISO イメージは 4GB くらいあったはず。こういう巨大ファイルは分割しなければならない。開発当時のネットワーク回線事情では、この程度のサイズのファイルを気軽に流通させることはできなかったのかもしれない。表紙がグレーなのは、Winny の利用される形態が「グレーゾーン」だからかな?
2ページ目の鍵の指紋が気になる。金子氏はこれで何をしようとしているんだろう?
Fingerprint:
16B6 7953 A7C1 2DCA 9DEF C7D1 2546 1CCE C03F 2BA3
- Winny の技術 pdf 版を Winny でダウンロード
Winny の技術 winny ネットワーク上で流通しているようだ。以下がファイル情報。左から順に、ファイル名、 Winny 上のトリップ、ファイルサイズ、md5 ハッシュ。PDF(一般書籍) [金子勇] Winnyの技術 [05-10-03].zip cbwdWRCPoE 1,900,259 9d2dd618c580e38ea6869c51d9ed1107
無線 LAN ルータを壊してしまった。原因はファームウェアの更新失敗。
壊したのはバッファローの AirStation WHR-G54S という無線 LAN ルータ。ニンテンドーDS の「おいでよ どうぶつの森」を接続するために、2005-11-18 の「ニンテンドーWi-Fiコネクション用 無線LANルータ/アクセスポイント選び」でいろいろ検討した結果選んだものだ。
ちなみにファームウェアは、 ハードウェアほど固定的でなく、ソフトウェアほど頻繁に変更されないものを指す。ファームのスペルは firm で、固いという意味。組み込み機器に搭載されたソフトウェアをこう呼ぶことが多い。
ファームウェアは組み込み機器自身を制御することが多いため、アップデートに失敗するとその機器が使えなくなったりするというリスクがある。リスクがあるので、私はアップデートの必要がなければ手を出さない派なのだが、1.23 では機能追加だけでなく、いくつかの不具合修正がなされているとのこと。
ドライバ ダウンロード WHR-G54S
http://buffalo.melcoinc.co.jp/download/driver/lan/whr-g54s.h ...
気になるのは 5番、10番、11番だ。私はブリッジモードで使う予定なのでとくに11番は困る。10番のセキュリティ系の不具合も、ルータモードの時のみに問題になることなのですぐには影響がないかもしれないが、こういうのは早めに手当てしておきたい。
しかし、更新中を示す本体のランプの点滅がいつまで経っても収まらない。1時間くらい待ってもずーっと点滅中。不具合の5番「Flash-ROMへ設定保存時、異常に時間がかかる場合がある不具合」に該当しているのかもしれないが、それにしても時間がかかりすぎる。やばいかも。
メーカーのウェブサイトの FAQ を探してみる。
ファームウェアの更新に失敗した場合の対処方法【AirStation、BroadStation】
http://qa.buffalo.jp/eservice/qid.asp?id=BUF2943
うん、やってみよう。・・・。DIAG ランプの点滅は収まったけど、パワーランプしか点灯しなくなった。これってどうなの?
ダメじゃん。壊れたー。一応本体の初期化スイッチを押してみるが、症状は変わらず。えー、ファームウェアのアップデート失敗って、こんな簡単に発生するものなの? マニュアルの手順を踏んだだけなのに? 今までマザーボードのファームウェア更新とか何度もやってきたけど、失敗したのは初めてだ。マザーボードなどでは、BIOS 用のフラッシュメモリを複数搭載していて、一個がダメになったらスペアから起動できるようになってるものがあるが、家庭用ルータではまだ一般的ではないようだ。
あ、ファームウェアが壊れていても、無線とルータ部分が使えないだけで、スイッチングハブとしては使えるのね。って、それじゃあ買った意味がないよー。購入してから5時間くらいで、無線 LAN ルータが単なるスイッチングハブになっちゃった・・・。
仕方ないのでメーカーのサポート行き。web から修理依頼をかけて修理受付番号を発行してもらい、それを書いた紙を添えてメーカーに送る。早くよくなって帰ってきてね。
ちなみに今日はニンテンドーDS の「おいでよ どうぶつの森」の発売日。amazon にはすでに発注済みだけど、まだ発送されていない模様。
なんだか不運が続くなあ。もっとも、まだニンテンドーDS 本体を買ってないから、ソフトだけ到着してもプレイできないんだけどね。ルータの修理には6から9営業日かかると書いてあったし、まあ気長に待ちますか。
壊したのはバッファローの AirStation WHR-G54S という無線 LAN ルータ。ニンテンドーDS の「おいでよ どうぶつの森」を接続するために、2005-11-18 の「ニンテンドーWi-Fiコネクション用 無線LANルータ/アクセスポイント選び」でいろいろ検討した結果選んだものだ。
- WHR-G54S の最新ファームウェア 1.23 ではいくつかの不具合修正済み
amazon で購入し、今日のお昼頃に我が家に配送されてきた。いろいろ設定などをしていたところ、ファームウェアが最新のものでないことに気づいた。私の WHR-G54S のファームウェアのバージョンは 1.20 で、最新版は 1.23 だ。ちなみにファームウェアは、 ハードウェアほど固定的でなく、ソフトウェアほど頻繁に変更されないものを指す。ファームのスペルは firm で、固いという意味。組み込み機器に搭載されたソフトウェアをこう呼ぶことが多い。
ファームウェアは組み込み機器自身を制御することが多いため、アップデートに失敗するとその機器が使えなくなったりするというリスクがある。リスクがあるので、私はアップデートの必要がなければ手を出さない派なのだが、1.23 では機能追加だけでなく、いくつかの不具合修正がなされているとのこと。
ドライバ ダウンロード WHR-G54S
http://buffalo.melcoinc.co.jp/download/driver/lan/whr-g54s.h ...
Ver1.21→Ver1.23
【不具合修正】
1. マルチクライアント機能を有効にしたイーサネットコンバータを使用した機器が
IPアドレスの更新が出来ない不具合を修正しました。
2. 機能設定「インターネット対応ゲームを使う」の設定画面内の補足説明を変更
しました。
3. IPフィルタ設定で登録最大数まで入力するとページエラーになる不具合を修正
しました。
4. エアステーション名に不正な入力が出来る不具合を修正しました。
5. Flash-ROMへ設定保存時、異常に時間がかかる場合がある不具合を再度、修正
しました。
6. システム情報ページの「製品名」項目に詳細な機器情報を表示する様にしました。
7. アドレス変換を使用しない設定で使用した場合に正常に動作しない不具合を修正
しました。
8. アタックブロック情報を消去しても再表示される不具合を修正しました。
9. DHCPサーバ設定のDNSサーバとWINSサーバ項目に不正な入力ができる不具合を修正
しました。
10. パケットフィルタの設定変更した場合、わずかな時間だけフィルタが効かなくなる
不具合を修正しました。
11. ブリッジモード時に機能設定「無線LANの暗号化を設定する」のページで表示されない
ページがある不具合を修正しました。
12. アドレス変換設定でポート変換テーブルを既存のグループに対して新規追加した場合に、
既存グループの有効無効状態に合わせて追加するように修正しました。
13. WEB設定画面のヘルプの誤記修正/内容追加をしました。
気になるのは 5番、10番、11番だ。私はブリッジモードで使う予定なのでとくに11番は困る。10番のセキュリティ系の不具合も、ルータモードの時のみに問題になることなのですぐには影響がないかもしれないが、こういうのは早めに手当てしておきたい。
- WHR-G54S のファームウェアをアップデートする
アップデートした方が良さそうなので、バッファローのウェブサイトからファームウェア whrg54s-123.exe をダウンロード。自己解凍ファイルを展開して、ブラウザの AirStation 設定画面からアップデートファイルのパスを指定して POST する。「更新には180秒ほどかかる」という画面が出た。どうやら正常にアップデートファイルを WHR-G54S に転送できたようだ。更新が終わるまでしばらく待つ。しかし、更新中を示す本体のランプの点滅がいつまで経っても収まらない。1時間くらい待ってもずーっと点滅中。不具合の5番「Flash-ROMへ設定保存時、異常に時間がかかる場合がある不具合」に該当しているのかもしれないが、それにしても時間がかかりすぎる。やばいかも。
メーカーのウェブサイトの FAQ を探してみる。
ファームウェアの更新に失敗した場合の対処方法【AirStation、BroadStation】
http://qa.buffalo.jp/eservice/qid.asp?id=BUF2943
ファームウェア更新失敗後、製品本体前面のDIAGランプが点滅(点灯)している場合、
一度電源の抜き差しを行ない、点滅(点灯)が消えることを確認ください。
うん、やってみよう。・・・。DIAG ランプの点滅は収まったけど、パワーランプしか点灯しなくなった。これってどうなの?
電源の抜き差しを行ってもDIAGランプが点滅(点灯)し続ける場合、もしくは
Powerランプのみが点灯し、Wirelessが点灯しない場合、誠に申し訳ございませんが、
製品本体とACアダプタを弊社修理センターまでお送りください。
ダメじゃん。壊れたー。一応本体の初期化スイッチを押してみるが、症状は変わらず。えー、ファームウェアのアップデート失敗って、こんな簡単に発生するものなの? マニュアルの手順を踏んだだけなのに? 今までマザーボードのファームウェア更新とか何度もやってきたけど、失敗したのは初めてだ。マザーボードなどでは、BIOS 用のフラッシュメモリを複数搭載していて、一個がダメになったらスペアから起動できるようになってるものがあるが、家庭用ルータではまだ一般的ではないようだ。
あ、ファームウェアが壊れていても、無線とルータ部分が使えないだけで、スイッチングハブとしては使えるのね。って、それじゃあ買った意味がないよー。購入してから5時間くらいで、無線 LAN ルータが単なるスイッチングハブになっちゃった・・・。
仕方ないのでメーカーのサポート行き。web から修理依頼をかけて修理受付番号を発行してもらい、それを書いた紙を添えてメーカーに送る。早くよくなって帰ってきてね。
- 「おいでよ どうぶつの森」もまだ届かない
ちなみに今日はニンテンドーDS の「おいでよ どうぶつの森」の発売日。amazon にはすでに発注済みだけど、まだ発送されていない模様。
なんだか不運が続くなあ。もっとも、まだニンテンドーDS 本体を買ってないから、ソフトだけ到着してもプレイできないんだけどね。ルータの修理には6から9営業日かかると書いてあったし、まあ気長に待ちますか。
任天堂公式サイトで、ニンテンドーWi-Fiコネクション対応の無線 LAN ルータやアクセスポイントの製品一覧が発表された。
Wi-Fiコネクションサービスにつながる動作確認済み「無線LANアクセスポイント」機種一覧
http://wifi.nintendo.co.jp/information/router/
2005-11-15 の「ニンテンドー DS の Wi-Fi コネクションの接続テスト」では「ニンテンドーWi-Fi USBコネクタ」を検討したが、他に接続したい PC もあるし、そろそろ我が家のネットワークにも無線 LAN を導入しても良い頃。では、私はどの機種を買ったらいいんだろう?
この他に、PSP (プレイステーションポータブル)、プレイステーション3、任天堂の次世代機「レボリューション」もいずれ購入するので無線で繋ぎたい。購入予定は全くの未定だが。XBOX360は今のところ購入予定無しなので気にしない。
ルータは持っていないが、プロバイダ貸し出しのモデム付きルータはある。貸し出し品なのでプロバイダを乗り換えると返却しなければならない。スイッチングハブは4ポートのものが1台、8ポートのものが1台ある。
無線 LAN アクセスポイント
無線 LAN 対応機器の基地局となり、各機器の中継をするもの。「無線 LAN ブリッジ」や「無線 LAN ルータ」などのこと。
無線 LAN ブリッジ
無線 LAN 機器をレイヤ2で接続するだけの無線 LAN アクセスポイント。スイッチングハブのようなもの。
無線 LAN ルータ
レイヤ3のルーティング機能を持った無線 LAN アクセスポイント。ルータモードとブリッジモードを切り替えられる機種もある。
予算は2万円で。安い機種でもいい。
メーカーにもこだわりがないが、ニンテンドー DS は BUFFALO 無線 LAN 自動設定ツール「AOSS」と NEC の 無線 LAN 自動設定ツール 「らくらく無線スタート」に対応しているので、これら2社のものがいい。私はエンジニアなので、自動設定はたぶん使わないと思うけど。
IEEE802.11a は不要。あってもいいけど、無くても構わない。IEEE802.11g があればいい。
で、選んだ機種が BUFFALO の WHR-G54S。1万円でおつりが来る。無線 LAN ルータとブリッジを切り替えられる。IEEE802.11g にも対応。4ポートのスイッチングハブ付き。私にはこれで十分だな。
WHR-HP-G54 は交信性能を強化したハイパワー版。こっちも検討したけど、私の家ならたぶん WHR-G54S で十分だと思う。
NEC の AtermWR7850S と AtermWR6650S の2機種は IEEE802.11a にも対応。でも、IEEE802.11a は必須じゃないし、BUFFALO の方が手頃な値段なので見送り。
Wi-Fiコネクションサービスにつながる動作確認済み「無線LANアクセスポイント」機種一覧
http://wifi.nintendo.co.jp/information/router/
amazon で買うのも楽でいいけど、これを印刷して近くの電器店に行って品定めして買うのが良いと思う。そのために価格と納期がわかるような形で表示した。
BUFFALO HighPower無線LAN AirStation BroadBandルータコンプリートモデル (2.4GHz・54Mbps)WZR-HP-G54
バッファロー
発売日: 2004/08/31
amazon で詳しく見る
BUFFALO IEEE802.11g 無線LAN AirStation BroadBandルータ リモートアクセス HighPowerモデル WZR-RS-G54HP
バッファロー
発売日: 2004/11/30
amazon で詳しく見る
BUFFALO AirStationPro 無線LANアクセスポイント ハイゲインアンテナ&PoE受電アダプタセット WLAH-HG-G54/R
バッファロー
発売日: 2004/11/30
amazon で詳しく見る
Wi-Fiコネクションサービスにつながる動作確認済み「無線LANアクセスポイント」機種一覧
http://wifi.nintendo.co.jp/information/router/
2005-11-15 の「ニンテンドー DS の Wi-Fi コネクションの接続テスト」では「ニンテンドーWi-Fi USBコネクタ」を検討したが、他に接続したい PC もあるし、そろそろ我が家のネットワークにも無線 LAN を導入しても良い頃。では、私はどの機種を買ったらいいんだろう?
- 我が家のネットワーク構成
確実に無線で接続する機器は、ノート PC 2台とニンテンドーDS。デスクトップ PC は有線 LAN で接続予定。この他に、PSP (プレイステーションポータブル)、プレイステーション3、任天堂の次世代機「レボリューション」もいずれ購入するので無線で繋ぎたい。購入予定は全くの未定だが。XBOX360は今のところ購入予定無しなので気にしない。
ルータは持っていないが、プロバイダ貸し出しのモデム付きルータはある。貸し出し品なのでプロバイダを乗り換えると返却しなければならない。スイッチングハブは4ポートのものが1台、8ポートのものが1台ある。
- 無線LAN 機器の種類
無線 LAN 機器の種類をメモ。無線 LAN アクセスポイント
無線 LAN 対応機器の基地局となり、各機器の中継をするもの。「無線 LAN ブリッジ」や「無線 LAN ルータ」などのこと。
無線 LAN ブリッジ
無線 LAN 機器をレイヤ2で接続するだけの無線 LAN アクセスポイント。スイッチングハブのようなもの。
無線 LAN ルータ
レイヤ3のルーティング機能を持った無線 LAN アクセスポイント。ルータモードとブリッジモードを切り替えられる機種もある。
- ニンテンドーWi-Fiコネクション用 無線LANルータ/アクセスポイント選び
私はルータを持っていないので、家庭用のものなら一台くらい手元にあってもいい。というわけで、無線 LAN ブリッジではなく、無線 LAN ルータを買おう。予算は2万円で。安い機種でもいい。
メーカーにもこだわりがないが、ニンテンドー DS は BUFFALO 無線 LAN 自動設定ツール「AOSS」と NEC の 無線 LAN 自動設定ツール 「らくらく無線スタート」に対応しているので、これら2社のものがいい。私はエンジニアなので、自動設定はたぶん使わないと思うけど。
IEEE802.11a は不要。あってもいいけど、無くても構わない。IEEE802.11g があればいい。
で、選んだ機種が BUFFALO の WHR-G54S。1万円でおつりが来る。無線 LAN ルータとブリッジを切り替えられる。IEEE802.11g にも対応。4ポートのスイッチングハブ付き。私にはこれで十分だな。
WHR-HP-G54 は交信性能を強化したハイパワー版。こっちも検討したけど、私の家ならたぶん WHR-G54S で十分だと思う。
NEC の AtermWR7850S と AtermWR6650S の2機種は IEEE802.11a にも対応。でも、IEEE802.11a は必須じゃないし、BUFFALO の方が手頃な値段なので見送り。
- 動作確認済みルータ・無線アクセスポイント
任天堂のオフィシャルサイトから、動作検証の結果に ○ が付いていた機種を抜粋。なので、NEC のモデルは掲載していない。すべて2005年11月18日現在。たぶん今後検証機種は増えていくだろうし、ユーザーからの報告もあるだろう。Wi-Fiコネクションサービスにつながる動作確認済み「無線LANアクセスポイント」機種一覧
http://wifi.nintendo.co.jp/information/router/
amazon で買うのも楽でいいけど、これを印刷して近くの電器店に行って品定めして買うのが良いと思う。そのために価格と納期がわかるような形で表示した。
- BUFFALO の Wi-Fiコネクション動作確認済み無線LANアクセスポイント
バッファローは任天堂と提携しているだけあって、最多の動作確認済み機種数を誇る。ただ、どう見ても業務用としか思えないモデルも入ってるね。値段も3倍くらいするものとか。
BUFFALO HighPower無線LAN AirStation BroadBandルータコンプリートモデル (2.4GHz・54Mbps)WZR-HP-G54バッファロー
発売日: 2004/08/31
amazon で詳しく見る
BUFFALO IEEE802.11g 無線LAN AirStation BroadBandルータ リモートアクセス HighPowerモデル WZR-RS-G54HPバッファロー
発売日: 2004/11/30
amazon で詳しく見る
BUFFALO AirStationPro 無線LANアクセスポイント ハイゲインアンテナ&PoE受電アダプタセット WLAH-HG-G54/Rバッファロー
発売日: 2004/11/30
amazon で詳しく見る
- コレガの Wi-Fiコネクション動作確認済み無線LANアクセスポイント
「無線LANアクセスポイントの送信レートを2Mbpsに設定する。」「無線LANアクセスポイントのXR機能をオフに設定する」必要があるものは除外したので、4機種のみ。{CG-WLBARAGL 切換利用対応無線LANルータ: エレクトロニクス}:amazon:B0009QZWPI
{corega CG-WLBARAG: エレクトロニクス}:amazon:B0001VCT2K
{corega WLBAR-54GT White 802.11g/54Mbps 無線ルーター: エレクトロニクス}:amazon:B00009RGHG
- ELECOM の Wi-Fiコネクション動作確認済み無線LANアクセスポイント
- ICOM の Wi-Fiコネクション動作確認済み無線LANアクセスポイント
{SR-5000VOIP VOIP対応ワイヤレスブロードバンドルータ: エレクトロニクス}:amazon:B0001931H4
- I-O DATA の Wi-Fiコネクション動作確認済み無線LANアクセスポイント
- LINKSYS の Wi-Fiコネクション動作確認済み無線LANアクセスポイント
- NETGEAR の Wi-Fiコネクション動作確認済み無線LANアクセスポイント
- PLANEX の Wi-Fiコネクション動作確認済み無線LANアクセスポイント
{PLANEX BRC-W14V eXgateシリーズ マルチユースワイヤレスVPNルータ: エレクトロニクス}:amazon:B000127XTS
{PLANEX BRC-AP04 eXgateシリーズ マルチユースアクセスポイント: エレクトロニクス}:amazon:B000127XT8
BUFFALO LSW-TX-24NSR 10/100M スイッチングHub
自分のペースでゆったり学ぶTCP/IP
ニンテンドーWi-Fi USBコネクタ
BUFFALO WHR-G54S 無線LAN
Winnyの技術
おいでよ どうぶつの森
BUFFALO WHR-HP-G54 無線LAN
AtermWR7850S PA-WR7850S/B
AtermWR6650S PA-WR6650S/B
BUFFALO WER-AM54G54 IEEE802.11a/g同時 無線LANルータ
BUFFALO WER-AMG54 IEEE802.11a/g切替 無線ルータ
BUFFALO WBR2-G54 無線LAN AOSSTM対応 BroadBandルータ
BUFFALO WYR-ALG54/P 無線BroadBandルータ カードセット
BUFFALO WBR2-B11 無線LAN AOSSTM対応 BroadBandルータ
BUFFALO WZR-RS-G54 11g無線LANルータ リモートアクセスモデル
BUFFALO IEEE802.11g 無線LAN AirStation ブリッジモデル WLA2-G54C
BUFFALO IEEE802.11g 無線LAN AirStation ブリッジモデル WLA2-G54
WLAH-A54G54 2.4GHz&5.2GHz 54Mbps 無線LAN
BUFFALO WLAH-AM54G54 IEEE802.11a/g同時
BUFFALO WLAH-G54
FS-G54
BUFFALO WER-A54G54 11a/g同時接続 無線LANルータ
BUFFALO WER-AG54 AirStation 無線LAN BBルータ
BUFFALO WHR2-G54
WHR3-AG54
WZR-G54
BUFFALO WHR2-A54G54
CG-WLBARAG2 国際標準同時利用対応無線ルータ
ELECOM IEEE802.11g対応 54/11Mbps無線LANアクセスポイント LD-WL54G/AP
I-O DATA IEEE802.11a+g/b同時利用対応 無線LANルーター WN-APG/R
I-O DATA WN-APG/BBR
I-O DATA WN-APG/A 無線LANアクセスポイント
I-O DATA WN-AG/A 無線LANアクセスポイント
I-O DATA WN-G54/A 無線LANアクセスポイント
WRT54GS-JP
WRT54G-JP V2 54M 無線LAN ルータ
WAP54G-JP V2 無線LAN アクセスポイント
ネットギア 高速無線ルータ WGM124
ネットギア 無線LANルータ WGT634U
PLANEX 108Mbps無線LANブロードバンドルータ BRC-W108G
PLANEX BLW-04GM 54Mbps無線LANブロードバンドルータ
PLANEX 無線LANアクセスポイント GW-AP54SAG
PLANEX 無線LANアクセスポイント GW-AP54SGX
PLA