Coder Social home page Coder Social logo

mikrotik-dynamic-ipv6's Introduction

# MikroTik-dynamic-ipv6

Magyar verzió

Ez a könnyen használható szkript segít újraindítani az IPv6-ot a MikroTik eszközödön, kér új prefix-et PPPoE újracsatlakozáskor, és - szükség esetén - képes frissíteni tűzfalszabályokat. Ez hasznos lehet, ha van egy eszköz, például házi szerver, amit az internet felől is elérnénk IPv6-on, de a többi eszközt védenénk a tűzfallal, azaz ott csak az általuk kezdeményezett kapcsolatok mehetnek befelé. Az IPv6 tűzfallal védett hálózat némileg hasonló az IPv4 NAT-hoz, alapvetően csak a kimenő kapcsolatok és az azokra érkezett válaszok mehetnek befelé. Kivételt képeznek azok az eszközök, amikre külön engedve van a bejövő kapcsolat. A legtöbb népszerű otthoni router nem támogatja ezt, a dinamikus prefixekhez nem igazán tudnak igazodni. Az új előtag lekérésével általában nincs probléma, de a tűzfalat már nem tudják módosítani. Ez akkor nem probléma, ha minden eszközt egy kalap alá vennénk, azaz vagy beengedünk mindent, vagy limitálunk, de itt most pont egy-egy eszköznek engednénk a bejövő kapcsolatait.

Beüzemelés

A beüzemelés néhány rövid lépésből áll. Első körben tegyük vágólapra a szkript tartalmát, majd lépjünk be a MikroTik routerbe. Vagy webfelületen, vagy a CLI-n esetleg WinBox-on lépjünk a system > script részre, és adjunk hozzá újat. Engedélyből read és write mindenképp kell neki, a többit még nem sikerült 100% pontossággal belőnöm, így nekem perpill minden engedélyezve van. Grafikus felületen a szerkesztés egyszerű, CLI-n pedig javaslom az edit parancs használatát, így egy nano-hoz hasonló szerkesztővel lehet a szkript tartalmát kezelni. Tehát először hozzáadás, majd utána edit source (ahol ID az új tétel ID-je). Másoljuk be a vágólapról. Ezt követően szükség lesz némi módosításra a megfelelő működés érdekében. Az "#Array with machine names and address suffix pairs" sor alatt találjuk a klienseket tartalmazó tömböt. Ebbe ""="" formában lehet felsorolni az elemeket. Ügyeljünk rá, hogy csak a második 64 bit (/64, és az elején kettőspont nélkül) szerepeljen. Arra is fokozottan figyeljünk, hogy ne legyen névütközés. Az eszközökben található NAND kímélése miatt a címlisták a memóriában kerülnek eltárolásra. Példa két gépre: :local machines ({"srv01"="dd44:dd44:dd44:dd44";"srv02"="aa11:bb22:cc33:dd44"}) A példa továbbővíthető, ;-vel tagolva. Mivel a szkript első futtatása után jelennek meg az eredmények a címlistában, ezért a saját szabályokat csak a szkript futtatása után lehet felvenni. A szkript minden futásnál törli a fenntebbi tömbben szereplő címlistákat, majd azonnal létrehozza, de a szabályok szempontjából ez nem probléma, a már létrehozott szabályok ezzel nem változnak. Azaz ha a 80-as TCP portra érkező forgalmat engedjük az egyik gép felé, akkor az nem fog változni a szkript futásakor, de ha épp nem létezik a címlista, új szabály nem vehető fel. Módosítsuk az alábbi sorokat, hogy a szkript a saját környezethez igazodjon: IPv6 pool neve :local poolname "digi" Az interfész neve, ahova történik a címek osztása RA-val (fontos megadni, mert a pool és a használt interfész alapján lövi be a szkript a tartományt) :local desiredif "br-lan" PPPoE interfész neve :local pppoeif "digi-pppoe" Ha megvannak ezek is, lehet menteni. Ezzel a szkript a routeren van, elérhető, használható. Ahhoz, hogy megfelelően működjön, az IPv6 címeknél a LAN interfész címe legyen ::1/64 (ezt módosítani fogja a router ha címet kap rá, de a lényeg, hogy a cím suffixe mindig a ::1 legyen, a szkript így tudja csak lekérni a prefixet). Érdemes lehet kézi futtatással meggyőződni a működőképességéről. Következő lépésként az IPv6-os tűzfal forward láncán engedjük a forgalmat, ahol a dst-address-list valamely korábban megadott eszközre mutat. Érdemes optimalizálni a szabályok sorrendjét, azaz a forward lánc drop-ja fölé rakni ezt mindenképp, de célszerű minél előrébb szerepeltetni. Ezt követően a szkriptet csak rendeljük hozzá a PPPoE újracsatlakozáshoz, vagy - ha már van meglévő szkriptünk erre az esetre - írjuk bele, hogy futtassa ezt. Azért javaslom mindenképp új szkript felvételét, mert így a feladatok jól elkülöníthetőek. A hozzárendelés alap esetben úgy történik, hogy a PPP profiles részen az on-up eseményhez kapcsoljuk a szkriptet. A szkript a PPPoE újracsatlakozásnál gondoskodik a szabályok és a cím frissítéséről. Mivel a szkript a memóriában tárolja el 10 hetes timeout-tal a listákat, ha a PPPoE kapcsolat ennél hosszabb ideig lehet aktív, érdemes felvenni egy időzítőt, ami 8--9 hetente futtatja a szkriptet.

Kliensoldali beállítások

A legtöbb eszköz hajlamos váltogatni a RA-n kért IPv6 címét, Linux-on ezt a sysctl.conf módosításával lehet kikapcsolni, utána már a cím második része (EUI64) mindig ugyanaz lesz, azaz be lehet ide írni. A sysctl.conf-ba ezt kell írni (a br0 nálam a helyi interfész neve): net.ipv6.conf.default.addr_gen_mode = 0 net.ipv6.conf.br0.addr_gen_mode = 0 Windows esetén pedig a randomize-identifiers-t kell kikapcsolni, hogy fix címe legyen a gépnek. Bízom benne, hogy ezzel a kis szkripttel segítettem az erre nyitottaknak tenni egy lépést az IPv6 használatának megkezdéséhez.

English version

This easy-to-use script helps you to restart the IPv6 on your MikroTik, get a new prefix after PPPoE reconnect, and update neccessary firewal rules (for example allow incoming new connections to your home server).

WHY?

In my country Hungary, Magyar Telekom and DIGI provide IPv6 on their optical network (FTTB/FTTH) wiht PPPoE. MikroTik has very less support to work with dynamicaly changing IPv6 prefixes. For example, can't get new prefix or address automaticaly and can't update the firewall. The latest is important, if you have a home server, but you don't want to allow new incoming connections to other devices. It improves security, the devices can't accessible directly from outside (same as IPv4 NAT without port forwarding). By default, on most of the popular routers, the devices accessible from outside and usualy you can't change it.

mikrotik-dynamic-ipv6's People

Contributors

adns44 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.