Portál AbcLinuxu, 8. května 2025 13:49

Dotaz: Nečekaný RST

22.1.2016 15:41 srbt | skóre: 6
Nečekaný RST
Přečteno: 692×
Odpovědět | Admin
Dobrý den,

mám server s debianem a apache httpd, který mi občas místo souboru dal hlášku "aborted". Šel jsem po tom a vyloučil mod_rewrite a htacces vůbec, php, apod. Prostě čistá stránka s cca 90 malými obrázky, přičemž zhruba při každém druhém reloadu se mi jeden až tři obrázky nedoručí. Jsou to vždy prakticky tytéž (5. - 8.), ale když je odmažu, nedoručí se ty, které se posunou na jejich místo na stránce. Potrápil jsem tcpdump a zjistil, že když se posílá požadavek na tyhle obrázky, projde
 C -> S SYN,
 S -> C SYN+ACK,
 C -> S ACK,
 S -> C RST,
 C -> S GET /images...,
 S -> C RST.
To byl tcpdump na serveru. Na klientovi to dělá totéž, jen oba RST přijdou až po GETu - hádám že dopravní zpoždění způsobí, že klient pošle GET dřív, než obdrží první RST od serveru.

Vyloučil jsem vliv firewallu - je tam minimální a iptables -F na komunikaci nic nezmění. Někdo doporučil vypnout ECN, ale to také nepomohlo. FreeBSD server umístěný ve stejné serverovně se chová správně a dodá vždy vše, takže firewallem serverovny by to také být nemělo (navíc ten RST chytám už uvnitř serveru...).

Když přenos zkusím skrz ssh tunel ( -L 8090:localhost:80 ) a pak reload http://localhost:8090, tak projde vždy vše.

Jsem z toho dost bezradný, děkuji za každou radu či podnět.

Rady "přeinstaluj to na FreeBSD" radši ne ;-).
29	0.199783	r1.example.com	test.example.com	TCP	60	48868	80	48868→80 [SYN] Seq=0 Win=0 Len=0 MSS=1368
30	0.199817	test.example.com	r1.example.com	TCP	58	80	48868	80→48868 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460
31	0.199910	r1.example.com	test.example.com	TCP	60	48868	80	48868→80 [ACK] Seq=1 Ack=1 Win=29200 Len=0
32	0.199926	test.example.com	r1.example.com	TCP	54	80	48868	80→48868 [RST] Seq=1 Win=0 Len=0
49	0.211155	r1.example.com	test.example.com	HTTP	666	48868	80	GET /imagess/obrazek.png HTTP/1.1
50	0.211179	test.example.com	r1.example.com	TCP	54	80	48868	80→48868 [RST] Seq=1 Win=0 Len=0

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.1.2016 16:27 1john2 | skóre: 35 | blog: jo12hn | zlín, brno
Rozbalit Rozbalit vše Re: Nečekaný RST
Odpovědět | | Sbalit | Link | Blokovat | Admin
co je v logach apache, pripadne kernelu?

co linka? nejaky packet lost?

Dela to jen pro klienta v jedne lokaci nebo na ruznych lokacich?
22.1.2016 16:39 srbt | skóre: 6
Rozbalit Rozbalit vše Re: Nečekaný RST
V lozích apache nic - ani při zapnutí maximální upovídanosti (tuším "trace8") se v logu neobjevilo nic zajímavého, ani číslo portu po kterém se stahoval selhaný soubor. Stejně tak v kernelu žádný problém. Žádný packet lost. V různých lokacích, s klienty u různých providerů.
22.1.2016 16:44 1john2 | skóre: 35 | blog: jo12hn | zlín, brno
Rozbalit Rozbalit vše Re: Nečekaný RST
Co vykon serveru? Kolik klientu pristupuje zaroven?

V access logu musi neco byt.

Jaka je konfigurace indiana?

Je mozne zkusit jiny web server?
22.1.2016 17:10 srbt | skóre: 6
Rozbalit Rozbalit vše Re: Nečekaný RST
Jiný webserbver jsem zatím nezkusil, ale zkusil jsem jinou distribuci (Centos) a výsledek je stejný. Také jsem zkusil různé browsery (Firefox a Chrome). V access logu opravdu nic není - tedy co by se týkalo "odepřených" souborů - ostatní obrázky i index.html tam samozřejmě je. Večer zkusím nginx.
22.1.2016 17:12 srbt | skóre: 6
Rozbalit Rozbalit vše Re: Nečekaný RST
V rámci pokusů přistupuju na server sám - i to stačí na vyvolání potíží. Apache je v režimu prefork, zkoušel jsem kombinace 10, 20 preforknutých serverů, ze zoufalství i 2 a nemělo to na chování žádný dopad.
22.1.2016 17:15 1john2 | skóre: 35 | blog: jo12hn | zlín, brno
Rozbalit Rozbalit vše Re: Nečekaný RST
Co nejaka proxy?

Dela to I s wgetem/curl?
22.1.2016 20:04 srbt | skóre: 6
Rozbalit Rozbalit vše Re: Nečekaný RST
Žádná proxy po cestě není, jen router s firewallem, který není zcela pod mou kontrolou, ale tím prochází i ty požadavky na FreeBSD, které funguje bez potíží. wget jsem zkoušel také - konstrukce:

