Asterisk その後

STUN というのが実装されていると、NAT に UDP のポートをうまく開けられそうなのだが、現状の Asterisk ではちゃんと実装されていないっぽい。分からないけど。
しょうがないので、一部の UDP ポートを SIP サーバーに固定で振り向けることにした。なんだか気分悪いけど、しようがない。最初、やり方が分からなかったけど、NetBSD ではこんな感じ。実際には、もっと狭い範囲で割り当ててます。(/etc/asterisk/rtp.conf の rtpstart と rtpend で指定できます。)

# cat /etc/ipnat.conf
rdr pppoe0 any port 10000-20000 -> 192.168.0.1 port 10000 udp

後記

結局、こんな感じにしています。SIP クライアントも、自分自身(Asterisk)も、それぞれ別々の NAT 配下にいるという前提です。ポイントになりそうな部分だけ書いてます。これで、Twilio の SIP ベータに対して電話かけられています。

[general]
udpbindaddr=0.0.0.0
tcpenable=no

localnet=192.168.0.0/12
externaddr=1.2.3.4         ; Asterisk サーバーがいる NAT ルーターのグローバルアドレス
transport=udp
nat=force_rport,comedia
directmedia=no

[sip-client](!)
type=friend
context=LocalSets
host=dynamic
nat=auto_force_rport,auto_comedia