【Apache】穴

会社の自分のマシンは、NIC二枚挿しで、一方をネットワークテスト用のローカルネットが切ってある。

そのローカルネットで、motionを動かしているが、こいつは8081番のポートを、Webブラウザで叩いてやると、カメラ画像がモーションJPEGで見る事ができる。

これは、当然、ローカルネットの外では見る事ができないので、自分のマシンのApacheの特定ディレクトリの.htaccess で

RewriteEngine ON
RewriteRule  (.*)/ http://$1:8081/ [P]

なんてやって、ローカルマシンの motion のモーションJPEGを外部公開する設定にした。

http://localhost/hoge/camera/172.16.0.12/

とやると、外部から参照可能の自分のマシンのApacheが、
http://172.16.0.12:8081/

を実行して、先のURLのコンテンツを置き換えてくれる。

しかし、これって、camera以下のIPアドレス部分を変えれば、どんなホストにもアクセス可能だから、どうみても穴だよなあ…。

ただ、色々と制約があって、
・DNSは使えない
・閲覧するカメラの数は決まっていない。
・motionの動くマシンのネットワークは決定していない。

という理由から、mod_rewriteを使って、URLに任意のIPアドレスをぶら下げるというインターフェースしか思いつかぬ。

PHPで、proxyモドキを作ってみたが、JPEGの画像が書き換わってるのが分かる程、オーバーヘッドがでかいので、動画データの転送には向いてないから断念した。

なんかいい方法ないかなあ。

【PHP】設定ファイル書き出し

PHP でコンフィグレーションファイルを読むのに
parse_ini_file()があるが、書き込む関数が見当たらない。

webで検索しても見つからないので作ってみた。

これで一応、parse_ini_file()のサンプルが正常に展開格納できるが、Zend Frameworkにiniファイル書くヤツがあるというのが分かった。

しかし、Zend Framework の Zend_Config_Writer_Ini() と同じ結果だから、手軽に使うならこれでいいや。

UCAM-DLF30MBK

UCAM-DLF30MBKを社長に買っ貰った。
早速、Linuxマシンに接続してみたが、xawtvで何の苦労も無くあっさり使えた。

で、キャプチャソフトを探してみると動体検知ができる motion なるものがあった。
これは良くできていて、daemonとして常駐し、httpでコマンドが送れる。

マニュアルでスナップショットを取るとかできるし、イベントトリガーで、キャプチャが終わったら、任意のコマンドを実行するとかできる。

組み立て方次第で、機能拡張できるから、システムに組み込むのに便利だ。

家で色んな箇所を監視するんだったら、これよりも、ZoneMinderの方が良さそう。

コメント復活

