DiCEでDDNSを運用してみる

私は固定IPを保有していないので、ネット再接続時にIPが変わると、自宅サーバへ外部からの接続が不可能になります。そこで、DDNS用更新ソフトにDiCEを導入しました。これはIPの変更を検知してDDNS設定を自動的に書き換えてくれるソフトです。LinuxPC起動時に自動的に常駐するよう、/etc/rc.localへdicedコマンドを追記しましょう。

/usr/bin/local/dice/diced -d -l

もし、DiCEを使いたくない場合は、ディストリビューションパッケージに含まれるWgetを駆使して、HTTPリクエストを送ることでも実現可能です。

ProFTPの設定方法

Vine Linuxでの設置方法です。FTPには標準ディストリビューションのProFTPを使うことにします。パッケージから探してインストールしましょう。

次に難解な設定です。構築するディレクトリ構成は、少し特殊にしてみようと思います。rootの下にあるpubディレクトリは、全FTPアカウントで共通、同一ディレクトリを表示させる。そこを読み取り専用で公開し、更新モジュール等を管理側から提供できるようにする。FTPユーザ側から見ると下記のようになります。

root (0777)
|
|-pub (0744)

ここでつまづいたのが、この共有ディレクトリpubの作り方。Windows環境でFTPを運用していたときは、WarFTPの機能でバーチャルマッピングで自由に構成可能でした。しかし、ProFTPにはそんな便利な機能ありません。探しに探して行き着いたのはmount。Linuxのファイルシステムを利用しろと言うことです。詳細は/usr/share/doc/proftpd-x.x.x/howto/Chroot.htmlの文末に載っています。ProFTPの機能だけを検索していたばかりに、このシンプルな解答に気づかず苦労しました。灯台下暗し…皆さんも探し回る前にまずはマニュアルを熟読してください。

mount情報は再起動すると初期化されてしまいます。そこで、これをPC起動時に自動的に反映させるようにします。起動時に必ず読み込まれるスクリプト/etc/rc.localに以下の要領で追記。

$ mount --bind olddir newdir <-olddirが共有元

これでnewdirにアクセスするとolddirが操作できるようになります。ちなみに、300個ほどマウントしても大丈夫らしいです(詳細)

次はWAN側からの接続を受け入れるようにしましょう。ProFTPは標準ではPORTコマンドを受付けません。固定ポートが空いてしまうのでセキュリティ的な問題からでしょうか。私も通常ポートの21番は避けたいので、全く別のポートをPASVモードで使用するようにしました。

また、動作方法は、inetd経由でセッション毎に起動するように変更。個人利用ということもあり、メモリ節約のためにデーモン起動での常駐は外しました。少々動作が重くなりますが、セッション毎に設定ファイルを読直すので、DDNSでのIP変化にも対応できるというメリットがあります。

まずはFTP通信ポートの設定、21番以外にしたい場合、inetd設定のためにポート定義名を/etc/servicesに追加します。

ftpEX xxx/tcp <-xxxはポート番号、定義名はftpEX
ftpEX xxx/udp

この定義名(ftpEX)を使って/etc/inetd.confに起動条件を追記してください。tcpwrapperを使って後々通信制御をしたいのでtcpd経由で起動させるようにします。

ftpEX stream tcp nowait root /usr/bin/tcpd in.proftpd

以上でinetdで動作させる下準備は整いました。

お次は一番悩むftpdの詳細設定です。/etc/proftpd.confのコメントやマニュアルを参考にして設定しました。また、パソコンおやじさんのProFTPD設定も参考にしています。

Port xxx <-/etc/servicesと同じ番号にする
MasqueradeAddress xxx <-ルータのWAN側アドレス又はドメイン名(DDNS等)
PassivePorts xxx yyy <-最小ポート番号 最大ポート番号
ServerType inetd <-inetd起動<
DefaultRoot ~/ftp <-各アカウント以下のftpディレクトリをルートとするように設定

LogFormat allinfo "%t :  %u (%a [%h]) : [%s], %T, %m (%f)"
LogFormat write "%t : %u : %F (%a)"
LogFormat read "%t : %u : %F (%a)"
LogFormat auth "%t : %u (%a [%h])"

ExtendedLog /var/log/proftpd/all.log ALL allinfo
ExtendedLog /var/log/proftpd/write.log WRITE write
ExtendedLog /var/log/proftpd/read.log  READ read<
ExtendedLog /var/log/proftpd/auth.log AUTH auth

UseReverseDNS off
IdentLookups off

