FreeBSD:FreeBSD+pf向けのUPnPに最適なminiupnpd

明けましておめでとうございます(遅
気がついたら新年明けてから一月ほど経過してました
なんかいろいろとやってたりやる気が無かったりで・・・

そんなわけで、久しぶりに便利なモノを見つけたので書いてみる。
FreeBSD+pf向けに便利なUPnPのデーモンです。
(´-`).。oO(この本文書いたのが実は1月12日だったのはここだけの秘密・・・)

miniupnpd

あれ?Linux IGDとかなくね?とか思ったあなた。
知ってると思いますが、pfに対応させるにはパッチを自作しないといけないのと、
しょっちゅう落ちて使い物にならんのですよ(´Д⊂ヽ

そんなわけで、他に使えるモノが無いかと2年ぐらいウオッチしてたんですが
ようやく最適解が見つかったらしい。
FreeBSDだけじゃなく、OpenBSDとかNetBSDとかSolarisにLinuxまでカバー
なんで、FWもpfだけじゃなくipfとかipfwにnetfilterまで対応する。gjすぎる(´ー`)

FreeBSDならportsにあるので、インストールも問題無し。

configを弄るけど、変更が必要な箇所が少なく、
解説がわかりやすいので説明するところがほとんど無い

# vi /usr/local/etc/miniupnpd.conf
# WAN network interface ext_ifname=ng0   #外向きのインターフェイスを指定(必須)
listening_ip=192.168.1.1 #LAN向けIPアドレスを指定、portはデフォルト
port=5555allow 1024-65535 192.168.1.0/24 1024-65535 #LANのIPアドレスとUPnPによる操作を許可するポートの範囲を指定(必須)
deny 0-65535 0.0.0.0/0 0-65535

これだけでOK、あとはお好みで

次にpfのルールに必要な記述を織り込む

# NAT使用時のリダイレクト用
# UPnPd rdr anchor
rdr-anchor "miniupnpd"
# ポートを開ける為のルールを記述
# uPnPd rule anchor
anchor "miniupnpd"
pass out on $int_if from any to 239.0.0.0/8 keep state
pass in on $int_if from any to 239.0.0.0/8 keep state

立ち上げるには

miniupnpd -f /usr/local/etc/miniupnpd.conf

動作してるかどうかはpfのコマンドで確認できる。

# pfctl -a miniupnpd -s nat
rdr pass on ng0 inet proto udp from any to any port = 3074 label "Xbox (192.168.1.21:3074) 3074 UDP" -> 192.168.1.21 port 3074
# pfctl -a miniupnpd -s rules

リダイレクトだけで、ルールが無いけどこれで良いんだろうか
Xbox360のLiveテストは”オープン”になってるから、動いてるはずだけども

一応Xbox360だけじゃなくて、Windows上からもちゃんと動いてるっぽい
プロパティボタンからルールを追加することも可能、すごく便利

2008112233459.jpg

ただし、クライアント側からルータに穴を開けられる以上、
悪用されると、セキュリティ的にはあんまりよろしくないUPnPですが
MSが入れ込んでるせいで、Xbox360やLive Messengerなんかは、
ほぼ必須に近い状態になってるのは皆さんご存じの通り(;´Д`)

 

オイラは必要なので使いますが・・・

タイトルとURLをコピーしました