いずれ消え行く無駄な情報を、密やかに発信する装置。つまり日記。
Mac OSX Lion 10.7.3のMac Book Airから、sambaが動いているリモートのLinuxマシンにsmbプロトコルでファイル共有をした時の設定メモです。
設定の流れとしては、ローカルマシンのループバックデバイス(lo0)にエイリアスでポートフォワード用のIPアドレスを設定し、sshでトンネルを掘ります。
エイリアスの設定は、起動時にifconfigを1行書くだけです。
個人的に絶対に使わなさそうなネットワークを振りました。今回は、192.168.100.0/24のネットワークを設定します。
ifconfig lo0 alias 192.168.100.100 255.255.255.0
問題は、この1行をどこに書くかです。MacOSXは、Unix系のOSなので/etc/rcスクリプトのどれかに一行書きたいところですが、/etc/rc系のスクリプトはlaunchdに統合されてしまったので使えません。launchdから起動時に呼び出されるSystemStarterを利用します。SystemStarterが呼び出す/Library/StartupItemsディレクトリにスクリプト追加をしました。追加する起動スクリプトの名前は安易に「BootScript」にしてます。
なお、SystemStarterは今後無くなる可能性があります。後方互換性の為に残されている機能です。launchdの使い方を勉強して、LaunchAgentを使ったほうが良いと思われます。
まず、スクリプトを格納するディレクトリの作成をし、スクリプトを記述します。
ifconfigを書くBootScriptファイルには、起動時や停止時、再実行時の内容をそれぞれ記載します。なお、/etc/rc.commonは必須とのこと。
$ sudo mkdir /Library/StartupItems/BootScript $ sudo vi /Library/StartupItems/BootScript/BootScript #!/bin/sh . /etc/rc.common StartService () { ifconfig lo0 alias 192.168.100.100 255.255.255.0 } StopService () { ifconfig lo0 -alias 192.168.100.100 } RestartService () { StopService StartService } RunService "$1"
スクリプトに実行権限を与えます。
念のため、スクリプトが正常に動作することを確認するために、以下のコマンドを実行し手動でスクリプトを動かします。
$ sudo chmod 755 /Library/StartupItems/BootScript/BootScript $ sudo /sbin/SystemStarter start BootScript $ sudo /sbin/SystemStarter stop BootScript $ sudo /sbin/SystemStarter restart BootScript
次にスクリプトのプロパティを書きます。書く内容は、参考文献のサンプルをもとに作成しました。
$ sudo vi /Library/StartupItems/BootScript/StartupParameters.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd"> <plist version="0.9"> <dict> <key>Description</key> <string>BootScript</string> <key>OrderPreference</key> <string>Late</string> <key>Provides</key> <array> <string>BootScript</string> </array> <key>Require</key> <array> <string>Network</string> </array> <key>Uses</key> <array> <string>Network</string> </array> </dict> </plist>
sshのコマンドは、昔ながらのポートフォワーディングのやりかたで問題ありません。今回は、エイリアスに設定したローカルの192.168.100.100の1139ポートをリモート先にあるLinuxサーバの192.168.1.2の139ポートにフォワードします。
ssh -L 192.168.100.100:1139:192.168.1.2:139 username@smbserver.example.com
後は、Finderの「サーバに接続」を選んで「smb://192.168.100.100:1139」に接続すれば、ローカルマシンと同じように参照できます。