2006年 08月 23日

mixi に登録した日を表示する GM スクリプト

mixi-show-regist-date.user.js

他人のページを見たとき、その人がいつぐらいに mixi に登録したかを表示します。インストールすると最終ログインの下におおよその登録した月が表示されるようになります。

データは今日までのを適当に集計したやつで、今日以降登録した人は一括して 2006-08 以降と表示されます。メンテナンスする気はありません(てきとう

verbose 設定を追加しました。デフォルトでオン。オンのときはそこらじゅうの写真にいつ登録されたかが表示されます。

,
2006年 08月 17日

リアル世界とインターネットをもっと近づけたい

大学在学中にやりたいこと。もっと、物理的なことをやりたい。が、それだけで完結せず、コンピュータ・ネットワークと繋げたい。具体的に何か思い浮かばないけど、なんらかの形で光をとりいれたい。もちろん接触センサーとかもやりたい、が、まったくその辺わからない。理系大学じゃないのがネック

2006年 07月 26日

引越し

引越し屋さんは手際がよかった。

速度がでない感じのフレッツ光だけど、前言った実運用構成にしたら、最大 70M ぐらいまで出るようになった (Radish 東京)。そしてなぜかこの状態でフレッツスクエアの速度測定をすると 3M ぐらいしかでない。別にいいけど謎い。

でも実際、早くなってもそんなに実感はない感じ。セットアップファイル落とすときぐらいだ。

2006年 07月 23日

PPPoE ってどうやって

やっぱ、PPPoE で繋ぐ先ってどうやって決定されるんだろう、と疑問だったので調べた。

PPPoE は PPP フレームをイーサーネットフレームでカプセル化することにより動作する。このプロトコルには、発見とセッションという 2 つの異なるステージがある。

発見ステージでは、ホストはアクセス集信装置を発見するために特別な PADI (PPPoE Active Discovery Initiation) フレームをブロードキャストする。 (一般的には、ただ 1 つの) アクセス集信装置が PADO (PPPoE Active Discovery Offer) パケットを返し、集信装置が存在することとサービスを提供することを知らせる。ホストはアクセス集信装置を 1 つ選び、セッションを開いてもらうために PADR (PPPoE Active Discovery Request) パケットを送る。アクセス集信装置は PADS (PPPoE Active Discovery Session-Confirmation) パケットで応答する。この後、プロトコルはセッションステージに移行する。

セッションステージでは、ホストとアクセス集信装置の間でイーサーネットフレームに埋め込まれた PPP フレームがやりとりされる。通常のイーサーネット MTU は 1500 バイトであるが、 PPPoE のオーバーヘッドに加え、カプセル化された PPP フレームによる 2 バイトのオーバーヘッドがあるので、 PPP インターフェースの MTU は最大 1492 バイトになる。 Linux マシンをファイアーウォールとして使用しており、ファイアーウォールの背後にあるインターフェースの MTU が 1492 より大きいと、あらゆる問題が発生しうる。実際、安全のためにファイアーウォールの後ろのマシンの MTU を 1412 に指定しておくことを推奨する。これにより、ヘッダに TCP オプションと IP オプションが入るという最悪の場合も許容できる。

最初はブロードキャストするようだ。

上のことを念頭において RFC2516 を読んでみると、5.1 The PPPoE Active Discovery Initiation (PADI) packet とかいうところから上とほぼ同じ説明 (もっと具体的) がある。


PPPoE ブリッジとは何か? ここを読んでみると、ようはルータが PPPoE フレームをスルーしてくれる?程度のものっぽい。


ひかり電話のセッション情報は起動時に PPPoE + HTTP で落としてくるみたいだけど、その設定ってどこにあるんだろう。NTT がレンタル機器を送るときに MAC アドレスを登録して云々みたいなことをやっているのかな?

2006年 07月 22日

ひかりの工事

工事立会いしてきた。

カラカラ (謎) にまかれた光ファイバーを家の中にとりこみ、ひっかけて近くの電線まで一旦伸ばし、そこから近くのハブまで伸ばしていた。かなり長い距離。

光ファイバーのケーブルは針金二本にはさまれて本体の細いファイバーがあるものだった。挟まれているので曲がる方向に制限がある。たぶんある程度なら踏んでも切れなさそう (中に浮いているので踏めないし、職員の人は踏まないように気をつけていたけれど)。どうやって光ファイバー繋いでいるかはよく見えなかった。専用の器具があって、被覆全部はがしてくっつけてるみたいだったけど、あんなんでうまくいくのか? という疑問が。プラスチックを溶かしてくっつける、とかそういうレベルなんだろうか。精度がどんなもんなのか謎い。

一回繋ぐハブを間違えたらしく、外側だけを全て張りなおしていた。大変そうだった。それは別として、他は手際がよくて、すごいなぁと思った。

後なんか専用の測定器で信号が届いているか確認していた。外側から確認していたみたいだけど、漏れの光を見る装置なのかな? 信号が届いているか (? ロードとかなんか) 信号強度みたいな数字 (15, 28, 29) を喋って調節していた。やっぱ接合部分を調節していたのだろうか (そのときは室内だったので外で何をやっているかわからなかった。同時に自分が存在できたらいいのに、と思った)


職員さんのスピードテスト (フレッツスクエア) では 50Mbps ちょいぐらい。帰った後に Radish で自己測定すると、東京で 30Mbps 程度、大阪で 25Mbps 程度 (XP デフォルト)。上りが安定しなくてかなり遅くて、10Mbps 前後だった。うーん。

テスト時の構成: ONU -> RT-500NE -> PC のスタンダードな構成。プロバイダ OCN。プランは東日本フレッツハイパーファミリー+ひかり電話 (VoIP)

時間があんまりなかったので数回軽くテストして帰ってきた。実際の構成でどうなるかはわからない。

ちなみにルータへの設定は職員の人が勝手にやってくれた。PPPoE の設定とかもだけど、パスワードとか ID とか打ち込んでもらっていいのだろうか、ってちょっと思った。


ところで VoIP って「ヴぉいぷ」って読むんだ (ヴぉいすとかけてる?) 「ぶいおーあいぴー」って読んでた。


カラカラといえば七姫物語だなぁ。そういえば最近見かけない。そろそろ出る?とか聞いた気もする。

2006年 07月 15日

VoIP, ひかり電話, NAT

今日 NTT からひかり電話用にルータが届いたので構成を考えた。

少し前から NTT のルータは二段目にしようと思っていたのだけれど、調べてみるとどうやらそうするのは無理らしい。というのも SIP プロトコルで通話用のセッションを初期化するとき、VoIP 端末が自分のグローバル IP を知っていないといけないからみたいだ。もし NAT の内側に設置したいならば、ルータが SIP プロトコルを解釈してメッセージ中の IP を書き換えたりもしないといけないとかなんとか。(SIP-NAT)

結局どうすれば NTT のルータを通過せずにネットに接続できるかというと、ONU 直下にハブをつけて、それにルータをぶらさげる形にするらしい。

配線図

30 :不明なデバイスさん :2006/04/18(火) 20:10:46 ID:N78uXhwt
>>28
買わんでもルータにHUBがついとるがな
ケーブルは、も一本いるけどな

31 :不明なデバイスさん :2006/04/18(火) 20:54:44 ID:W7PvBfmV
>>30
それって、ONUからひかりのルータのLANにつないで、
ルータ自身のWANとLANをつなぐであってる?


32 :不明なデバイスさん :2006/04/19(水) 00:12:52 ID:MwCD1t9J
>>30-31
それやったらループバックするからマズいだろうがw
どういう挙動するかわからんけど。

当初の目的はこうしたいんでしょ?
http://voip-info.jp/index.php?%A4%D2%A4%AB%A4%EA%C5%C5%CF%C3Tips

33 :不明なデバイスさん :2006/04/19(水) 12:39:48 ID:2xHg8lhS
>>32
IPv6ブリッジとPPPoEブリッジ無効にすれば問題なし。というか前とか前々スレではよく出てきた話。
インターネットで負荷がかかっている状態で電話大丈夫かとかあるけど、まあそれはDSCP優先しないハブ入れても同じだし。

34 :不明なデバイスさん :2006/04/19(水) 14:00:37 ID:qh6q5Xjp
ひとつの機器だと考えるから、自家接続はまずいと思ってしまうのだろう。
ルーターも内部的にはHUB部分+ルーター部分に別れているわけだ。
ONUの次にかますHUBに、ひかり対応ルーターのHUB部分を利用しようという
話なわけだな。
せっかく付いてるHUBを使わずにおくのは、電気代の無駄ってものだろ。

さてうまくいくでしょうか。VoIP 側が PPPoE している間って、PC 側の PPPoE は切断されちゃう?よなぁ。初期化のときだけだけど、気になる。実際運用してみないとわからないことばっかり。


VoIP 関連の用語列挙

SIP (Session Initiation Protocol)
電話っぽいセッション確立プロトコル
SDP (Session Description Protocol)
SIP の body 部分を使われるプロトコル
RTP (Real-time Transport Protocol)
音声信号を実際に通信するプロトコル

@IT:VoIPに耐えるネットワーク構築(2) の図がわかりやすかった。

2006年 07月 10日

LAN に DNS サーバ立てる

全部のマシンの hosts を編集とかテラダサスwwwぷぷpとか言われたので (脳内変換です)、DNS サーバ立てて一元管理することにした。

サーバは ubuntu 6.06 LTS。普通に BIND を使うことにした。


BIND のインストール。sudo apt-get install bind。終了


ubuntu (というか Debian) は設定ファイルが分かれていて、基本的に named.conf は編集しないみたい? とりあえず自分の場合は named.conf.options と named.conf.local だけ編集した。

named.conf.options

// 最初に
// アクセスコントロールリストの設定
acl lan {
127.0.0.1;
192.168.0.0/16;
};
// options セクション内に
// 内側からのだけクエリに答える
allow-query {
lan;
};
// キャッシュサーバを使う
// そして内側に限定
recursion yes;
allow-recursion {
lan;
};
// スレーブとかない
allow-transfer {
none;
};
// 自分に登録されてないとき丸投げする先
// ルータが DNS Proxy になっているのでルータの IP だけ
forwarders {
192.168.0.1;
};

named.conf.local

// 正引き
zone "lab.lowreal.net" {
type master;
file "/etc/bind/db.lab.lowreal.net";
};
// 逆引き
zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168.0";
};

正引き DB (db.lab.lowreal.net)

$TTL 1d
@       IN      SOA     lab.lowreal.net.  root.lab.lowreal.net. (
2006070901 ; Serial
28800      ; Refresh
14400      ; Retry
3600000    ; Expire
86400 )    ; Minimum
IN NS     ns.lab.lowreal.net.
IN MX 10  lab.lowreal.net.
@               IN A      192.168.0.250
ns              IN A      192.168.0.250
charlotte       IN A      192.168.0.250
nina            IN A      192.168.0.251
trac            IN CNAME  charlotte
svn             IN CNAME  charlotte

逆引き DB (db.192.168.0)

$TTL 1d
@      SOA     lab.lowreal.net  root.lab.lowreal.net. (
2006070901 ; Serial
28800      ; Refresh
14400      ; Retry
3600000    ; Expire
86400 )    ; Minimum
IN NS    ns.lab.lowreal.net.
IN PTR   lab.lowreal.net.
IN A     255.255.255.0
1               IN PTR   gateway.lab.lowreal.net.
250             IN PTR   lab.lowreal.net.

これで再起動 (sudo /etc/init.d/bind restart) して一通り DNS ひけるようになった。


しかしながら、LAN 内のホストをフルネーム (nina.lab.lowreal.net) で呼ぶのがだるいので、各 PC に DNS サフィックスを設定する。

