PPPoEマルチセッションで回線増強

あけましておめでとうございます。

しかし、新年早々あまりめでたくないネットワークトラブルのお話から・・・

昨日1/7 21時頃~1/8 0時頃まで、PhotoXP掲示板やこのblogの表示が非常に遅い状態が続いていたのですが、どうやら1年半ほど前に帯域制限かけられた時と同じく、プロバイダーの帯域制限にひっかかってしまったようです。

traf-week.pngグラフで見ると、月曜日(Mon)はきっかり帯域1Mbpsで抑えられてるのが分かりますね・・・

最近は投稿画像の枚数も増えてきて、1日のデータ転送量が十数GBに達する事もあるので、個人向けのBフレッツで運用している以上文句も言えないのかなと思い、急遽別のISPを契約して1つのサーバに2個の固定IPアドレス/PPPoEセッションを持たせて乗り切る事にしました。

以下、その記録です。(Linux/Fedora Core 6での例)

まず固定IPの使えるISPを調査(DynamicDNSでも良いのですが、一応安定性を考えて固定IPで)。EditNetという所が安そうだったのでここに決定。オンラインサインアップでBフレッツのPPPoE用アカウントとパスワードを発行してもらい準備完了。

まず、サーバに2本目のPPPoE設定を行う。ppp0の設定を元にppp1用の設定ファイルを作るため、まずはコピー

$ cd /etc/sysconfig/network-scripts
$ sudo cp -p ifcfg-ppp0 ifcfg-ppp1

次に、以下の設定項目をppp1用に編集、default routeやDNS(resolv.conf)はnoと書いてppp1接続確立時にppp1のISPに書き換えないようにするのがポイントです。
これで、ppp1用に割り当てられたIPへのアクセスのみ2つ目のプロバイダー回線を通るようになります。

NAME=DSLppp1
DEVICE=ppp1
PIDFILE=/var/run/pppoe-adsl-ppp1.pid
DEFROUTE=no
PROVIDER=DSLppp1
USER=userid@yourprovider.ne.jp
PEERDNS=no

さらに、パスワードは/etc/ppp/pap-secrets, chap-secretsに記述して設定完了。

adsl-startコマンドでPPPoE接続を有効にします。

$ sudo /sbin/addl-start ifcfg-ppp1

ifconfigコマンドで確認。

$ /sbin/ifconfig -a
...
ppp0
...
ppp1      Link encap:Point-to-Point Protocol
          inet addr:218.219.148.133  P-t-P:218.219.145.35  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1454  Metric:1
          RX packets:431220 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:28049357 (26.7 MiB)  TX bytes:54 (54.0 b)

ppp1インターフェースが表示されて、inet addrに正しくIPアドレスが表示されていれば繋がっているはず。
別のネットワークから、ブラウザに直接 http://%5BIPアドレス%5D/と入力してみたり、pingを打ってみたりして疎通確認をしてみましょう。

うまく行かない場合は、/var/log/messages にエラーが出力されているはずなので確認します。

これで、2つのIPのどちらでも同じ自宅サーバにアクセスできるようになったので、PhotoXP掲示板の画像は全てhttp://[ppp1のIPアドレス]/image/foo/bar.jpgといった名前でアクセスするようにphotoxpのconfig.rb内のIMAGE_URLを変更して完了です。

以上、負荷分散や片方のISPの障害時の対応等を考えると、もう少しやれる事はあるかと思いますが、
Bフレッツで自宅サーバを運用している人向けの、安く簡単に自宅サーバの回線増強をする方法でした。

追記:

ある日突然ppp1回線が使えなくなったのでいろいろ試してみたところ、
以下を参考にソースルーティングの設定をする事で復旧しました。

http://dsas.blog.klab.org/archives/50326299.html

ip route add dev ppp1 table 100
ip rule  add from www.xxx.yyy.xxx table 100 pref 100

しかし、今まで何故ソースルーティング設定無しで動いてたのだろう。。。

続きを読む »


メンテナンスリリース PhotoXP 1.7.5

約1年ぶりの1.7系であるPhotoXP 1.7.5をリリースしました。
主な変更点は以下の通り。

  • オリンパスの新しいMakerNote(E-410以降)に対応。
  • レンズデータの追加。
  • Ruby 1.9.0でのエラーを修正。

修正といっても、オリンパスのMakerNote形式が大きく変わっていたので、その対応と1年分のレンズデータの追加といった程度なので、バージョンアップの方はlib/exifcodec以下を上書きするだけでOKでしょう。

あと、ruby 1.9.0になってString#[](引数が数値1つの場合)の戻り値が文字コードから長さ1の文字列に変わってるようで、[0,1]のように書くことで1.8と1.9で同じ動作を期待できるのですが、逆に1.9で文字コードを取得したい場合はどうすればいいのだろう。。。

# ruby-1.8.6
p "a"[0] => 97
p "a"[0,1] => "a"
# ruby-1.9.0
p "a"[0] => "a"
p "a"[0,1] => "a"

PhotoXPのダウンロード

現在の最新バージョンは1.7.5(2007-12-31)です。

このプログラムはフリーソフトウェアであり、無保証です。
GNU GPLに基づいてこのプログラムを使用・変更・再配付することが出来ます。

<!–
PhotoXPに関する既知のバグについては、こちらを参照してください。
–>


MovableType 4に移行

