seems to work now

This commit is contained in:
Wolfgang Hottgenroth 2019-11-27 16:58:38 +00:00
parent 6e09734800
commit 6fc64baaa7
6 changed files with 54 additions and 13 deletions

View File

@ -15,6 +15,7 @@ RUN \
mkdir -p $VAR_DIR && \ mkdir -p $VAR_DIR && \
mkdir -p $DATA_DIR && \ mkdir -p $DATA_DIR && \
mkdir -p $LOG_DIR && \ mkdir -p $LOG_DIR && \
mkdir -p $LOG_DIR/actionlog && \
mkdir -p $DYN_ZONES_DIR && \ mkdir -p $DYN_ZONES_DIR && \
apt update && \ apt update && \
apt install -y bind9 && \ apt install -y bind9 && \
@ -24,7 +25,8 @@ RUN \
apt install -y dnsutils && \ apt install -y dnsutils && \
apt install -y vim.tiny && \ apt install -y vim.tiny && \
apt install -y procps && \ 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/local.key\";" >> /etc/bind/named.conf && \
echo "include \"/etc/bind/dynamic/dynamic-zones.conf\";" >> /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 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/named.conf.logging $BIND_DIR
COPY ./bind/dynamic-zones.conf $DYN_ZONES_DIR COPY ./bind/dynamic-zones.conf $DYN_ZONES_DIR
COPY ./bind/dynamic.hottis.de $DYN_ZONES_DIR COPY ./bind/dynamic.hottis.de $DYN_ZONES_DIR
COPY ./yadynns.sh $APP_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
EXPOSE 8023/tcp EXPOSE 8023/tcp
EXPOSE 8053/udp EXPOSE 8053/udp
EXPOSE 53/udp
EXPOSE 53/tcp EXPOSE 53/tcp
VOLUME $VAR_DIR VOLUME $VAR_DIR
VOLUME $DYN_ZONES_DIR VOLUME $DYN_ZONES_DIR
WORKDIR $APP_DIR
CMD ./yadynns.sh

View File

@ -3,7 +3,7 @@ zone "dynamic.hottis.de" {
file "/etc/bind/dynamic/dynamic.hottis.de"; file "/etc/bind/dynamic/dynamic.hottis.de";
allow-update { allow-update {
{ localhost; }; { localhost; };
key local.; key "local.";
}; };
}; };

View File

@ -5,6 +5,7 @@ import dns.rdataclass
import dns.rdatatype import dns.rdatatype
import dns.rdtypes.IN.A import dns.rdtypes.IN.A
import dns.tsigkeyring import dns.tsigkeyring
from dns.tsig import HMAC_SHA256
import dns.rcode import dns.rcode
import threading import threading
import time import time
@ -52,7 +53,7 @@ class DnsHandler(threading.Thread):
return return
# send A-RR insertion for ip to DNS server # send A-RR insertion for ip to DNS server
rr = dns.rdtypes.IN.A.A(dns.rdataclass.IN, dns.rdatatype.A, address) 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) u.add(name, self.ttl, rr)
r = dns.query.tcp(u, self.nsAddress, port=self.nsPort) r = dns.query.tcp(u, self.nsAddress, port=self.nsPort)
@ -65,7 +66,7 @@ class DnsHandler(threading.Thread):
if self.dnsDummy: if self.dnsDummy:
return return
# send A-RR deletion for ip to DNS server # 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) u.delete(name)
r = dns.query.tcp(u, self.nsAddress, port=self.nsPort) r = dns.query.tcp(u, self.nsAddress, port=self.nsPort)

View File

@ -1,4 +1,5 @@
import syslog import syslog
import sys
class Logger(object): class Logger(object):
@ -6,13 +7,15 @@ class Logger(object):
def log(data): def log(data):
syslog.syslog(syslog.LOG_INFO, data) syslog.syslog(syslog.LOG_INFO, data)
if Logger.debugFlag: if Logger.debugFlag:
print data # print data
sys.stderr.write(data)
@staticmethod @staticmethod
def debug(data): def debug(data):
if Logger.debugFlag: if Logger.debugFlag:
syslog.syslog(syslog.LOG_DEBUG, data) syslog.syslog(syslog.LOG_DEBUG, data)
print data # print data
sys.stderr.write(data)
@staticmethod @staticmethod
def openlog(): def openlog():

23
yadyn-start.sh Executable file
View File

@ -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

16
yadynns.sh Executable file
View File

@ -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