Linux の場合は /etc/resolv.conf に以下のように書けばいいらしい。

search          lab.lowreal.net
nameserver      127.0.0.1

Windows の場合は該当インターフェイスのプロパティから、TCP/IP のプロパティを開いて、詳細設定、DNS タブにある「以下の DNS サフィックスを順に追加する」を選択、lab.lowreal.net を追加してあげればいいっぽい。


C:\>nslookup
Default Server:  lab.lowreal.net
Address:  192.168.0.250
> nina
Server:  lab.lowreal.net
Address:  192.168.0.250
Name:    nina.lab.lowreal.net
Address:  192.168.0.251

なんかキモイことになったので、ワイルドカードをやめた。今日もまた IRC でひたすらお世話になりっぱなしです。

Apache2 ログ

実験サーバの http ログをとっていなかったのでとるようにした。

ServerRoot /srv/www な状態で、とりたいホストの VirtualHost 以下に CustomLog {domain-name}/log/access.log combined を追記

logrotated の設定 (/etc/logrotate.d/apache2) を以下のように変更

/srv/www/*/log/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
EXT=`date +%Y%m%d`
for f in $1;
do mv $f.1 $f.$EXT;
done
if [ -f /var/run/apache2.pid ]; then
/etc/init.d/apache2 restart > /dev/null
fi
endscript
}

これであってるのかよくわからない。ローテーションってどうやってテストすればいいんだろ


あとは visitors を入れて CRON させることにした。

日付にするには単に dateext って書けばいいよ。って drry さんに教えてもらった。ので、EXT..done まで消して dateext を加えた。


logrotate を試したいときは logrotate -d /etc/logrotate.d/apache2 とかすればいいらしい。

ルータの syslog を転送する

ルータに syslog を飛ばしてくれる設定があるので有効にする。

ubuntu の syslog (sysklogd) は 1.4.1。リモート受信はデフォルトで無効らしい。/etc/init.d/syslogdSYSLOGD="-u syslog"SYSLOGD="-r -u syslog" にして restart。

めでたく syslog が Discard packet 云々だらけになりました。

2006年 07月 09日

サブネット分ける

192.168.0.1/24 なネットワークを分けるには?

192.168.0.240/30 とかいうサブネットを作って、親ルータのルーティングテーブルに追加してあげればいいのかな。子ルータの IP が親ネットワークで 192.168.0.2 だったら、IP/サブネット: 192.168.0.240/30, ゲートウェイ: 192.168.0.2 メトリクス: 1

この場合子ルータの DHCP サーバーは動かせないけど、子ルータの下にぶら下がるホストの自動設定は親ルータの DHCP サーバがうまくふってくれるんだろうか? 無理だよなぁ。わからん。


あれ違うなぁ、なんか間違ってる。DHCP サーバーは起動できるのか? むしろ「サブネット分ける」の意味がわかってないなぁ。


サブネットマスクを延長して、既存ネットワークを分割することが「サブネット分ける」でいいのかなぁ。つまり1ビット延長して /25 なサブネットマスクにしたら、半分にセグメントが分かれて、みたいなことでいいんだろうか。

神のささやきをもらったよ!!

  • 親ルータ: 192.168.0.1/24
  • 子ルータ WAN: 192.168.0.2/24, LAN: 192.168.1.1/24
  • 親ルータの静的ルーティングを 192.168.1.1/24 -> 192.168.0.2 に
  • 子ルータの静的ルーティングを 192.168.0.1/24 -> 192.168.0.1 に (子から親直下のホストが見えるように)デフォルトゲートウェイ設定すればおk
  • DHCP 鯖は子ルータで立てる (見える位置ならどこでもいい?)

NAT をちゃんと理解してないなぁ。NAT はグローバル IP をプライベートに変換するだけで、NAPT がポートを空けるやつらしい。

ローカルルータ動作の場合は NAT を切らないといけない。子ルータの NAT が有効な場合、子ルータは親ネットワークに対して一個のホストとして認識されるので、親ネットワークから、子ルータ以下のホストにはアクセスできない。ついでに親ルータに静的ルーティングを追加する必要はなくなる。見方を変えるとそのまま普通の WAN-LAN の関係。ってことを教えてもらった。