2013年11月23日アーカイブ

えーっと、もう何度目になるでしょうか。
自宅サーバがお亡くなりになりました。
ことの起こりは、PPTPはセキュリティ的にいまいちだと言うのを読んだので、L2TP/IPSecにしてみようと思ってカーネルのコンフィグを変えてリビルドしたことでした。
いつものようにbuildkernel/installkernelして、再起動したところ、マシンがリブートループを繰り返すようになりました。
さらに、HDDのエラーも出ているようで、途中で制御も効かなくなったので、電源ボタンでマシンを落としました。
そして、再度電源ボタンを押すと・・・、電源が入らない!
主電源をいじったり、コンセントを抜いたりしてみても駄目。ご臨終です。
自宅サーバが逝ってしまうと、このblogも読めないし、自分宛てのメールも読めなくなります。
サーバが死んだのが11/20日。最後のdumpが11/1です。
もっとも、dumpがあっても復元するマシンがないと復活のしようがありません。
そろそろ自宅サーバも限界かな、と思ってさくらのVPSの一番安いプランを申し込んでみたりもしました。(こちらは別エントリで)
結局、マシンを購入することにして、近所のPCデポへ。
省電力と言う意味で、HaswellのCore i3あたりのマシンが欲しかったのですが、i3は取り寄せしかなかったし、マザーとかケースとか選ぶとどうしても割高になるので、Acer | Aspire M/T | Aspire M3985-F74D | 概要 と言うマシンが店頭品処分で6万円台だったので、購入しました。
後でよく見たら、HaswellじゃなくてIvy Bridgeでしたが・・・。
スペックは、Core i7 (3770 3.4 GHz, 8 MB) - 4 GB DDR3 SDRAM - 500 GB HDD と言う感じ。
Windows8がついていましたが、立ち上げることなく古いマシンのHDDに繋ぎ換え、起動してみると、
Reboot and Select proper Boot device
or Insert Boot Media in selected Boot device and press a key 
の文字。キーを押しても同じ。
試しに、ついてきたHDDに戻すと、ちゃんとWindows8が起動します。
BIOSの設定画面の出し方がわからなくて価格.comの掲示板を見たりすると、Ctrl + Alt + Esc を押しながら電源を入れて、画面が黒くなったら DEL みたいな記述を見つけたのですがうまくいかず、いろいろ試していたら結局起動時のロゴ表示中にDELで行けました。
BIOSの設定を眺めていても良くわからなかったのですが、最終的に辿り着いたのが「Launch CSM」と言う設定。デフォルトはNeverになっているのを、Alwaysに変えたら古いHDDから起動しました。説明には、UEFI OPROMとLegacy OPROMと書いてあります。
Unified Extensible Firmware Interface - Wikipedia2013年3月8日 FreeBSD,UEFIブート対応へ:FreeBSD Daily Topics|gihyo.jp ... 技術評論社 だそうです。i386のFreeBSD8はUEFIブートに対応していないと言うことですね
なんとか起動するようになりましたが、相変わらずリブートループしてしまうし、HDDのエラーも出ているようです。
HDDが生きていたら、サービスをVPSに逃がしながらamd64版のFreeBSD9にリプレースするつもりでしたが、HDDが死にかけだと悠長なことは言っていられません。
ブートメニューからコマンドに降りて、kernel.old で起動します。
なんとか起動したので、/etc/fstabを書き換えて今の状態に合わせます。
さらに、ネットワークインターフェイスがsk0からem0に変わったので、その辺も修正して、なんとか起動まで行けるようになりました。
その状態で一度シャットダウンし、前回と同じくKNOPPIXのCDで起動して、古いディスクから新しいディスクにdd_rescueでコピーしました。
で、再起動して、なんとか新しいディスクで以前と同じように動くようになりました。
結局、カーネルのコンフィグを元に戻してもやっぱりリブートループになるので、/usr/srcを新しくして、再度ユーザランドとカーネルを作りなおしたところ、リブートループから抜け出すことができました。
(/usr/src で svn upすると、Connection Refusedで何故か失敗していたのですが、~root/.subversion/serversにproxyの設定を書いて、無理矢理同じマシンで動いているsquidを通したら成功しました。)

とりあえずこんな感じで復旧したので、VPSの話とL2TPの話は別のエントリに書きます。
自宅サーバが死んで、いい加減自宅運用も厳しいかな〜と思ったので、VPS(仮想専用サーバ)のさくらインターネットの一番安いプランに申し込んでみた。クレカで登録すると最初の2週間お試しで無料。
ちょっと前から、IPv6アドレスが付いてくるので気になってはいたので。
んで、ここはカスタムOSにFreeBSDが選べるのも特徴。さっそくFreeBSD9.2を選んでインストールを始めたが、説明をまったく読まずにやったら失敗の連続。
んで、ヘルプの左のメニューが階層構造になっていなくてなかなかたどり着けないんだけど、FreeBSD 9.2-RELEASE|カスタムOSインストールガイド|さくらのVPS|さくらインターネット公式サポートサイトと言うページを発見。
最初からちゃんとここを読めって話ですが、ポイントは以下。
  • インストールを選んだ後に出るIPアドレスとか、DNSサーバの情報をメモっておく
  • IPv4の設定は、DHCPではなく手で入れる
  • IPv6の設定は、インストール時はしない
後は適当にIPv4のミラーサイトを選んでインストールを進めれば良い。
インストールには、Java Applet版のVNCクライアントを使うので、ブラウザでJavaが有効になっている必要がある。
インストールが終わったら、一度シャットダウンしてVPSのページから起動しなおす必要がある。FreeBSD上からリブートしてしまうと、再度インストーラが起動してしまう。
あと、一般ユーザは作っておくことをオススメ。rootしかいないと、sshで外から繋げないから。
一般ユーザを作ったら、~/.ssh/authorized_keysに、外のマシンのsshの公開鍵を置く。んで、sshで接続できることを確認したら、/etc/ssh/sshd_configに
ChallengeResponseAuthentication no
を追加しておく。(これで、パスワードでのログインはできなくなる)
そうそう、追加した一般ユーザはwheelグループに追加しておかないと su で rootになれない。
あとは、VPSコンソールのデフォルトパスワードもあまり強そうではないので、変えておいた方が良いかも。

IPv6を有効にするには、メンテナンス・障害情報・機能追加|さくらインターネット公式サポートサイトを見ろとのこと。
・IPv6 アドレス
 コントロールパネルに表示されたIPアドレスを設定してください。

・ネットマスク
 /64

・ゲートウェイ(全リージョン/プラン共通)
 fe80::1

・ネームサーバー
 ご利用頂くネームサーバーはリージョン毎に異なります。

 東京リージョン
 2001:e42::1

 石狩リージョン
 2401:2500::1
と、言うことなので、FreeBSDでの設定を。
/etc/rc.conf に以下を追加。
ifconfig_vtnet0_ipv6=" inet6 VPSコンソールに表示されたv6アドレス prefixlen 64"
ipv6_defaultrouter="fe80::1%vtnet0"
/etc/resolv.confに以下を追加(東京リージョンの場合)
nameserver 2001:e42::1
最初わからなくてはまったのがデフォルトルータの設定で、fe80::1 だけ書いてもうまくいかない。
当たり前の話で、fe80::1 は lo0 にも vtnet0 にもあるので、区別がつかないから。
設定がうまくいっていれば、ping6 www.kame.net とかで応答があるはず。
後は、portsからいろいろ入れたりしたんだけど、その話は割愛。

