Skrytá hrozba jménem MTU 

Po dlouhé době opět jedna drobnost, která mě stála spousty přemýšlení. Jednoduchá modelová situace: Počítač s linuxem, sloužící jako firewall-NAT-router zakončuje PPPoE spojení od ADSL modemu (v režimu bridge) a prostřednictvím maškarády, potažmo SNATu (víte vůbec někdo, jaký je v tom rozdíl?) sdílí internetové připojení ostatním zařízením v lokální síti.

Jenže teď to nějak nefungovalo. Ne, že by to nefungovalo vůbec. Spíše šlo o typickou skrytou závadu - při pokusu cíleně odhalit její příčinu se neprojevila. Šlo o to, že určité www stránky se nenačítaly, či se jim pouze načetl titulek a pak bylo spojení ukončeno. Jiné stránky šly v pohodě. Pokud se ale použil http proxy server, běžící přímo na firewallu, šlo vše v pohodě.

Příčina těchto záhad se skrývala, jak již titulek napovídá, v nastavení MTU. Jak známo, ethernet umí přenést nejvýše 1500 B na paket, což vychází na hodnotu MTU 1460 B. Jenže díky 8 B záhlaví PPPoE je nejvyšší hodnota MTU na PPPoE spoji jen 1452 B. Zatímco počítač, na kterém byl PPP spoj přímo zakončen tuto informaci měl, ostatní počítače v síti o žádném PPP spojení nevěděly. Proto v záhlaví TCP segmentů s příznakem SYN nesprávně signalizovaly, že jsou schopni zpracovat větší množství dat, než odpovídalo realitě. Jak jsem zjistil zachycením komunikace na PPP rozhraní Wiresharkem, došlo k tomu, že příliš dlouhý paket byl na vzdálené straně PPP spojení zahozen. Protokol TCP sice zajistil opakování vysílání, ale i opakovaný segment byl zahozen. Za nějakou chvíli vypršel časový limit a spojení bylo zrušeno.

Nabízí se ovšem otázka, proč to tedy občas fungovalo? Zdůvodnění je dvojí - buď (1) nedošlo k naplnění celé velikosti paketu (například u telnetu, čí ssh) a/nebo (2) při zahození segmentu z důvodu překročení délky by měl prvek, který zahození provede, vygenerovat zdroji ICMP zprávu, ve které žádá o rozdělení segmentu na menší části. Takovouto zprávu pak server správně zpracuje a data rozdělí na menší kousky. Bohužel, někteří síťoví administrátoři mají takovou hrůzu ze zpráv protokolu ICMP, že je pro jistotu filtrují firewallem, někdy i včetně požadavku na odezvu (ping).

No a na závěr: Jak to spravit?
Takto:
# iptables -t mangle -I FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
[ zobrazit záznam ] ( 1513 zobrazení ) trvalý odkaz ( 3 / 12845 )
Zpřístupnění komentářů 

Hlad po hře World of Warcraft je zřejmě nekonečný. Jak jinak si vysvětlit, že se našel spammer, co si dal práci s tím, aby pomocí OCR rozpoznal CAPCHA obrázek a cíleným útokem na blogy, poháněné Simple PHP blogem, je zahltil odkazy s nabídkou WoW.

To mě konečně vybudilo k tomu, trošku se v kódu blogu povrtat a vyměnit techniku s nedokonalým CAPCHA obrázkem (která navíc znepřístupňuje komentování nevidomým a slabozrakým) za techniku jednoduchého kvízu, doplněného javascriptovou nápovědou, podle návodu zde.. Vymyslel jsem pár triviálních otázek a odpovědí, ale pokud máte zapnutý javascript, ani si jich nevšimnete - vyplní správnou odpověď za vás. Řešení počítá s tím, že spamovací robot neumí spouštět javascript.

Tak jsem zvědav, jaký to bude mít efekt na četnost spamů. Zdrojové kód úprav (patche) záměrně neuvádím, protože (a) je to prasárna, a z toho vyplývá (b) by v tom ještě někdo mohl najít díru :). Případnému zájemci ale kód rád pošlu.
[ zobrazit záznam ] ( 1566 zobrazení ) trvalý odkaz související odkaz ( 3 / 16529 )
Jaký je U:fonův mobil? 

Musím se přiznat, že nejsem velký telefonista, měsíčně provolám kolem 50 Kč. Přesto jsem neodolal, a hned v prvních dnech provozu U:fonovy mobilní sítě jsem zakoupil jeho CDMA mobilní telefon. Jeho tarif za nula vypadá velice lákavě a nabídka volání zdarma uvnitř vlastní sítě je lákavá a podle mě u mobilního operátora dlouhodobě neudržitelná. Značná část nákladů na provoz sítě totiž nezáleží na tom, zda se volá v síti nebo mimo ni.

Zakoupil jsem tedy jediný mobilní telefon, co mají v tuto chvíli v nabídce - UBIQUAM U-400 a začal testovat. Zjistil jsem, že mapa pokrytí uvedená na webu velice přesně odpovídá reálnému pokrytí a také i to, že i při minimální intenzitě signálu je hovor podobně kvalitní, nicméně je třeba se s telefonem nepohybovat. Telefon samotný je prý výběhový typ, který si U:fon zakoupil a nechal předělat pro své pásmo L, tedy 410-415 MHz uplink a 420-425 MHz downlink.

