Wan + Mesh + eigenes Netz + Freifunk über ein Kabel mit vlans

„vlan“ und „ändere einfach“ geht im Plasterouter-Kontext nicht.
Du solltest Dich schon mit der SoC/Vlan-Architektur des von dir genutzten Routers auseinandersetzen, um zu schauen, ob das „direkt“ geht oder ob das was Du da als „eth0“ siehst „echt ist“ oder doch schon aliasnamen für die vlans der CPU-Switch-Bridge sind.
(Siehe auch meine bisherigen Postings zu genau dem Thema)

P.S. Wenn ich jetzt in einem parallelthread abgucke und einfach mal unzulässigerweise unterstelle, es ginge um einen ArcherC7, dann könnte dieses Bild aus dem OpenWRT-Forumshtread Dir helfen.

1 „Gefällt mir“

Danke für die Antwort

Jain. Die letzten Fragen bezogen sich auf den Unify AC Mesh, das hätte ich besser dazu gesagt. Beim ArcherC7 hatte ich in der Konfiguration schon gesehen, dass da noch Schichten mit vlans zwischen hängen, auch wenn ich da den genauen Zusammenhang nicht völlig verstanden hatte. Wenn ich das richtig verstanden habe, werden da die Pakete von der CPU (?) mit Vlan 1 und 2 getagt und dann von der Switch-Hardware entsprechend der Konfiguration auf die Ports verteilt und das tag entfernt? Von Prinzip her müsste ich da „nur“ ein weiteres Vlan anlegen und auf eth0 legen und irgendwie sagen, das soll getagt rausgehen oder? Aber auch da fehlen mir noch die Kentnise. Ich dachte der AC Mesh wäre für den Einstieg erst mal einfacher, da der ja nur ein physikalisches Ethernet-Interface hat und ich dachte, das wäre dadurch wesentlich übersichtlicher. Hier scheitnt eth0 wirklich den Port zu bezeichnen und wan hängt da offenbar direkt drauf (network.wan.ifname='eth0'). Allerdings scheint es da trotzdem noch andere Interface zu geben, die ich nicht verstehe:

network.wan6.ifname='br-wan'
network.mesh_wan.ifname='br-wan'

Was ist den „br-wan“ und wo ist das definiert? warum hängt mesh_wan nicht wie wan auch auf eth0?

Hab gerade die Seite Router: Manuelle Konfiguration – Wiki Freifunk-3Ländereck gefunden, da scheint ein bischen was davon erklärt zu werden. das lese ich mir gleich mal durch.

Richtig, das sind 80%. Die restlichen 20% ergeben sich aus Studium der OpenWrt-Hardware-Beschreibungen zur konkreten Hardware; wieviele Ports hat das SoC, wie sind diese auf die externen Ports verteilt, welche Features hat der Switch, wie kann ich mein Zielsetup in UCI-Nomenklatur ausdrücken, sofern überhaupt.

1 „Gefällt mir“

Ich glaube bei mir ist gerade ein Groschen gefallen also:

config switch_vlan
        option device 'switch0'
        option vlan '1'
        option ports '2 3 4 5 0t'

ist die Vlan-Membership-Konfiguration. Dabei hängt am internen Switch an Port 0 die CPU und da werden die Pakete getagt, daher das „t“. Wenn ich für ein vlan diesen Eintrag weg lasse, werden die Pakete, die ich getagt auf Port 0 von der CPU reinschiebe dann automatisch auf die anderen Ports geswitcht, oder muss ich das explizit so konfigurieren? Ich denke ich probiere da gleich mal etwas mit rum.

Das passt offensichtlich nicht mit der Konfiguration von meinem Modell zusammen. Ich glaube, dass ist für eine andere Hardware-Version. Ich habe einen TP-LINK Archer C7 v4. Bei mir hängt eth0 offensichtlich an Port 0 und da gehen beide Vlans drüber.

