it-swarm.com.de

Deaktivieren von rp_filter auf einer Schnittstelle

Ich habe einen Ubuntu 16.04 Server, der als Router mit mehreren (VLAN) Schnittstellen fungiert. Standardmäßig ist rp_filter (Umkehrpfadfilterung) für alle Schnittstellen aktiviert. Ich möchte es so halten, aber eine Ausnahme für genau eine Schnittstelle machen. (Pakete von dieser Schnittstelle sollten eine Quell-IP-Adresse haben dürfen, die keiner Routing-Zieladresse dieser Schnittstelle entspricht.)

Angenommen, diese Schnittstelle hat den Namen ens20.4, Ihr vlan-raw-Gerät ist ens20 Und die Zielschnittstelle (zum Testen des Paketflusses) heißt ens20.2 (Obwohl dies der Fall ist) sollte für jede Zielschnittstelle funktionieren).

Ich habe versucht, die Eigenschaft rp_filter Nur für ens20.4 Festzulegen, ohne Erfolg:

echo 0 > /proc/sys/net/ipv4/conf/ens20.4/rp_filter

Zu Testzwecken habe ich auch rp_filter Für das vlan-raw-Gerät und die Testzielschnittstelle deaktiviert:

echo 0 > /proc/sys/net/ipv4/conf/ens20/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/ens20.2/rp_filter

Immer noch kein Erfolg, Pakete mit einer "gefälschten" Quell-IP-Adresse werden immer noch verworfen. Nur wenn ich rp_filter Für alle Schnittstellen deaktiviere, kommen Pakete durch:

echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter

Ich möchte jedoch weiterhin die Umkehrpfadfilterung für alle anderen Schnittstellen beibehalten - was fehlt mir?

9
Cybran

Infos dort: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/tree/Documentation/networking/ip-sysctl.txt?h=v4 .9 # n109

Beachten Sie den letzten Satz, der Ihre Versuche erklären würde:

Der Maximalwert von conf/{all, interface}/rp_filter wird verwendet, wenn die Quellvalidierung auf der {interface} durchgeführt wird.

Das sollte also funktionieren:

for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo 1 > "$i"
done
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/ens20.4/rp_filter

Jetzt max (conf/{all, ens20.4}/rp_filter == 0: keine Quellenüberprüfung. Überprüfen Sie einfach, ob die anderen Schnittstellen noch geschützt sind.

Sie können auch "lose" rpf mit dem Wert 2 überprüfen. Falls das Paket normalerweise von einer anderen Schnittstelle weitergeleitet werden sollte, wäre dies besser als keine Validierung.

12
A.B