Tom Rymes
2005-Nov-27 17:36 UTC
[Asterisk-Users] Script to update externip for A@H/AMP [was Re: SIP Extension behind NAT, Asterisk on NAT (DMZ)]
On Nov 26, 2005, at 3:06 PM, Manny A. Wise wrote: [snip]> The problem is not updating the FQDN name in dyndns.org..that part is > working great...the problem now is..how to get the IP change into the > sip_nat.conf... but I am sure has to be a way... :)How about this? You have to add back in the first "shebang" line that defines /bin/sh as the program to use to run the script. <<<------------BEGIN SCRIPT------------->>> # Script to update Asterisk's externip= setting with the current # IP address. Writes changes to sip_nat.conf for Asterisk@Home/AMP # This script is only useful if you have a dynamic IP Address and # are using NAT. # define where to write temporary files Tmp=/tmp/externipupdate$$.txt # define the hostname to lookup host=myhost.mydomain.dom # Use dig to get our current IP address (assuming that it has been # properly updated via DynDNS client or otherwise. Set the variable # "ip_address" to the value of the IP address. ip_address=`dig $host +short` # Write the new settings to a temporary file and then overwrite the # exisiting /etc/asterisk/sip_nat.conf file with the temporary file # using the mv command. echo "nat=yes" > $Tmp echo "externip=$ip_address" >> $Tmp # Change the following line to reflect your local network. Add multiple # localnet= lines if you have more than one local network. echo "localnet=10.0.0.0/255.255.255.0" >> $Tmp mv $Tmp /etc/asterisk/sip_nat.conf # Tell Asterisk to reload SIP to make the changes take effect /usr/sbin/asterisk -rx "sip reload" <<<------------------END SCRIPT---------------->>> That ought to do the trick. I tested it with my A@H config. I will leave the task of finding a way to automatically run this program when needed as an exercise to the reader. (cron would work if it changes at regular time intervals, I suppose) Keep in mind that there will be a delay between when the address changes to when it is updated in DynDNS and then another delay as the change propagates throughout the DNS system. Lastly, depending on how you call the script, there will be a delay between when it propagates through DNS and when this script is run. Maybe there is a way to use the DynDNS client to get the new IP address and write it to sip_nat.conf at the same time it updates the DynDNS service? Are there DynDNS clients that allow you to run an external program every time the IP changes? Kind of like Comedian mail's externnotify parameter? Tom -------------------- Tom Rymes Cascade Link Systems www.cascadelinksystems.com (603) 375-1414 "Intelligent technology solutions for small businesses."