From 6fc64baaa7630b3338ff719a1de9b912680c112d Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Wed, 27 Nov 2019 16:58:38 +0000 Subject: [PATCH] seems to work now --- Dockerfile | 14 ++++++-------- bind/dynamic-zones.conf | 2 +- server/DnsHandler.py | 5 +++-- server/logger.py | 7 +++++-- yadyn-start.sh | 23 +++++++++++++++++++++++ yadynns.sh | 16 ++++++++++++++++ 6 files changed, 54 insertions(+), 13 deletions(-) create mode 100755 yadyn-start.sh create mode 100755 yadynns.sh diff --git a/Dockerfile b/Dockerfile index 9e28d43..e4e1477 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,6 +15,7 @@ RUN \ mkdir -p $VAR_DIR && \ mkdir -p $DATA_DIR && \ mkdir -p $LOG_DIR && \ + mkdir -p $LOG_DIR/actionlog && \ mkdir -p $DYN_ZONES_DIR && \ apt update && \ apt install -y bind9 && \ @@ -24,7 +25,8 @@ RUN \ apt install -y dnsutils && \ apt install -y vim.tiny && \ apt install -y procps && \ - /usr/sbin/tsig-keygen local. > /etc/bind/local.key && \ + apt install -y less && \ + apt install -y netcat && \ echo "include \"/etc/bind/local.key\";" >> /etc/bind/named.conf && \ echo "include \"/etc/bind/dynamic/dynamic-zones.conf\";" >> /etc/bind/named.conf && \ echo "include \"/etc/bind/named.conf.logging\";" >> /etc/bind/named.conf @@ -33,19 +35,15 @@ COPY ./server/ $APP_DIR COPY ./bind/named.conf.logging $BIND_DIR COPY ./bind/dynamic-zones.conf $DYN_ZONES_DIR COPY ./bind/dynamic.hottis.de $DYN_ZONES_DIR - -RUN \ - cat /etc/bind/local.key && \ - KEY=`cat /etc/bind/local.key | awk -F\" '/secret/ {print $2}'` && \ - echo $KEY && \ - sed -i "s,KEYVALUE,$KEY," $APP_DIR/yadyn +COPY ./yadynns.sh $APP_DIR EXPOSE 8023/tcp EXPOSE 8053/udp -EXPOSE 53/udp EXPOSE 53/tcp VOLUME $VAR_DIR VOLUME $DYN_ZONES_DIR +WORKDIR $APP_DIR +CMD ./yadynns.sh diff --git a/bind/dynamic-zones.conf b/bind/dynamic-zones.conf index 70080f8..166e6b3 100644 --- a/bind/dynamic-zones.conf +++ b/bind/dynamic-zones.conf @@ -3,7 +3,7 @@ zone "dynamic.hottis.de" { file "/etc/bind/dynamic/dynamic.hottis.de"; allow-update { { localhost; }; - key local.; + key "local."; }; }; diff --git a/server/DnsHandler.py b/server/DnsHandler.py index 5a39e02..9590e43 100644 --- a/server/DnsHandler.py +++ b/server/DnsHandler.py @@ -5,6 +5,7 @@ import dns.rdataclass import dns.rdatatype import dns.rdtypes.IN.A import dns.tsigkeyring +from dns.tsig import HMAC_SHA256 import dns.rcode import threading import time @@ -52,7 +53,7 @@ class DnsHandler(threading.Thread): return # send A-RR insertion for ip to DNS server rr = dns.rdtypes.IN.A.A(dns.rdataclass.IN, dns.rdatatype.A, address) - u = dns.update.Update(zone, keyring=self.keyring) + u = dns.update.Update(zone, keyring=self.keyring, keyalgorithm=HMAC_SHA256) u.add(name, self.ttl, rr) r = dns.query.tcp(u, self.nsAddress, port=self.nsPort) @@ -65,7 +66,7 @@ class DnsHandler(threading.Thread): if self.dnsDummy: return # send A-RR deletion for ip to DNS server - u = dns.update.Update(zone, keyring=self.keyring) + u = dns.update.Update(zone, keyring=self.keyring, keyalgorithm=HMAC_SHA256) u.delete(name) r = dns.query.tcp(u, self.nsAddress, port=self.nsPort) diff --git a/server/logger.py b/server/logger.py index 4976b89..0c51ac5 100644 --- a/server/logger.py +++ b/server/logger.py @@ -1,4 +1,5 @@ import syslog +import sys class Logger(object): @@ -6,13 +7,15 @@ class Logger(object): def log(data): syslog.syslog(syslog.LOG_INFO, data) if Logger.debugFlag: - print data + # print data + sys.stderr.write(data) @staticmethod def debug(data): if Logger.debugFlag: syslog.syslog(syslog.LOG_DEBUG, data) - print data + # print data + sys.stderr.write(data) @staticmethod def openlog(): diff --git a/yadyn-start.sh b/yadyn-start.sh new file mode 100755 index 0000000..30bb25f --- /dev/null +++ b/yadyn-start.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +IMAGE=registry.gitlab.com/wolutator/yadyn:latest +VOLUME_VAR=yadyn-var +VOLUME_ZONES=yadyn-zones + +docker volume inspect $VOLUME_VAR > /dev/null || docker volume create $VOLUME_VAR +docker volume inspect $VOLUME_ZONES > /dev/null || docker volume create $VOLUME_ZONES + +#docker pull $IMAGE + + +docker run \ + -d \ + -p 53:53/udp \ + -p 53:53/tcp \ + -p 8053:8053/udp \ + -v $VOLUME_VAR:/opt/app/var \ + -v $VOLUME_ZONES:/etc/bind/dynamic \ + --restart unless-stopped \ + $IMAGE + + diff --git a/yadynns.sh b/yadynns.sh new file mode 100755 index 0000000..9e5b307 --- /dev/null +++ b/yadynns.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +echo "Generating key ..." +/usr/sbin/tsig-keygen local. > /etc/bind/local.key +KEY=`cat /etc/bind/local.key | awk -F\" '/secret/ {print $2}'` +sed -i "s,KEYVALUE,$KEY," /opt/app/yadyn + +echo "Starting named ..." +/usr/sbin/named + +echo "Starting yadyn ..." +cd /opt/app +./yadyn + + +