Изоляция сервисов, практическая работа 1

Запускаем рекурсивный DNS cервер с одной собственной зоной в контейнере

  1. Немного теории о DNS
  2. Устанавливаем docker
  3. Подготавливаем сеть

    # docker network create --subnet=10.10.0.0/24 dns-net

  4. Подготавливаем файлы конфигурации
    • named.conf
      options {
         directory "/var/cache/bind";
      
         recursion yes;
         listen-on { 10.10.0.100; };
      
         forwarders {
                 8.8.8.8;
                 8.8.4.4;
         };
      };
      
      zone "my-example.com" {
         type master;
         file "/etc/bind/zones/db.my-example.com";
      };
                  
    • db.my-example.com
      $TTL    300
      @       IN      SOA     ns1.my-example.com. root.my-example.com. (
                        3       ; Serial
                   604800     ; Refresh
                    86400     ; Retry
                  2419200     ; Expire
                   604800 )   ; Negative Cache TTL
      ;
      ; name servers - NS records
           IN      NS      ns1.my-example.com.
      
      ; name servers - A records
      ns1          IN      A      10.10.0.1
      test         IN      A      10.10.0.100
      academy      IN      A      83.99.169.65
                      
  5. Запускаем контейнер
            docker run --network=dns-net --ip 10.10.0.100 \
            --mount type=bind,source=/home/ikopmans/code/dns,target=/etc/bind \
            --mount type=bind,source=/tmp,target=/var/cache/bind \
            --mount type=bind,source=/tmp,target=/var/lib/bind \
            internetsystemsconsortium/bind9:9.16