なんかうまくローカルのmySQLにインポートできねえなあと思ってたら、行末がセミコロンじゃなくて、カンマのままだった (^^;

ローカルにインポートした後、

DELETE FROM wp_comments WHERE comment_approved = ‘spam’;

とやって、ゴミを一掃した後、mysqladministratorでバックアップして、レンタルサーバのmySQLへインポートした。

今まで、投稿に コメント○件 と表示されていながら、コメント空の状態だったが、これで整合性が取れただろう。

RTX-1200設定

ひかり電話で使用しているフレッツ光のインターネット回線が、接続されずに遊んでいるそうなので、RTX-1200の設定弄って、メインのインターネット接続が障害で落ちた場合に、フレッツ光の回線を使うように設定した。

ip route default gateway pp 1 hide gateway pp 2 weight 0
ip lan3 address dhcp

pp select 2
description ntt
pp keepalive use off
pp always-on on
pp address 192.168.24.1/32
pp enable 2

と設定して、CTUの線をRTX-1200のlan3へ入れた。
RTX-1200はCTUのDHCPからIPアドレスを貰って、lan3インターフェースのIPアドレスが決定する。

自席のマシンから、ping 192.168.24.1 ってやると応答があるので、ちゃんとルーティングされてるっぽい。

非常時の回線として、一応、インターネット接続だけは確保できるが、VPNまでやろうと思ったら、CTUを取っ払って、ONUへRTX-1200を繋いでPPPoEとかでネゴればいいのかな?

しかし、VG820aを普通にRTX-1200にぶら下げて、ひかりオフィス電話が使えるのかよく分からん。多分、VG820aのパケットを、ONUのインターフェースを通るようにRTX-1200を設定してやらないと電話は使えないだろう。

あ、VG820aに固定IPアドレスを振って、
ip route 192.168.XXX.YYY/32 gateway pp 2
って設定してやればいいのか。

まあ、VPNを完全にバックアップ回線対応とするには、VPNの接続相手のルータ全ての設定やらないといけないから、お手軽にできるのは、CTUにぶら下げるところまでだな。

AHCI HotPlugを試す

Ubuntu 9.04 desktopでSATA IIディスクのHotPlugを試してみた。

挿した途端に、/var/log/messagesに認識されたログがでて、fdisk /dev/sdb もちゃんとできた。2台めの増設とか、RAID1の不良ディスク交換などは、AHCIなら無停止でできる訳だな。

あとやってみたいのが、RAID1で/dev/sdaがdegradeしたケース。
抜いたら /dev/sda が消えて、挿したら再び、/dev/sda が現れるのかな?

/dev/sdb になる場合は、抜き差ししても /dev/sdb として認識したから、多分、 /dev/sda でも大丈夫そう。

いつもは、VirtualBoxでシミュレーションしているが、SATA IIのディスクのHotPlugだけは、実機を使わないと試せないから、今の内にノウハウを貯めておこう。

YAMAHA RTX-1200のVPN

ここ二週間ほどRTX-1200同士で接続するVPNでのファイル転送が遅い問題と格闘していた。おかげで、結構YAMAHAのルータに詳しくなった 🙂

FTPで

本社→東京 30Mbps
本社←東京 300kbps

という感じで、片道だけ遅いという状況。

結局、東京のRTX-1200のPPインターフェースのMTUを1454→1400とてきとーに下げたら、遅いのが直った。

BフレッツMTUサイズ(1492ではなく1454の理由)

これによると、L2TPヘッダが付くので、MTUは1454で良いようで、インターネットの通信では特に遅い現象は発生していないので、問題は無いようだ。

しかし、VPNの時だけ著しい速度低下が発生し、尚且つ、MTUの値を下げれば改善するという事は、これはVPNのパケット送信時にdata fragmentが発生しているのではないかと予想される。

MTU1454byteって指定してるんだから、それに収まるようにやってくれているものとばっかり思ってたな。

問題は最適なMTUの値だが、1454byteで糞詰まり現象があったという事例が殆ど無いので、何が最適値なのかさっぱり分からない。

パスMTUディスカバリブラックホール問題」とは:ITpro

なんて、相当古い話だし、VPNの話とはいえ、今更、こんなのに悩まされるとは思ってもみなかった。

RAID mdadmメモ

マシン起動時に、RAID1を構成するハードディスク2台中1台がdegradedになってる時、mdadmdで、「不良ディスクがあるけど起動するか?」って聞いてきて、’y’を入力しないと、コマンド待ちで止まってしまう。

これでは、稼働率が落ちてしまうので、入力待ちにならないようにするには、
echo 1 >/sys/module/md_mod/parameters/start_dirty_degraded

とやれば良い。

RAIDの状態がおかしくなっていれば、どの道、mdadmdにより、メールが飛ぶから分かるし、対処するまでは稼働し続けるのが望ましい。

Java Appletテスト

Java は結構面白いな。ブラウザクラッシュしたらスマン(^^;


Javaが有効じゃないから見せてやんない(´・ω・`)



このブログの文字コードはEUC-JP、Appletの中身の文字コードはUTF-8で書いたけど、linuxのfirefoxだとちゃんと見えてる。

Appletの文字コードはEUC-JPになってるのかな?一体、どうなってんだろ?

【追加開始】
コードよく見たら、Graphicsクラスだよ(笑)。
表示された文字はイメージだから、文字コード関係ねー
【追加終了】

apacheの不思議

proxyを動かそうと思い、

sudo a2enmod proxy proxy_http proxy_ftp proxy_connect

とかやって、

/etc/apache2/mods-available/proxy.conf で

と設定したが、ブラウザのproxy指定でlocalhostと指定すると、Access deniedとか言われる。

とやって、proxy設定を127.0.0.1とやるとOK。

noizumi@bluewolf:~$ nslookup localhost
Server:        192.168.1.1
Address:    192.168.1.1#53

Non-authoritative answer:
Name:    localhost
Address: 127.0.0.1

だし、別におかしいところは無いとは思うが、

noizumi@bluewolf:~$ telnet localhost 80
Trying ::1…
Connected to localhost.
Escape character is ‘^]’.
GET http://www.noizumi.org/

だと、デナられる。

noizumi@bluewolf:~$ telnet 127.0.0.1 80
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is ‘^]’.
GET http://www.noizumi.org/

127.0.0.1の指定だと何ともない。

WHY?

で、今結果を見ていてハタと気がついた。

答えは /etc/hosts の中にあった。

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback

ipv6か。
ipv4の localhost とipv6の localhost は別物なのねん。