diff --git a/group_vars/all/common.yml b/group_vars/all/common.yml
new file mode 100644
index 0000000000000000000000000000000000000000..3eb8cc43bea904e4564aa94b6ca06c9540dcc39e
--- /dev/null
+++ b/group_vars/all/common.yml
@@ -0,0 +1 @@
+dns_search_domain: "archlinux.org"
diff --git a/host_vars/luna.archlinux.org/misc b/host_vars/luna.archlinux.org/misc
index e61d65ca9a4a1cf91ce2128b15b3008ffa44af44..da2669d1b5d71829227d316a29f22271dcce4af1 100644
--- a/host_vars/luna.archlinux.org/misc
+++ b/host_vars/luna.archlinux.org/misc
@@ -2,6 +2,8 @@
 configure_network: false
 filesystem: "ext4"
 
+dns_servers: ["127.0.0.1"]
+
 # FIXME: this should probably be configured another way. maybe the
 # mysql/postgres roles should deploy the credentials themselves
 mysql_backup_dir: "/root/backup-mysql"
diff --git a/host_vars/nymeria.archlinux.org b/host_vars/nymeria.archlinux.org
index 8a9ab82edd3f03afd602ca4b291a41755c166a64..28d59736e70e648c6ccb1bcc8407f87cd5f7463f 100644
--- a/host_vars/nymeria.archlinux.org
+++ b/host_vars/nymeria.archlinux.org
@@ -10,6 +10,8 @@ ipv4_gateway: "89.238.67.1"
 ipv6_gateway: "2a00:1828:2000:547::1"
 filesystem: ext4
 
+dns_servers: ["127.0.0.1"]
+
 archweb_rsync_iso_origin: 'repos.archlinux.org::kitchensink_tier1/iso/'
 archweb_server_email: 'archweb-dev@archlinux.org'
 archweb_domain: 'archweb-dev.archlinux.org'
diff --git a/host_vars/soyuz.archlinux.org b/host_vars/soyuz.archlinux.org
index ea6c8f8674e7f3c1b2e0ec863a9ef17277194b0f..3dfdfcdd46246bc5e7ee733b6e0dc169b93faf98 100644
--- a/host_vars/soyuz.archlinux.org
+++ b/host_vars/soyuz.archlinux.org
@@ -11,6 +11,8 @@ tcp_congestion_control: "bbr"
 filesystem: btrfs
 postgres_backup_dir: "/var/lib/postgres/backup"
 
+dns_servers: ["127.0.0.1"]
+
 zabbix_agent_templates:
   - Template OS Linux
   - Template App Borg Backup
diff --git a/host_vars/vostok.archlinux.org b/host_vars/vostok.archlinux.org
index a68f2c0b58833ddcea7ae35742646e0a6a1b44fe..0fbbc75daa4287b7c627ba81dff2a1cf4a7ad61e 100644
--- a/host_vars/vostok.archlinux.org
+++ b/host_vars/vostok.archlinux.org
@@ -9,6 +9,8 @@ ipv4_gateway: "5.9.158.161"
 ipv6_gateway: "fe80::1"
 filesystem: ext4
 
+dns_servers: ["127.0.0.1"]
+
 zabbix_agent_templates:
   - Template OS Linux
 
diff --git a/playbooks/all-hosts-basic.yml b/playbooks/all-hosts-basic.yml
index db0861c6f3955d516bf3397f79e5c0dc05d1c64d..71f3e005d546e97aeb3b8f95b5a15f80dec46e87 100644
--- a/playbooks/all-hosts-basic.yml
+++ b/playbooks/all-hosts-basic.yml
@@ -7,6 +7,7 @@
     - { role: common, tags: ['common'] }
     - { role: tools, tags: ['tools'] }
     - { role: firewalld, tags: ['firewall'] }
+    - { role: unbound }
     # reconfiguring sshd may break the AUR on luna (unchecked)
     #- { role: sshd, tags: ['sshd'] }
     - { role: root_ssh, tags: ['root_ssh'] }
diff --git a/playbooks/nymeria.yml b/playbooks/nymeria.yml
index 13368cf70f16dd7a2da5ec99fae7e7fa02c058af..ae2b127d76b65072d13f81ac7e4783b36a575d29 100644
--- a/playbooks/nymeria.yml
+++ b/playbooks/nymeria.yml
@@ -7,6 +7,7 @@
     - { role: common, tags: ['common'] }
     - { role: tools, tags: ['tools'] }
     - { role: sshd, tags: ['sshd'] }