Meine naive Idee war, dass ich auf dem Archer C7 v4 jetzt erst mal ein neues vlan anlege mit den Parametern:

network.@switch_vlan[4]=switch_vlan
network.@switch_vlan[4].device='switch0'
network.@switch_vlan[4].vlan='4'
network.@switch_vlan[4].ports='1t 0t'

aber schon uci set network.@switch_vlan[4].device='switch0' scheitert mit „Invalid argument“. Was mache ich da falsch?

Warum Du jetzt nicht die Gluon-Doku benutzen möchtest, sondern lieber von einer Community, die kein Gluon verwendet: Du wirst Deine Gründe haben.

Schau mal in die OpenWRT-Doku, wie neue Abschnitte in Config-Files per UCI angelegt werden.
Alternativ könntest Du natürlich die Dateien (hier: /etc/config/network) auch von Hand editieren.
Aber wenn Du das Modul schreiben möchtest, dann ist natürlich UCI via luascript unvermeidlich.

Die Gründe waren, dass dies das einzige war, was ich über google zu dem Thema gefunden habe :smiley: in der Gluon-Doku gab es hingegen keinen Treffer. Um zu erklärt, was die Interface „br-wan“ usw. für einen Zweck haben, hat es gereicht. Wo diese interface in openWRT her kommen, verstehe ich aber immer noch nicht, offenbar nicht aus /etc/config/network
Klar, ich hätte mir auch lieber die umfassende und verständliche Dokumentation meiner Community durchgelesen, die hat nur leider das Problem, dass sie offenbar nicht existiert. Viele Informationen sind offenbar über sehr viele Quellen unterschiedlicher Güte verstreut und die Suche gleicht etwas dem Versuch, sich Münchhausen-artig selber an den Haaren aus dem sumpf zu ziehen, da man schon sehr genau wissen muss, wonach man sucht um brauchbare Informationen zu finden.
Aber das wird schon. Ich habe heute sicherlich schon mehr gelernt, als in der Letzten Wochen zusammen :slight_smile:

Ja mit UCI add oder? Habe ich auch gefunden, aber da mache ich offenbar auch etwas falsch, wenn es damit hätte funktionieren sollen . Aber egal, ich versuche es erst mal die Datei zu editieren und dann sehe ich weiter.

Wenn ich erst mal so weit bin, dass es bei mir läuft, sehe ich weiter.

War wohl doch keine so gute Idee. Nach dem Neustart Ist der Router nicht mehr erreichbar. Kann sein, dass ich einen Syntaxfehler in der /etc/config/network gemacht habe. Jetzt komme ich leider überhaupt nicht mehr drauf. Hab schon versucht, im config-Mode zu booten, aber da verteilt er keine Adresse über DHCP :frowning: Was mache ich jetzt?

edit: hab das Problem beseitigt.

Ich habe es jetzt noch mal wiederholt, leider mit dem selben Ergebnis.
Ich habe in der /etc/config/network folgendes geändert:

Zuerst ein zusätzliches Vlan mit der ID 4 angelegt und auf Port 0 (CPU) und 1 (Wan) gelegt. Beide getagt.

config switch_vlan
        option device 'switch0'
        option vlan '4'
        option ports '1t 0t'

Dann noch das „mesh_wan“ aktiviert und auf vlan 4 gelegt mit
option ifname 'eth0.4'
option disabled '0'

Nach meinem Verständnis dürfte das noch gar nichts bewirken, außer, dass jetzt auf dem Wan-Port zusätzlich Mesh-Pakete auf vlan 4 raus gehen, die aber noch keine Gegenstelle haben. Wirkung ist aber, dass der Switch auf dem Wan nicht mehr erreichbar ist und auch die VPN-Verbindung abbricht. Der Knoten ist aber noch auf dern Karte mit den Nachbarn verbunden und sendet noch Updates. Was mache ich falsch?

