IPv6 Elisan kotiverkkoon vaikka väkisin (siitä piti tulla vain 4G-varayhteys ja kuormantasaus)

Aloitin tilaamalla hetken mielijohteesta Netgear MR1100 4G-reitittimen ja siihen Elisan 4G-liittymän. Ajatuksena oli, että tekisin kuormantasausta ruuhkahuippuihin ja varayhteyden kotiverkkoon.

Ensimmäinen setup oli seuraavanlainen:
MR1100 oli yhdistettynä RB450G porttiin, joka otti haltuunsa siltaavassa tilassa ulkoisen IPv4-osoitteen DHCP:llä ja teki siitä ensisijaisen reitin kyseiselle reitittimelle. RB1200 on kodin ensisijainen reititin ja sieltä oli siirretty valikoidut liikenteet toissijaiselle reitille ja lisäksi vikatiloja varten oli toissijaiset reitit odottamassa. Kaikki toimi ihan ok, mitä nyt oli vaikeuksia keksiä mikä liikenne olisi hyvä reititellä mobiiliverkkoon ja millä kriteerein.

Nälkä kasvaa syödessä. Huomasin, että yhteyteen on helppo lisätä IPv6-toimivuus, joka Elisan kuituyhteyksistä yhä vuonna 2019 puuttuu (miksi?!). Kyseinen laite toimii IPv6-proxynä ISP:n ja asiakkaan omien laitteiden välillä. Koska tämä ei kuitenkaan mahdollista reititystä yhtä laitetta pidemmälle (operaattorin tarjoamaa /64 IPv6-blokkia ei voi jakaa eteenpäin reititettynä sisäverkkoon), eikä pelkästä reitittimen IPv6-toimivuudesta ole juurikaan hyötyä, lähdin kokeilemaan vaihtoehtoisia setupeja.
Huomasin RB450G tavoittavan 4G-yhteyden kautta IPv6-osoitteita myös MR1100 ollessa reitittävässä tilassa. Tämä mahdollistaisi tuoda sen IPv4-varayhteys ja IPv6-toimivuus LAN-puolelle kaikkiin laitteisiin, kunhan laitteen oma DHCP on suljettuna. Tuumasta toimeen.

Hyvin pian sain huomata, että verkkolaite toisensa perään putosi irti verkosta. Hieman myöhemmin ongelma rajoittui lähinnä RG450G puolelle, kun siirsin prioriteettimuutoksella RSTP-protokollassa RB1200 takaisin root-sillaksi. Raavin päätäni hetken ja siirsin MR1100 tämän ensisijaisen RB1200-reitittimen LAN-siltaan. Sama ongelma jatkui, mutta taas pääsi eri suunnasta käsiksi suorin yhteyksin. Poistin RB450G omat sisäiset siltaukset turhina ja liitin sen suorina yksittäisportteina takaisin RB1200, mutta ongelma jatkui vaikka enää ei ollut taistelua root-bridge roolista. IPv6 tuntui toimivan, mutta IPv4 ei. Eihän tämän näin pitänyt mennä.

Tässä vaiheessa huomasin, että ARP-tiedot täsmäävät kyllä RB1200 ja RB450G omissa ARP-tauluissa, mutta muut laitteet saavat kaikki MR1100 mainostamana sen omaa MAC-osoitetta.

Ongelman laadun selvittyä se oli helppo korjata. Laitoin RouterOS sillasta tarpeettomat ARP-huutelut suodatukseen, niin MR1100 ei enää vastaile niihin omiaan. Samalla, kun tutustuin näihin siltauksen asetuksiin, päädyin laittamaan koko siltaa koskevan dhcp-snooping=yes asetuksen, jolloin MR1100 oman DHCP-palvelimen tilalla ei ole merkitystä ja sitä voi käyttää myös normaalina langattomana reitittimenä tarpeen mukaan ilman mitään konfiguraatiomuutoksia. Samalla kannattaa varmuuden vuoksi laittaa fastpath/fasttrack pois päältä.
Hardware offload tulee asettaa pois päältä, jotta bridge filter toimii kaikkeen liikenteeseen.
HUOM! Jos sillassa on muissa porteissa käytössä haluttuja DHCP-palvelimia, näihin portteihin tulee asettaa trusted=yes päälle.

Sillan yleisasetukset:
/interface bridge
add add-dhcp-option82=yes dhcp-snooping=yes fast-forward=no name=br-lan
/interface bridge port
add bridge=br-lan hw=no interface=eth2-mobile restricted-role=yes
add bridge=br-lan hw=no interface=eth1-lan
(Palautin 4G-reitittimen takaisin RB450G:n 5-porttiin ja portista 3 on yhteys isomman reitittimen siltaan, joka on root-bridge.)

Ja lisäksi bridge filter asetukset turhien ARP-kyselyiden pysäyttämiseksi kyseiseen porttiin:
/interface bridge filter
add action=drop arp-dst-address=!192.168.1.1/32 chain=output mac-protocol=arp out-interface=eth2-mobile
add action=drop arp-dst-address=!192.168.1.1/32 chain=forward in-bridge=br-lan mac-protocol=arp out-interface=eth2-mobile
add action=drop arp-src-address=!192.168.1.1/32 chain=input in-interface=eth2-mobile mac-protocol=arp
add action=drop arp-src-address=!192.168.1.1/32 chain=forward in-interface=eth2-mobile mac-protocol=arp out-bridge=br-lan
(HUOM! Suodatus aina sillä perusteella, että !192.168.1.1/32 eli pudotus jos ei ole tämä osoite, joka on aina MR1100 oma LAN-osoite. Ja kaksi viimeistä eli in-interface=eth2-mobile perusteella suodatus ovat todennäköisesti tarpeettomia, mutta varmuuden vuoksi asetetaan suoto molempiin suuntiin; ARP-kyselyt sillasta, joissa vastaanottaja ei ole MR1100, sekä ARP-mainostukset MR1100:lta ellei se ole lähettäjän osoitteena.)

Eli nyt tarvittaessa MR1100 voi vain poimia mukaansa ja se toimii normaalina WiFi-4G reitittimenä. Konfiguraation muutosten ja tilan tarkistamisen tarpeita varten tarvii vain yksinkertaisen NAT-Masquerade säännön RouterOS palomuuriin sen LAN-asetuksia vastaavasti, jolloin riittää RB1200 tuntea tuo kyseinen laite oikealta osoitteeltaan IPv4-puolella.

Ajoittaisen IPv6-katkeilun syyksi osoittautui molemmissa RouterBOARDeissa olleet väärät ND (Neighbor Discovery) asetukset. Toimivin setup on tässä tapauksessa yksinkertaisesti sammuttaa koko ND-ominaisuus turhana.

[=]