当初は自宅サーバからVPSへの移転を考えていたので、どうやってファイルをコピーするか考える。
普通には、tarで固めてscpで送ってtarで展開する、とかなんだけど、それだと手間も多いし、大きなファイルの転送の間ぼーっと待ってるのもつまらない。
また、VPSとは言えなにかの事故があったときのことを考えると、自宅マシンと同期を取って置いたほうが、どちらかが死んだ時に対応しやすい。(特に、さくらのVPSはスナップショット機能がないので、ちょっとしたミスで起動やログインができなくなってしまうと、OSの再インストールからやり直しになってしまう)
同期をとるならrsyncでしょ、と言うことでrsyncの利用を考えるが、root同士ではsshの接続ができない。
どうしたもんかと思って調べてみると、root 権限の必要なディレクトリに対してrsync する - ´・ω・)<ときどき書くよ と言うページを発見。
sudoとrsyncの--rsync-pathの組み合わせで、root権限で動くrsyncが作れるらしい。
早速VPS側にbackupと言う名前のユーザを作り、自宅側のrootのsshの公開鍵を~backup/.ssh/authorized_keysに入れる。
んで、/usr/local/bin/rrsync と言う名前で以下のファイルを作り、chmod +x する。
#!/bin/sh

/usr/local/bin/sudo /usr/local/bin/rsync $*
後は、自宅サーバ側のrootから
# rsync -avzh --progress -e ssh --rsync-path=/usr/local/bin/rrsync /var/www backup@VPSのサーバ名:/var/
みたいにしてやると、コピーできる。
これは、初回の実行で人が見ていて経過がわかるようにしているので、定期的に実行する場合は -h オプションと --progress オプションはない方が良いだろう。
ちなみに、2週間の無料お試し期間中は、2Mbit/secの帯域制限がかかっているので注意。
iPhoneから自宅の家庭内LANに繋ぐのに、sshトンネルかPPTPを使っているが、PPTPはセキュリティがいまいちみたいな記述を見たので、L2TPを試してみることに。(おかげでサーバが死んだけど)
参考にしたのは、FreeBSD 9.1をIPsec対応L2TP VPNサーバにする: プラスα空間
まずは、カーネルコンフィグの修正。
参考サイトだと、IPSEC系の設定と、IPFIREWALLの設定があるんだけど、うちはipfwじゃなくてipfilterを使っているので、IPFIREWALL系の設定は不要と判断。
なので、カーネルコンフィグに追加する必要があるのは以下。(options IPSECとdevice cryptoは元々あったけど)
options         IPSEC
options         IPSEC_NAT_T 
device          crypto
racoonとmpdのインストールと設定は基本参考サイトの通り。
racoonのpatchは、参考サイトからコピペするとタブ文字が空白になってしまって失敗するので、参考サイトの元サイトのwikiからコピーした方が良い。
手順9のrc.confの設定で、ipsec_program="/usr/local/sbin/setkey" の行はうちの環境では不要。と言うか、/usr/local/sbin/setkeyは存在せず、/sbin/setkeyが存在する。
この状態で、家庭内LANからiPhoneでL2TPでのVPN接続は成功する。
で、外からつなごうと思ってRT-S300SEの設定でUDP/500とUDP/4500をFreeBSDに飛ばすようにしたが、接続に成功しない。
racoonのログを見ていると、iPhoneからサーバのポート500にパケットが届いていて、その後サーバのポート500からiPhoneのポート500にパケットを送っているが、それが届かないか何からしい。パケットフィルタでは特に禁止しているようには見えないのだが。
UDPだけじゃなく、プロトコル番号51, 50(ESP)をフォワードしてあげないといけないらしいのだが、RT-S300SEの設定にはそう言う選択肢がない。
PPTPもGRE(プロトコル番号47)を通さないといけないらしいのだが、成功しているが不思議。

と言うわけで、当面はPPTPで行くしかなさそう。(iSSHのVNCがsshトンネルで安定して動けばPPTPもいらないんだけど)
2013年11月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

このアーカイブについて

このページには、2013年11月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2013年11月10日です。

次のアーカイブは2013年12月 6日です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.1.1