2004年10月アーカイブ

upnp

| | コメント(0) | トラックバック(0)| Edit
IP電話とか、MSのMessengerとかNetMeetingで音声やビデオチャットをするには、upnp対応のルータがいる。
最近だと、SQUAREのフロントミッションオンラインもupnpを要求している。
うちの場合、FreeBSDでpppoeして、pppのnat機能を使っている。
Linuxでは、だいぶ前からupnpの実装があると聞いていたのだが、いつのまにかFreeBSDにも移植されていたようだ。
/usr/ports/net/linuxigd と言うのがそれで、portsからmakeするとインストールされる。
いろいろなサイトを参考に設定をしてみるが、起動しても効いてない様子。
どうも、pppのnatを使わずに、ipfilter & ipnatでないといけないようだ。
これは、なかなか大工事(私には)になるので、もうちょっとipfilterとipnatを勉強してからにする・・・。
と、言うわけでipfilter & ipnatにしてみました。
参考にしたのは、Router(PPPOE + IPFILTER + IPNAT)
  1. /etc/ppp/ppp.confおよび/etc/rc.confを変えて、pppのnatとフィルタを使わないようにする。
  2. /etc/rc.confを書き換えて、ipfilterおよびipnatを有効にする。
  3. /etc/ipf.rules、/etc/ipnat.rulesを作成する。
最終的にできたrc.conf(抜粋)
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="NO"
ppp_profile="-unit0 cds"
ipfilter_enable="YES"
ipfilter_rules="/etc/ipf.rules"
ipfilter_flags=""
ipmon_enable="YES"
ipmon_flags="-D /var/log/ipf.log"
ipnat_enable="YES"
ipnat_rules="/etc/ipnat.rules"
gateway_enable="YES"
static_routes="upnp"
route_upnp="-net 239.0.0.0 -netmask 255.0.0.0 -interface rl0"
続いて、ipf.rules。参考にしたサイトの通りにやってみたが、どうしてもFFができない。POLにはつながるが、FFのキャラクターでログインできなかった(泣)。
そこで、とりあえず
# perl /usr/src/contrib/ipfilter/mkfilters > /etc/ipf.rules
でできるデフォルトの設定をそのまま使うことにする。fkimuraさんによると、
# ipfstat -o
# ipfstat -i
で現在の設定を見ることができ、
# ipf -FA -Z -f /etc/ipf.rules
でルールの再読み込みができるらしい。これでいちいちOSを再起動しなくてもルールの更新ができるので、一つ一つ穴を塞いでいくことにする。
そして、ipnat.rules。
map tun0 192.168.0.0/24 -> 0/32 portmap tcp/udp auto
map tun0 192.168.0.0/24 -> 0/32
rdr tun0 210.254.71.72/32 port 7551 -> 192.168.0.50 port 7551
rdr tun0 210.254.71.72/32 port 21598 -> 192.168.0.52 port 21598
最初の2行がいわゆる普通のNATの設定。内部(192.168.0.0/24)からの接続を外向きにNATする。
次の2行は、いわゆる静的NATかしら。外からport7551に来たら、内部の192.168.0.50に飛ばすって感じ。
しかし、ファイアーウォールは下手にリモートでやるといきなり何もできなくなっちゃったりして、難しいですね~。

あ、そうそう、もともとの目的だったupnpですが、一応これでupnpdも動いてて、Windows XPから「Linux IGD 上の Local Area Connection」なんて言うのが見えるようにはなったんですが、やっぱりうまく使えてないようです・・・。

一度はデフォルトに戻したipf.rulesですが、いろいろといじって以下の状態に落ち着きました。

WAN側が tun0: 210.254.71.72。
LAN側が rl0: 192.168.0.1。
  • 参考にしたサイトでは、"block out from any port 136 >< 140 to any group 250"みたいな書き方をしていたのですが、これだと「portを使うならtcpかudpかはっきりしてくれよ!」みたいなエラーが出るので2行にわけてprotoを指定しました。
  • ログを見てみると、210.254.71.72:* → 210.254.71.72:1521 をブロックしたとのログが大量に出ました。1521を listenしているのは 192.168.0.1なのに、なんでこう言う接続ができるんだか良くわからない・・・。
    ので、自分から自分の1521宛てをpassするように設定。(1521で何が動いているのかは聞かないでください・・・)
  • どうしてもFF11ができなかったので、"block in proto udp all group 200"の行をコメントアウト。これでFFはできるようになった。
    tcpの場合は、flags A/Aとか書けるけど、udpでも似たようなことはできないものかしらん?natしているportだけ通すとか・・・。
