fff-babeld: Add rule to lookup in fff table for everything except wireguard

Submitted by Christian Dresel on Dec. 2, 2020, 8:34 p.m.

Details

Message ID 20201202203431.17575-1-freifunk@dresel.systems
State Superseded
Headers show

Commit Message

Christian Dresel Dec. 2, 2020, 8:34 p.m.
From: Christian Dresel <fff@chrisi01.de>

With this patch the router answer in traceroute over the fff table with
Freifunk IPs and not with the WAN IP. All other connections use the fff
table too.

We have the rule with 5000 and 5001 so that wireguard does not use the fff
table and build the VPN only over the main table.

Signed-off-by: Christian Dresel <freifunk@dresel.systems>
---
 .../fff/fff-babeld/files/etc/uci-defaults/02-network-rules   | 5 +++++
 1 file changed, 5 insertions(+)

Patch hide | download patch | download mbox

diff --git a/src/packages/fff/fff-babeld/files/etc/uci-defaults/02-network-rules b/src/packages/fff/fff-babeld/files/etc/uci-defaults/02-network-rules
index df78e16..589632b 100644
--- a/src/packages/fff/fff-babeld/files/etc/uci-defaults/02-network-rules
+++ b/src/packages/fff/fff-babeld/files/etc/uci-defaults/02-network-rules
@@ -37,6 +37,11 @@  uci batch <<EOF
   set network.@rule6[2].in='mesh'
   set network.@rule6[2].lookup='10'
   set network.@rule6[2].priority='31'
+  add network rule6
+  set network.@rule6[3]=rule6
+  set network.@rule6[3].src='::/0'
+  set network.@rule6[3].lookup='10'
+  set network.@rule6[3].priority='32000'
 EOF
 
 uci commit network

Comments

Fabian Blaese Dec. 2, 2020, 10:45 p.m.
Hallo,

ich gebe dabei zu bedenken, dass dies das Debugging von Tunneln erschweren könnte, weil dann natürlich sämtlicher vom Router selbst ausgehender Traffic immer erst durch die fff-table geht.
Ein Traceroute zeigt also nicht den Weg über WAN, sondern den Weg über FFF an.

Ansonsten müsste das so funktionieren und dürfte abgesehen davon auf den ersten Blick auch keine anderen Probleme erzeugen.

Deutlich schöner fände ich zwar, wenn man beides in Namespaces kapselt. Allerdings weiß ich nicht, wie man so etwas mit OpenWrt "schön" lösen kann, ohne tausend Zeilen Skript dazu nebenher laufen lassen zu müssen.

Gruß
Fabian

P.S.: Der Commit stammt von einer andere Mail-Adresse als die Mail. Das möchtest du wahrscheinlich noch ändern.

On 02.12.20 21:34, Christian Dresel wrote:
> From: Christian Dresel <fff@chrisi01.de>
> 
> With this patch the router answer in traceroute over the fff table with
> Freifunk IPs and not with the WAN IP. All other connections use the fff
> table too.
> 
> We have the rule with 5000 and 5001 so that wireguard does not use the fff
> table and build the VPN only over the main table.
> 
> Signed-off-by: Christian Dresel <freifunk@dresel.systems>
> ---
>   .../fff/fff-babeld/files/etc/uci-defaults/02-network-rules   | 5 +++++
>   1 file changed, 5 insertions(+)
> 
> diff --git a/src/packages/fff/fff-babeld/files/etc/uci-defaults/02-network-rules b/src/packages/fff/fff-babeld/files/etc/uci-defaults/02-network-rules
> index df78e16..589632b 100644
> --- a/src/packages/fff/fff-babeld/files/etc/uci-defaults/02-network-rules
> +++ b/src/packages/fff/fff-babeld/files/etc/uci-defaults/02-network-rules
> @@ -37,6 +37,11 @@ uci batch <<EOF
>     set network.@rule6[2].in='mesh'
>     set network.@rule6[2].lookup='10'
>     set network.@rule6[2].priority='31'
> +  add network rule6
> +  set network.@rule6[3]=rule6
> +  set network.@rule6[3].src='::/0'
> +  set network.@rule6[3].lookup='10'
> +  set network.@rule6[3].priority='32000'
>   EOF
>   
>   uci commit network
>
Christian Dresel Dec. 3, 2020, 4:30 p.m.
Hallo Fabian

On 02.12.20 23:45, Fabian Bläse wrote:
> Hallo,
>
> ich gebe dabei zu bedenken, dass dies das Debugging von Tunneln
> erschweren könnte, weil dann natürlich sämtlicher vom Router selbst
> ausgehender Traffic immer erst durch die fff-table geht.
> Ein Traceroute zeigt also nicht den Weg über WAN, sondern den Weg über
> FFF an.

Hast du Recht aber ich hab 3 Gegenargumente:

1) Wenn ich was im Freifunk analysieren will, geht der Kram immer über
WAN => nervt und ich muss mir einen Router ohne WAN suchen oder die
Rules umbiegen

2) Bei einen Router ohne WAN ist es schon so, das es über Freifunk geht
(zwangsweise, weil keine andere Möglichkeit) => Router verhalten sich
aktuell unterschiedlich je nachdem was wie angeschlossen ist, man muss
da u.U. aufpassen.

3) Und mein Standartargument: Das sind Freifunkrouter, die sollen soviel
wie möglich per Freifunk abwickeln, darunter fällt mMn alles außer eben
Tunnel worüber Freifunk transportiert wird. Beispiel:

