Archive forMarch, 2014

IOS ZBF DNS Translation

People who have worked with Cisco ASA probably know about an interesting feature – “DNS doctoring”. Basically, if you have static NAT configured on an ASA, and the device sees a DNS query/reply going between the NAT inside and outside interfaces, it will actually look inside the packet, and change its contents. Which is actually a useful feature in cases where one cannot (or doesn’t want to) configure split DNS on the name server.

For example, let’s say you have an internal mail server (172.16.1.10), statically translated to a public IP address (5.5.5.10). When the internal clients try to access “mail.example.com”, the (internal) nameserver will give them the correct (internal) IP – 172.16.10.10. When external clients try the same query, the reply will go through the ASA, and the external clients will receive the correct (external) IP – 5.5.5.10. And everything works.

The problem starts when Cisco IOS starts to do the same thing. It appears that if you’re running ZBF (Zone-Based Firewall) on Cisco IOS, it will automatically have the same behavior – translating DNS A and PTR queries as they go across the NAT.

However, there are two issues with the implementation:

1) Something is wrong with the translation. It seems to change the query, but not the answer. Using the same example as above, I try a reverse query for the external IP of the mail server:
root@thermite:~# host -vv  5.5.5.10
Trying “10.5.5.5.in-addr.arpa”
;; Question section mismatch: got 10.1.16.172.in-addr.arpa/PTR/IN

Notice the issue? I ask about the public address. My query gets translated by ZBF, and the server receives a query about the private address. However, when the reply comes back to me, the “question” section in the reply is not translated back. My client asked about 10.5.5.5.in-addr.arpa, and received a reply about 10.1.16.172.in-addr.arpa – which is ignored. Hence, my DNS resolution doesn’t work…

Not a problem – I’ll just disable DNS deep packet inspection! After all, it used to be quite easy on the ASA (just remove DNS from the list of deep-inspected protocols). Well… there’s the second problem!

2) Disabling the feature isn’t easy. After spending a long time looking through Cisco’s documentation (with no results), I managed to find the answer on the support forums:

no ip nat service alg tcp dns

no ip nat service alg udp dns

And yes, I have to agree with the person asking the question – “Very funny, Cisco! Now whose bright idea was that????!!”

 

Comments

Garantie la PcGarage – continuarea

Vă povesteam eu în urmă cu ceva timp că la PcGarage „garanție” înseamnă „îl mai plătești o dată ca să ți-l înlocuim”. Ca să recapitulăm: eu luasem un kit de 4 memorii cu 700 RON, și din el s-a defectat un modul. Cum acum PcGarage vinde _exact_ același kit la 1500 RON, soluția lor a fost „îți păstrăm toate memoriile, inclusiv cele bune, și dacă vrei alt kit de memorie plătește diferența”. Sau, după cum spune Meekuu, „îți luăm 3 memorii bune și îți dăm înapoi banii pe 2” :)

Între timp, situația a mai evoluat. În primul rând, am reușit să recuperez memoriile de la ei. După ce mi s-a explicat intens că „măsura înlocuirii este disproporționată”, și „clientul nu are în nici un fel de ales referitor la modul în care se soluționează problema în service”. Legea îi contrazice (am explicat deja în post-ul anterior cum și de ce), dar ei sunt convinși că au dreptate. Așa că nu am mai insistat…

Discutie PcGarage

Eh, după încă vreo câteva amânări (vedeți discuția de mai sus), reușesc să îmi primesc memoriile. A trebuit inclusiv să dau copie după CI și declarație pe proprie răspundere că le vreau, nu accept storno, și doresc refacturarea lor.

Dezamăgit complet, decid ca înainte să merg la ANPC să încerc și la Corsair. Așteptându-mă din nou la lupte, la discuții de genul „da’ la distribuitorul local ați fost? Păi dacă ei nu v-au înlocuit produsul, noi de ce să o facem? Nu se poate, mergeți la ei…”

Iaca surprize:

  1. Din momentul în care am dat click pe „request RMA”, tot procesul a fost automat. Aprobarea RMA-ului a fost instantanee, și imediat am putut să tipăresc eticheta pentru curier.
  2. Mai mult – Corsair oferă un serviciu de „express RMA”, în care ei îți trimit replacement-ul înainte ca tu să trimiți produsul defect înapoi (ca să ai cât mai puțin downtime pe sistem!). Bineînțeles, trebuie să se asigure că le mai și trimiți ceva :) , și atunci îți blochează pe card costul produsului până primesc returul. Ei bine…
  3. … aici vine surpriza cea mai mare: suma blocată pe card a fost de aproximativ 750 RON. Și da, exact acela este costul produsului la ei!

Ați urmărit cu atenție? Haideți să recapitulăm:

  • dacă înlocuiam „în garanție” produsul la PcGarage, plăteam 1500 – 700 = 800 RON (hai 700, că din mărinimia lor mi-au oferit 10% reducere :P ) . Și aveam în final un kit de 4 memorii funcțional
  • acum, dacă nici nu mă mai deranjez să le trimit pe cele defecte înapoi, mă costă 750 RON. Și am în final un kit de 4 memorii funcțional, plus încă 3 module care merg bine-mersi (și doar ele costă vreo 1100 RON la noi)
  • dacă în schimb returnez memoriile defecte, am de plătit un 60 RON or so costul de transport.

Și atunci vine întrebarea – dacă la alții se poate, de ce naiba noi nu suntem în stare??? Și ne mâncăm de sub…… unghii în situații în care nici măcar n-am avea ce pierde? (că în pisici, nu pierdea nimic PcGarage dacă făceau ei asta. Și păstrau un client!)

 

Comments (10)