N-Log: a Log of Notes

2011年11月11日

RTX810とNVR500でVoIP(小細工編)

RTX810と配下のNVR500を組み合わせて050IP電話を使う場合、RTX810のWAN側IPアドレスが変更されると発着信が出来なくなる問題がありました。しかし、WAN側IPアドレスの変更を検知して、NVR500にSIPサーバへ再接続させることが出来れば問題は解決されます。

そこで考えたのがheartbeatとrt.syslogwatchを使う方法です:

  1. WAN側IPアドレスが変更されたら、RTX810からNVR500へ向けてheartbeatを送信する。
  2. heartbeatには9/udpが使われるので、NVR500ではこれをフィルタでrejectしてSYSLOGに記録する。
  3. さらにNVR500はLuaスクリプトのrt.syslogwatchでこれを検知し、SIPサーバへの再接続を行う。

所詮は小細工ですが、期待通りの動作はするようです。セキュリティ的にはよろしくないでしょうけど。

RTX810の設定(抜粋):

ip lan1 address 192.168.1.1/24
nat descriptor type 1000 masquerade
nat descriptor sip 1000 on
nat descriptor masquerade static 1000 1 192.168.1.2 tcp 5060
nat descriptor masquerade static 1000 2 192.168.1.2 udp 5060
nat descriptor masquerade static 1000 3 192.168.1.2 udp 5004-5043
ip filter 200040 pass * 192.168.1.2 tcp,udp * 5060
ip filter 200041 pass * 192.168.1.2 udp * 5004-5043
pp select 1
ip pp nat descriptor 1000
ip pp secure filter in ...... 200040 200041 ......
snmp sysname rtx810
heartbeat pre-shared-key hoge
schedule at 1 startup * lua sd1:/pphbsend.lua

RTX810で動かすLuaスクリプト(pphbsend.lua):

-- スクリプト起動時に一回送る(細かい判定は省略)
rt.command("heartbeat send 192.168.1.2 log=on")
--
while true do
rtn, str = rt.syslogwatch("PP%[01%] PPP/IPCP up")
if rtn > 0 then
rt.command("heartbeat send 192.168.1.2 log=on")
end
end

NVR500の設定(抜粋):

ip lan1 address 192.168.1.2/24
ip route default gateway 192.168.1.1
dns server 192.168.1.1
sip use on
sip server 1 voip-caxxxx.ocn.ne.jp register udp sip:050xxxxxxxx@ocn.ne.jp your_sip_user your_sip_password
analog extension dial prefix port=1 sip server=1
ip filter 100 reject 192.168.1.1 192.168.1.2 udp discard discard
ip filter 999 pass * *
ip lan1 secure filter in 100 999
syslog notice on
schedule at 1 startup * lua sd1:/pphbrecv.lua

NVR500で動かすLuaスクリプト(pphbrecv.lua):

while true do
rtn, str = rt.syslogwatch("LAN1 Rejected at IN%(100%) filter: UDP 192%.168%.1%.1:9 > 192%.168%.1%.2:9")
if rtn > 0 then
rt.command("sip server disconnect 1")
rt.command("sip server connect 1")
end
end

記事のプロパティ

記事の検索

過去の記事

最近の記事