<!doctype html>
<html>
 <head> 
  <meta charset="UTF-8"> 
 </head>
 <body>
  <div>
   Hallo Rainer, Hallo Liste,
   <br>
  </div>
  <div class="default-style">
   <br>
  </div>
  <div class="default-style">
   im Prinzip ergibt deine Frage wenig Sinn: Wenn du den Traffic zwischen den Clients filtern willst, <strong>muss</strong> der gesammte Traffic durch deine Firewall laufen. Du hast dann also so oder so die komplette Client Isolation, nur dass die Firewall den Traffic dann selektiv weiterleitet.
  </div>
  <div class="default-style">
   In Fall eines Linux APs bietet sich natürlich an, dass der auch die Firewallrolle übernimmt.
   <br>
  </div>
  <div class="default-style">
   <br>
  </div>
  <div class="default-style">
   Ohne Client Isolation läuft der Traffic nicht zwangsweise durch deinen Filter, und damit kannst du ihn eben auch nicht filtern.
   <br>
  </div>
  <div class="default-style">
   <br>
  </div>
  <div class="default-style">
   Weil mich die Details auch interessieren, habe ich mich mal schlau gelesen:
  </div>
  <div class="default-style">
   (Achtung: Auch den letzten Absatz zum Thema br0 interface beachten!)
   <br>
  </div>
  <div class="default-style">
   <br>
  </div>
  <div class="default-style">
   In reinem 802.11 läuft die Kommunikation zwischen den Clients stets über den AP (unter Linux realisiert durch hostapd). Die Frage ist dann aber, ob die Datenpakete erst im Netzwerkstack an die IP Layer (aka Layer 3) hochgereicht werden - also iptables und damit die Firewall erreichen - oder ob die Hardware die WLAN Frames anhand der MAC Adresse direkt auf der niedrigeren MAC Layer (Layer 2) weiterleitet.
   <br>
  </div>
  <div class="default-style">
   <br>
  </div>
  <div class="default-style">
   Und genau hier greift die Client Isolation ein. Die Beschreibung in der hostapd.conf sagt:
   <br>
  </div>
  <div class="default-style">
   <pre style="color: #000000; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"># Client isolation can be used to prevent low-level bridging of frames between
