У меня есть веб-сервер (со статическим IP-адресом 192.168.1.5
), и я хочу, чтобы мои машины в локальной сети могли иметь к нему доступ без изменения /etc/hosts
(или аналога для Windows/OSX). Мой роутер имеет
Primary DNS server 192.168.1.5
Secondary DNS server 8.8.8.8 (Google's public DNS).
Nginx настроен на внешние серверы как
*.example.com
Внутренне я хочу
*.example.local
указать на сервер.
На моем веб-сервере установлен BIND9, но я не уверен в настройках. Я прошел через различные противоречивые уроки, и поэтому большинство моих настроек были забиты. Я вычеркнул строки, в которых я запутался.
Учебники, на которые я смотрел:http://tech.surveypoint.com/blog/install-a-local-dns-server-behind-a-hardware-router/ и http://ubuntuforums.org/showthread.php?t = 236093 В основном они отличаются тем, что следует поместить в /etc/bind/zones/db.example.local
и /etc/bind/zones/db.192
, поэтому я оставил конфликтующие строки ниже. Может ли кто-нибудь подсказать, какие правильные строки используются для приведенного выше поведения (а именно *.example.local
указывающего на 192.168.1.5
)?
/etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.5
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.254
/etc/hostname
avalon
/etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
/etc/bind/named.conf.options
options {
directory "/var/cache/bind";
forwarders {
8.8.8.8;
8.8.4.4;
};
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
/etc/bind/named.conf.local
zone "example.local" {
type master;
file "/etc/bind/zones/db.example.local";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.192";
};
/etc/bind/zones/db.example.local
$TTL 604800
@ IN SOA avalon.example.local. webadmin.example.local. (
5 ; Serial, increment each edit
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
/etc/bind/zones/db.192
$TTL 604800
@ IN SOA avalon.example.local. webadmin.example.local. (
4 ; Serial, increment each edit
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
Что мне нужно добавить к вышеуказанным файлам, чтобы на ноутбуке во внутренней сети я мог набрать webapp.example.local
и обслуживаться моим веб- сервером ?
РЕДАКТИРОВАТЬ
Я внес несколько изменений в вышеуказанные файлы на веб-сервере.
/etc/network/interfaces
(конец файла)
dns-nameservers 127.0.0.1
dns-search example.local
/etc/bind/zones/db.example.local
(конец файла)
@ IN NS avalon.example.local.
@ IN A 192.168.1.5
avalon IN A 192.168.1.5
webapp IN A 192.168.1.5
www IN CNAME 192.168.1.5
/etc/bind/zones/db.192
(конец файла)
IN NS avalon.example.local.
73 IN PTR avalon.example.local.
В качестве примечания, моя запасная машина Win7 смогла подключиться напрямую к webapp.example.local
, но для машины с Ubuntu 13.10 мне также пришлось внести следующие изменения (не на веб-сервере, а на отдельной машине):
/etc/nsswitch.conf
до
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
после
hosts: files dns
/etc/NetworkManager/NetworkManager.conf
до
dns=dnsmasq
после
#dns=dnsmasq
Проблема остается в том, что это не подстановочный DNS, и поэтому я должен добавить записи в /etc/bind/zones/db.example.local
для webapp1
, webapp2
, ...