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.)
ens20.4
Angenommen , diese Schnittstelle hat den Namen , ihr vlan-raw-Gerät ist ens20
und die Zielschnittstelle (zum Testen des Paketflusses ) wird benannt ens20.2
(obwohl sie für jede Zielschnittstelle funktionieren sollte).
Ich habe versucht, die rp_filter
Eigenschaft ens20.4
nur für zu setzen , ohne Erfolg:
echo 0 > /proc/sys/net/ipv4/conf/ens20.4/rp_filter
Zu Testzwecken habe ich daher auch rp_filter
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?
Antworten:
Infos dort: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/tree/Documentation/networking/ip-sysctl.txt?h=v4.9#n1090
Beachten Sie den letzten Satz, der Ihre Versuche erklären würde:
Das sollte also funktionieren:
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.
quelle