明けましておめでとうございます(遅
気がついたら新年明けてから一月ほど経過してました
なんかいろいろとやってたりやる気が無かったりで・・・
そんなわけで、久しぶりに便利なモノを見つけたので書いてみる。
FreeBSD+pf向けに便利なUPnPのデーモンです。
(´-`).。oO(この本文書いたのが実は1月12日だったのはここだけの秘密・・・)
あれ?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上からもちゃんと動いてるっぽい
プロパティボタンからルールを追加することも可能、すごく便利
ただし、クライアント側からルータに穴を開けられる以上、
悪用されると、セキュリティ的にはあんまりよろしくないUPnPですが
MSが入れ込んでるせいで、Xbox360やLive Messengerなんかは、
ほぼ必須に近い状態になってるのは皆さんご存じの通り(;´Д`)
オイラは必要なので使いますが・・・