< Windows Mobile でコマンドプロンプト | メイン | 二条城はどこにあったのか (5) >

2007年02月19日

 ■ Linux ルータで UPnP

なんだか「玄箱 linuxigd」とか「debian linuxigd」で検索してここへ飛んでくる人が多いみたいなので、 過去ログを発掘して再構成してみる。
「Linux ルータ (玄箱、OpenBlockS) で UPnP を使う方法」。

1. パッケージの入手

DETROIT.DDO.JP さんが linuxigd の自作 .deb パッケージを作られているので、i386 なマシンならそのまま使わせてもらえばOK。

玄箱や OpenBlockS など、PowerPC のバイナリが必要ならば、 私の作ったバイナリ (PowerPC でビルドしなおしただけ) を置いておくので、これを使ってください。 apt-get 経由でウチのサーバからインストールするには、 以下の記述を /etc/apt/sources.list に追加すれば可能。

deb http://gema.luna2.org/mt/dist/debian ./
deb-src http://gema.luna2.org/mt/dist/debian ./

一応同一ディレクトリに hppa32 バイナリ も置いておきます (使う人なんているのかな…)。
HP B180L Workstation で動作確認済み。

2. 参考までに、バイナリパッケージのビルドメモ。

i. 玄箱上で、パッケージ作成に必要な基本パッケージをインストール。

kuro$ sudo apt-get install gcc dpkg-dev debhelper dpatch

ii. さらに、linuxigd のビルドに必要なパッケージをインストールする。

kuro$ sudo apt-get install libupnp-dev iptables-dev

iii. DETROIT.DDO.JP さんを sources.list に追加してソースパッケージをいただいてくる。

kuro$ sudo vi /etc/apt/sources.list
deb http://detroit.ddo.jp/debian/sarge ./
deb-src http://detroit.ddo.jp/debian/sarge ./
kuro$ sudo apt-get update
kuro$ apt-get source linuxigd

iv. ビルド

kuro$ cd linuxigd-0.99.cvs20041113
kuro$ fakeroot dpkg-buildpackage -uc -us -B

v. うちの場合は、出来上がったパッケージを OpenBlockS に移してインストール。

obs266# apt-get install libupnp0
obs266# dpkg -i linuxigd_0.99.cvs20041113-4_powerpc.deb

3. 使ってみる

とりあえずこれで MSN Messenger 7.5 はうまく動いてくれているみたい。 しかし、入力インターフェイスの定義がない iptables ルールが動的に生成されるため、 dst port とフォワード先のポートが万が一同じだと、ループが発生する。

動的に生成された iptables ルールの例:
-A PREROUTING -p tcp -m tcp --dport 2096 -j DNAT --to-destination 10.1.1.5:2096

こんな感じなので、クライアントから Internet 方向へ 2096 番で投げたら自分へ戻ってきてしまう。 MSN Messenger ではフォワードポートが同じになることは (ほぼ) 無いので良いのだけれども。

20070305: deb パッケージのリンクが間違っていたのを修正
投稿者 gema : 2007年02月19日 20:43

トラックバック

このエントリーのトラックバックURL:
https://gema.luna2.org/cgi-bin/mt/mt-tb.cgi/81

コメント

コメントしてください




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)