pondělí 19. dubna 2010

pfSense vs Linux eth0 TSO on

Dnes provozovat firemní router bez firewalu je asi nemyslitelné. Řešil jsem takový malý problém. Jako firewall jsem užil pfSense 1.2.3-RELEASE a v něm je definované pravidlo povolující port 22 ze serverů v internetu na servery ve firemní DMZ. Komunikace ze 3 serverů funguje a nefungovala a po přidání nového serveru HP model přesně nevím s os Ubuntu 8.04.4 SE a síťovou kartou broadcom s driverem bnx2.

ethtool -i eth0
driver: bnx2
version: 2.0.2
firmware-version: 4.6.4 NCSI 1.0.3
bus-info: 0000:02:00.0

dmesg | grep eth0
eth0: Broadcom NetXtreme II BCM5709 1000Base-T (C0) PCI Express
bnx2: eth0 NIC Copper Link is Up, 1000 Mbps full duplex

V logu pflog0 ve firewalu, který interně používá Packet Filter jsem nalezl tuto hlášku.

tcp 40 bad hdr length 0 - too short

Dospěl jsem k názoru, že musí být problém na serveru s Ubuntu, kde je pomocí ifconfig standartně nastavena IP adresa a TSO on. Chybová hláška mě nasměrovala na stránky o TSO neboli TCP segmentation offloading a tak jsem pátral, jak to v Linuxu a případně ve FreeBSD nastavit - vypnout.

Linux danou volbu nastavuje pomocí ethtool

ethtool -k eth0
Offload parameters for eth0:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp segmentation offload: on
udp fragmentation offload: on
generic segmentation offload: on

ethtool eth0 -K tso off


Pro permanentní vypnutí lze použít např. tento návod. FreeBSD má pro danou volbu parametr v ifconfigu, což je jistá výhoda.

ifconfig bce -tso

Žádné komentáře: