So leiten Sie zwischen physischen Netzwerkschnittstellen innerhalb der Bridge um

So leiten Sie zwischen physischen Netzwerkschnittstellen innerhalb der Bridge um

Ich habe einen Heim-PC mit einer kabelgebundenen Ethernet-Verbindung (an den Router angeschlossen) und einer WLAN-Karte. Das WLAN ist als Zugriffspunkt (hostapd) konfiguriert und die Netzwerkschnittstellen sind überbrückt:

auto enp0s10
iface enp0s10 inet manual

auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual

auto br0
iface br0 inet dhcp
bridge_ports wlan0 enp0s10
netmask 255.255.255.0

Es gibt einige iptablesRegeln, die ausgewählten Verkehr betreffen, der durch daswlan0Schnittstelle nur mit dem --physdev-inSelektor. Dieses Setup funktioniert wie erwartet.
Was ich jetzt versuche, ist einen Mechanismus zu haben, um ausgewählte Prozesse auf dem Gerät zu zwingen,nur Verkehr durchleiten wlan0.
Einer Spur folgenHierIch habe es versucht:

> sudo ip netns add myNamespace
> sudo ip link set wlan0 netns myNamespace
RTNETLINK answers: Invalid argument 

Was - soweit ich es beurteilen kann - bedeutet:

  • dass ich die physische Schnittstelle nicht benennen kann, da sie überbrückt ist
  • Ich kann keinen netnsNamespace verwenden, um mein Ziel zu erreichen

EDIT: gemäß dem untenstehenden Vorschlag vonSchwerkraftIn Kombination mit dem oben genannten Hinweis habe ich Folgendes versucht:

> sudo ip netns show
> sudo ip netns add myNamespace
> sudo ip netns show
myNamespace
> sudo iw phy phy0 set name myNamespace
> sudo ip netns exec myNamespace ip link show
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

Muss ich zu diesem Zeitpunkt damit rechnen, entwederphy0oderwlan0aufgelistet? Der iw phy phy0 set name myNamespaceBefehl gibt keine Fehlermeldung zurück, aber keine der Schnittstellen scheint hinzugefügt worden zu seinmeinNamespace. Wie vorherzusehen war, schlägt der Versuch, die Schnittstelle aufzurufen, fehl:

> sudo ip netns exec myNamespace ifconfig wlan0 192.168.0.10/24 up
SIOCSIFADDR: No such device
wlan0: ERROR while getting interface flags: No such device
wlan0: ERROR while getting interface flags: No such device
SIOCSIFNETMASK: No such device
> sudo ip netns exec myNamespace ifconfig phy0 192.168.0.10/24 up  
SIOCSIFADDR: No such device
phy0: ERROR while getting interface flags: No such device
phy0: ERROR while getting interface flags: No such device
SIOCSIFNETMASK: No such device<br/>

Auch hier vermute ich, dass dies durch die Brückenkonfiguration erschwert wird.

Plan B besteht darin, einen Benutzer/eine Gruppe speziell für diese Aufgabe zu erstellen (nennen wir sieWLAN-Verkehr) und iptablesleiten Sie den Datenverkehr dieses Benutzers um aufwlan0wenn/falls esenp0s10.
Hier stecke ich fest. Die Regel würde ungefähr so ​​aussehen:

iptables -t nat -A PREROUTING -m owner --gid-owner wlantraffic -m physdev ! --physdev-in wlan0 -j ???

dh "Verkehr von GruppeWLAN-VerkehrDasnichtbetrat die Brücke überwlan0sollte umgeleitet werden inwlan0"
Bei den Paketen handelt es sich um ganz normalen Internetverkehr.
Meine Fragen sind:

  • Ist das PREROUTINGeine FORWARDRegel?
  • Wenn ich Pakete abgleichen würde DROP– im Kontext einer Brücke – würden die Pakete dann zur nächsten Schnittstelle „durchfallen“?
  • Wie gebe ich diewlan0Schnittstelle als Ziel?

Antwort1

Ich kann keinen NTNS-Namespace verwenden, um mein Ziel zu erreichen

Die Brücke könnte Ihr Problem sein. Allerdings:

WLAN-Schnittstellen sind etwas seltsam, wenn es um Netzwerk-Namespaces geht. Jeder Adapter hat zwei Schichten – phy (repräsentiert die physische Hardware) und netdev (repräsentiert die Netzwerkschnittstelle).

(Der Grund dafür ist, dass mehrere Netdevs auf derselben PHY möglich sind, z. B. Client+AP, oder dass ein Dualband-WLAN-Adapter WLAN0 und WLAN1 gleichzeitig in verschiedenen Netzwerken betreiben könnte. Wenn Sie neugierig sind, prüfen Sie, iw phywelche Kombinationen für Ihren Adapter unterstützt werden.)

Linux hat derzeit eine Einschränkung, dass diegesamteDas PHY-Gerät muss in einen Namespace verschoben werden; die einzelnen Netdevs können nicht verschoben werden. Verwenden Sie dazu iw:

iw phy phy0 set netns myNamespace

Handelt es sich hierbei um eine PREROUTING- oder eine FORWARD-Regel?

Generell kommt es darauf an, welche Aktion (der -jParameter) verwendet wird. Manche machen nur bei FORWARD Sinn, andere nur bei PREROUTING; manche funktionieren nur bei -t nat, andere nur bei -t mangle.

Wenn ich übereinstimmende Pakete VERWERFEN würde – im Kontext einer Brücke – würden die Pakete dann zur nächsten Schnittstelle „durchfallen“?

Nein. Iptables-Regeln gelten für IP und werden verarbeitet, bevor das Paket die Brückenschicht erreicht. Wenn das Paket auf der IP-Schicht gelöscht wird, ist es weg.

verwandte Informationen