Was this page helpful?

使用 DDNS 的問題

    對於使用 DDNS 的 Trunk,當對方主機的 IP 變更後,該 Trunk 總是呈現 UNREACHABLE 狀態,即使 DNS 記錄已經被更新了。

    Ans: 將以下程式碼,使用 Cron 定時執行它。此程式在運作時不會對線上的通話有任何影響

    檔名:ast-fix-ddns.sh
    reference to undefined name 'syntax' Exception of type 'MindTouch.Deki.Script.Runtime.DekiScriptUndefinedNameException' was thrown. (click for details)

    Notes:
    1. PEER, 使用 DDNS 的 Trunk Name。
    2. ASTCMD, 系統上 asterisk 指令路徑。
    3. NSCMD, 系統上 nslookup 指令路徑。

    Update:
    2009/8/30

    • 解析 IP 時若系統無 nslookup 指令會使用 ping 指令取代 (此法可用於 embedded system)

    Cron table 設定每10分鐘執行

    #>crontab -e
    
    */10 * * * * /root/bin/ast-fix-ddns.sh > /dev/null 2>&1
    

    Notes: 指令的路徑請自行修改。

    自己的主機使用 Dynamic IP,只要 IP 變更,所有 SIP Trunk 都會無法連結

    寫一個 Cron job 定時偵測自己的外部 IP 是否已變更,若有變更時,自動重啟 asterisk 服務即可。重啟服務的期間會終止所有通話功能

    技巧提示:

    • 取得主機目前的外部 IP 位址
    EXTIP=$(wget -q -O - http://checkip.dyndns.com|cut -b77-92|tr -d "</body>");echo $EXTIP
    或
    EXTIP=$(wget -q -O - http://www.neorouter.com/ip.php|tr -d "</body>");echo $EXTIP 
    
    • 修改為 static IP 模式時,系統要作 sip reload;若修改為 dynamic IP 模式,系統要作服務重啟。
    • 以上若選擇前者,為了不會對系統原始設計架構有任何影響,將新 IP 寫入一個新檔 sip_externip.conf,然後在 sip.conf 使用 include 方式套用。

    參考詳細資訊

    Was this page helpful?
    標籤 (Edit tags)
    • No tags
    查看第3個(總3個)評論: 查看所有
    Hi,我裝了一套Asterisk(Elastix)在我的主機,但是因為使用動態IP,因此每次IP變動后都要重新設置Asterisk,十分麻煩,有沒有什麼辦法可以讓主機自動檢測IP的變動,并自動更新Asterisk系統內的IP設定值。
    謝謝。
    KK
    發佈時間 13:58, 28 Oct 2009 ()
    此篇的第二段就是有關這,請閱讀參考連結的範例。
    發佈時間 08:31, 29 Oct 2009 ()
    謝謝您,幫了我一個大忙,繞了兩個大圈才弄明白,感恩哦!
    發佈時間 14:28, 23 Nov 2009 ()
    查看第3個(總3個)評論: 查看所有
    您必須 登入 才能發佈評論。
    Powered by MindTouch Core