iptraf i kernel 2.2.2 oraz network stals

Marcin Dalecki dalecki w cs.net.pl
Sob, 27 Lut 1999, 15:01:49 CET


Tomasz K³oczko wrote:
> 
> Dwiez rzeczy.
> Primo o przej¶ciu (w³a¶nie) na 2.2.2 nie mogê uruchomiæ iptraf. Wyrzuca
> komunikat :
> 
> IP traffic monitor active in another process


W³a¶nie co¶ nieco¶ zmieniono pod wzglêdem filtrowania pakietów w
przej¶ciu
z 2.2.1 na 2.2.2. Doparwdy nie rozumiem jednak zbytnio dlaczego ma to
toaki wp³yw na iptraf!.

diff -u --recursive --new-file v2.2.1/linux/net/core/filter.c
linux/net/core/filter.c
--- v2.2.1/linux/net/core/filter.c	Mon Jan 12 15:28:25 1998
+++ linux/net/core/filter.c	Thu Feb 18 11:59:28 1999
@@ -11,6 +11,8 @@
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version
  * 2 of the License, or (at your option) any later version.
+ *
+ * Andi Kleen - Fix a few bad bugs and races.
  */

Mo¿e iptraf jest zimplementowny jako filtr pakietów? Nie znam go zbyt
dok³adnie.

Albo spróbuj wywaliæ t± zmianê:

diff -u --recursive --new-file v2.2.1/linux/include/net/tcp.h
linux/include/net/tcp.h
--- v2.2.1/linux/include/net/tcp.h	Tue Jan 19 11:32:53 1999
+++ linux/include/net/tcp.h	Mon Feb 22 14:51:31 1999
@@ -912,7 +912,7 @@
  * can generate.
  */
 extern __inline__ void tcp_syn_build_options(__u32 *ptr, int mss, int
ts, int sack,
-					     int offer_wscale, int wscale, __u32 tstamp)
+					     int offer_wscale, int wscale, __u32 tstamp, __u32 ts_recent)
 {
 	/* We always get an MSS option.
 	 * The option bytes which will be seen in normal data
@@ -936,7 +936,7 @@
 			*ptr++ = __constant_htonl((TCPOPT_NOP << 24) | (TCPOPT_NOP << 16) |
 						  (TCPOPT_TIMESTAMP << 8) | TCPOLEN_TIMESTAMP);
 		*ptr++ = htonl(tstamp);		/* TSVAL */
-		*ptr++ = __constant_htonl(0);	/* TSECR */
+		*ptr++ = htonl(ts_recent);	/* TSECR */
 	} else if(sack)
 		*ptr++ = __constant_htonl((TCPOPT_NOP << 24) | (TCPOPT_NOP << 16) |
 

Dodatkowo zachowanie jakie opisujesz mo¿e byæ wywo³ane nastêpuj±cym:


diff -u --recursive --new-file v2.2.1/linux/net/ipv4/af_inet.c
linux/net/ipv4/af_inet.c
--- v2.2.1/linux/net/ipv4/af_inet.c	Thu Jan  7 15:11:41 1999
+++ linux/net/ipv4/af_inet.c	Mon Feb 22 09:05:55 1999
@@ -5,7 +5,7 @@
  *
  *		PF_INET protocol family socket handler.
  *
- * Version:	$Id: af_inet.c,v 1.82 1999/01/04 20:36:44 davem Exp $
+ * Version:	$Id: af_inet.c,v 1.83 1999/02/22 13:54:18 davem Exp $
  *
  * Authors:	Ross Biro, <bir7 w leland.Stanford.Edu>
  *		Fred N. van Kempen, <waltje w uWalt.NL.Mugnet.ORG>
@@ -828,6 +828,8 @@
 	sk->shutdown |= how;
 	if (sk->prot->shutdown)
 		sk->prot->shutdown(sk, how);
+	/* Wake up anyone sleeping in poll. */
+	sk->state_change(sk);
 	return(0);
 }
 

> Co jest nieprawd± gdy¿ nie mam w tym momencie uruchomionych innych
> programów robi±cych podobne rzeczy co iptraf.
> 
> Secundo. Obserwujê ciekawe zachowanie na kernelach 2.2.[12]. Otó¿ co kilka
> minut mam kompletn± g³uchotê na na eth. Jak próbujê monitorowaæ tuch na
> sieci to obserwujê korelacje, ze zawsze taka g³uchota ma miejsce po tym
> jak na miêdzymordziu sieciowym pojawiaj± mi sie ramki no-ip. Wyci±gi z
> iptraf i tcpdump:
> 
> (iptraf)
>  Non-IP packet (0x4) from 00800f703ea3 to 0180c2000000 on eth0
>  Non-IP packet (0x4) from 00800f703ea3 to 0180c2000000 on eth0
>  Non-IP packet (0x4) from 00800f703ea3 to 0180c2000000 on eth0
>  Non-IP packet (0x4) from 00800f703ea3 to 0180c2000000 on eth0
> 
> (tcpdump)
> 12:36:48.601717 0:80:f:70:3e:a3 1:80:c2:0:0:0 002e 60: 802.1d ui/C len=43
>                          0000 0000 0080 0000 800f 703e a000 0000
>                          0080 0000 800f 703e a080 0400 0014 0002
>                          000f 0000 0093 5740 0609 2b
> 12:36:50.616782 0:80:f:70:3e:a3 1:80:c2:0:0:0 002e 60: 802.1d ui/C len=43
>                          0000 0000 0080 0000 800f 703e a000 0000
>                          0080 0000 800f 703e a080 0400 0014 0002
>                          000f 0000 0053 3840 0609 2b
> 12:36:52.646853 0:80:f:70:3e:a3 1:80:c2:0:0:0 002e 60: 802.1d ui/C len=43
>                          0000 0000 0080 0000 800f 703e a000 0000
>                          0080 0000 800f 703e a080 0400 0014 0002
>                          000f 0000 0053 8340 0609 2b
> 12:36:54.661912 0:80:f:70:3e:a3 1:80:c2:0:0:0 002e 60: 802.1d ui/C len=43
>                          0000 0000 0080 0000 800f 703e a000 0000
>                          0080 0000 800f 703e a080 0400 0014 0002
>                          000f 0000 0093 bb40 0609 2b

I faktycznie te nag³ówki za cholerê nie wygl±daj± jak cokolwiek
majace wspólnego z IP lub UNIX-em! Zwykle w pierwszych bajtach powinny
siê
bowiem pojawiaæ informacje o portach lub d³ugo¶ciach pakietów a tu
nic....

Mo¿liwe, ¿e wywo³uj± one po prostu kolizjê na twoim hubie, który mówi
sobie:
"O cholera, kto¶ mi co¶ pod¿uca co niebardzo wygl±da na ethernet,
poczekamy,
mo¿e siê popawi..." Ale to nie t³umaczy³oby oczywi¶cie zale¿no¶ci od
j±dra
jakie stosujesz, chyba ¿e te pakiety s± adresowane do twojej karty
ethernetowej
Sprawdz w pierwszej kolejno¶ci czy 0180c2000000 to nie ty przypadkiem,
choæ
te zera po 0180c2000000 wygl±daj± mi bardzo podej¿anie, co wspiera
hipotezê o
hubie k³adz±cym ca³y ether na "odczekanie".

Takie tylko moje trzy grosze...

--Marcin



Więcej informacji o liście dyskusyjnej pld-devel-pl