トップ «前の日記(2007-01-27) 最新 次の日記(2007-02-09)» 編集

"yasunori's tedious diary"

2005|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|08|09|10|11|
2011|01|03|04|05|06|07|08|09|10|11|12|
2012|01|03|04|05|08|09|10|
2013|01|02|08|09|10|11|12|
2014|01|03|04|07|08|09|10|
2015|01|07|08|09|10|12|
2016|01|02|03|04|
2017|11|
2026|08|

2007-01-28

_ [コンピュータ] UPnP 対応

わが家のルータは FreeBSD 5.4RELEASE を入れた PC をルータにしています。 今までは ppp (with NAT) + ipfw で NAT ルータ機能を実現していましたが、 これだと PS3 を繋いだときに NAT Type3 と言われてしまいます。 NAT Type3 だと AV チャットや通信ゲームで制限がでてしまうということ で(実際、通信対戦で問題が出ているので) UPnP 対応することにしました。

もちろん FreeBSD で実現する方向です。といってもすでに機能は実装されているので、利用するだけです。FreeBSD で UPnP をつかうためには

1) ppp with NAT + ipfw から ppp without NAT + ipf + ipnat に移行

2) upnpd, linuxigd のプログラムをいれる

が必要です。

1) はパケットフィルタのルールを ipfw から ipf 用に書き直すのが少々面倒なのですが、仕方ありません。

_ [コンピュータ]設定備忘録

1-1) カーネルの再構築

options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_FORWARD
options         IPFIREWALL_VERBOSE_LIMIT=0

を抜いて、

options IPFILTER
options IPFILTER_DEFAULT_BLOCK
options IPFILTER_LOG

を追加し、再構築。

1-2) ipf.rules, ipnat.rules を作成 (詳細は割愛)

注意点として デフォルト DENY のルールで運用している場合には、UPnP 自身で用いるポートを開けておくことを忘れないように。(ここではまった)

UDP 1900
TCP 2869
TCP 5000

1-3) /etc/rc.conf の修正

ppp_nat="YES" -> ppp_nat="NO"
ipfilter_enable="YES"
ipfilter_rules="/etc/ipf.rules"
ipfilter_flags=""
ipmon_enable="YES"
ipmon_flags="-D /var/log/ipflog"
ipnat_enable="YES"
ipnat_flags=""
ipnat_rules="/etc/ipnat.rules"
static_routes="upnp"
route_upnp="239.0.0.0/8 -interface bge0"

を追加

1-4) rc.local の修正

/sbin/ipnat -CF -f /etc/ipnat.rules

*注: ipnat は rc.conf にかかれているので起動時に設定されるのですが、わが家の環境では起動タイミングが早いらしく、rc.conf の設定から呼び出されるタイミングでは NAT がうまく動きませんでした。そのため、ipnat を遅延させて呼び出すために rc.local に追加しています。

2-1) upnpd のインストール

# cd /usr/ports/devel/upnp
# make  
# make install

2-2) linuxigd のインストール

# cd /usr/ports/net/linuxigd
# make 
# make install

2-3) 起動スクリプトの修正

# cd /usr/local/etc/rc.d
# cp linuxigd.sh.sample linuxigd.sh
# chmod +x linuigd.sh
(スクリプトの修正。EXT_IF, INT_IF の変数を適切に設定)

これで無事、PS3 のネットワーク接続テストで UPnP あり、NAT Type2 として認識されました。めでたし。


トップ «前の日記(2007-01-27) 最新 次の日記(2007-02-09)» 編集