pfSense: Ethernet Errors als KVM Guest

Achtung! Dieser Artikel ist älter als ein Jahr. Der Inhalt ist möglicherweise nicht mehr aktuell!

Ich hatte seit dem Update auf pfSense 2.3 „Network In“ Errors auf drei meiner virtuellen NICs. Vor allem, wenn Traffic größer als 600 MBit/s durch die Firewall geroutet werden, ging der Fehlerzähler stark nach oben. Im Alltag bemerkte man das nicht, jedoch mag ich es nicht, wenn man ein Problem verdrängt.

Diagnose

Mit Hilfe von netstat kann man sich den Fehlercounter pro Interface anzeigen lassen:

[2.3.1-RELEASE][admin@firewall.veloc1ty.lan]/root: netstat -i
Name    Mtu Network       Address              Ipkts Ierrs Idrop    Opkts Oerrs  Coll
em0  1500 <Link#1>      52:54:00:22:c1:4e  6382653     0     0  3615536     0     0
em0     - fe80::5054:ff fe80::5054:ff:fe2        0     -     -        0     -     -
em0     - 192.168.0.0   192.168.0.2         130795     -     -   130793     -     -
em1  1500 <Link#2>      52:54:00:4b:db:65  3565098  1764     0  6262855     0     0
em1     - fe80::5054:ff fe80::5054:ff:fe4        0     -     -        0     -     -
em1     - 192.168.1.0   firewall             26136     -     -     5083     -     -
em2  1500 <Link#3>      52:54:00:0c:74:9a  1247489   866     0  1083952     0     0
em2     - fe80::5054:ff fe80::5054:ff:fe0        0     -     -        0     -     -
em2     - 192.168.2.4/3 gw-overwatch         32648     -     -    39455     -     -
em3  1500 <Link#4>      52:54:00:f3:52:7f        5     0     0       67     0     0
em3     - fe80::5054:ff fe80::5054:ff:fef        0     -     -        0     -     -
em3     - 192.168.2.0/3 gw-torrent               0     -     -        0     -     -
em4  1500 <Link#5>      52:54:00:3c:81:23   897703 14899     0  1025503     0     0
em4     - fe80::5054:ff fe80::5054:ff:fe3        0     -     -        0     -     -
em4     - 192.168.3.0/2 gw-servers            4408     -     -    14210     -     -

Hier ist der Wert von „Ierrs“ bei den Schnittstellen em1, em2 und em4 sehr hoch.

Ethernet Errors entstehen zum Beispiel durch

Ein Blick auf das Hostsystem hat mir verraten, dass die physischen Netzwerk Interfaces und die Bridges keine Fehler aufgezeichnet haben. Das Problem liegt also nicht am Hostsystem oder an der Verkabelung bzw. mein Netzwerk Equipment.

Die pfSense Firewall läuft mit e1000 emulierten virtuellen Netzwerkkarten. Ich hatte diese in Verdacht, da ich bei allen anderen Servern virtio als Treiber benutzt wird. Ich habe die Firewall dann umgebaut auf virtio Treiber.

Zusammenbruch meines Routings

Nach der Umstellung ging nichts mehr. Zuerst dachte ich mir, dass es ein Problem mit einer Regel gibt. Ich habe alles durchgeschaut und keinen Fehler gefunden. Selbst als ich Traffic Filtering in pfSense ausgeschaltet habe ging es nicht.

Ich war in der Lage ICMP Echo Requests an IP Adressen über NICs hinweg abzusetzen und habe auch ICMP Echo Replys erhalten. Bei allen anderen Protokollen schlug ein Verbindungsaufbau fehl. Ein Trace auf der Firewall zeigte dann folgendes Bild:

pfsense_virtio_case

Das TCP SYN Paket ging raus, der Server antwortete mit einem ACK. Dieses ACK blieb dann bei em1 hängen. Darafhin hat mein Laptop ein Retransmission des SYN Pakets geschickt, während der Server gleichzeitig mit dem ACK Paket ein Retransmission versuchte.

Die Lösung des Problems ist eine Einstellung in pfSense. Diese heißt „Hardware Checksum Offloading“ und muss aktiviert sein, damit die Kommunikation reibungslos funktioniert. Diese Einstellung findet man unter System -> Advanced -> Networking -> Network Interfaces.

pfSense_hardware_checksum_offloading

Nach einem Neustart der Firewall läuft der Traffic wieder ungehindert. Seit gestern habe ich dieses Setup im Einsatz und keine Network Errors mehr gesehen.


Du hast einen Kommentar, einen Wunsch oder eine Verbeserung? Schreib mir doch eine E-Mail! Die Infos dazu stehen hier.

🖇️ = Link zu anderer Webseite
🔐 = Webseite nutzt HTTPS (verschlüsselter Transportweg)
Zurück