Working DNS During Downtime
Here's how you can use a regular DNS server other than your HDA, and still access your HDA's dashboard, applications, etc. using their hostnames.
This would allow you to browse the internet without problems, if your HDA is ever offline.
Note that this will only work with Linux and Mac OS X clients, unless you find a way to re-create the crontab entry into it's Windows equivalent (installing Cygwin would be a good first step).
Once you have this working, you could even re-enable your router DHCP, and if you have static IPs configured on your HDA, make sure to re-create those entries in your router config.
Prerequisites
- You need to have setup Key-Based SSH Logins on each of your client computer you want to use this on. This is needed becase a cron entry will trigger a script every minute, and this script needs to be able to login on the HDA as you, and execute a script.
- You need sudo access on your client computer(s), with the NOPASSWD option. This is needed to be able to overwrite the local /etc/hosts file. I'll let you figure out how to do that (Google?)
On your HDA
Logged in as your regular user
Note: Replace your_username with your Fedora username (for example joe).
cd /home/your_username
mkdir bin
cd bin
wget http://wiki.amahi.org/images/3/32/Hda-get-hosts.sh
mv Hda-get-hosts.sh hda-get-hosts
chmod +x hda-get-hosts
Logged in as root
Notes:
- Use su - to become root in an already opened terminal window.
- Replace your_username with your Fedora username (for example joe).
echo "your_username ALL = NOPASSWD: /home/your_username/bin/hda-get-hosts" >> /etc/sudoers
On your client(s)
Add the following entry in your crontab (crontab -e to edit your crontab).
Notes
- Replace your_username with your Fedora username (for example joe).
- Replace hda_ip_address with your HDA IP address.
* * * * * ssh your_username@hda_ip_address "sudo bin/hda-get-hosts" > /tmp/hosts.hda ; grep -v "From HDA$\|Amahi HDA$" /etc/hosts > /tmp/hosts.new ; echo "# The following lines were added from your Amahi HDA" >> /tmp/hosts.new ; cat /tmp/hosts.hda >> /tmp/hosts.new ; sudo cp -f /tmp/hosts.new /etc/hosts
Test
Both commands should return your HDA internal IP address:
ping -c 1 hda | grep from
ping -c 1 hda.home.com | grep from
DNS configuration on client(s)
You have two choice:
- You disable the DHCP on your HDA, and replace it with your router's DHCP. Don't forget to re-configure static IPs you had configured on your HDA into your router, and to renew the IP address on the client(s).
- You manually configure the DNS servers on your client computers to use your router as their DNS server (or any other DNS that is not your HDA). You HDA will continue to act as DHCP server, and will ask clients to use it as their DNS server, but as long as you can manually override that, you'll be fine.