DNS kérdés feltételes átirányítása
Készítő:
Készítve:
Legutoljára frissítve:
SzuniSOFT
2018-01-23 17:32:39
2018-02-22 20:30:50

Távoli irodák összekapcsolásakor nem ritka, hogy idegen hálózatot kell a sajátunkkal összekapcsolni. Kiszolgáló cégeknél, mint például könyvelők, ügyvédek, vagy több irodával együttműködő szabadúszók, mint grafikusok és hasonlók ez mindennapi eset. Sok megoldás létezik, de talán az egyik legkényelmesebb, ha a több lokális hálózatot úgy kötjük be a sajátunkba, hogy maguk a tartományi címek adják a szétválasztást. Ilyenkor teljesen azonos beállítással dolgozhatunk akkor is, ha a partner irodájában dolgozunk és akko is, ha a sajátunkban.

Az OSI modell 7. rétegét megfelelően kezelni képes hálózati eszközökkel lehetőségünk van a csomagok címzés szintű szűrésére FQDN vagyannak részlete, maszkja alapján. A DHCP kiosztásban definiálnunk kell a lokális DNS szervert és a kérdéses idegen hálózat domain nevét egy Layer7 szűrőben. Ezt követően NAT technológiával eltéríthetjük a DNS szerverünk 53-as portjára címzett csomagokat (DNS kérések) és átirányíthatjuk azokat egy tetszőleges DNS szerverhez. Célszerűen a távoli hálózat belső DNS szerveréhez.

Ezzel az encegem.local környezetben ülő eszközök ugyanúgy felismerik a partnerceg.local halózatba irányuló címzéseket anélkül, hogy a saját DNS szerverünkön bármit módosítanánk. Különösen hasznos ez akkor, ha legalább az egyik DNS szerver módosítására nincs lehetőség. A módszer ugyanis egy másodlagos eszköz beiktatásával is működik, tehát kisebb munkacsoportok egyedi igényeit is lekezelhetjük általa a teljes hálózat érintetlenül hagyása mellett.

A megvalósitáshoz több út is vezet. Az alábbi két példa Mikrotik Routerboard környezetben mutat be a lehetőségeket.

/ip firewall layer7-protocol
add name=testdns regexp=targetdomainname\.local$

/ip firewall nat
add action=dst-nat chain=dstnat disabled=no dst-address=<Local-DNS-IP> \
    dst-port=53 layer7-protocol=testdns protocol=udp \
    to-addresses=<TargetDomain-DNS-IP> to-ports=53
add action=dst-nat chain=dstnat disabled=no dst-address=<Local-DNS-IP> \
    dst-port=53 layer7-protocol=testdns protocol=tcp \
    to-addresses=<TargetDomain-DNS-IP> to-ports=53

A regexp részben alkalmazhatunk konkrét címet vagy maszkot is. Utóbbi esetben érdemes ellenőrizni az eszközre érvényes leírást, mert lehetnek speciális különbségek. Routerboard esetében pl. a ^(.*)(targetdomainname.local) típusú regex megadás nem működik.

Az alábbi egy más típusú megoldás. Nem csupán elegánsabb, de nagy terheltség esetén gyorsabb is.

/ip firewall layer7-protocol
add name=testdns regexp=targetdomainname\.local$

/ip firewall mangle
add chain=prerouting dst-address=<Local-DNS-IP> protocol=udp dst-port=53 \
    layer7-protocol=testdns action=mark-connection new-connection-mark=forwarded-dns
add chain=prerouting dst-address=<Local-DNS-IP> protocol=tcp dst-port=53 \
    layer7-protocol=testdns action=mark-connection new-connection-mark=forwarded-dns

/ip firewall nat
add action=dst-nat chain=dstnat connection-mark=forwarded-dns \
    to-addresses=<TargetDomain-DNS-IP>
add action=masquerade chain=srcnat connection-mark=forwarded-dns

Az egész dolognak természetesen feltétele, hogy valahogy kapcsolatban legyünk az idegen belső hálózattal. Erre jellemzően egy VPN kapu a megoldás, amiről egy másik cikkünkben lesz szó.