Záhadou mi bylo, jak je možné, že telefon podporuje jen maximální rychlost 153 kbps, když se U:fonova síť vytahuje teoretickou rychlostí až 3,1 Mbps. Odpověď je prostá: U:fon provozuje dvě různé sítě zároveň. Jednu podle standardu CDMA2000 1xRTT jako hlasovou, s maximální datovou rychlostí 153 kbps, na které provozuje všechny své služby kromě "fofr internetu" a druhou datovou podle CDMA2000 1xEV-DO rev.A, která je navržena pouze pro přenos dat a hlas je v ní možno přenášet jen jako VoIP, pro který právě revize A zajišťuje potřebnou kvalitu služby (QoS). Na této síti U:fon nabízí zatím jen "fofr internet", jehož součástí je i volání pomocí sluchátkové soupravy a softwarového telefonu. VoIP? Nikoli. Využívá se zde skutečnosti, že všechny doposud vyráběné EV-DO čipsety jsou hybridní, tedy je možné je přepnout z EV-DO režimu do 1xRTT, ve kterém je možno vést hovor jako v jakékoli jiné síti s přepojováním okruhů. Jeden z nabízených modemů pro službu "fofr internet" dokonce umožňuje přijímat hovory bez připojení k počítači. Softwarový telefon je tedy ve skutečnosti jen dálkové ovládání modemu, který na sobě nemá žádná tlačítka (sluchátková souprava se připojuje přímo do modemu, tedy audio vůbec neprochází přes USB). Skoro by stálo za úvahu obestavět kolem takového modemu krabičku s displejem a tlačítky a vyrobit si tak vlastní mobil :)

Mimochodem, síť standardu CDMA2000 EV-DO (bez revize A) je také síť kterou vybudoval Eurotel (dnes O2) z dříve provozované analogové mobilní sítě NMT v pásmu 450 MHz, a kterou dnes na tomto kmitočtu provozuje pod obchodním označením O2 CDMA. Nabízí však pouze data, takže hlasová volání vůbec neřeší.

No a jaký je pocit, ze samotného volání? Nejsnáze to zjistíte, zavoláte-li mi na číslo 790 366 070. Dá se říci, že kvalita hovoru je běžná, pouze v okamžiku, kdy hovoří obě strany proti sobě se z reproduktoru telefonu linou podivné pazvuky. Ale to je možná vlastnost pouze daného přístroje.

Dále U:fon slibuje, že k mobilnímu tarifu nabídne za 200 Kč měsíčně datový balíček, ovšem nejprve si bude muset zajistit dodávku datových kabelů pro uvedený typ mobilních telefonů. Taková cena za pomalý mobilní Internet není úplně špatná nabídka. V každém případě lepší by bylo, kdyby mobil zvládnul i právě EV-DO a bylo možné nabídnout současně s voláním i mobilní fofr Internet (aniž by člověk musel vytočit telefonní číslo na počítači, ještě k tomu jen na Windows)
[ zobrazit záznam ] ( 2539 zobrazení ) trvalý odkaz související odkaz ( 3 / 14656 )
Errata (opravenka) semináře o Metru 

Nikdo není neomylný, ani já ne, a proto mě těší, když se najdou lidé, co se podívají na záznam semináře a následně mi vyčtou chyby, kterých jsem se dopustil. Proto jsem se opět rozhodl umístit sem opravenku chyb a nepřesností, které jsou v záznamu. Máte-li nějakou další připomínku, neváhejte mě kontaktovat.
Číst dále...
[ zobrazit záznam ] ( 8870 zobrazení ) trvalý odkaz související odkaz ( 3 / 17903 )
Jak na numerickou klávesnici ve Wine přes VNC 

Zmiňovaný problém mi dal docela zabrat. Samostaný VNC Xserver Xvnc zřejmě nemapuje správně numerickou klávesnici, takže ačkoli to v některých programech, jako třeba xterm chodí, v jiných, jako třeba Wine nikoli. Nakonec jsem našel řešení zde. A pro případ, že by nevydrželo, tak ho sem radší zkopíruju:

1) Vytvořit soubor ~/.xmodmap s následujícím obsahem:
! initialization,
! Ensure that we have all keysyms we're going to use assigned to something.

keycode any = KP_Insert
keycode any = KP_End
keycode any = KP_Down
keycode any = KP_Next
keycode any = KP_Left
keycode any = KP_Begin
keycode any = KP_Right
keycode any = KP_Home
keycode any = KP_Up
keycode any = KP_Prior
keycode any = KP_Delete

! Set the keypad to numeric mode.
! You may need to adjust KP_Next/KP_Prior; possible alternatives
! are KP_Page_Down/KP_Page_Up or just Next/Prior.
! just Next.
keysym KP_Insert = KP_0
keysym KP_End = KP_1
keysym KP_Down = KP_2
keysym KP_Next = KP_3
keysym KP_Left = KP_4
keysym KP_Begin = KP_5
keysym KP_Right = KP_6
keysym KP_Home = KP_7
keysym KP_Up = KP_8
keysym KP_Prior = KP_9
keysym KP_Delete = KP_Decimal

2) zařídit, aby se po spusštění Xvnc serveru zavolalo xmodmap ~/.xmodmap
[ zobrazit záznam ] ( 21895 zobrazení ) trvalý odkaz související odkaz ( 3 / 11152 )

<<První <Zpět | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | Další> Poslední>>