Утилита 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