Uważam, że najłatwiejszą odpowiedzią na pierwsze pytanie jest „Nie, masz do tego„ A ”, ale przypadkowo skonfigurowałem subdomenę za pomocą CNAME wskazującego adres IP i działało to na kilku komputerach w moim biurze. Zastanawiam się, jak to było możliwe?
Teraz, gdy sprawdzam to z domu, mam następujący błąd:
beast:~ viroos$ host somesubdomain.somedomain.com
Host somesubdomain.somedomain.com not found: 3(NXDOMAIN)
W 100% pracowałem w moim biurze (obecnie wygląda na to, że tak nie jest, ale sprawdzam to na innym komputerze). Dlatego nie jestem w 100%, jeśli zadziałało to ze względu na jakąś specjalną konfigurację sieci lub ponieważ przetestowałem to zaraz po dodaniu wpisu DNS.
Wiem, że ta historia brzmi trochę szalenie / niewiarygodnie, ale czy ktoś może mi pomóc rozwiązać tę zagadkę.
// edytuj: Dodaję wynik kopania
; <<>> DiG 9.6-ESV-R4-P3 <<>> somesubdomain.somedomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 60224
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;somesubdomain.somedomain.com. IN A
;; ANSWER SECTION:
somesubdomain.somedomain.com. 67 IN CNAME xxx.xxx.xxx.xx1.
;; AUTHORITY SECTION:
. 1800 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2012040901 1800 900 604800 86400
;; Query time: 72 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Apr 10 00:11:01 2012
;; MSG SIZE rcvd: 136
domain-name-system
Maciek Sawicki
źródło
źródło
dig
?Odpowiedzi:
Dane w
CNAME
rekordzie muszą zawsze mieć inną nazwę DNS - taki jest sensCNAME
.Jak zwięźle ujęto w RFC 1034, dane w a
CNAME
powinny być:Jeśli jednak chcesz wskazać adres IP, Twój bilet to:
CNAME
został zaprojektowany i wdrożony jako alias DNS; nie ma koncepcji posiadania adresu IP w tym polu danych. Jako taki jest interpretowany jako alias do innej nazwy DNS, zgodnie z przeznaczeniem; w końcu adres IP pasuje do składni nazwy DNS.Na przykład, powiedzmy, że twoje dane DNS to:
Rekursywny serwer DNS, o który pytasz, widzi, że rekord jest
CNAME
, i stwierdza, że będziesz chciał rzeczywistych danych, które on zawiera. Nie znaleziono innego zapisu niżCNAME
ten, więc nie ma odpowiedzi dla klienta.Próbuje wyszukać rekord dla nazwy hosta
192
w domenie0.2.1
. Nie ma nic buforowanego dla tej nazwy, więc pyta serwery root. Obsługują one żądania TLD, takie jak.com
i.net
, ale to żądanie jest żądaniem.1
. Szybko odpowiadają, że takiego nie ma i to właśnie rekurser wysyła do ciebie.Odpowiedź, którą widzisz,
dig
to Twój rekurencyjny serwer nazw, który mówi: „cóż, nazwa, której szukałeś, wskazywała gdzieś indziej, a gdzieś nie istniało - spytaj serwer root, jeśli mi nie wierzysz”.Tak więc wpisanie adresu IP do
CNAME
rekordu nigdy nie jest ważne i podejrzewam, że działające systemy działają poprawnie za pomocą innego mechanizmu, takiego jak plik hosts lub rozpoznawanie nazw lokalnych - sprawdź ich zachowanie podczas rozpoznawania nazw.źródło
cname to nazwa kanoniczna, która jest tylko aliasem innej nazwy, zwykle jest to rekord A lub inna nazwa itp. Jeśli skonfigurujesz cname, aby wskazywał adres IP, to jest to tylko alias tego adresu IP. Nie sądzę, aby Twój serwer DNS sprawdzał, czy cel jest zgodny z prawem, czy nie, ponieważ standardowy RFC tak naprawdę nie mówi, jaki jest format danych / sprawdzanie poprawności dla celu nazwy cname. To nie jest zwykłe użycie, ale jeśli działa dla ciebie, to działa. Myślę, że fakt, że czasami nie działa, powinien wystarczyć, abyś użył tego, co jest konwencjonalnie używane.
źródło
Możesz mieć:
gdzie 1.2.3.4 to działający adres IP. Zwróć jednak uwagę na kropkę w CNAME. Fakt, że niektóre komputery w twoim biurze działają z tym, a inne nie prowadzi mnie do przekonania, że te, które mają poddomenę ustawioną w pliku
lmhosts
lub/etc/hosts
.źródło
4
?host -a
) Zapytania.