Portál AbcLinuxu, 7. května 2025 17:20

Dotaz: netstat neukazuje listening port

15.7.2016 10:44 tomas
netstat neukazuje listening port
Přečteno: 431×
Odpovědět | Admin
caute,

mal by som kratku otazku ohladne fungovania prikazu netstat. vzdy som bol v presvedceni ze prikaz "netstat -ltnp4" vypise vsetky otvorene porty. ak bezi webserver, ocakavam riadok s portom 80, ktory tam vsak chyba, napriek tomu ze webovy server bezi a je pristupny.
[root@localhost ~]# netstat -ltnp -4 | grep :80

[root@localhost ~]# wget 127.0.0.1:80

--2016-07-15 04:18:34-- http://127.0.0.1/

Connecting to 127.0.0.1:80... connected.

HTTP request sent, awaiting response... 403 Forbidden

2016-07-15 04:18:34 ERROR 403: Forbidden.
vypise chybu 403 - to vsak znamena ze server bezi, pocuva a odpoveda. webovy server je httpd (apache), OS je Oracle Enterprise Linux 7.2

preco nevidiet port 80 medzi otvorenymi portmi vo vypise netstatu, ked ho ma ocividne otvoreny? je nejaky iny sposob ako vypisat vsetky skutocne otvorene porty?

diky

Řešení dotazu:


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

Odpovědi

15.7.2016 10:58 majales
Rozbalit Rozbalit vše Re: netstat neukazuje listening port
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nemůže být problém, žet o třeba poslouchá na ivp6? Mám Centos7 a chová se to úplně stejně jak popisuješ...
netstat -ltnp   |grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      14211/httpd

AraxoN avatar 15.7.2016 11:00 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: netstat neukazuje listening port
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jeden socket môže byť vytvorený pre IPv4 a IPv6 naraz. V takom prípade vo výstupe netstat figuruje ako "tcp6". Prepínačom -4 si vyfiltroval len typ "tcp" a preto Ti ho netstat nevypíše.
15.7.2016 11:46 tomas
Rozbalit Rozbalit vše Re: netstat neukazuje listening port
Odpovědět | | Sbalit | Link | Blokovat | Admin
dakujem za odpovede :)
Jeden socket môže byť vytvorený pre IPv4 a IPv6 naraz.
toto je pre mna nova informacia. ale mate pravdu, je to tak, ak vylistujem vsetky otvorene porty (ipv4 aj ipv6), figuruje tam riadok
tcp6       0      0 :::80                   :::*                    LISTEN
tu sa vsak vynara dalsia otazka - ako zistit ci je tento port otvoreny iba pre ipv6 alebo pre ipv4 a ipv6 naraz?
AraxoN avatar 15.7.2016 12:48 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: netstat neukazuje listening port
Tak podľa všetkého je ten socket naozaj len typu AF_INET6 (pri volaní socket() to je parameter typu int, ktorý obsahuje číslo a nie bitovú masku, ktorá by mohla mať viac hodnôt). Packety z IPv4 sa tam dostávajú cez nejaký vnútorný preklad.
Řešení 1× (AraxoN)
15.7.2016 13:16 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: netstat neukazuje listening port

Defaultně PF_INET6 socket nabindovaný na nulovou adresu přijímá i IPv4 spojení, přičemž se adresy překládají na IPv4-mapped adresy z rozsahu ::ffff:0:0/96 (dolních 32 bitů je IPv4 adresa). Proto také můžete v logu některých serverových aplikací najít informaci, že klient se připojil např. z adresy ::ffff:a0b:c0d, přestože ve skutečnosti šlo o IPv4 adresu 10.11.12.13.

Toto chování lze potlačit pomocí socket option IPV6_V6ONLY, pak PF_INET6 socket nabindovaný na nulovou adresu přijímá pouze IPv6 spojení a můžete současně otevřít PF_INET socket nabindovaný na 0.0.0.0. Na linuxu lze defaultní chování otočit přes /proc/sys/net/ipv6/bindv6only, ale to bych moc nedoporučoval, protože aplikace s tím nemusejí počítat.

IIRC ss ani netstat neukazují, jestli ta socket option je nastavená (musel bych se podívat, jestli jádro tuhle informaci vůbec do userspace předává. Ale můžete zkusit pustit třeba netcat poslouchající na 0.0.0.0 a stejném portu.

pavlix avatar 15.7.2016 14:26 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: netstat neukazuje listening port
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je to tak, jak píšou druzí, že jeden wildcard socket může přijímat jak IPv4, tak IPv6 spojení, pokud je tak nastavený. Je to jedna z mnoha prasáren, jak v spouvislosti s příchodem IPv6 zkomplikovat síťování. Ten netstat toto zjevně nezohledňuje, vzhledem k tomu, že se formálně jedná o IPv6 socket.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
15.7.2016 14:58 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: netstat neukazuje listening port
vzhledem k tomu, že se formálně jedná o IPv6 socket

Proč "formálně"? Spíš bych řekl, že past na vývojáře je právě v tom, že to je PF_INET6 socket ve všech ohledech, dokonce i ty sockety pro jednotlivá IPv4 spojení, které z něj vzniknou, jsou z pohledu aplikace naprosto standardní PF_INET6 sockety. Jen po síti jaksi běhají IPv4 pakety.

Kdybych měl hádat, IMHO byla důvodem pro tohle řešení snaha usnadnit práci vývojářům aplikací, které neumožňují poslouchat na víc než jednom socketu. Takhle není potřeba toho tolik měnit, prostě se jen místo PF_INET socketu bindovaného na 0.0.0.0 vytvoří PF_INET6 socket bindovaný na ::

Ten netstat toto zjevně nezohledňuje

netstat to zohledňovat nemůže, protože rozhraní, které používá, tu informaci neposkytuje. Přes netlink to zjistit lze, ale až od jádra 4.2. Příkaz ss z iproute2 verze 4.2 a vyšší ten flag zobrazuje (s volbou -e).

pavlix avatar 15.7.2016 15:06 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: netstat neukazuje listening port
Proč "formálně"?
Protože to slovo podle mě velmi dobře vystihnuje situaci.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
15.7.2016 14:55 humming elephant
Rozbalit Rozbalit vše Re: netstat neukazuje listening port
Odpovědět | | Sbalit | Link | Blokovat | Admin
To mas za to, ze pouzivas deprecated veci.

man ss
pavlix avatar 15.7.2016 15:08 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: netstat neukazuje listening port
Takže místo deprecated věcí bude používat věci totálně zabugované a nevyladěné. Na chvíli jsem měl na starost odpovídající balík a seznam a povaha bugů byly docela děsivé. A bez znalosti výše zmíněné volby mu to navíc ani nepomůže.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
15.7.2016 15:23 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: netstat neukazuje listening port
Proti gustu žádný dišputát… Už skoro tři roky jsem maintainerem iproute2 ve SLE a necítím potřebu se ho zbavit. Kdyby mi ale někdo chtěl vnutit net-tools, budu se bránit, co to půjde.
pavlix avatar 15.7.2016 21:28 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: netstat neukazuje listening port
Ani já jsem necítil potřebu se ho zbavit, naopak jsem se chystal ty chyby aktivně řešit, ale nakonec si ho převzali jiní, čímž jsem ztratil větší část motivace.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.

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.