From c19342901aebb31b52f878e2ec4fa7e2daaaa64c Mon Sep 17 00:00:00 2001 From: Nikos Mavrogiannopoulos Date: Sat, 10 Jan 2015 09:22:36 +0100 Subject: [PATCH] openconnect: register split-dns to dnsmasq Signed-off-by: Nikos Mavrogiannopoulos --- net/openconnect/files/vpnc-script | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/net/openconnect/files/vpnc-script b/net/openconnect/files/vpnc-script index 2a7debcad6..1217eea890 100755 --- a/net/openconnect/files/vpnc-script +++ b/net/openconnect/files/vpnc-script @@ -46,8 +46,7 @@ HOOKS_DIR=/etc/openconnect # Section B: Split DNS handling -# 1) Maybe dnsmasq can do something like that -# 2) Parse dns packets going out via tunnel and redirect them to original dns-server +# 1) We parse CISCO_SPLIT_DNS and use dnsmasq to set it do_connect() { if [ -n "$CISCO_BANNER" ]; then @@ -82,8 +81,23 @@ do_connect() { [[ "$addr" != "$mask" ]] && proto_add_ipv6_address "$addr" "$mask" fi - [ -n "$INTERNAL_IP4_DNS" ] && proto_add_dns_server "$INTERNAL_IP4_DNS" - [ -n "$CISCO_DEF_DOMAIN" ] && proto_add_dns_search "$CISCO_DEF_DOMAIN" + if [ -n "$CISCO_SPLIT_DNS" ] && [ -d "/tmp/dnsmasq.d/" ];then + SDNS=`echo $CISCO_SPLIT_DNS|sed 's/,/\n/g'` + DNSMASQ_FILE="/tmp/dnsmasq.d/openconnect.$TUNDEV" + rm -f $DNSMASQ_FILE + echo "$SDNS" | while read i; do + if [ -n "$INTERNAL_IP4_DNS" ];then + echo "server=/$i/$INTERNAL_IP4_DNS" >> $DNSMASQ_FILE + fi + if [ -n "$INTERNAL_IP6_DNS" ];then + echo "server=/$i/$INTERNAL_IP6_DNS" >> $DNSMASQ_FILE + fi + done + /etc/init.d/dnsmasq restart + else + [ -n "$INTERNAL_IP4_DNS" ] && proto_add_dns_server "$INTERNAL_IP4_DNS" + [ -n "$CISCO_DEF_DOMAIN" ] && proto_add_dns_search "$CISCO_DEF_DOMAIN" + fi if [ -n "$CISCO_SPLIT_INC" ]; then i=0 @@ -120,6 +134,7 @@ do_connect() { } do_disconnect() { + rm -f "/tmp/dnsmasq.d/openconnect.$TUNDEV" proto_init_update "$TUNDEV" 0 proto_send_update "$INTERFACE" } -- 2.30.2