トップ     差分 バックアップ   リロード     一覧 単語検索 最終更新
  • 追加された行はこの色です。
  • 削除された行はこの色です。
  • gentoo/linux-igd へ行く。
  • gentoo/linux-igd の差分を削除

[[gentoo]]

Gentoo Linuxで作ったIPマスカレード・ルータに,UPnP機能を追加してVoIPアダプタをつなげたときのメモです.

* 必要なもの(使ったもの) [#o8fa83c7]

- UPnP SDK 1.3.1 (http://upnp.sourceforge.net/)
- linux-igd 0.95 (http://sourceforge.net/projects/linux-igd/)

linux-igdの以前のバージョンでは,iptablesのパスが,ハードコーディングされていたのですが,今は,設定ファイル(/etc/upnpd.conf)で設定できます.~
同様に,追加先のnetfilterのチェインも,設定ファイルで変更することが出来ます.


* UPnP SDKとlinux-igdのインストール [#z0dce908]

まず,UPnP SDK 1.3.1 はGentooのパッケージに含まれていますので,単にemergeします.

 emerge upnp

linux-igd は,0.92までしか含まれていない上に,0.92もMaskedなので,ソースからコンパイルしてインストールします.~
http://sourceforge.net/projects/linux-igd/ 
から0.95をダウンロードします.

アーカイブを展開して,

 # cd linuxigd-0.95
 # make
 # make install

でインストールできます.

 # make HAVE_LIBIPTC=1

で,iptablesコマンドではなく,libiptc を使うようになるようですが,どうもそれをやると,upnpd のプロセスが増殖してしまうようなので,やめました.

* linux-igdの設定 [#edb8a387]

設定は,''/etc/upnpd.conf'' で行います.

まず,iptablesコマンドの場所が違うので,設定します
 iptables_location = "/sbin/iptables"

filterテーブルのFORWARDチェインのPOLICYがDROPになっているなど,ルールが無いとDROPされてしまう場合は,insert_forward_rulesをyesにします.(デフォルトでyesになってます)
 insert_forward_rules = yes

linux-igdは,デフォルトで,natテーブルのPREROUTINGと,filterテーブルのFORWARDチェインにルールを追加するようになっています.~
他にいろいろとnetfilterにルールを設定して,upnpdが自動で追加削除するルールは切り離したかったので,別のユーザ定義チェインにルールを設定するようにしました.
手動操作と,自動操作がぶつかったらまずいですから.

 forward_chain_name = upnp_fw
 
 prerouting_chain_name = upnp_prerouting

あとは,FOWARDチェインと,PREROUTINGチェインから,このユーザ定義へ飛ぶようにしておきます.

VoIPアダプタなどが,IGD(Internet Gateway Device)にDNATの設定を要求してきたとき,そのルールの持続時間を特に指定していなかった場合,適応する持続時間です.~
とりあえず,1時間を設定しておきました.~
ちなみに,デフォルトでは0秒で,設定する必要はないのかもしれませんが,念のため設定してあります.

 duration = 01:00

ここで,気を付けないといけないのは,

 duration = 1:00

とすると,''1秒''になってしまうということです.~
私が使っているVoIPアダプタはNTTのレンタルのものです.
これは,持続時間を指定してきません.~
最初,duration = 3:00 としていたので,3秒でDNATのルールが消滅し,ちゃんと動きませんでした.

なお,VoIPアダプタは30分間隔でルールの再生をするので,それより長ければ問題ないはずです.

設定は以上です.他の設定はそのままでも問題ないはずです.

* 起動 [#i71405b8]

 /usr/sbin/upnpd ppp0 eth0 

で,動きだします.

起動スクリプトを書くなら,こんな感じです.
pppに依存しているので,need net.ppp0 とします.
NICの名前は,固定ですがまあいいですよね.

''/etc/init.d/upnpd''

 depend() {
         need net.ppp0
 }
 
 start() {
         ebegin "Starting upnpd"
         start-stop-daemon --start --quiet --exec /usr/sbin/upnpd  -- ppp0 eth0
         eend $? "Failed to start upnpd"
 }
 
 stop() {
         ebegin "Stopping upnpd"
         start-stop-daemon --stop --quiet --exec /usr/sbin/upnpd
         eend $?
 }


トップ   編集 差分 バックアップ リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Site admin: shingo

PukiWiki 1.5.4 © 2001-2022 PukiWiki Development Team. Powered by PHP 8.1.20. HTML convert time: 0.001 sec.