Iptables führt dazu, dass SSH hängen bleibt?

Iptables führt dazu, dass SSH hängen bleibt?

Ich habe einen Server, auf dem mehrere VMs über zwei Bridges laufen, und möchte den Host über iptables sichern.

Ich habe also die Standardeinstellungen für IN/OUTPUT: drop und FORWARD: accept und einige IN/OUTPUT-Regeln, die mir SSH-Zugriff ermöglichen.

Das Problem bei diesem Setup ist nun, dass SSH-Sitzungen scheinbar einfrieren, wenn ein Befehl einige Ausgabezeilen erzeugt. Beispielsweise datefunktioniert, aber iptables -Loder topbleibt mitten in der Ausgabe hängen. Ich kann die Sitzung mit beenden ~., mich erneut anmelden, iptables auf Standard zurücksetzen und alles funktioniert wieder.

Auch nach dem Festlegen der iptables-Regeln dauert es eine Weile, bis das Problem auftritt. Ich konnte den genauen Zeitrahmen nicht bestimmen, es waren wohl zwischen 5 und 20 Minuten.

Irgendeine Idee, was ein solches Problem verursachen könnte oder wie man es diagnostizieren würde?

Antwort1

Versuchen Sie es auszuführen iptables -L -n(fügen Sie die Option -n hinzu). Die Namensauflösung kann dazu führen, dass iptables -L hängen bleibt.

Antwort2

Blockieren Sie ICMP vollständig? Wenn ja, haben Sie möglicherweise einePMTU Schwarzes Loch.

Antwort3

Verfügen Sie über eine Iptable-Regel, um etablierten Datenverkehr durchzulassen?

iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Ich habe dieses Problem auch aufgrund eines Split Horizon im Netzwerk gesehen, aber das klingt nicht nach Ihrem Problem, da das Problem verschwindet, wenn Sie die iptable-Regeln entfernen

Antwort4

Dies könnte ein MTU-Schwarzlochproblem sein.

MTU ist die maximale Übertragungseinheit; sie gibt an, wie groß ein Paket sein muss, das jede Seite verarbeiten kann. Ethernet ist standardmäßig auf 1500 Byte eingestellt, aber das ist bei weitem nicht die einzige Möglichkeit.

Kurze Befehle funktionieren, weil sie unter beiden MTU-Größen liegen. Längere Befehle funktionieren nicht, weil sie es nicht sind.

Wenn beide Enden der Verbindung nicht dieselbe MTU verwenden oder wenn das Netzwerk in der Mitte eine kleinere MTU hat, müssen Ihre Systeme dies irgendwie herausfinden. Dieser Vorgang wird als „Path MTU Discovery“ bezeichnet.

Dies geschieht bei ICMP-Nachrichten. Wenn Sie alle ICMP-Nachrichten blockieren, blockieren Sie damit auch nützliche Dinge.

Mehr Infos hier:Warum ICMP nicht blockieren?

Beachten Sie auch, dass die Pfad-MTU-Erkennung nicht funktioniert, wenn sich das Small-MTU-Netzwerk in der Mitte auf Schicht 2 befindet (z. B. die von Ihnen konfigurierten Brücken). Die Pakete werden einfach gelöscht und als Fehler auf dem Switch/der Brücke und/oder den Ethernet-Schnittstellen angezeigt.

verwandte Informationen