# Allow clients to resume downloads (default on)
AllowRetrieveRestart on
# Allow clients to resume uploads (default off)
AllowStoreRestart on
# The maximum number of clients allowed to connect per host.(default none: no limit)
MaxClientsPerHost 3
MaxClients 30
# Sets the idle connection timeout (default: 600)
TimeoutIdle 300

<Directory ~/pub>
<Limit READ DIRS RETR>
AllowAll
</Limit>
<Limit WRITE STOR DELE MKD RMD RNFR RNTO SITE_CHMOD>
DenyAll
</Limit>
</Directory>

デーモン常駐はさせないのでサービスはオフに変更です。

最後に、inetdを-HUPオプションで再起動させて設定完了。

$ chkconfig proftpd off
$ chkconfig --list proftpd
$ killall -HUP inetd

samba専用アカウントの追加設定方法

我が家のLinuxに、sambaサーバと、その設定管理画面SWATを追加しました。Windowsの共有フォルダを扱う場合、ftpとsambaを比較すると、明らかに後者のほうが転送が早いです。ファイル転送の速度が体感で100倍は違うかと思われます。LANで繋がってるPC間で、わざわざFTP転送するのも愚かな話ですしね。

さて、私の環境では、WindowsとLinux間で、ユーザ名とパスワードが一致しません。全く同一であれば、何も設定をしないでもフォルダの共有が可能です。私のようなケースでは解決策は2つ。Windowsと同じアカウントをLinuxに作成する。もう1つはsamba専用にWindowsと同一アカウントを追加することです。私は後者を選択しました。本来は、アカウント管理がシステムユーザと別々になるため、保守を考えるとよろしいことではないです。samba専用アカウントの存在を忘れているとLAN内部からファイル転送し放題で脆弱性に繋がってしまうからです。管理は徹底しましょう。

samba専用アカウント追加方法。aオプションは追加の意。foo1はパスワードのフレーズ。コンソールから次のように入力。

$ smbpasswd -a <foo1>

その他はSWATを使ってブラウザから設定です。SWATで設定すると、/etc/samba/samba.confのコメントが全て消されるので、このファイルを後の読解のためにバックアップしておいたほうがいいでしょう。設定項目は難しいところは特にありません。必要な部分をマニュアルを見ながら設定してください。

完了したら、デーモンとして起動させるために、以下のコマンドをコンソールからタイプ。

$ chkconfig smb on  <-サービスon
$ chkconfig --list smb <-on設定になっているか確認
$ service smb start  <-smbdのスタート(同時にnmbdも自動起動)

ターミナル、トムハンクスが健気で素敵な映画

2005年初映画にターミナルを観てきました。祖国をクーデターで失った男が、情勢が安定するまで空港暮らしを余儀なくされる、ありそうでなさそうなお話。

トム・ハンクス演じる主人公は、言葉が通じないまでも逞しく日々を暮らし周囲の人々と打ち解けていく。しっとりと心に染みる内容に加え、コミカルで笑いが絶えない良い映画でした。

言葉の通じない(意思疎通の難しい)旅行者は、現地民から見ると何とも奇妙に映ってしまうようです。本人は生きるために大真面目なのに何か滑稽。明るく、それでいて切ない、不思議な人間模様も見所です。

しかし、この作品の中で唯一浮いた存在がいます。ネタバレを避けるため明言しませんが、主人公といい雰囲気だったひとです。思わせぶりな態度だったのにヒドイヤツです。揺ぎ無い信念を持った主人公と対比させる為に、周りに流される心の弱い人物にしたのでしょうか。見ていて一番ガッカリする部分であるだけに、もう少し何とかして欲しかったです。もっとも、トム・ハンクス出演作品は、何れもお安いハッピーエンドにならない事が分かっていれば、ある程度は予見出来るかもしれません。

ちなみに、この映画、モデルとなった実話もあります。参考までにどうぞ。

16年間、空港で暮らす男がついに搭乗ゲートへ - 視察番外編(x51.org)

エイリアン vs プレデターを観に行ってきた

今年初の映画にエイリアンvsプレデターを観に行ってきました。感想は可もなく不可もなく。アクションを見せる映画であって、内容はほとんどありません。

この映画、10年くらい前からカプコンのゲームやアメコミで展開されていたクロスワールドものです。本来、エイリアンとプレデターは別のお話。両者に関連性はありません。エイリアンとプレデターの白熱した戦闘のみを強調しており、それ以外のものは期待できません。双方ともに重量感を上手く再現出来ていたので、映像としては大成功なのかもしれません。アクション映画に興味がない人には退屈な内容だと思われます。

続編がありそうな幕締めでした。