On Fri, 5 Oct 2012, Adam Osuchowski wrote:

Jacek Osiecki wrote:
Ciekawe - netstat -nlpu działa, pokazuje słuchające UDP.
Ktoś ma pomysł dlaczego nie widzi słuchających portów TCP?
Ciężko powiedzieć jak się tego na żywo nie widzi. Podeślij strace'a,
może w nim będzie coś charakterystycznego.

Może prościej będzie ze zwykłym "netstat -an", które też nic nie pokazuje:

http://pastebin.com/zCpZcLc2

Porównałem jak wygląda strace na 3.4.6 i na starszych kernelach, gdzie działa. I wygląda to tak:

Najpierw jest:
write(1, "Active Internet connections (servers and established)\n", 54) = 54 write(1, "Proto Recv-Q Send-Q Local Address Foreign Address State \n", 80) = 80

I tu jest różnica. Na 3.4.6, gdzie jest źle, mamy:

socket(PF_NETLINK, SOCK_RAW, 4)         = 3
sendmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{" (ciach dalej)

A na 2.6.39.4, gdzie działa:

socket(PF_NETLINK, SOCK_RAW, 4) = -1 EPROTONOSUPPORT (Protocol not supported)
open("/proc/net/tcp", O_RDONLY)         = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8053992000

Czyli nowszy kernel podaje coś, co daje złe wyniki - zaś wcześniejszy nie, więc netstat sięga do /proc/net/tcp gdzie są prawidłowe dane. Sprawdziłem, na nowym kernelu /proc/net/tcp też wygląda sensownie.

Co to jest to PF_NETLINK? Sprawdziłem /proc/config.gz na okoliczność NETLINK i na obu kernelach jest to samo:

CONFIG_NETFILTER_NETLINK=m
CONFIG_NETFILTER_NETLINK_QUEUE=m
CONFIG_NETFILTER_NETLINK_LOG=m
CONFIG_NF_CT_NETLINK=m
CONFIG_SCSI_NETLINK=y
CONFIG_QUOTA_NETLINK_INTERFACE=y

Sprawdziłem nawet źródła netstat - i kurczę, nie widzę nawet skąd się to socket(PF_NETLINK, SOCK_RAW, 4) bierze!

Jakiś pomysł?

Pozdrawiam,
--
Jacek Osiecki [email protected] GG:3828944
I don't want something I need. I want something I want.
_______________________________________________
pld-devel-pl mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-devel-pl

Odpowiedź listem elektroniczym