+    - { role: unbound }
     - { role: root_ssh, tags: ['root_ssh'] }
     - { role: nginx, tags: ["nginx"] }
     - { role: postgres, postgres_max_connections: 1000, postgres_shared_buffers: 4096MB,
diff --git a/playbooks/sgp.yml b/playbooks/sgp.yml
index 803edda9304e29493e1180477a96270733d50956..7063f3aa3a6c0930696c49495327c8fc83af2d2d 100644
--- a/playbooks/sgp.yml
+++ b/playbooks/sgp.yml
@@ -6,6 +6,7 @@
     - { role: common }
     - { role: tools }
     - { role: sshd }
+    - { role: unbound }
     - { role: root_ssh }
     - { role: archusers }
     - { role: nginx }
diff --git a/playbooks/soyuz.yml b/playbooks/soyuz.yml
index 6720d369d05c18a1b9dbc9e002c0d748862c6be1..d967bcd8c6bee4e26e70763b76bf95b0166982d7 100644
--- a/playbooks/soyuz.yml
+++ b/playbooks/soyuz.yml
@@ -7,6 +7,7 @@
     - { role: common, tags: ['common'] }
     - { role: tools, tags: ['tools'] }
     - { role: sshd, tags: ['sshd'] }
+    - { role: unbound }
     - { role: root_ssh, tags: ['root_ssh'] }
     - { role: borg-client, tags: ['borg'] }
     - { role: opendkim, dkim_selector: soyuz, tags: ['mail'] }
diff --git a/playbooks/vostok.yml b/playbooks/vostok.yml
index ac3d72918fb8b4ce9934e66c96b143b31bf00bc1..15a787e11cee5b4b43e2515d2302a2089d779ff5 100644
--- a/playbooks/vostok.yml
+++ b/playbooks/vostok.yml
@@ -7,5 +7,6 @@
     - { role: common, tags: ['common'] }
     - { role: tools, tags: ['tools'] }
     - { role: sshd, tags: ['sshd'] }
+    - { role: unbound }
     - { role: root_ssh, tags: ['root_ssh'] }
     - { role: borg-server, backup_dir: "/backup", backup_clients: "{{groups['borg-clients']}}", tags: ["borg"] }
diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml
index 2ca84f2e305245d95b71c5d76dd43c5d34dda057..c7ec925fee3332db54f1dc13fee8674cccf7bd08 100644
--- a/roles/common/tasks/main.yml
+++ b/roles/common/tasks/main.yml
@@ -40,14 +40,18 @@
 
 - name: create symlink to resolv.conf
   file: src=/run/systemd/resolve/stub-resolv.conf dest=/etc/resolv.conf state=link force=yes
-  when: configure_network
+  when: configure_network and not (dns_servers|length == 1 and "127.0.0.1" in dns_servers)
+
+- name: create resolv.conf
+  template: src=resolv.conf.j2 dest=/etc/resolv.conf owner=root group=root mode=0644
+  when: configure_network and (dns_servers|length == 1 and "127.0.0.1" in dns_servers)
 
 - name: start networkd
   service: name=systemd-networkd state=started enabled=yes
   when: configure_network
 
 - name: start resolved
-  service: name=systemd-resolved state=started enabled=yes
+  service: name=systemd-resolved state={{"stopped" if dns_servers|length == 1 and "127.0.0.1" in dns_servers else "started"}} enabled={{"no" if dns_servers|length == 1 and "127.0.0.1" in dns_servers else "yes"}}
   when: configure_network
 
 - name: configure default qdisc
diff --git a/roles/common/templates/resolv.conf.j2 b/roles/common/templates/resolv.conf.j2
new file mode 100644
index 0000000000000000000000000000000000000000..5af87dbecc2453549db01f548dd97b38bce53608
--- /dev/null
+++ b/roles/common/templates/resolv.conf.j2
@@ -0,0 +1,5 @@
+{% for server in dns_servers %}
+nameserver {{server}}
+{% endfor %}
+
+search {{dns_search_domain}}