MacOSX 10.5 LeopardのファイアウォールでRailsアプリが許可されない時
10.5 Leopardになって、ファイアウォールの仕組みが大きく変更された。これまでの10.4 Tigerまでのポートを指定する方式から、アプリケーションを指定する方式(Mac OS X 10.5 Leopard: アプリケーション・ファイアウォールについて)になったのだ。この変更で最初戸惑ってしまったことがある。
「それでは、ファイアウォールを有効にしつつ、Railsアプリケーションを許可するためにはどのように指定すべきなのか?」
まず最初にやってみたのが、アクティビティモニタで確認しながらRailsアプリを起動すると、Rubyプロセスとして表示されるので、「/usr/bin/ruby」を「+」ボタンで追加して、それからサーバーを起動してみた。この設定をしておいたのがOSX 10.5インストール直後。その後、ファイアウォールの動作確認をせず、現在のOSX 10.5.2までアップデートしてきた。そして最近、Time Capsuleでポートマッピングの設定をした時に、初めて動作確認をしてみること...動かない...。
もしかしたら、Railsのwebサービスの本体は「/usr/bin/ruby」ではないのかもしれない...。もしかしたら、script/serverで起動するサーバープログラムを指定するべきか?または、その他諸々関連するすべてのプログラムを指定するべきなのではないか?等々、様々な疑念がよぎった...。
ところが、最終的には最初に予想した通り、「/usr/bin/ruby」*1の「受信接続を許可」しておけば、Railsアプリへの接続が可能であった。以下の手順を実行した。
リストから取り除いてリセット
- アプリケーションリストから「ruby」をすべて削除。
- MacBook再起動。
- ターミナルから「script/server」を実行。
- 「アプリケーション"ruby"へのネットワーク受信接続を許可しますか?」と訊かれるので、「許可」ボタンを押す。*2
- アプリケーションリストに「ruby」が追加される。「受信接続を許可」の状態。これで、外部からRailsアプリへの接続が可能になった。
- 「受信接続を許可」を「受信接続をブロック」に変更すると、Railsアプリへの接続が拒否される。
自分の勝手な憶測だが、おそらく、OSX 10.5リリース直後のファイアウォールには不具合があったのかもしれない。その後、OSX 10.5.2では不具合が解消されたが、リリース直後の不具合のある状態が保存されて、正常に設定変更が出来ない状態であったのかもしれない...。