# associated stations in the BSS. By default, this bridging is allowed.
#ap_isolate=1
</pre>
  </div>
  <div class="default-style">
   Ich lese das so: Wenn ein Client Alice Daten an einen Client Bob im selben WLAN senden will, dann setzt Alice die MAC Adresse von Bob in den WLAN Frame. Die WLAN Hardware (oder der WLAN Treiber) des AP sieht dann, dass die MAC von Bob sich im selben WLAN befindet wie die von Alice, und leitet den Frame direkt weiter - ähnlich wie bei einem Netzwerkswitch, er arbeitet auch nur auf Layer 2, also den MAC Adressen. TCP/IP ist aber Layer 3 und wird dabei garnicht beachtet. Macht auch Sinn, weil man so weniger Last auf der CPU des AP erzeugt. Ist bei einem modernen Linux Rechner relativ egal, aber bei einem mickrigen, eingebetteten System unter Umständen problematisch.
   <br>
  </div>
  <div class="default-style">
   <br>
  </div>
  <div class="default-style">
   Zusätzlich gibt es augenscheinlich mindestens zwei weitere Optionen, wie Clients direkt kommunizieren können, die ebenfalls unterbunden werden sollten:
   <br>
  </div>
  <div class="default-style">
   <br>
  </div>
  <div class="default-style">
   1. Jeder Client erhält neben dem individuellen Session Key zur verschlüsselten Kommunikation mit dem AP den einheitlichen GFK. Mit diesem können die Clients Broadcasts senden, die jeder andere Client dann auch wieder entschlüsseln kann. Das kann man in hostapd mit "disable_dgaf=1" abschalten (dann erhält jeder Client einen individuellen GFK). Die Option ist unter "Hotspot 2.0" gelistet, ich bin mir aber nicht sicher, ob das damit irgendwas zu tun hat. Aber diese Stackoverflow Antwort klingt stark danach:
   <br>
  </div>
  <div class="default-style">
   <a href="https://superuser.com/questions/1198712/iptables-to-filter-traffic-exchanged-within-the-same-wireless-lan">https://superuser.com/questions/1198712/iptables-to-filter-traffic-exchanged-within-the-same-wireless-lan</a>
   <br>
  </div>
  <div class="default-style">
   Auch bei dem Link beachten, dass Client Isolation aktiviert werden soll.
   <br>
  </div>
  <div class="default-style">
   <br>
  </div>
  <div class="default-style">
   2. Wenn 802.11z (TDLS - Tunneled Direct Link Setup") aktiviert ist, können Clients direkt kommunizieren. Wikipedia sagt, dass der Chromecast das für Streaming z.B. vom Laptop Bildschim einsetzt. In der hostapd.conf sollte man das mit tdls_prohibit=1 verhindern können.
   <br>
  </div>
  <div class="default-style">
   <br>
  </div>
  <div class="default-style">
   <br>
  </div>
  <div class="default-style">
   Außerhalb des WLANs kommt noch das Bridge Interface in deinem Linux dazu, d.h. falls du das nutzt: Wenn dein wlan0 Interface mit dem Ethernet Interface eth0 als bridge br0 konfiguriert ist, sollte es so sein, dass das Bridge Interface die Weiterleitung auch wieder direkt auf der Layer 2 übernimmt. Also bevor die Pakete iptables erreichen. Das kann man aber wohl umstellen, siehe folgender Stackoverflow Beitrag:
   <br>
  </div>
  <div class="default-style">
   <a href="https://unix.stackexchange.com/questions/499756/how-does-iptable-work-with-linux-bridge">https://unix.stackexchange.com/questions/499756/how-does-iptable-work-with-linux-bridge</a>
  </div>
  <div class="default-style">
   Den conntrack Teil solltest du erstmal ignorieren können, wichtig ist, dass mit bridge-nf-call-iptables alle Pakete, die durch die Bridge gehen, auch von iptables gefiltert werden.
   <br>
  </div>
  <div class="default-style">
   <br>
  </div>
  <div class="default-style">
   <br>
  </div>
  <div class="default-style">
   Ich hoffe, ich konnte dir halbwegs weiterhelfen.
   <br>
  </div>
  <div class="default-style">
   <br>
  </div>
  <div class="default-style">
   Gruß,
   <br>
  </div>
  <div class="default-style">
   Sebastian
   <br>
  </div>
  <blockquote type="cite">
   <div>
    Rainer Martin <rainer@martinrainer.de> hat am 14.02.2022 21:08 geschrieben:
   </div>
   <div>
    <br>
   </div>
   <div>
    <br>
   </div>
   <p>Hallo Leute,</p>
   <p><br></p>
   <p>ich suche eine Möglichkeit, Datenpakete im WLAN zu filtern, also auch zwischen den Endgeräten.</p>
   <p>Müsste doch mit einem Linux-WLAN-AccessPoint und Filter auf dem Bridge-Interface möglich sein, oder?</p>
   <p>Ich will keine komplette Client-Isolation.<br></p>
   <p>Was mich wundert ist, dass ich dazu nix finde ... Macht die WLAN-Hardware im AP-Mode die Weiterleitung autark, ohne Möglichkeit selektiv zu filtern?</p>
   <p><br></p>
   <p>Vielen Dank schon mal,</p>
   <p>                      Rainer</p>
   <p><br></p>-- 
   <br>public@lists.hacksaar.de - Öffentliche Liste Technik Kultur Saar e.V.
   <br>Konfiguration: https://lists.hacksaar.de/listinfo/public
   <br>Abbestellen: public-unsubscribe@lists.hacksaar.de
   <br>
  </blockquote>
 </body>
</html>