root@fln:~# traceroute 2a06:e881:340b::1
traceroute to 2a06:e881:340b::1 (2a06:e881:340b::1), 30 hops max, 64
byte packets
 1  2001:a62:418:815a:20d:b9ff:fe43:b5ce
(2001:a62:418:815a:20d:b9ff:fe43:b5ce)  0.407 ms  0.644 ms  0.330 ms
 2  2001:a60::911:202:1 (2001:a60::911:202:1)  4.967 ms  9.683 ms  3.848 ms
 3  2001:a60::69:0:2:2 (2001:a60::69:0:2:2)  5.402 ms  6.681 ms  5.524 ms
 4  ipv6.de-cix.fra.de.as56381.level66.network (2001:7f8::dc3d:0:1) 
9.696 ms  7.042 ms  6.644 ms
 5  2a09:11c0:0:1::1 (2a09:11c0:0:1::1)  7.616 ms  6.876 ms  7.016 ms
 6  saturn.dresel.systems (2a06:e881:3400::1)  14.058 ms  15.502 ms 
14.363 ms
 7  b00000000000000000001.freifunk.dresel.systems (2a06:e881:340b::1) 
25.207 ms  25.690 ms  22.631 ms

das wären eigentlich nur 2 Richtfunk Hops... Eigentlich... Wenn er in
die richtige Table gucken würde und sich als Freifunkrouter sehen würde.
Ich hatte damit z.b. auch immer Probleme wenn man einen DNS Server
betreibt und nur F3N und meine Adressen erlauben will, das geht bei
Routern mit WAN Anschluss immer mächtig schief weil sie (siehe im oberen
Fall) mit der M-Net IP (bzw. halt WAN IP) rein kommen würden (meine
Notlösung war dann immer, ULA Adressen zu verwenden, die blieben
logischerweise sicher intern).

>
> Ansonsten müsste das so funktionieren und dürfte abgesehen davon auf
> den ersten Blick auch keine anderen Probleme erzeugen.

Ich hab das seit gestern bei mir laufen und augenscheinlich auch keine
Probleme:

root@fff-gw-hh:~# traceroute 2a09::
traceroute to 2a09:: (2a09::), 30 hops max, 64 byte packets
 1  b00000000000000000001.freifunk.dresel.systems (2a06:e881:340b::1) 
12.629 ms  11.303 ms  3.595 ms
 2  jupiter.dresel.systems (2a01:4f8:221:2d08::200)  26.547 ms  11.419
ms  14.935 ms
 3  ext.netshelter.fra.f3netze.de (2a0b:f4c0:400::)  24.122 ms  30.734
ms  26.535 ms
 4  e01.fra.de.as49697.net (2001:678:a00:1000::5)  23.359 ms  24.580 ms 
35.244 ms
 5  public-dns-a.dns.sb (2a09::)  69.611 ms  34.543 ms  27.966 ms

1. Hop ist mein Layer 3 Router in meinem Wohnzimmer, er antwortet nun
nicht mehr mit der Telekom IP sondern mit seiner Freifunk IP, es
funktioniert hier alles soweit wunderbar wenn ich das richtig überblicke.

>
> Deutlich schöner fände ich zwar, wenn man beides in Namespaces
> kapselt. Allerdings weiß ich nicht, wie man so etwas mit OpenWrt
> "schön" lösen kann, ohne tausend Zeilen Skript dazu nebenher laufen
> lassen zu müssen.
Stimmt, wäre dann aber wohl ein neues Projekt, wenn es wer machen will,
gerne machen, solang fände ich aber erstmal meine Lösung schöner als das
was wir aktuell haben.
>
> Gruß
> Fabian
>
> P.S.: Der Commit stammt von einer andere Mail-Adresse als die Mail.
> Das möchtest du wahrscheinlich noch ändern.

Japp ich hatte das git noch vermasselt hier, wenn kein
Einwand/Änderungwunsch mehr kommt, schicke ich die Tage nochmal eine v2
mit richtiger Mail.

Gruß

Christian

>
> On 02.12.20 21:34, Christian Dresel wrote:
>> From: Christian Dresel <fff@chrisi01.de>
>>
>> With this patch the router answer in traceroute over the fff table with
>> Freifunk IPs and not with the WAN IP. All other connections use the fff
>> table too.
>>
>> We have the rule with 5000 and 5001 so that wireguard does not use
>> the fff
>> table and build the VPN only over the main table.
>>
>> Signed-off-by: Christian Dresel <freifunk@dresel.systems>
>> ---
>>   .../fff/fff-babeld/files/etc/uci-defaults/02-network-rules   | 5 +++++
>>   1 file changed, 5 insertions(+)
>>
>> diff --git
>> a/src/packages/fff/fff-babeld/files/etc/uci-defaults/02-network-rules
>> b/src/packages/fff/fff-babeld/files/etc/uci-defaults/02-network-rules
>> index df78e16..589632b 100644
>> ---
>> a/src/packages/fff/fff-babeld/files/etc/uci-defaults/02-network-rules
>> +++
>> b/src/packages/fff/fff-babeld/files/etc/uci-defaults/02-network-rules
>> @@ -37,6 +37,11 @@ uci batch <<EOF
>>     set network.@rule6[2].in='mesh'
>>     set network.@rule6[2].lookup='10'
>>     set network.@rule6[2].priority='31'
>> +  add network rule6
>> +  set network.@rule6[3]=rule6
>> +  set network.@rule6[3].src='::/0'
>> +  set network.@rule6[3].lookup='10'
>> +  set network.@rule6[3].priority='32000'
>>   EOF
>>     uci commit network
>>
>