So eine Idee wegen deinem ‚invalid argument‘ und Index [4]. Das setzt natürlich vorraus, dass es schon angelegte VLANs für Index 0,1,2 und 3 gibt. Standardmäßig sind nur Index 0 und 1 belegt. Möchtest du ein weiteres VLAN anlegen und mit direkter Indexnummer adressieren, dann musst du dein VLAN 4 mit Index [2] anlegen…Einfacher machst du es dir, wenn du dir uci Beispiele anschaust, wie man mit Index [-1] arbeitet.

Hilfreich bei VLANs ist es auch, sich den Befehl swconfig anzuschauen (z. B. swconfig dev switch0 show). So kann man dann überprüfen, was von der gedachten Konfiguration wirklich ‚angekommen‘ ist.

Also soll ich mal versuchen, dass was per /etc/config/network nicht funktioniert hat, mal per UCI zu konfigurieren? Hätte jetzt eher gedacht, da ist noch was konzeptionell falsch. Wenn ich nachher mal Zeit habe, werde ich es mal versuchen, bin ja mittlerweile fit im recovern.

Ich glaube ich verstehe da noch irgendwas grundlegendes nicht. Ist denn prinzipiell richtig, nur das mesh_wan auf ein neues vlan zu legen und dann sollte es laufen oder fehlt da noch was? Wobei das auch nicht das Fehlerbild erklären würde, dass nach der umkonfiguration kein Port mehr macht, was es soll. Unverändert sieht die /etc/config/network so aus:

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fdc0:e308:ccdd::/48'

config device 'wan_eth0_2_dev'
        option name 'eth0.2'
        option macaddr 'b0:4e:26:a7:a5:6a'

config interface 'wan6'
        option proto 'dhcpv6'
        option ifname 'br-wan'
        option ip6table '1'
        option sourcefilter '0'
        option peerdns '0'
        option reqprefix 'no'

config switch
        option name 'switch0'
        option reset '1'
        option enable_vlan '1'                                                                                                                                                                      
                                                                                                                                                                                                    
config switch_vlan                                                                                                                                                                                  
        option device 'switch0'                                                                                                                                                                     
        option vlan '1'                                                                                                                                                                             
        option ports '2 3 4 5 0t'                                                                                                                                                                   
                                                                                                                                                                                                    
config switch_vlan                                                                                                                                                                                  
        option device 'switch0'                                                                                                                                                                     
        option vlan '2'                                                                                                                                                                             
        option ports '1 0t'

config interface 'wan'
        option igmp_snooping '1'
        option ifname 'eth0.2'
        option multicast_querier '0'
        option peerdns '0'
        option auto '1'
        option type 'bridge'
        option proto 'dhcp'
        option macaddr '8a:b3:d0:2b:91:50'

config rule6 'wan6_lookup'
        option mark '0x01/0x01'
        option lookup '1'

config route6 'wan6_unreachable'
        option type 'unreachable'
        option table '1'
        option target '::/0'
        option metric '65535'
        option gateway '::'
        option interface 'loopback'

config interface 'mesh_radio0'
        option proto 'gluon_mesh'

config interface 'ibss_radio1'
        option proto 'gluon_mesh'

config interface 'mesh_wan'
        option ifname 'br-wan'
        option index '0'
        option proto 'gluon_wired'
        option disabled '1'
        option transitive '1'

config interface 'mesh_lan'
        option igmp_snooping '0'
        option ifname 'eth0.1'
        option index '4'
        option proto 'gluon_wired'
        option disabled '1'
        option transitive '1'
        option macaddr '8a:b3:d0:2b:91:54'

config interface 'client'
        option igmp_snooping '1'
        option type 'bridge'
        option auto '1'
        option ra_holdoff '30'
        option multicast_querier '1'
        option macaddr 'b0:4e:26:a7:a5:69'
        list ifname 'eth0.1'
        list ifname 'local-port'
        list ifname 'bat0'
        option ipv6 '1'
        option keep_ra_dnslifetime '1'
        option sourcefilter '0'
        option peerdns '1'
        option robustness '9'
        option reqprefix 'no'
        option query_interval '2000'
        option query_response_interval '500'
        option proto 'dhcpv6'