#  IPF+NAT 用のルールファイル(静的ルール)
# (group を指定していないルールはグループ 0)

# IP オプションが指定されたもの、断片化されたもの、
# 短いパケットなどはここで破棄
block in log quick from any to any with ipopts
block in log quick proto tcp from any to any with short

############################################
# 内部へ出ていくパケット(グループ 150)

pass out on rl0 all head 150
block out from 127.0.0.0/8 to any group 150
block out from any to 127.0.0.0/8 group 150
block out from any to 192.168.0.1/32 group 150

############################################
# 内部から来るパケット(グループ 100)

pass in on rl0 all head 100
block in from 127.0.0.0/8 to any group 100
block in from 192.168.0.1/32 to any group 100
block in from 210.254.71.72/0xffffff00 to any group 100

############################################
# 外部への出力(グループ 250)

pass out on tun0 all head 250

# アドレス偽造防止
block out from 127.0.0.0/8 to any group 250
block out from any to 127.0.0.0/8 group 250
block out from any to 210.254.71.72/32 group 250

# プライベートアドレスやマルチキャストなどの破棄
block out from any to 10.0.0.0/8 group 250
block out from any to 172.16.0.0/12 group 250
block out from any to 192.168.0.0/16 group 250
block out from any to 0.0.0.0/8 group 250

block out from any to 169.254.0.0/16 group 250
block out from any to 192.0.2.0/24 group 250
block out from any to 224.0.0.0/4 group 250
block out from any to 240.0.0.0/4 group 250

# NetBIOS (port 137-139)
block out proto tcp from any port 136 >< 140 to any group 250
block out proto udp from any port 136 >< 140 to any group 250
block out proto tcp from any to any port 136 >< 140 group 250
block out proto udp from any to any port 136 >< 140 group 250

# 接続された TCP パケットを許可
pass out proto tcp all flags A/A group 250

# FTP
pass out proto tcp from any to any port = 20 flags A/A group 250
pass out quick proto tcp from any to any port = 21 flags S/SA group 250
pass out quick proto tcp from any port = 20 to any flags S/SA group 250
pass out quick proto tcp from any port = 21 to any flags A/A group 250

# 外部の DNS サーバへの問い合わせを許可
pass out proto tcp from any to any port = 53 flags S/SA group 250
pass out proto udp from any to any port = 53 group 250

# 外部への接続開始を許可
pass out proto tcp all flags S/SA group 250

# 外部の NTP サーバへの問い合わせを許可
pass out proto udp from any to any port = 123 group 250

# 内部から外部への ping のみ許可
block out proto icmp all group 250
pass out proto icmp all icmp-type 8 group 250

############################################
# 外部(Internet)からの入力(グループ 200)

pass in on tun0 all head 200

# アドレス偽装防止
block in from 127.0.0.0/8 to any group 200
block in from 210.254.71.72/32 to any group 200
block in from 192.168.0.1/0xffffff00 to any group 200

# 1521(なんでこれがいるのかわからない・・・)
pass in quick proto tcp from 210.254.71.72/32 to 210.254.71.72/32 port = 1521 group 200

# プライベートアドレスやマルチキャストなどの破棄
block in from 10.0.0.0/8 to any group 200
block in from 172.16.0.0/12 to any group 200
block in from 192.168.0.0/16 to any group 200
block in from 0.0.0.0/8 to any group 200
block in from 169.254.0.0/16 to any group 200
block in from 192.0.2.0/24 to any group 200
block in from 224.0.0.0/4 to any group 200
block in from 240.0.0.0/4 to any group 200

# NetBIOS (port 137-139)
block in quick proto tcp from any port 136 >< 140 to any group 200
block in quick proto udp from any port 136 >< 140 to any group 200
block in quick proto tcp from any to any port 136 >< 140 group 200
block in quick proto udp from any to any port 136 >< 140 group 200

# UDP パケットをデフォルトで拒否
#block in proto udp all group 200

# 接続された TCP パケットを許可
pass in quick proto tcp all flags A/A group 200

