On my Fedora 15 laptop, I'm almost always connected to several VPNs simultaneously. One VPN to my office or to my home (depending on where I am), one to the data center, one to a customer. These connections all have their own DNS server with their own suffix.
To make all dns suffixes working, I created a script that redirects all outgoing DNS traffic to dnsmasq running on localhost, which in turn forwards all requests for .lan to 192.168.15.254 and all requests for .gl to 192.168.1.254.
The script was put in /etc/NetworkManager/dispatcher.d/10-DNS:
if [ -e /var/run/dnsmasq.localhost ]; then cat /proc/`cat /var/run/dnsmasq.localhost`/cmdline |grep dnsmasq >/dev/null 2>/dev/null && \ kill `cat /var/run/dnsmasq.localhost` fi if [ "$2" == "up" ]; then cp /etc/resolv.conf /etc/resolv.conf.dhcp echo nameserver 127.0.0.1 > /etc/resolv.conf echo domain $DHCP4_DOMAIN_NAME >> /etc/resolv.conf echo search $DHCP4_DOMAIN_NAME >> /etc/resolv.conf /usr/sbin/dnsmasq -C /dev/null -r /etc/resolv.conf.dhcp --server=/gl/192.168.1.254 \ --server=/lan/192.168.15.254 --bind-interfaces --listen-address 127.0.0.1 \ --pid-file=/var/run/dnsmasq.localhost fi |
Once I had to fix resolv.conf manually when I connected my laptop to my Samsung Galaxy SII as well. This may mean I need to improve the script some day, but for the time being, it works good enough.
© GeekLabInfo DNS and multiple VPNs: Using dnsmasq to access multiple dns suffixes is a post from GeekLab.info. You are free to copy materials from GeekLab.info, but you are required to link back to http://www.geeklab.info