Initial commit, see README.md for details
This commit is contained in:
commit
aeb96a02a7
|
@ -0,0 +1,34 @@
|
|||
# Docker DNS Lab
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
client["client<br/>172.20.0.100"]
|
||||
subgraph main["example.com"]
|
||||
maindns[(maindns<br/>ns1.example.com<br/>172.20.0.10)]
|
||||
subgraph sub["sub.example.com"]
|
||||
subdns[(subdns<br/>ns1.sub.example.com<br/>172.20.0.20)]
|
||||
end
|
||||
end
|
||||
|
||||
client -->|"DNS"| maindns
|
||||
maindns -->|"delegate:sub"| subdns
|
||||
```
|
||||
|
||||
## Running
|
||||
|
||||
```shell
|
||||
#start the containers
|
||||
./start-dnslab.sh
|
||||
|
||||
# do your tests
|
||||
./dnslab dig ns1.example.com
|
||||
./dnslab dig ns1.sub.example.com
|
||||
|
||||
./dnslab ip -br a
|
||||
```
|
||||
|
||||
## Cleaning up
|
||||
|
||||
```
|
||||
./cleanup-dnslab.sh
|
||||
```
|
|
@ -0,0 +1,8 @@
|
|||
#! /usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
docker compose down --remove-orphans
|
||||
|
||||
[[ $# -eq 0 ]] || docker run --rm -v .:/tmp/x bash -vc "cd /tmp/x; ${*:-ls -la --color}"
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
FROM ubuntu
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install --yes dnsutils iputils-arping iputils-ping iproute2
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
services:
|
||||
maindns:
|
||||
image: internetsystemsconsortium/bind9:9.18
|
||||
container_name: maindns
|
||||
command: -u root -g -d 9 -f -c /etc/bind/named.conf
|
||||
volumes:
|
||||
- maindns_etc_bind:/etc/bind
|
||||
- ./maindns_named.conf:/etc/bind/named.conf:ro
|
||||
- ./db.example.com:/etc/bind/db.example.com:ro
|
||||
tmpfs:
|
||||
- /var/cache/bind
|
||||
- /var/log
|
||||
depends_on:
|
||||
- subdns
|
||||
networks:
|
||||
dnsnet:
|
||||
ipv4_address: 172.20.0.10
|
||||
|
||||
subdns:
|
||||
image: internetsystemsconsortium/bind9:9.18
|
||||
command: -u root -g -d 9 -f -c /etc/bind/named.conf
|
||||
container_name: subdns
|
||||
volumes:
|
||||
- subdns_etc_bind:/etc/bind
|
||||
- ./subdns_named.conf:/etc/bind/named.conf:ro
|
||||
- ./db.sub.example.com:/etc/bind/db.sub.example.com:ro
|
||||
tmpfs:
|
||||
- /var/cache/bind
|
||||
- /var/log
|
||||
networks:
|
||||
dnsnet:
|
||||
ipv4_address: 172.20.0.20
|
||||
|
||||
client:
|
||||
build:
|
||||
dockerfile: client_Dockerfile
|
||||
container_name: client
|
||||
command: sleep infinity
|
||||
depends_on:
|
||||
- maindns
|
||||
dns:
|
||||
- 172.20.0.10
|
||||
networks:
|
||||
dnsnet:
|
||||
ipv4_address: 172.20.0.100
|
||||
|
||||
networks:
|
||||
dnsnet:
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 172.20.0.0/24
|
||||
|
||||
volumes:
|
||||
maindns_etc_bind:
|
||||
subdns_etc_bind:
|
|
@ -0,0 +1,13 @@
|
|||
$TTL 86400
|
||||
@ IN SOA ns1.example.com. admin.example.com. (
|
||||
1 ; Serial
|
||||
3600 ; Refresh
|
||||
1800 ; Retry
|
||||
604800 ; Expire
|
||||
86400 ) ; Minimum TTL
|
||||
IN NS ns1.example.com.
|
||||
ns1 IN A 172.20.0.10
|
||||
|
||||
; Delegate subdomain to subdns
|
||||
sub IN NS ns1.sub.example.com.
|
||||
ns1.sub IN A 172.20.0.20
|
|
@ -0,0 +1,10 @@
|
|||
$TTL 86400
|
||||
@ IN SOA ns1.sub.example.com. admin.sub.example.com. (
|
||||
1 ; Serial
|
||||
3600 ; Refresh
|
||||
1800 ; Retry
|
||||
604800 ; Expire
|
||||
86400 ) ; Minimum TTL
|
||||
IN NS ns1.sub.example.com.
|
||||
ns1 IN A 172.20.0.20
|
||||
client IN A 172.20.0.100
|
|
@ -0,0 +1,6 @@
|
|||
#! /usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
docker exec -it client "${@:-bash}"
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
options {
|
||||
directory "/var/cache/bind";
|
||||
listen-on port 53 { any; };
|
||||
allow-query { any; };
|
||||
recursion no;
|
||||
};
|
||||
|
||||
zone "example.com" {
|
||||
type master;
|
||||
file "/etc/bind/db.example.com";
|
||||
};
|
||||
|
||||
zone "sub.example.com" {
|
||||
type delegation-only;
|
||||
};
|
||||
|
||||
logging {
|
||||
channel default_log {
|
||||
file "/var/log/named.log";
|
||||
severity info;
|
||||
print-time yes;
|
||||
};
|
||||
category default { default_log; };
|
||||
};
|
|
@ -0,0 +1,8 @@
|
|||
#! /usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
docker compose down --remove-orphans \
|
||||
&& docker compose build \
|
||||
&& docker compose up -d
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
options {
|
||||
directory "/var/cache/bind";
|
||||
listen-on port 53 { any; };
|
||||
allow-query { any; };
|
||||
recursion no;
|
||||
};
|
||||
|
||||
zone "sub.example.com" {
|
||||
type master;
|
||||
file "/etc/bind/db.sub.example.com";
|
||||
};
|
||||
|
||||
logging {
|
||||
channel default_log {
|
||||
file "/var/log/named.log";
|
||||
severity info;
|
||||
print-time yes;
|
||||
};
|
||||
category default { default_log; };
|
||||
};
|
Loading…
Reference in New Issue