Kernel 3.4.6 - netstat nic nie pokazuje?
Jacek Osiecki
joshua at hybrid.pl
Fri Oct 5 11:25:29 CEST 2012
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 joshua w ceti.pl GG:3828944
I don't want something I need. I want something I want.
More information about the pld-devel-pl
mailing list