mt4.png
MovableType 4が出てからしばらく経ってるのですが、今更ながらバージョンアップしてみました。
最初はMT3からのアップグレードでいいかなと思ったのですが、古いテンプレートのままだと、スタイルとかウィジェットとかCAPTCHAによるSPAM防止機能だとか主だった新機能が使えない事に気づき、最終的に以下のような手順で移行完了。

  1. MT3からMT4にアップグレードをかける。
  2. MT4からテキストファイルにエクスポート。
  3. 再度MT4をクリーンインストール。
  4. 空のブログに先ほどのテキストファイルからインポート。
  5. MT3の頃のURLと合わせるために、basenameを設定してまわるスクリプトを作って実行。
  6. その他微調整。 ← いまココ

確かに、ウィジェット等面白い機能はあるんですが、ソースに直接タグをコピペしてカスタマイズする方が直感的だったのでは・・・と思う事もあったりなかったり。
速度に関しては、言われてるほど遅くは無い印象ですね。
今のデフォルトで入ってたスタイルはRubyっぽい色で好きなのですが、とりあえず元の色とデザインに戻すべく色々と試行錯誤中です。


Flashヒストグラム表示機能追加

FDDの続き

今回のPhotoXP 2.0αへの機能追加は昨日紹介したFlashを使ったヒストグラム表示機能です。
写真左下に出ている「ヒストグラム」というリンクをクリックしてみてください。

histogram-link.png

あと、細かい所では、コメントの際に入力した名前を記憶するようになったり、本文中のURLを自動的にリンクにするようになったりしてます。


Google Maps API対応機能追加

というわけで、FDD第一弾機能追加!Google Maps APIに対応してみました。

photoxp_google_maps.png

以前のバージョンでは、写真にGPS情報が付いていた場合[地図]というYahoo!地図へのリンクが表示されるだけだったのですが、今回からはAJAXを利用したGoogleマップの埋め込み表示を行うようになりました。


Feature Driven Development始めます

Feature Driven Development(FDD)とは、Peter Coad氏が提唱するアジャイル開発手法の一種で、目に見える成果としてのユーザー機能(フィーチャー)を2週間おきにリリースするといった点が特徴です。

というわけで、夏休みにPhotoXP 2.0αを作ってみたものの、機能的にはまだまだ旧バージョンに劣る状況。。。
そこで、今後はFDDを意識して定期的な機能追加をして行きたいと考えています。
1人で作るのに開発手法を持ち出すのは大げさですが、初期工程の設計もRailsフレームワークに全面的にのっかるという事で確定済。当面の機能リストとしてはPhotoXP 1.7が目標になるので、単純に2週間ごとに分かりやすい機能を追加というのは、日曜プログラミングとしてはちょうど良いペースなんじゃないかな。

開発の方針としては、

  • なるべくRails的な方法を選択し、Rails的な考え方を身につける。
  • Pluginを活用して楽をする。
  • 将来的な国際化対応、モバイル対応を考慮。

といった事を考えてます。

つづく・・・


夏休みの自由研究

先週のお盆休み・帰省中の移動時間を利用してRuby on Rails版PhotoXP掲示板 PhotoXP 2.0を作ってみました。

DSCF0902.jpg

過去ログを読み返してみると、2006年1月くらいから言い続けてた計画をついに実行に移したって事になりますね。(^_^;;
まだ1.x系に対して未実装の機能も多いのですが、CGIとGDBMとバッチ処理で動いていた今までのプログラムに比べ、柔軟に機能追加が可能になるため、今後は2.0系をメインに開発をして行く予定です。

ちなみに、今まで移動中といえばせいぜい本や雑誌を読むくらいしかした事が無かったのですが、今回はあえて新幹線、JRのローカル線、高速バス、飛行機と色々な移動手段を試しつつ、プログラミングに挑戦してみました。
感想としては、新幹線はさすがにノートPCで作業をしてるビジネスマンをよく見かけるだけあって相応に快適。飛行機は安定飛行中に限り一番揺れが少ないのですが、国内線、関空・羽田間程度だと一瞬で着いてしまって時間が足らず・・・ローカル線と高速バスは揺れが大きく、落ち着いてPCを使うのはちょっと無理がある感じです。

今回はRailsの勉強という意味もあって、なるべくコードを書かずにプラグインを活用しつつ既存のプログラムを移植しただけに終わったわけですが、「クリエイティビティーは移動距離に比例する」!?らしいので、今後も長時間の移動時には何か作ってみようと思います。


世界のSPAMMERから

先月あたりから、PhotoXP掲示板に英語のSPAM書き込みが増えてきたので、試しにここ2日間のSPAM発信元のIPアドレスを国別に集計してみました。なかなか国際色豊かですね。

SPAM書き込みには一定の規則性があり、これだけのバリエーションの国々から攻撃されてるという事は、ボットネットのような物が使われていてる事が予想されます。。。(((;゚Д゚))))ガクガクブルブル

アメリカ合衆国 22
ブラジル 15
大韓民国 14
日本 11
ドイツ 7
台湾 7
コロンビア 4
フランス 4
ロシア連邦 3
インド 3
サウジアラビア 3
ポーランド 2
カナダ 2
アラブ首長国連邦 2
ヨルダン 2
チリ 2
英国 2
パキスタン 1
コスタリカ 1
ベネズエラ 1
アルゼンチン 1
ナイジェリア 1
スペイン 1
南アフリカ共和国 1
ルーマニア 1
プエルトリコ 1
エジプト 1
トルコ 1
オマーン 1
ウクライナ 1
イラン 1

今回お世話になったプログラム、データ

GeoIP Free
yum install GeoIP GeoIP-devel
geoip rubygems
gem install geoip
国連LOCODE
by 税関
flag icons
by FAMFAMFAM

価格.com API

価格.com WEB サービス

正月休みに、機種別表示ページの右側に最安値情報を追加したところ、価格.com WEBサービスブログにてPhotoXPを紹介して頂きました。
例:

デジカメやレンズ購入の際に、参考にしてもらえればと思います。