Sok eszköz konfiguráció elválaszthatatlan részét képezi a no ip domain-lookup
parancs. Nem véletlenül, hiszen bármilyen karakter elütésre hosszú várakozás következik, ameddig az ember tépheti a haját. Gondolom ismerős az érzés…
De nem feltétlenül kell ennek így lennie, nézzük hogy lehet ezt megoldani és közben egy csomó hasznos dologra használni az eszközön a DNS-t.
Alap topológiánk szög egyszerű: R1-R2 egy OSPF area-ban, illetve van egy DNS szerverünk (szintén egy router) amelyen konfiguráljuk az IP host bejegyzéseket.
Az alap konfigurációk:
---- R1 ---- hostname R1 ! ! ip name-server 10.0.23.3 ip cef no ipv6 cef ! ! ! username cisco password 0 cisco ! redundancy ! ! ! ! interface Loopback0 ip address 1.1.1.1 255.255.255.255 ! interface Ethernet0/0 ip address 10.0.12.1 255.255.255.0 ip ospf network point-to-point ! ! router ospf 1 router-id 1.1.1.1 passive-interface default no passive-interface Ethernet0/0 network 1.1.1.1 0.0.0.0 area 0 network 10.0.12.0 0.0.0.255 area 0 ! ip ospf name-lookup ! ! ! ! line con 0 logging synchronous line aux 0 line vty 0 4 login local transport input all !
---- R2 ---- hostname R2 ! ! ! ip name-server 10.0.23.3 ! ! username cisco password 0 cisco ! ! interface Loopback0 ip address 2.2.2.2 255.255.255.255 ! interface Ethernet0/0 ip address 10.0.12.2 255.255.255.0 ip ospf network point-to-point ! interface Ethernet0/1 ip address 10.0.23.2 255.255.255.0 ! router ospf 1 router-id 2.2.2.2 passive-interface default no passive-interface Ethernet0/0 network 2.2.2.2 0.0.0.0 area 0 network 10.0.12.0 0.0.0.255 area 0 network 10.0.23.0 0.0.0.255 area 0 ! ! ip ospf name-lookup ! ! line con 0 logging synchronous line aux 0 line vty 0 4 login local transport input all ! !
----- DNS ----- hostname DNS ! ! ! ip host R1 1.1.1.1 ip host R2 2.2.2.2 ip host R1-eth0 10.0.12.1 ip host R2-eth0 10.0.12.2 ip host R2-eth1 10.0.23.2 ip host dns 10.0.23.3 ! ! interface Ethernet0/0 ip address 10.0.23.3 255.255.255.0 ! ! ip dns server ip route 0.0.0.0 0.0.0.0 10.0.23.2 ! ! ! ! ! line con 0 logging synchronous line aux 0 line vty 0 4 login transport input none !
Nézzük mi történik ha csinálok egy typo-t valamelyik routeren?
R2#cont Translating "cont"...domain server (10.0.23.3) (10.0.23.3) Translating "cont"...domain server (10.0.23.3) % Bad IP address or host name % Unknown command or computer name, or unable to find computer address R2#
Ez az amit mindannyian jól ismerünk, csak hosszú másodpercek után kapjuk vissza a konzolt.
De mi történik a háttérben?
Minden olyan bemenetre amit nem ismer a parser küld a router egy DNS query-t és megpróbál rácsatlakozni az eszközre. A query-t jól láthatjuk a szerveren ha bekapcsoljuk a DNS debugot.
DNS# DNS# DNS#debug ip domain Domain Name System debugging is on DNS# *Aug 23 12:36:21.296: DNS: Incoming UDP query (id#20166) *Aug 23 12:36:21.297: DNS: Type 1 DNS query (id#20166) for host 'cont' from 10.0.23.2(49770) *Aug 23 12:36:21.297: DNS: Servicing request using view default *Aug 23 12:36:21.297: search_nametype_index: cont *Aug 23 12:36:21.297: search_nametype_index: cont *Aug 23 12:36:21.297: search_nametype_index: cont *Aug 23 12:36:21.297: search_nametype_index: cont
Mivel a DNS nem tudja feloldani a “cont” nevű hosztot ezért nem válaszol, R1 pedig erre vár. Ezért “fagy ki” a konzol.
Ha a névfeloldás rendben működik akkor nyílik a session.
R2#r1 Translating "r1"...domain server (10.0.23.3) (10.0.23.3) Translating "r1"...domain server (10.0.23.3) [OK] Trying r1 (1.1.1.1)... Open User Access Verification Username: cisco Password: R1>
Sokan egyszerűen kikapcsolják az eszközökön a névfeloldást, pedig ezzel elesnek pár hasznos funkciótól amire használható lenne a DNS.
Ha el szeretnénk kerülni a hosszú várakozást sokkal egyszerűbb ha bekonfiguráljuk a routeren hogy ne akarjon rácsatlakozni az eszközre. Ehhez minden line alá fel kell vegyük a transport preferred none
parancsot.
R2#sh run | s line line con 0 logging synchronous transport preferred none line aux 0 transport preferred none line vty 0 4 login local transport preferred none transport input all R2#
Nézzük most mi történik ha megint elütés történik.
R2# R2#cont ^ % Invalid input detected at '^' marker. R2#
A parser egyből hibára fut, nincs várakozás. Probléma megoldva.
De miért jó nekünk ha van névfeloldás a routeren? Kapásból két jó példát tudok mondani.
OSPF name-lookup
Ha bekapcsoljuk az OSPF névfeloldást, akkor Router-ID helyett sok esetben hosztneveket fogunk látni. Pl.
R1#sh ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface r2 0 FULL/ - 00:00:39 10.0.12.2 Ethernet0/0 R1#sh ip ospf database OSPF Router with ID (1.1.1.1) (Process ID 1) Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum Link count 1.1.1.1 R1 1243 0x80000004 0x0002B9 3 2.2.2.2 r2 1034 0x80000005 0x00591D 4 R1#
Ha nem lehet “szépen” router-ID-kat választani (ami nem IP cím csak egy 32 bites szám, azaz nem kell hogy IP szinten elérhető legyen!) akkor sokkal könnyebb a kimeneteket olvasni, szerintem ez egy hasznos funkció.
Traceroute
A másik eset amit én nagyon szeretek hogy traceroute
kimenetben nem csak az IP-ket hanem a hosztneveket is látjuk. Nagy topológiánál szerintem ez nagyban segíti a hibakeresést. Ehhez az kell hogy minden IP be legyen jegyezve a DNS szerveren.
Pl.
R1#traceroute dns Translating "dns"...domain server (10.0.23.3) [OK] Type escape sequence to abort. Tracing the route to dns (10.0.23.3) VRF info: (vrf in name/id, vrf out name/id) 1 R2-eth0 (10.0.12.2) 0 msec 0 msec 1 msec 2 dns (10.0.23.3) 0 msec * 1 msec R1#traceroute r2 Translating "r2"...domain server (10.0.23.3) [OK] Type escape sequence to abort. Tracing the route to r2 (2.2.2.2) VRF info: (vrf in name/id, vrf out name/id) 1 R2-eth0 (10.0.12.2) 1 msec * 1 msec R1#