Mi4A gateway config

Fabian Bläse fabian at blaese.de
Mi Apr 13 12:04:39 CEST 2022


Hallo Rainer,

der Xiaomi Mi 4a ist ein Gerät mit DSA Switch. Daher muss für configure-layer3 die entsprechende DSA-Syntax verwendet werden.

Mehrere Ports in das gleiche VLAN:
   option ports 'lan1:* lan2:*'

Siehe auch:
  - https://wiki.freifunk-franken.de/w/Layer3Firmware_Config#vlan
  - https://wiki.freifunk-franken.de/w/Firmwareinstallation/Xiaomi_Mi_Router_4A#Konfiguration

Dabei gibt ':*' bzw. ':t' an, ob das VLAN tagged oder untagged (+PVID) auf dem Port liegen soll.
Wird nichts von beidem angegeben ist das VLAN untagged, aber die PVID unter Umständen nicht korrekt gesetzt. Zumindest war das früher so, und ich war mir nicht sicher, ob das jetzt ein Bug ist, oder ein Feature.

Gruß
Fabian

On 03.04.22 12:58, Rainer Batz wrote:
> So die Kiste läuft jetzt :-)
> 
> 
> configure-layer3 -t hat tatsächlich nicht funktioniert und mit -a und reboot ging es dann.
> 
> Ausserdem habe ich vorher um die Kiste nicht zu bricken mit uci show die config vorher mit der config nach configure-layer3 -c abgeglichen.
> 
> Die Konfiguration des internen Switch war ja durch die OpenWRT FW schon vorgegeben mit (vorher):
> 
> network.switch0.name='switch0'
> network.switch0.type='bridge'
> network.switch0.bridge_empty='1'
> network.switch0_1=bridge-vlan
> network.switch0_1.device='switch0'
> network.switch0_1.vlan='1'
> network.switch0_1.ports='lan2'
> network.switch0_2=bridge-vlan
> network.switch0_2.device='switch0'
> network.switch0_2.vlan='2'
> network.switch0_2.ports='wan'
> network.switch0_3=bridge-vlan
> network.switch0_3.device='switch0'
> network.switch0_3.vlan='3'
> network.switch0_3.ports='lan1'
> 
> 
> mit meiner gateway config habe ich das soweit angleichen können (man beachte die leerzeichen zB: ' wan'):
> 
> network.switch0=device
> network.switch0.name='switch0'
> network.switch0.type='bridge'
> network.switch0.bridge_empty='1'
> network.switch0_1=bridge-vlan
> network.switch0_1.device='switch0'
> network.switch0_1.vlan='1'
> network.switch0_1.ports=' lan2'
> network.switch0_2=bridge-vlan
> network.switch0_2.device='switch0'
> network.switch0_2.vlan='2'
> network.switch0_2.ports=' wan'
> network.switch0_3=bridge-vlan
> network.switch0_3.device='switch0'
> network.switch0_3.vlan='3'
> network.switch0_3.ports=' lan1'
> 
> 
> meine config sieht jetzt so aus:
> 
> (Ja mir ist bewusst, dass lan1 auf VLAN3 im Client Netz hängt und lan2 im VLAN1 nicht. Ich wusste nicht wie ich das zusammenfassen kann, ohne die VLAN Config zu ändern, die (so glaube ich) für den internen Switch genauso gebraucht wird(?))
> 
> 
> config gateway 'meta'
>      option config_version '2'
> 
> config gateway
>      option name 'schoeckel'
> 
> config vlan '1'
>      option comment 'client'
>      option ports 'lan2'
> 
> config vlan '2'
>      option comment 'wan'
>      option ports 'wan'
> 
> config vlan '3'
>          option comment 'client'
>          option ports 'lan1'
> 
> config client
>      option vlan '3'
>      list ipaddr '10.50.155.161/27'
>      list ip6addr 'fd43:xxxx:xxxx:xxxx::1/64'
>      list ip6addr '2a0b:f4c0:xxxx:xxxx::1/64'
>      option dhcp_start '10.50.155.162'
>      option essid 'schoeckel.freifunk'
>      option chan2ghz '13'
>      option chan5ghz '36'
> 
> config wan
>      option vlan '2'
> 
> config dns
>      list server 'fd43:5602:29bd:ffff:a:a:a:a'
>      list server 'fd43:5602:29bd:ffff::42'
>      list server '10.83.252.11'
>      list server '10.83.252.0'
> 
> config wireguardpeer 'gondor'
>      option endpoint_host 'fff-gondor.hyperweb.eu'
>      option endpoint_port '51827'
>      option persistent_keepalive '25'
>      option remote_public_key 'xxxxxxx='
>      option local_private_key 'xxxxxxx='
>      option rxcost '16384'
>      option mtu '1420'
> 
> 
> Grüße und danke für die Hilfe!
> 
> Rainer
> 
> 
> On 03.04.22 11:00, SebaBe wrote:
>> Hi,
>>
>> Ich hab immer noch das Gefühl, dass -t kaputt ist.
>> Wenn ich es probiert habe, wollte die Kiste nie wie sie sollte.
>> Mit -a ging es dann.
>>
>> Grüße,
>> Sebastian
>>
>> Am 3. April 2022 10:53:39 MESZ schrieb Robert Langhammer <rlanghammer at web.de>:
>>
>>     Hi,
>>     -t macht kein uci commit. Da sieht man nix in /etc/config/*
>>     uci show hilft.
>>
>>     Robert
>>
>>     Am 3. April 2022 08:22:37 UTC schrieb Christian Dresel <freifunk at dresel.systems>:
>>
>>         Am 03.04.22 um 10:12 schrieb Rainer Batz:
>>
>>             Hallo Christian, ich habe wlan:t entfernt und client zum VLAN 10 und wan zum VLAN 20 gemacht, ab beiden stellen. Das verhalten ist immer gleich, nach configure-layer3 -t 1) bekomme ich keine IPs an den LAN Ports vom DHCP 
>>
>>         das ist schlecht
>>
>>             2) Die SSID wird richtig umbenannt aber auch keine IP per DHCP 
>>
>>         ebenfalls schlecht
>>
>>             3) die von mir konfigurierten IPs habe ich natürlich auch probiert, die link local adresse noch nicht, weil ich die notation mit dem interface noch nicht kannte 
>>
>>         probiere mal ob du nach -t mit Link Local drauf kommst, dann kann man
>>         vielleicht gucken was schief läuft.
>>
>>             3) Im Monitoring wird der router nach 10 Minuten als Offline angezeigt. Im Unkonfigurierten zustand war er noch im Monitoring, halt ohne IPs und Peering 
>>
>>         Klingt danach als würde in der VLAN config oder mit der Clientbridge was
>>         gewaltig schief laufen. im zweiteren Fall könnte man evtl. mit link
>>         local noch drauf kommen und gucken was los ist. Schau mal ob nach -t mit
>>         ping ff02::1%INTERFACE er noch antwortet. Du kannst es ja mal mit vor -t
>>         vergleichen wie es aussehen müsste, wenn du noch nie mit Link local
>>         gearbeitet hast.
>>
>>             Mein gedanke war jetzt: configure-layer3 -c  erzeugt irgendwo eine fehlerhafte OpenWRT config. Die finde ich und vergleiche sie mit der alten config, die davor da war, weil die alte default config ja scheinbar schon mal besser funktioniert als meine erzeugte. 
>>
>>
>>         Ich vermute diesen dann in /etc/config/network. Sehe aber jetzt keinen
>>         Fehler mehr. Am besten wäre wenn du nach -t noch per Link local drauf
>>         kommst, dann kann man mal gucken was los ist. Dann mal die
>>         /etc/config/network raus kopieren, ifconfig (oder irgendwas mit ip...
>>         upsi) und brctl show bzw. bridge link show (weiß jetzt gerade nicht was
>>         eingebaut ist) wären auch hilfreich. Ansonsten mal schauen ob jemand
>>         anderes noch einen Fehler in deiner /etc/config/gateway sieht oder eine
>>         bessere Idee hat. Ein Fehler bei -c kommt nicht oder?
>>
>>         Gruß
>>
>>         Christian
>>
>>             Grüße Rainer On 03.04.22 08:19, Christian Dresel wrote:
>>
>>                 Hallo Rainer Am 02.04.22 um 22:56 schrieb Rainer Batz:
>>
>>                     Hallo Christian, erstmal danke für deine Antwort! On 02.04.22 11:51, Christian Dresel wrote:
>>
>>                         Hallo Rainer erstmal eine bitte, kannst du bitte die Mailingliste mit dran lassen? Ich denke es gibt viele Leute die das interessiert und vielleicht irgendwann selbst mal in das Problem laufen. Außerdem sehen viele Augen oft schneller nen Fehler als meine zwei alleine ;) Du kannst hier gerne deine Antwort wieder an die ML mit schicken. 
>>
>>                     Alles klar, das war auch gar keine Absicht sondern ein versehen. 
>>
>>                 ok gut :)
>>
>>                         Am 02.04.22 um 08:25 schrieb Rainer Batz:
>>
>>                             Super danke hier ist meine gateway config config gateway 'meta'     option config_version '2' config gateway     option name 'schoeckel' config vlan '1'     option comment 'client'     option ports 'wan:t lan1:* lan2:*' 
>>
>>                         willst du das Client VLAN wirklich getagged auf dem WAN haben (vorallem mit der VLAN ID 1)? Es gibt durchaus Situationen wo das Sinn macht ist aber erstmal ungewöhnlich, daher frage ich lieber mal nach. 
>>
>>                     Ich habe im Wiki eine config für den Mi4A gesucht und das so gefunden. https://wiki.freifunk-franken.de/w/Firmwareinstallation/Xiaomi_Mi_Router_4A#Konfiguration Ich weiß zwar was VLAN ist, getagged und am internen Switch, aber ich verstehe es im zusammenhang mit dem Mi4A nicht. Ich möchte gerne am wan Port den Uplink haben und an lan1 und lan2 das selbe wie auf der Freifunk SSID, also Clients im Freifunk Netz. 
>>
>>                 mit deiner config sagst du hier: Das VLAN 1 (config vlan '1') soll getagget auf WAN (wan:t) und untagged auf die 2 LAN Ports (lan1:* lan2:*). Dass das VLAN 1 Client ist, wird weiter unten im Clientblock defininiert (option vlan '1' ). Da du es ja nicht getagged auf WAN haben willst, nehm hier am besten wan:t raus.
>>
>>                             config vlan '2'     option comment 'wan'     option ports 'wan:*' config client     option vlan '1'     list ipaddr '10.50.155.160/24' 
>>
>>                         Stimmt da die Subnetmaske? Bzw. ist es gewollt das der Router eine IP mitten aus dem /24 Netz hat? Gewöhnlich nimmt man die zweite IP aus dem Subnetz für den Router wobei das natürlich auch so gehen würde, ist nur ungewöhnlich daher die Anmerkung. 
>>
>>                     Das war natürlich falsch, hätte ins auge gehn können. Richtig müsste dann sein: list ipaddr '10.50.155.161/27'
>>
>>                              list ip6addr 'fd43:5602:xxxx:xxxx::1/64'     list ip6addr '20b:f4c0:xxxx:xxxx::1/64' 
>>
>>                         Ist da evtl. ein Fehler drinnen, 20b klingt falsch. Oder hast du da eine Ziffer mitten drin noch mit anonymisiert ohne sie aus-zu-x-en? 
>>
>>                     ja da ist ein fehler > 2a0b
>>
>>                              option dhcp_start '10.50.155.161' 
>>
>>                     korrektur  option dhcp_start '10.50.155.162' 
>>
>>                 macht dann auch Sinn ja.
>>
>>                                 option essid 'schoeckel.freifunk'     option chan2ghz '13'     option chan5ghz '36' config wan     option vlan '2' config dns     list server 'fd43:5602:29bd:ffff:a:a:a:a'     list server 'fd43:5602:29bd:ffff::42'     list server '10.83.252.11'     list server '10.83.252.0' config wireguardpeer 'gondor'     option endpoint_host 'fff-gondor.hyperweb.eu'     option endpoint_port '51827'     option persistent_keepalive '25'     option remote_public_key 'xxxxxxxxxxxxxxxx='     option local_private_key 'xxxxxxxxxxxxxxxxxx='     option rxcost '16384'     option mtu '1420' 
>>
>>                         Ansonsten sieht deine config für mich erstmal plausibel aus (ich hab gerade nichts zum vergleichen, sehe aber soweit sonst keine Fehler). Über welchen Weg verbindest du dich mit dem Router (wo genau angeschlossen, welche IP Adresse)? Fehler kommen keine bei configure-layer3 -c / -t ? 
>>
>>                     ich hänge am lan1 und connecte mit ssh root at fdff::1 
>>
>>                 fdff::1 hat immer mal wieder merkwürdige Effekte. Probier mal die link local Adresse, die verwende ich mittlerweile immer und komm damit sehr gut klar: https://wiki.freifunk-franken.de/w/Anleitungen#Link_Local_Adresse_per_Multicast_Ping_herausfinden Ansonsten sollte der Router nach -t auch mit seinen konfigurierten IP Adressen erreichbar sein, also der öffentlichen v6, der ULA v6 und auch seiner v4 Adressse (in deinem Fall 10.50.155.161). Bekommst du nach -t denn IP Adressen am LAN Port zugeteilt? Das sollte dann eigentlich auch schon funktionieren.
>>
>>                     configure-layer3 -c läuft ohne Fehler nachdem ich einen Bindestrich im wireguardpeer entfernt habe configure-layer3 -t läuft ewig also länger 200s, reconnect erst nach reboot möglich ich werde jetzt mal die Korrekturen einbauen und ausprobieren, aber ich glaube das problem liegt oben bei den VLANs. 
>>
>>                 VLAN ID 1 getagget zu verwenden ist sehr ungewöhnlich und kann vielleicht ins Auge gehen (VLAN ID 1 ist ja immer irgendsoein reserviertes Ding), ich weiß nicht genau was da passiert und ob das geht. Vom Gefühl her würde ich aber sagen, keiner der angesprochenen Probleme sollte dazu führen, dass der Router komplett unerreichbar ist (man sollte sie aber natürlich dennoch ganz dringend beheben ;)). Gruß Christian
>>
>>                     Danke und Grüße Rainer
>>
>>                         Gruß Christian
>>
>>                             On 02.04.22 07:02, Christian Dresel wrote:
>>
>>                                 Hallo Rainer Am 02.04.22 um 01:59 schrieb Rainer Batz:
>>
>>                                     Hallo Zusammen, ich habe soeben meine ersten Gehversuche mit einem Mi4A und der layer3 firmware gemacht. Peering eingeholt, v4 und v6 Adressen registriert, eine netzwerkconfig für den Mi4A gefunden... Ich komme bis zu configure-layer3 -t, ab dann ist das Teil nicht mehr zu erreichen. Neustart > geht wieder. In der map ist er sogar schon sichtbar https://monitoring.freifunk-franken.de/routers/18052 Leider weiß ich nicht wo der Fehler liegt oder wo ich schaun kann. Ist es möglich die gateway config mal zusammen mit jemandem anzuschauen zB morgen Abend? Oder kann  jemand einmal seine anonymisierte config schicken zum vergleich? 
>>
>>                                 ich hab gerade leider keinen da für eine Beispielconfig
>>
>>                                     Ich weiß nicht ob ich meine Datei hier so einfach posten kann, deswegen erstmal nur die Bitte um Hilfe hier. 
>>
>>                                 kannst du hier posten, nur vllt. die öffentliche v6 Adresse und auf jeden Fall die wireguard Keys anonymisieren. Der Rest ist unkritisch. Dann schau ich gerne mal drüber ob was auffällt. Gruß Christian
>>
>>                                     Schöne Grüße Rainer 
>>


Mehr Informationen über die Mailingliste franken