
Ich möchte sehen, wie sich die Routing-Tabelle auf einem Linux-System ändert, wenn ein ICMP-Redirect empfangen wird. Dafür verwende ich
icmpush -v red -sp current-gateway -gw new-gateway -dest google.com -c host -prot tcp my-eth1-ip-address
(was Erfolg zurückgibt), aber das Ergebnis von
route -n
bleibt gleich. Natürlich habe ich die Ausgabe von
cat /proc/sys/net/ipv4/conf/eth1/accept_redirects
das ist 1. Dies ist eine Ubuntu 12-Maschine mit der letzten stabilen Kernelversion, keine Firewall installiert.
Also die Frage: Was könnte schieflaufen?
Antwort1
EntsprechendDokumentation/Netzwerk/ip-sysctl.txt, standardmäßig werden Weiterleitungen nur für die Gateways akzeptiert, die bereits in der Routing-Tabelle aufgeführt sind.
secure_redirects - Boolescher Wert Akzeptieren Sie ICMP-Umleitungsnachrichten nur für Gateways, in der Liste der Standard-Gateways aufgeführt. secure_redirects für die Schnittstelle wird aktiviert, wenn mindestens einer der conf/{all,interface}/secure_redirects ist auf TRUE gesetzt, Andernfalls wird es deaktiviert Standardmäßig TRUE
Antwort2
Eine Annahme: Der Aufruf von icmpush
verwendet nicht die externe Schnittstelle eth1
, sondern die des lokalen Hosts lo
, sodass der Kernel nicht erkennt, dass es sich um eine korrekte Umleitung vom Gateway handelt. Außerdem wurden diese Routen in sehr alten Versionen des Linux-Kernels nicht in der Antwort von angezeigt route -n
. Wie ich bereits bemerkt habe, könnte die Antwort von route -nC
die richtige Möglichkeit sein, auch die temporäre Umleitungsroute einzuschließen.
@grawity, zum Thema Akzeptieren von Weiterleitungen, die als Antwort auf ein anderes Paket gesendet wurden: hast du das irgendwo gelesen? Das würde mich nämlich wirklich interessieren.