for a in {1..6}; do { ( mkdir a_$a; cd a_$a; for b in {1..6}; do wget -q -x -r http://demo3.gol-test.idc.cz/imagess/index.html; done; cd ..; rm -Rf a_$a; ) & } ; done; wait

vygeneruje RST také - předpokládám, že to přibližně emuluje chování browseru.
22.1.2016 21:11 NN
Rozbalit Rozbalit vše Re: Nečekaný RST
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co zkusit jiny port na apache?
22.1.2016 21:44 srbt | skóre: 6
Rozbalit Rozbalit vše Re: Nečekaný RST
Zkusil jsem port 8080 a chová se to stejně.
22.1.2016 21:54 srbt | skóre: 6
Rozbalit Rozbalit vše Re: Nečekaný RST
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkusil jsem i python -m SimpleHTTPServer 80 a chovalo se to stejně jako s apachem.

Zkusil jsem i python -m SimpleHTTPServer 12345 a chovalo se to stejně, jen jsem měl dojem, že chyba se projevuje méně často.
vandrovnik avatar 22.1.2016 22:50 vandrovnik | skóre: 21
Rozbalit Rozbalit vše Re: Nečekaný RST
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nějaký limit na počet současných spojení (prohlížeč asi bude zkoušet stáhnout víc souborů paralelně) nebo počet požadavků za nějakou dobu? Stane se to i v případě, ža stahování simulujete skriptem a dáte tam prodlevu třeba sekundu mezi požadavky?
23.1.2016 09:40 srbt | skóre: 6
Rozbalit Rozbalit vše Re: Nečekaný RST
Na vlastních serverech (teď už dvou: debian a centos) limit současných spojení ani požadavků není. K napsání scriptu chytřejšímu než je ten wget výše jsem se zatím nedostal, ale asi bych měl.
23.1.2016 11:00 NN
Rozbalit Rozbalit vše Re: Nečekaný RST
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jeste dva napady. HTTPS. Kdyz to pujde ciste zabezpecene(stejne jako tunelem), do spojeni cestou neco leze.
23.1.2016 12:54 srbt | skóre: 6
Rozbalit Rozbalit vše Re: Nečekaný RST
Máte pravdu - zajímavá situace, skrz HTTPS se mi to nasimulovat nepovedlo. Teď jen kdybych věděl, co to znamená.
23.1.2016 13:32 NN
Rozbalit Rozbalit vše Re: Nečekaný RST
Je tam MITM, neco na ceste do spojeni leze a interceptuje HTTP.
23.1.2016 17:21 blergh
Rozbalit Rozbalit vše Re: Nečekaný RST
Ocekaval bych nejake IDS, at uz jako externi sondu nebo v ramci toho routeru, co tam mate... Podobnou situaci jsem zazil, kdyz se pri uploadovani vetsiho .js hazel RST na HTTP, protoze to matchlo nejaky pattern u IDS. Samozrejme to tak byt nemusi - ale to, ze to nedela u sifrovaneho spojeni, by mi k tomu vedlo...
24.1.2016 20:22 srbt | skóre: 6
Rozbalit Rozbalit vše Re: Nečekaný RST
Je to něco na routeru - když jsem vzal kompletní tcpdump a ne jen omezení na port 80 (ano, sypu si popel, školácká chyba), zjistil jsem že serveru přijde od routeru ICMP hlášení Destination unreachable (Host unreachable) a tak to server zavře a posílá už jen RST. Až zjistím co tam bylo nastavené, tak to sem připíšu pro budoucí generace, ale jinak všem děkuji za podnětné návrhy, které mne (jak se optimisticky domnívám) dovedly ke zdroji problému.
Řešení 1× (srbt (tazatel))
1.2.2016 10:23 srbt | skóre: 6
Rozbalit Rozbalit vše Re: Nečekaný RST
Konkrétně:

zdá se, že to bylo nastavením firewallu pfSense na routeru - jeho administrátor změnil parametr "firewall optimization" z "aggressive" na "normal" a od té doby se problém nepovedlo nasimulovat. Popis onoho zázračného nastavení je na https://doc.pfsense.org/index.php/Advanced_Setup#Firewall.2FNAT - ve zkratce nastavuje časové limity do kterých se musí vejít spojení, aby prošlo firewallem v závislosti na zaplnění tabulky, ve které si firewall udržuje informace o spojeních. Proč to FreeBSD problém nedělalo a linuxu ano, netušíme.

Obecně:
  • každému, kdo řeší podobný problém, doporučuji neomezovat tcpdump pouze na sledovaný port, protože spojení ovlivňuje i ICMP a z něj může jít vyčíst kdo to sabotuje.
  • Dostalo se mi i rady, kontrolovat mac adresy v rámcích, jestli do komunikace neleze někdo, kdo nemá.
  • Osvědčil se mi tcpdump na serveru do souboru (tcpdump -i interface -w soubor.dump -s 0), soubor přenést na pracovní stanici a prohlédnout wiresharkem.
Děkuji všem za podnětné rady, které vedly k řešení.
23.1.2016 19:20 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Nečekaný RST
Ještě bych zkusil, jestli se to děje jen při přístupu přes ten firewall (a ne třeba z nějakého lokálního klienta). Pokud ano, tak je prakticky jisté, že je to něco takového.
23.1.2016 17:26 blergh
Rozbalit Rozbalit vše Re: Nečekaný RST
Ale jinak se kdyztak ozvi na IRC... Treba se tam konecne uz potkame. :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.