config device 'local_node_dev'
        option type 'veth'
        option name 'local-node'
        option peer_name 'local-port'
        option macaddr 'ac:41:95:40:f7:dc'
        option peer_macaddr 'b0:4e:26:a7:a5:69'

config interface 'local_node'
        option ifname 'local-node'
        option ip6addr 'fdac::ac/128'
        option ip6deprecated '1'
        option proto 'static'

config interface 'gluon_bat0'
        option proto 'gluon_bat0'

config interface 'bat0'
        option multicast_router '2'
        option ifname 'bat0'
        option auto '1'
        option macaddr 'b0:4e:26:a7:a5:69'
        option learning '1'
        option proto 'none'

config route6 'local_node_route6'
        option target 'fdac::/64'
        option gateway '::'
        option interface 'client'

config interface 'mesh_vpn'
        option ifname 'mesh-vpn'
        option transitive '1'
        option mtu '1406'
        option macaddr '8a:b3:d0:2b:91:57'
        option fixed_mtu '1'
        option proto 'gluon_mesh'

Kann ich eigentlich jedes Interface taggen also z.B. „br-wan.10“ oder muss da direkt ein port dran hängen?

Ich hab es jetzt erst mal den unifi mesh ac probiert und siehe da, es funktioniert auf Anhieb! Einfach network.client auf eth0.3 gelegt und aktiviert und schon geht das. Der Client, den ich ins selbe Netz gepackt habe bekommt sein IPv6 Prefix und seine IPv4 Adresse. Alles super! Dazu mesh_wan auf eth0.3 gelegt und aktiviert. Konnte leider mangels Gegenstelle noch nicht testen ob das läuft, aber macht zumindest nichts kaputt. Schade, das der Archer c7 v4 so zickig ist. :frowning:

Also mal mutig gewesen und auf dem c7 den network.client zusätzlixh auf eth0.3 gelegt. Da geht schon mal nichts kaputt. Leider gehen aber auch keine Pakete mit vlan 3 auf dem WAN-Port raus. Offenbar kommt man nicht darum, den internen switch so umzukonfigurieren, dass er die getagten Pakete auf dem richtigen Port rauswirt. Da verstehe ich aber immer noch nicht, was da bei meinem ersten Versuch falsch war, bzw. wie man es richtig macht.

Ich habe es jetzt endlich hinbekommen. Nachdem ich endlich gerafft hatte wie das mit diesen Array-Einträgen in UCI funktioniert, habe ich das vlan über UCI konfiguriert und jetzt funktioniert es. Ich weiß zwar immer noch nicht, warum das mit der Konfigurationsdatei nicht funktioniert hat aber egal.

2 „Gefällt mir“

UCI speichert ja letztlich auch nur in den Config-Dateien seinen Status ab. Damit solltest Du vergleichen können, was jetzt anders ist und wo der Fehler war.

Auf den ersten Blick sieht das genau so aus wie das, was ich geschrieben hatte. Wahrscheinlich irgendwas ganz blödes, aber leider habe ich meine Datei nicht mehr.

Meine bisherige Erkenntnis zu vlans mit Gluon:

  • Manche Router unterstützen nur einen eingeschränkt Anzahl und Wertebereich, wobei das keine so große Einschränkung sein sollte. Man darf einfach keine zu „hohen“ Vlans nehmen.
  • Manche Router verwenden intern Vlans um die Interface auf die entsprechenden Switchports zu legen. Da Gluon bei den Ports aber nur zwischen „WAN“ und „LAN“ unterscheidet, sollte man wahrscheinlich save sein, wenn man vlan 1 und 2 nicht nutzt.
  • Es gibt wohl auch noch Router, bei denen die CPU über mehrere Ports mit dem internen Switch verbunden ist. Da muss ich mir mal ein Beispiel ansehen, was das genau für die Konfiguration bedeutet.