netstat: примеры использования, опции

Автор: | 03/21/2013
 

networkingУтилита netstat выводит сетевые соединения, таблицы маршрутизации, статистику интерфейсов, NAT-соединения, и членство в multicast-группах.

Ключи утилиты netstat

Ключ -r (—route) — аналог команды route -n, отображает таблицу маршрутизации:

# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
77.120.***.0    *               255.255.255.0   U         0 0          0 eth0
link-local      *               255.255.0.0     U         0 0          0 eth0
default         cc6-gw.dc.volia 0.0.0.0         UG        0 0          0 eth0

Ключ -g (—groups) — отображает текущие multicast-группы:

# netstat -ag
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
————— —— ———————
lo              1      all-systems.mcast.net
eth0            1      224.2.2.4
eth0            1      all-systems.mcast.net
lo              1      ff02::1
eth0            1      ff02::1:ff00:2299
eth0            1      ff02::1

Ключ -i (—interfaces) отобразит информацию об активных сетевых интерфейсах, количество принятых (RX) и переданных (TX) пакетов, количество ошибок:

# netstat -i
Kernel Interface table
Iface       MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500   0  2096513      0      0      0   769365      0      0      0 BMRU
lo        16436   0   415226      0      0      0   415226      0      0      0 LRU

Ключ -I аналогичен -i, но позволяет получить информацию по конкретному интерфейсу:

# netstat -I=eth0
Kernel Interface table
Iface       MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500   0  2096475      0      0      0   769331      0      0      0 BMRU

Ключ -M (—masquerade) отобразит активные NAT-соединения (требeется поддержка ip_masquerade).

Ключ -s (—statistics) выведет подробную статистику по всем используемым протоколам, например:

# netstat -s | less
Ip:
1744395 total packets received
0 forwarded
0 incoming packets discarded
1311788 incoming packets delivered
1153855 requests sent out
Icmp:
514 ICMP messages received
107 input ICMP message failed.

IcmpMsg:
InType0: 12
InType3: 170
InType8: 299

Tcp:
11529 active connections openings
19678 passive connection openings
174 failed connection attempts

Udp:
24302 packets received
2 packets to unknown port received.
0 packet receive errors
25165 packets sent

и так далее.

Ключ -v (—verbose) — выводить более подробную информацию.

Ключ -n (numeric) — не пытаться преобразовать IP в имена хостов (FQDN):

# netstat -an | less

tcp        0      0 127.0.0.1:3000              127.0.0.1:42673             TIME_WAIT
tcp        0      0 77.120.***.22:22            61.98.134.14:41085          ESTABLISHED
tcp       61      0 77.120.***.22:55541         77.120.***.40:21            CLOSE_WAIT
tcp        0      0 127.0.0.1:42674             127.0.0.1:3000              ESTABLISHED

Полезный ключ -c (—continuous) — выводить информацию через указанное количество секунд:

# netstat -i -c 5
Kernel Interface table
Iface       MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500   0  2101742      0      0      0   773562      0      0      0 BMRU
lo        16436   0   416321      0      0      0   416321      0      0      0 LRU
eth0       1500   0  2101754      0      0      0   773574      0      0      0 BMRU
lo        16436   0   416324      0      0      0   416324      0      0      0 LRU
eth0       1500   0  2101772      0      0      0   773591      0      0      0 BMRU
lo        16436   0   416327      0      0      0   416327      0      0      0 LRU

Ключ -e (—extend) — выводить больше информации, можно указать дважды для получения ещё более подробной информации:

# netstat -i -e
Kernel Interface table
eth0      Link encap:Ethernet  HWaddr 00:50:56:00:22:99
inet addr:77.120.***.22  Bcast:77.120.***.255  Mask:255.255.255.0
inet6 addr: fe80::250:56ff:fe00:2299/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:2102392 errors:0 dropped:0 overruns:0 frame:0
TX packets:774144 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:890107126 (848.8 MiB)  TX bytes:156655915 (149.3 MiB)

lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:416477 errors:0 dropped:0 overruns:0 frame:0
TX packets:416477 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:23274808 (22.1 MiB)  TX bytes:23274808 (22.1 MiB)

Ключ -p (—program) — вместе с другой информацией выводить имя программы, использующей данный порт/сокет, например:

# netstat -a -p | less
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 localhost:32000             *:*                         LISTEN      22683/java
tcp        0      0 localhost:27017             *:*                         LISTEN      19379/mongod
tcp        0      0 *:mysql                     *:*                         LISTEN      23170/mysqld
tcp        0      0 *:ssh                       *:*                         LISTEN      31615/sshd
tcp        0      0 localhost:hbci              *:*                         LISTEN      31869/nginx
tcp        0      0 localhost:smtp              *:*                         LISTEN      1077/master
tcp        0      0 localhost:hbci              localhost:42681             TIME_WAIT   —

Ключ -l (—listening) — выводить только те порты/сокеты, которые ожидают подключения.

Ключ -a (—all) — вывести информацию обо всех портах/сокетах.

Ключ -t (tcp) — вывести информацию только по протоколу TCP:

# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State

tcp       61      0 22.101.120.77.colo.st:55541 mail.setevoy.org.ua:ftp     CLOSE_WAIT
tcp        0      0 22.101.120.77.colo.stat:ssh mail.setevoy.org.ua:43823   ESTABLISHED

Ключ -u (udp) — тоже, но UDP:

# netstat -au
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
udp        0      0 *:54328                     *:*

Примеры использования комбинаций ключей

Вывести список всех прослушиваемых (готовых к принятию соединения) портов (TCP):

# netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 localhost:32000             *:*                         LISTEN
tcp        0      0 localhost:27017             *:*                         LISTEN
tcp        0      0 *:mysql                     *:*                         LISTEN

Отобразить все открытые порты, с указанием процессов:

# netstat -ltupn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 127.0.0.1:32000             0.0.0.0:*                   LISTEN      22683/java
tcp        0      0 127.0.0.1:27017             0.0.0.0:*                   LISTEN      19379/mongod
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      23170/mysqld
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      31615/sshd
tcp        0      0 127.0.0.1:3000              0.0.0.0:*                   LISTEN      31869/nginx
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1077/master
tcp        0      0 :::9200                     :::*                        LISTEN      22683/java
tcp        0      0 :::80                       :::*                        LISTEN      4835/httpd
tcp        0      0 :::9300                     :::*                        LISTEN      22683/java
tcp        0      0 :::22                       :::*                        LISTEN      31615/sshd
tcp        0      0 ::1:25                      :::*                        LISTEN      1077/master
udp        0      0 :::54328                    :::*                                    22683/java

Получить список подключенных к узлу хостов:

# netstat -lantp | grep ESTABLISHED |awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort -u
127.0.0.1
61.98.134.14
77.120.***.40

Вывести информацию об открытых портах, и отсортировать их по состоянию с указанием количества  активных:

# netstat -nat | awk ‘{print $6}’ | sort | uniq -c | sort -n
1 CLOSE_WAIT
1 established)
1 Foreign
3 TIME_WAIT
11 LISTEN
24 ESTABLISHED

Отобразить количество активных подключений с удаленных хостов:

# netstat -atun | awk ‘{print $5}’ | cut -d: -f1 | sed -e ‘/^$/d’ |sort | uniq -c | sort -n
1 61.98.134.14
2 77.120.***.40
4 127.0.0.1
6 0.0.0.0

Узнать количество хостов, подключенных к серверу в данный момент:

# netstat -nat | awk ‘{ print $5}’ | cut -d: -f1 | sed -e ‘/^$/d’ | uniq | wc -l
7