Subversion Repositories ALCASAR

Rev

Rev 2559 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2559 Rev 2688
Line 1... Line 1...
1
#!/bin/bash
1
#!/bin/bash
2
# $Id: alcasar-dns-local.sh 2559 2018-06-10 12:56:39Z rexy $
2
# $Id: alcasar-dns-local.sh 2688 2019-01-18 23:15:49Z lucas.echard $
3
 
3
 
4
# alcasar-dns-interne.sh
4
# alcasar-dns-local.sh
5
# by Rexy - 3abtux
5
# by Rexy - 3abtux
6
# This script is distributed under the Gnu General Public License (GPL)
6
# This script is distributed under the Gnu General Public License (GPL)
7
 
7
 
8
# active ou desactive la redirection du service DNS sur le réseau de consultation
8
# active ou desactive la redirection du service DNS sur le réseau de consultation
9
# enable or disable the redirector of internal DNS service on consultation LAN
9
# enable or disable the redirector of internal DNS service on consultation LAN
10
 
10
 
11
SED="/bin/sed -i"
11
SED="/bin/sed -i"
12
 
12
 
13
ALCASAR_CONF_FILE="/usr/local/etc/alcasar.conf"
13
ALCASAR_CONF_FILE="/usr/local/etc/alcasar.conf"
14
DNSMASQ_CONF_FILE="/etc/dnsmasq.conf /etc/dnsmasq-blackhole.conf /etc/dnsmasq-blacklist.conf /etc/dnsmasq-whitelist.conf"
-
 
15
LOCAL_DOMAIN_CONF_FILE="/usr/local/etc/alcasar-dns-name"
14
LOCAL_DOMAIN_CONF_FILE="/etc/unbound/conf.d/common/local-forward/dns-redirector.conf"
16
LOCAL_HOSTNAME_FILE="/etc/hosts"
15
LOCAL_HOSTNAME_FILE="/etc/hosts"
-
 
16
LOCAL_DNS_FILE="/etc/unbound/conf.d/common/local-dns/global.conf"
17
 
17
 
18
# define DNS parameters (LAN side)
18
# define DNS parameters (LAN side)
19
 
19
 
20
INT_DNS_DOMAIN=`grep INT_DNS_DOMAIN $ALCASAR_CONF_FILE|cut -d"=" -f2`                   # Nom du domaine DNS interne
20
INT_DNS_DOMAIN=`grep INT_DNS_DOMAIN $ALCASAR_CONF_FILE|cut -d"=" -f2`           # Nom du domaine DNS interne
21
INT_DNS_IP=`grep INT_DNS_IP $ALCASAR_CONF_FILE|cut -d"=" -f2`                           # Adresse du serveur DNS interne
21
INT_DNS_IP=`grep INT_DNS_IP $ALCASAR_CONF_FILE|cut -d"=" -f2`                           # Adresse du serveur DNS interne
22
INT_DNS_ACTIVE=`grep INT_DNS_ACTIVE $ALCASAR_CONF_FILE|cut -d"=" -f2`                   # Activation de la redirection DNS interne
22
INT_DNS_ACTIVE=`grep INT_DNS_ACTIVE $ALCASAR_CONF_FILE|cut -d"=" -f2`           # Activation de la redirection DNS interne
23
 
23
 
24
usage="Usage: alcasar-dns-interne.sh {--on | -on} | {--off | -off} | {--add | -add}"
24
usage="Usage: alcasar-dns-local.sh {--on | -on} | {--off | -off} | {--add | -add} ip domain | {--del | -del} ip domain | {--reload | -reload}"
25
nb_args=$#
25
nb_args=$#
26
args=$1
26
args=$1
27
if [ $nb_args -eq 0 ]
27
if [ $nb_args -eq 0 ]
28
then
28
then
29
        echo "$usage"
29
        echo "$usage"
30
        exit 1
30
        exit 1
31
fi
31
fi
-
 
32
 
32
function restart_dns(){
33
function restart_dns(){
33
        for dns in dnsmasq dnsmasq-blacklist dnsmasq-whitelist dnsmasq-blackhole
34
        for dns in unbound unbound-blacklist unbound-whitelist dnsmasq-whitelist unbound-blackhole
34
        do
35
        do
35
                systemctl restart $dns
36
                systemctl restart $dns
36
        done
37
        done
-
 
38
}
-
 
39
 
-
 
40
function hosts_to_unbound(){
-
 
41
        # Empty the local DNS file
-
 
42
        echo "server:" > $LOCAL_DNS_FILE
-
 
43
 
-
 
44
        while read -r line
-
 
45
        do
-
 
46
                ip_address=$(echo $line | awk '{ print $1 }')
-
 
47
                domain=$(echo $line | awk '{ print $2 }')
-
 
48
 
-
 
49
                if ! echo $line | grep -E -q "^([0-9\.\t ]+alcasar( |$)|127\.0\.0)"
-
 
50
                then
-
 
51
                        echo -e "\tlocal-zone: \"$domain\" redirect" >> $LOCAL_DNS_FILE
-
 
52
                        echo -e "\tlocal-data: \"$domain A $ip_address\"" >> $LOCAL_DNS_FILE
-
 
53
                fi
-
 
54
        done < $LOCAL_HOSTNAME_FILE
37
}
55
}
38
 