# FTP
#pass in proto tcp from any port = 20 to any flags S/SA group 200
#pass in quick proto tcp from any to any port = 20 flags A/A group 200
#pass in proto tcp from any port = 21 to any flags A/A group 200
#pass in quick proto tcp from any to any port = 21 flags S/SA group 200

# 外部からの SSH 接続開始を許可
pass in quick proto tcp from any to any port = 22 flags S/SA group 200

# 外部からの SMTP 接続開始を許可
pass in quick proto tcp from any to any port = 25 flags S/SA group 200

# 外部からの POP3 接続開始を許可
pass in quick proto tcp from any to any port = 110 flags S/SA group 200

# 外部からのIMAP 接続開始を許可
pass in quick proto tcp from any to any port = 143 flags S/SA group 200

# IDENT には答えない
block return-rst in quick proto tcp from any to any port = 113 group 200

# DNS サーバを立てている場合
pass in quick proto tcp from any to any port = 53 flags S/SA group 200
pass in quick proto udp from any to any port = 53 group 200

# WWW サーバを立てている場合
pass in quick proto tcp from any to any port = 80 flags S/SA group 200
pass in quick proto tcp from any to any port = 443 flags S/SA group 200

# それ以外の外部からの TCP 接続を拒否し、ログに残す
block in log quick proto tcp all flags S/SA group 200

# 外部の DNS に問い合わせた帰りのパケット
pass in proto udp from any port = 53 to any group 200

# NTP の帰り
pass in proto udp from any port = 123 to any group 200

# 内部から外部への ping のみ許可
block in proto icmp all group 200
pass in proto icmp all icmp-type 0 group 200

# RFC2979
pass in proto icmp all icmp-type 3 group 200

############################################
# ループバックへのルール(グループ 0)
pass in quick on lo0 all
pass out quick on lo0 all
今までportsのja-samba-2を使っていたのだけれど、portauditからの警告メールも多いし、samba3は普通に日本語が使えるというのでsambaを3に上げてみる。
いろいろ怒られたので、CUPSをはずしたり、ActiveDirectoryのサポートをはずしたりして、なんとかインストール。
今回は、swatを使ってみることにする。
inetd.confに設定して、ブラウザからつないで見る・・・。いきなり、Basic認証がかかっているのだが、何を答えれば良いのかわからない・・・。
rootのパスワードで行けると言うことを知り、設定画面へ。
んが、文字化けしている。最初はしょうがないのかな~とsmb.confをいじったら、なんとか日本語が出ている。
が、sambaの方のファイル名が化けている。最終的に落ち着いたのは、/usr/ports/converters/libiconvをWITH_EXTRA_PATCHES="yes"でインストールし直して、unix, displayのcharsetを eucjp-msにしたらうまく行く感じ。
後は、デフォルトのprinters共有を削除して、独自のプリンタの共有を追加し、なんとか2.2と同じように使えるようになりました。
新しいザウルス出ないかな~出ないかな~と思っていたら、ついに新作が発表されました!
その名も、SL-C3000。従来機との違いは、
  • CPUがPXA270に。
  • 4GBのHDD搭載。(代わりにFROMは16Mに)
  • USBホスト(非公式)
  • Java非対応
と言った感じらしい。
javaのエンジニアの私としては、Javaが使えないのはちょっと痛いかな~。
もっとも、従来機のやつでも、tomcatとか動いたかどうかは怪しいんだけど・・・。
j2meっていまいちわからないわ。
で、ヨドバシの通販で注文してしまいました。発売日は11/10日。果たして、届くか知らん?

2chとかで情報を集めて見ると、今回の新機種はあまりユーザの心を捕らえられていない模様。まあ、2chだから鵜呑みにできないけど・・・。
無線LANがないのと、RAMが64Mで変更がないこと、CPUが遅めなこと、HDD搭載によるバッテリーの持ちと操作の鈍化が心配されているみたい。

まあ、人柱のつもりで買うのさ~。と言うのはおいておいて、次に問題なのは通信環境の問題。
現在、PHSを2回線契約しているのだけれど、KWINS for PDAって言うサービスだと、128kの繋ぎ放題で、月2000円以下らしい。
ただし、このサービスだと契約したザウルスしか使えないので、PCで通信ができなくなってしまう。
今のままの@FreeDを残すか、KWINSに乗り換えるか、悩むところなのです・・・。
2004年10月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

このアーカイブについて

このページには、2004年10月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2004年8月です。

次のアーカイブは2004年11月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.1.1