56
 
39
case $args in
57
case $args in
40
        -\? | -h | --h)
58
        -\? | -h | --h)
41
                echo "$usage"
59
                echo "$usage"
Line 45... Line 63...
45
                if [ $nb_args -ne 3 ]
63
                if [ $nb_args -ne 3 ]
46
                then
64
                then
47
                        echo "$usage"
65
                        echo "$usage"
48
                        exit 1
66
                        exit 1
49
                else
67
                else
-
 
68
                        # removing if already exists
-
 
69
                        $SED "/^$2\t$3/d" $LOCAL_HOSTNAME_FILE
-
 
70
 
-
 
71
                        # adding to the hosts file
50
                        echo -e "$2\t$3" >> $LOCAL_HOSTNAME_FILE
72
                        echo -e "$2\t$3" >> $LOCAL_HOSTNAME_FILE
-
 
73
                        hosts_to_unbound
51
                        restart_dns
74
                        restart_dns
52
                fi
75
                fi
53
                ;;
76
                ;;
54
        --del|-del) # remove a local host resolution
77
        --del|-del) # remove a local host resolution
55
                if [ $nb_args -ne 3 ]
78
                if [ $nb_args -ne 3 ]
56
                then
79
                then
57
                        echo "$usage"
80
                        echo "$usage"
58
                        exit 1
81
                        exit 1
59
                else
82
                else
60
                        $SED "/^$2\t$3/d" SLOCAL_HOSTNAME_FILE
83
                        $SED "/^$2\t$3/d" $LOCAL_HOSTNAME_FILE
-
 
84
                        hosts_to_unbound
61
                        restart_dns
85
                        restart_dns
62
                fi
86
                fi
63
                ;;
87
                ;;
-
 
88
        --reload|-reload)
-
 
89
                        hosts_to_unbound
-
 
90
                        restart_dns
64
 
91
                ;;
65
        --off|-off) # disable DNS redirector
92
        --off|-off) # disable DNS redirector
66
                $SED "s?^#filterwin2k.*?filterwin2k?g" $DNSMASQ_CONF_FILE
93
                #$SED "s?^#filterwin2k.*?filterwin2k?g" $DNSMASQ_CONF_FILE
67
                $SED "s?^server.*?#&?g" $LOCAL_DOMAIN_CONF_FILE
94
                rm -f $LOCAL_DOMAIN_CONF_FILE
68
                $SED "s?^INT_DNS_ACTIVE.*?INT_DNS_ACTIVE=off?g" $ALCASAR_CONF_FILE
95
                $SED "s?^INT_DNS_ACTIVE.*?INT_DNS_ACTIVE=off?g" $ALCASAR_CONF_FILE
69
                restart_dns
96
                restart_dns
-
 
97
 
-
 
98
                # Reload firewall
-
 
99
                /usr/local/bin/alcasar-iptables.sh
70
                ;;
100
                ;;
71
        --on|-on) # enable DHCP service on all range of IP addresses
101
        --on|-on) # enable DNS redirector
72
                $SED "s?^filterwin2k.*?#filterwin2k?g" $DNSMASQ_CONF_FILE
102
                #$SED "s?^filterwin2k.*?#filterwin2k?g" $DNSMASQ_CONF_FILE
73
                $SED "s?^server=/.*?server=/$INT_DNS_DOMAIN/$INT_DNS_IP?g" $LOCAL_DOMAIN_CONF_FILE
103
                cat > $LOCAL_DOMAIN_CONF_FILE << EOF
-
 
104
server:
74
                $SED "s?^#server=/.*?server=/$INT_DNS_DOMAIN/$INT_DNS_IP?g" $LOCAL_DOMAIN_CONF_FILE
105
    local-zone: "$INT_DNS_DOMAIN." transparent
-
 
106
forward-zone:
-
 
107
        name: "$INT_DNS_DOMAIN."
-
 
108
        forward-addr: $INT_DNS_IP
-
 
109
EOF
75
                $SED "s?^INT_DNS_ACTIVE.*?INT_DNS_ACTIVE=on?g" $ALCASAR_CONF_FILE
110
                $SED "s?^INT_DNS_ACTIVE.*?INT_DNS_ACTIVE=on?g" $ALCASAR_CONF_FILE
76
                restart_dns
111
                restart_dns
-
 
112
 
-
 
113
                # Reload firewall
-
 
114
                /usr/local/bin/alcasar-iptables.sh
77
                ;;
115
                ;;
78
        *)
116
        *)
79
                echo "Argument inconnu :$1";
117
                echo "Argument inconnu : $1";
80
                echo "$usage"
118
                echo "$usage"
81
                exit 1
119
                exit 1