The network administrator tools in linux router
1. ifconfig
2. iproute
3. arp
4. ping
5. traceroute
6. nmap
7. netstat
8. tcpdump
9. top, htop
10. whois
11. dig
12. iftop
13. bmon
14. nload
15. conntrack
16. lm-sensors
17. badblocks
18. lsmod
19. lspci
20. iptraf
21. dmesg
22. iptables
23. powertop
24. ethstats
25. taskset
26. smp_affinity
27. traffic control
28. policy routing
29. mii-tool
1. ifconfig
ifconfig служи за конфигурация на мрежовите интерфейси.
Какво означава показаната от ifconfig информация?
lo loopback-устройство. Мрежовите карти се означават с eth.
inet addr: Интернет адрес (виж долу). За loopback този адрес е винаги 127.0.0.1
Bcast: Broadcast адрес. Broadcast се отнася за всички компютри в мрежата.
Mask: Мрежова маска. Тук се дефинира адресната област и с това броя компютри в една мрежа..
MTU: Максимална големина на пренасяните пакети през този интерфейс (англ. Maximum Transfer Unit).
Metric: Няма значени при сегашните версии на Linux.
RX packets: Приети (англ. received) пакети.
TX packets: Изпратени (англ. transmitted) пакети.
2. ip route
3. arp
Протоколът ARP (Address Resolution Protocol) е средството, чрез което компютрите а мрежата съпоставят логически IP адреси с физически хардуерни (МАС) адреси. ARP изгражда и поддържа таблица, наречена ARP кеш, в която се съдържат тези съпоставяния.Помощната програма ARP работи от командния ред и се разпространява с TCP/IP стека на UNIX/Linux. Тя може да се използва за разглеждане и промяна на съпоставянията между IP и МАС адреси. C помощта на програмата ARP можете да покажете съдържанието на кеша и да добавяте или изтривате специфични записи:
sami@sami:~$ arp -a ? (172.16.50.198) at 00:1d:7d:aa:1b:19 [ether] on wlan0 ? (172.16.50.1) at 00:0c:42:71:48:b7 [ether] on wlan0 |
4. ping
Ping (пинг) е компютърна програма за мрежова администрация, използвана за проверка на достъпността на хостове в интернет или локална мрежа. Използва протокола (ICMP) . Името пинг произлиза от сонарната терминология.
Ping работи на принципа на ехото, като изпраща съобщение чрез ICMP протокола до отдалечен компютър. Съобщението съдържа „искане“ за отговор от хоста. В този процес се измерва времето от предаване на съобщението до времето на получаването му от първоначалния компютър (двупосочния път) и се записва всяка загуба на пакети. Резултатите от теста се отпечатват на екрана под формата на статистически съобщения.
Резултат от програмата Ping, при тестване на хоста google.com:
sami@sami:~$ ping abv.bg PING abv.bg (194.153.145.104) 56(84) bytes of data. 64 bytes from abv.bg (194.153.145.104): icmp_req=1 ttl=60 time=9.10 ms 64 bytes from abv.bg (194.153.145.104): icmp_req=2 ttl=60 time=8.46 ms 64 bytes from abv.bg (194.153.145.104): icmp_req=3 ttl=60 time=8.19 ms 64 bytes from abv.bg (194.153.145.104): icmp_req=4 ttl=60 time=8.96 ms ^C --- abv.bg ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 8.199/8.682/9.107/0.379 ms |
Ping може да се стартира чрез използване на различни опции в командния ред, които позволяват специални режими на работа, като например да се уточни размера на изпращаните пакети и др. С Ping може да се злоупотребява, обикновено под формата елементарна DoS-атака, в която програмата е настроена така, че да изпраща много пакети с големи размери, които да „наводнят“ атакувания хост и да затруднят работата му.
5. traceroute
Често пъти е полезно да бъде проследен маршрута, по който даден пакет поема пътя от компютъра източник до хоста местоназначение. TCP/IP стековете включват помощна програма за проследяване на маршрута, която позволява да идентифицирате маршрутизаторите, през които преминава съобщението.
В следващият пример е използване командата traceroute за да бъде проследен маршрута на пакетите от източника до местоназначението:
sami@sami:~$ traceroute abv.bg traceroute to abv.bg (194.153.145.104), 30 hops max, 60 byte packets 1 172.16.50.1 (172.16.50.1) 3.660 ms 3.642 ms 3.634 ms 2 93.155.130.57 (93.155.130.57) 3.625 ms 3.616 ms 3.606 ms 3 212.70.158.89 (212.70.158.89) 10.177 ms * * 4 netinfo.bix.bg (193.169.198.168) 10.149 ms 10.150 ms 10.142 ms 5 abv.bg (194.153.145.104) 10.131 ms 10.124 ms 10.115 ms |
Както можете да видите, проследяването показва IP адрес и името на препращащия компютър или маршрутизатор. На пакета са му били необходими четиринадесет скока, за да достигне до своето местоназначение, което е хостьт с име www.google.bg. Времената за отиване и връщане (в милисекунди) са показани за всеки скок.
6. nmap
Nmap (Network Mapper) е порт-скенер с отворен код създаден от Гордън Лайън. Използва се за откриване на хостове и активни услуги в компютърна мрежа.
Nmap изпраща специално изработени пакети до хостa и след това анализира отговорите. За разлика от други порт-скенери, Nmap проверява условията в мрежата (претоварване на мрежата и др.) преди сканирането. Благодарение на голямата общност от активни потребители, които предоставят информация и подобряват характеристиките му, Nmap е успял да разшири възможностите си за сканиране, като освен, че открива, дали един хост е активен или определен порт е отворен, той може да определи операционната система на хоста и нейната версия, наименованието и версиите на услугите, които са активни на хоста, типа на устройството, наличието на защитна стена и др.
sami@sami:~$ nmap 10.129.3.7 Starting Nmap 6.00 ( http://nmap.org ) at 2012-12-18 09:55 EET Nmap scan report for 10.129.3.7 Host is up (0.011s latency). Not shown: 987 closed ports PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 53/tcp open domain 80/tcp open http 139/tcp filtered netbios-ssn 445/tcp filtered microsoft-ds 1433/tcp open ms-sql-s 1947/tcp open sentinelsrm 2000/tcp open cisco-sccp 2002/tcp open globe 3389/tcp open ms-wbt-server 8080/tcp open http-proxy 8291/tcp open unknown |
Nmap done: 1 IP address (1 host up) scanned in 14.40 seconds
7.netstat
Често пъти е полезно да разгледате мрежовите статистики. Командата netstat се използва в UNIX/Linux, за да покаже информация за TCP/IP връзките и протокола. Командата netstat предоставя списък с връзки, които са текущо активни:
sami@sami:~$ netstat Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 sami.local:41531 178.132.81.26:https ESTABLISHED tcp 0 0 sami.local:60985 fa-in-f125.:xmpp-client ESTABLISHED tcp 0 0 sami.local:43473 core2-vlan100.itser:ssh ESTABLISHED tcp 0 0 sami.local:39614 kwaimuk.canonical:https ESTABLISHED tcp 0 0 sami.local:41700 178.132.81.53:https ESTABLISHED tcp 1 0 sami.local:36768 mistletoe.canonica:http CLOSE_WAIT |
Можете да видите протоколите, използвани за всяка връзка, името на локалния компютър и номера на порта, използвани за връзката, „чуждестранният” (foreign) адрес (името на отдалечения компютър) и състоянието на връзката. Netstat статистиките могат да бъдат полезни при отстраняване на проблеми с TCP/IP връзките. Следващият пример показва изобилието от информация, предоставяна в режим на обобщение (ключът -s). Докладите за грешки са особено полезни при диагностициране на проблеми с хардуера и маршрутизирането.
sami@sami:~$ netstat -s Ip: 5765 total packets received 51 with invalid addresses 0 forwarded 0 incoming packets discarded 5535 incoming packets delivered 4510 requests sent out 2 dropped because of missing route Icmp: 76 ICMP messages received 0 input ICMP message failed. ICMP input histogram: destination unreachable: 24 timeout in transit: 44 echo replies: 8 16 ICMP messages sent 0 ICMP messages failed ICMP output histogram: destination unreachable: 8 echo request: 8 IcmpMsg: InType0: 8 InType3: 24 InType11: 44 OutType3: 8 OutType8: 8 Tcp: 1087 active connections openings 0 passive connection openings 990 failed connection attempts 21 connection resets received 5 connections established 4209 segments received 3166 segments send out 26 segments retransmited 0 bad segments received. 25 resets sent Udp: 1226 packets received 8 packets to unknown port received. 0 packet receive errors 1302 packets sent UdpLite: TcpExt: 9 packets pruned from receive queue because of socket buffer overrun 4 TCP sockets finished time wait in fast timer 93 delayed acks sent Quick ack mode was activated 5 times 2 packets directly queued to recvmsg prequeue. 2 bytes directly received in process context from prequeue 1762 packet headers predicted 359 acknowledgments not containing data payload received 163 predicted acknowledgments 26 other TCP timeouts 10 packets collapsed in receive queue due to low socket buffer 5 DSACKs sent for old packets 19 connections reset due to unexpected data 2 connections reset due to early user close TCPBacklogDrop: 2 TCPRcvCoalesce: 1611 IpExt: InMcastPkts: 67 OutMcastPkts: 69 InBcastPkts: 108 OutBcastPkts: 34 InOctets: 3298366 OutOctets: 580832 InMcastOctets: 7154 OutMcastOctets: 7234 InBcastOctets: 15950 OutBcastOctets: 4436 |
8. tcpdump
tcpdump е най използвания инструмент за прослушване на трафика в мрежата от Линукс шел. tcpdump е общ анализатор на пакети, който работи в командния ред. Програмата позволява на потребителя да преглежда TCP/IP пакети който се изпращат или получават по мрежата в която се намира компютъра. Той е написан през 1987 г. от Van Jacobson, Craig Leres и Steven McCanne които по това време са работели в лабораторията Lawrence Berkeley Laboratory в мрежата Research Group. Tcpdump работи на повечето Unix-подобни операционни системи: Linux, Solaris, BSD, Mac OS X, HP-UX и AIX и др. При тези системи, Tcpdump използва libpcap библиотеката, за прослушване на пакети.
# слуша на vlan100 интерфейс tcpdump -i vlan100 # показва само 10 реда tcpdump -i vlan100 -c 10 # слуша порт 80 без DNS имена tcpdump -n dst port 80 # слуша на vlan100 порт 80 tcpdump -i vlan100 port 80 # същото но от порт 81 до 100 без DNS имена tcpdump -i vlan100 -n portrange 81-100 # слуша на vlan100 ип адрес 10.125.3.2 tcpdump -i vlan100 host 10.125.3.2 # слуша на vlan100 цялата мрежа 10.125.1.0/24 tcpdump -i vlan100 src net 10.125.1.0/24 # слуша на vlan100 порт 80 от ип адрес 10.125.3.2 tcpdump -i vlan100 port 80 and host 10.125.3.2 # без DNS имена, vlan100, изключва протокола ssh слуша пакети от ип адрес 10.125.3.2 tcpdump -nl -i vlan100 not port ssh and src host 10.125.3.2 # същото но с два ип адреса tcpdump -nl -i vlan100 not port ssh and src \(10.125.3.2 or 10.125.3.3\) # слуша на vlan100 портове 25, 110 и 143 tcpdump -i vlan100 port \(25 or 110 or 143\) # слуша на vlan100 протокола icmp tcpdump -n -i vlan100 icmp # слуша на vlan100 протокола arp tcpdump -n -i vlan100 arp # слуша на vlan100 трафика през порт 80 в текстов вид tcpdump -i vlan100 -s 0 -A port 80 | grep GET |
9. top, htop
Повечето администратори ползват програмката top, служеща за мониторинг на процесите в Linux която нагледно представя процесите, заемащи най-много ресурси в машината. top е мощно средство за откриване и спиране на проблемни процеси. Но има един съществен недостатък – не можете да разглеждате процесите, намиращи се в списъка най-отдолу. Не че е особено важно, защото активните процеси се изобразяват първи в списъка, подредени по степен на натоварване на процесора. Но все пак понякога е нужно да видим всички тези процеси, То последните нерядко харчат и те доста системни ресурси.Има един интересен проект htop e (GPL) базиран на ncurses, и върши същата работа като top, с тази разлика, че са добавени някои полезни функции. Можете да разглеждате целият списък със стартирани процеси. Освен това са добавени цветове , може да се ползват функционалните клавиши и програмката е доста конфигурируема. htop е с достъпно потребителско меню в долната част на екрана, като например F1 извиква помощна информация, F2 е “Setup”, и така нататък. За разлика от top (която е част на пакета procps и е включена във всяка линукс дистрибуция), htop трябва да сe го инсталира. Първо проверете, дали е налична програмката във вашата дистрибуция. В Debian/Ubuntu/Mint я има и инсталацията се свежда до:
apt-get install htop |
10. whois
WHOIS е мрежов протокол използван в Интернет за търсене на имена, IP адреси и мрежови сървъри. WHOIS е самостоятелна услуга, поддържана от самостоятелен протокол в Internet. В един WHOIS сървър се поддържа база от данни с имената, електронните адреси, телефонните номера на регистрирани потребители. Достъпът до базата данни е свободен и се осъществява с помощта на WHOIS клиент посредством WHOIS протокол.
root@host:~# whois itservice-bg.net Whois Server Version 2.0 Domain names in the .com and .net domains can now be registered with many different competing registrars. Go to http://www.internic.net for detailed information. Domain Name: ITSERVICE-BG.NET Registrar: PDR LTD. D/B/A PUBLICDOMAINREGISTRY.COM Whois Server: whois.PublicDomainRegistry.com Referral URL: http://www.PublicDomainRegistry.com Name Server: DRAKA.CABLEBULGARIA.BG Name Server: ETCH.GCN.BG Name Server: NS1.ITSERVICE-BG.NET Name Server: NS2.ITSERVICE-BG.NET Status: ok Updated Date: 11-jan-2012 Creation Date: 23-jan-2009 Expiration Date: 23-jan-2013 Domain Name: ITSERVICE-BG.NET Registrant: ITSservice 2009 LTD Samuil Arsov (support@itservice-bg.net) Ivan Vazov 50 Pleven ,5800 BG Tel. +359.887371498 Fax. +359.64800601 Creation Date: 23-Jan-2009 Expiration Date: 23-Jan-2013 Domain servers in listed order: draka.cablebulgaria.bg etch.gcn.bg ns1.itservice-bg.net ns2.itservice-bg.net Administrative Contact: ITSservice 2009 LTD Samuil Arsov (support@itservice-bg.net) Ivan Vazov 50 Pleven ,5800 BG Tel. +359.887371498 Fax. +359.64800601 Technical Contact: ITSservice 2009 LTD Samuil Arsov (support@itservice-bg.net) Ivan Vazov 50 Pleven ,5800 BG Tel. +359.887371498 Fax. +359.64800601 Status:ACTIVE |
11. dig
DIG (информация за домейна groper) е мрежово администриране от командния ред инструмент за заявки Domain Name System (DNS) сървъри за имена.
Dig е полезен за отстраняване на неизправности в мрежата и за образователни цели. Dig може да работи в интерактивен режим в командния ред или в пакетен режим четене на искания от операционната система файл.
sami@sami:~$ dig abv.bg ; <<>> DiG 9.8.1-P1 <<>> abv.bg ;; global options: +cmd ;; Got answer: ;; ->>HEADER< |
12 iftop
iftop слуша мрежовия трафик и показва таблицата на текущата пропускателната способност и в двете посоки на връзките създадени от хостове. iftop трябва да се управлява с достатъчно права, за да се контролира целия мрежов трафик на интерфейса, като на повечето системи това означава, че трябва да се стартира с root. По подразбиране, iftop ще показва имената на хостовете, свързани с адреси преглеждайки пакетите които преминават през рутера.
13. bmon
bmon е програма за мониторинг на трафика с множество методи за входни и изходни режими.
14. nload
nload е конзолно приложение, което следи мрежовия трафик и използването на пропускателната способност в реално време. Тo визуализира и изходящия трафик с втора графикa и предоставя допълнителна информация, като общата сума на прехвърлените данни и мин/макс и използване на мрежата.
15. conntrack
Connection tracking представлява възможноста да поддържате дадена информация
за връзките в таблица, като предназначение и източник на IP адресите и сътветните
портове, видове протоколи, изтичане на времето и състояние на връзката. Firewall-и
които правят това са познати като stateful. На stateful firewall-ите им е присъща
по-голяма сигурност отколкото на тяхните “stateless” дубликати … прости пакетни
филтри. iptables е точно такъв firewall който поддържа таблицата /proc/net/ip_conntrack.
показва броя на връзките:
conntrack -C |
показва връзките в SNAT на ип адрес:
conntrack -L -s 10.125.3.5 |
16. lm-sensors
lm_sensors (Linux мониторинг сензор), е свободен софтуер с отворен код инструмент за Linux, която осигурява инструменти и драйвери за мониторинг на температурите, напрежението и вентилаторите. В интерес на истината lm-sensors не винаги дава точни и добри резултати но в определени моменти е много ценен инструмент.
инсталация:
sudo apt-get install lm-sensors |
сканиране:
sudo sensors-detect |
преглед:
core2:~# |
17. badblocks
badblocks се използва за търсене за лоши сектори на устройство (обикновено на дисков дял). устройство е специален файл, съответстващ на устройството (например / dev/hdc1).
badblocks -v -s /dev/sda1 |
18. lsmod
lsmod – Показване на състоянието на модулите в ядрото на Linux
core2:~# |
19. lspci
lspci е помощна програма за показване на информация за PCI шината и устройства, свързани с нея.
core2:~# lspci 00:00.0 Host bridge: Intel Corporation 3200/3210 Chipset DRAM Controller (rev 01) 00:01.0 PCI bridge: Intel Corporation 3200/3210 Chipset Host-Primary PCI Express Bridge (rev 01) 00:1a.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 02) 00:1a.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 02) 00:1a.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 02) 00:1a.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 02) 00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 02) 00:1c.4 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 5 (rev 02) 00:1c.5 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 6 (rev 02) 00:1d.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 02) 00:1d.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 02) 00:1d.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 02) 00:1d.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 02) 00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 92) 00:1f.0 ISA bridge: Intel Corporation 82801IR (ICH9R) LPC Interface Controller (rev 02) 00:1f.2 IDE interface: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA Controller [IDE mode] (rev 02) 00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 02) 00:1f.5 IDE interface: Intel Corporation 82801I (ICH9 Family) 2 port SATA Controller [IDE mode] (rev 02) 00:1f.6 Signal processing controller: Intel Corporation 82801I (ICH9 Family) Thermal Subsystem (rev 02) 01:00.0 PCI bridge: Intel Corporation 6700PXH PCI Express-to-PCI Bridge A (rev 09) 01:00.1 PIC: Intel Corporation 6700/6702PXH I/OxAPIC Interrupt Controller A (rev 09) 01:00.2 PCI bridge: Intel Corporation 6700PXH PCI Express-to-PCI Bridge B (rev 09) 01:00.3 PIC: Intel Corporation 6700PXH I/OxAPIC Interrupt Controller B (rev 09) 05:00.0 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (rev 06) 05:00.1 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (rev 06) 0d:00.0 Ethernet controller: Intel Corporation 82573E Gigabit Ethernet Controller (Copper) (rev 03) 0f:00.0 Ethernet controller: Intel Corporation 82573L Gigabit Ethernet Controller 11:04.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI ES1000 (rev 02) |
20. iptraf
iptraf е IP LAN монитор който генерира различни статистики в мрежата, включително информация за TCP, UDP, ICMP и OSPF протоколи. Ethernet натоварване, IP грешки и други статистики.
sudo apt-get install iptraf |
21. dmesg
dmesg се използва, за да разгледа или контролира съобщенията от буфера на ядрото. Действието по подразбиране е да прочетете всички съобщения от ядрото при стартирани и по време на работа.
dmesg |
core2:~# cat /var/log/dmesg | grep e1000 [ 1.066729] e1000e: Intel(R) PRO/1000 Network Driver - 1.5.1-k [ 1.066731] e1000e: Copyright(c) 1999 - 2011 Intel Corporation. [ 1.066763] e1000e 0000:05:00.0: Disabling ASPM L1 [ 1.066793] e1000e 0000:05:00.0: setting latency timer to 64 [ 1.066914] e1000e 0000:05:00.0: irq 92 for MSI/MSI-X [ 1.240348] e1000e 0000:05:00.0: eth0: (PCI Express:2.5GT/s:Width x4) 00:15:17:96:77:62 [ 1.240351] e1000e 0000:05:00.0: eth0: Intel(R) PRO/1000 Network Connection [ 1.240431] e1000e 0000:05:00.0: eth0: MAC: 0, PHY: 4, PBA No: D50868-003 [ 1.240440] e1000e 0000:05:00.1: Disabling ASPM L1 [ 1.240462] e1000e 0000:05:00.1: setting latency timer to 64 [ 1.240575] e1000e 0000:05:00.1: irq 93 for MSI/MSI-X [ 1.412709] e1000e 0000:05:00.1: eth1: (PCI Express:2.5GT/s:Width x4) 00:15:17:96:77:63 [ 1.412712] e1000e 0000:05:00.1: eth1: Intel(R) PRO/1000 Network Connection [ 1.412792] e1000e 0000:05:00.1: eth1: MAC: 0, PHY: 4, PBA No: D50868-003 [ 1.412799] e1000e 0000:0d:00.0: Disabling ASPM L0s L1 [ 1.412818] e1000e 0000:0d:00.0: setting latency timer to 64 [ 1.412955] e1000e 0000:0d:00.0: irq 94 for MSI/MSI-X [ 1.523967] e1000e 0000:0d:00.0: eth2: (PCI Express:2.5GT/s:Width x1) 00:30:48:d3:ee:38 [ 1.523970] e1000e 0000:0d:00.0: eth2: Intel(R) PRO/1000 Network Connection [ 1.524152] e1000e 0000:0d:00.0: eth2: MAC: 2, PHY: 2, PBA No: 0100FF-0FF [ 1.524160] e1000e 0000:0f:00.0: Disabling ASPM L0s L1 [ 1.524181] e1000e 0000:0f:00.0: setting latency timer to 64 [ 1.524320] e1000e 0000:0f:00.0: irq 95 for MSI/MSI-X [ 1.636273] e1000e 0000:0f:00.0: eth3: (PCI Express:2.5GT/s:Width x1) 00:30:48:d3:ee:39 [ 1.636275] e1000e 0000:0f:00.0: eth3: Intel(R) PRO/1000 Network Connection [ 1.636344] e1000e 0000:0f:00.0: eth3: MAC: 2, PHY: 2, PBA No: FFFFFF-0FF |
22. iptables
23. powertop
Консумация на енергия и инструмент за диагностика на захранването.
sudo apt-get install powertop |
Summary: 6112.7 wakeups/second, 0.0 GPU ops/second, 0.0 VFS ops/sec and 84.8% CPU use Usage Events/s Category Description 216.7 ms/s 4281.1 Interrupt [3] net_rx(softirq) 13.4 ms/s 1407.2 Interrupt [2] net tx(softirq) 559.7 ms/s 2.0 Process /usr/lib/quagga/bgpd --daemon -A 127.0.0.1 4.9 ms/s 212.2 Timer death_by_timeout 6.3 ms/s 156.5 Interrupt [1] timer(softirq) 1.7 ms/s 22.5 Timer neigh_timer_handler 2.4 ms/s 15.6 Process /usr/sbin/dnsmasq -x /var/run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg- 10.6 ms/s 2.0 Process powertop 9.4 ms/s 0.00 Interrupt [93] eth1 5.5 ms/s 0.00 kWork do_dbs_timer 5.4 ms/s 0.00 Interrupt [92] eth0 21.9 µs/s 2.0 Process [ksoftirqd/2] 15.8 µs/s 2.0 Process [ksoftirqd/3] 1.8 ms/s 1.0 Process [ksoftirqd/0] 3.1 ms/s 0.00 Interrupt [94] eth2 466.8 µs/s 1.0 Interrupt [7] sched(softirq) 274.0 µs/s 1.0 Interrupt [8] hrtimer(softirq) 97.2 µs/s 1.0 Process sshd: root@pts/2 30.6 µs/s 1.0 kWork cache_reap 16.8 µs/s 1.0 Timer ghes_poll_func 5.1 µs/s 1.0 Timer clocksource_watchdog 3.5 µs/s 1.0 kWork flush_to_ldisc 1.8 µs/s 1.0 Timer ipmi_timeout 1.6 µs/s 1.0 Timer tcp_write_timer 2.0 ms/s 0.00 Interrupt [9] RCU(softirq) 1.9 ms/s 0.00 Process [kworker/0:2] 0.9 ms/s 0.00 Timer delayed_work_timer_fn 398.4 µs/s 0.00 Process [kworker/2:2] 299.1 µs/s 0.00 Process init [2] 124.8 µs/s 0.00 Process [kworker/u:3] 88.3 µs/s 0.00 Process [kworker/3:1] 57.6 µs/s 0.00 Process /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 105:108 34.4 µs/s 0.00 Process (squid) -YC -f /etc/squid3/squid.conf 21.6 µs/s 0.00 kWork vmstat_update |
24. ethstats
ethstats – удобна статистика на мрежовите интерфейси.
sudo apt-get install ethstats |
core2:~# ethstats total: 609.21 Mb/s In 547.54 Mb/s Out - 87822.0 p/s In 85902.0 p/s Out eth0: 328.68 Mb/s In 166.57 Mb/s Out - 41369.0 p/s In 33745.0 p/s Out eth1: 121.18 Mb/s In 340.98 Mb/s Out - 29921.0 p/s In 40033.0 p/s Out eth2: 76.94 Mb/s In 17.69 Mb/s Out - 8333.0 p/s In 5633.0 p/s Out eth2.104: 8.90 Mb/s In 2.19 Mb/s Out - 1064.0 p/s In 808.0 p/s Out eth2.523: 66.16 Mb/s In 15.12 Mb/s Out - 6101.0 p/s In 4826.0 p/s Out eth3: 0.00 Mb/s In 0.00 Mb/s Out - 0.0 p/s In 0.0 p/s Out gre0: 0.00 Mb/s In 0.00 Mb/s Out - 0.0 p/s In 0.0 p/s Out tun1: 0.00 Mb/s In 0.03 Mb/s Out - 3.0 p/s In 3.0 p/s Out tun2: 7.12 Mb/s In 0.23 Mb/s Out - 733.0 p/s In 430.0 p/s Out tun3: 0.01 Mb/s In 0.01 Mb/s Out - 7.0 p/s In 6.0 p/s Out tun4: 0.22 Mb/s In 4.72 Mb/s Out - 291.0 p/s In 418.0 p/s Out tun5: 0.00 Mb/s In 0.00 Mb/s Out - 0.0 p/s In 0.0 p/s Out |
25. taskset
taskset – асоцииране на процес към определено ядро на процесора.
С командата ps axf преглеждаме процесите (може и с htop)
core2:~# ps axf PID TTY STAT TIME COMMAND 2 ? S 0:00 [kthreadd] 3 ? S 236:54 \_ [ksoftirqd/0] 6 ? S 0:00 \_ [migration/0] 7 ? S 2:29 \_ [watchdog/0] 8 ? S 0:00 \_ [migration/1] 10 ? S 0:36 \_ [ksoftirqd/1] 12 ? S 0:02 \_ [watchdog/1] 13 ? S 0:00 \_ [migration/2] 15 ? S 9:46 \_ [ksoftirqd/2] 16 ? S 0:08 \_ [watchdog/2] 17 ? S 0:00 \_ [migration/3] 18 ? S 0:02 \_ [kworker/3:0] 19 ? S 10:27 \_ [ksoftirqd/3] 20 ? S 0:40 \_ [watchdog/3] 21 ? S< 0:00 \_ [cpuset] 22 ? S< 0:00 \_ [khelper] 23 ? S 0:00 \_ [kdevtmpfs] 24 ? S< 0:00 \_ [netns] 25 ? S 0:19 \_ [sync_supers] 26 ? S 0:00 \_ [bdi-default] 27 ? S< 0:00 \_ [kintegrityd] 28 ? S< 0:00 \_ [kblockd] 31 ? S 2:46 \_ [kworker/3:1] 32 ? S 0:00 \_ [khungtaskd] 33 ? S 0:00 \_ [kswapd0] 34 ? SN 0:00 \_ [ksmd] 35 ? SN 0:00 \_ [khugepaged] 36 ? S 0:00 \_ [fsnotify_mark] 37 ? S< 0:00 \_ [crypto] 138 ? S 0:00 \_ [khubd] 173 ? S< 0:00 \_ [ata_sff] 184 ? S 0:00 \_ [scsi_eh_0] 185 ? S 0:00 \_ [scsi_eh_1] 187 ? S 0:00 \_ [kworker/u:2] 188 ? S 0:00 \_ [scsi_eh_2] 189 ? S 0:00 \_ [scsi_eh_3] 190 ? S 0:48 \_ [kworker/u:3] 207 ? S 4:49 \_ [kworker/2:2] 208 ? S 265:55 \_ [kworker/0:2] 221 ? S 0:14 \_ [jbd2/sda1-8] 222 ? S< 0:00 \_ [ext4-dio-unwrit] 503 ? S< 0:00 \_ [edac-poller] 1899 ? S 0:17 \_ [flush-8:0] 16485 ? S 6:08 \_ [kworker/0:1] 322190 ? S 0:02 \_ [kworker/1:0] 322295 ? S 0:02 \_ [kworker/1:2] 324623 ? S 0:00 \_ [kworker/2:1] 1 ? Ss 0:31 init [2] 348 ? Ss 0:00 udevd --daemon 474 ? S 0:00 \_ udevd --daemon 2289 ? S 0:00 \_ udevd --daemon 1858 ? Sl 1:30 /usr/sbin/rsyslogd -c5 1914 ? Ss 0:00 /usr/sbin/atd 1979 ? Ss 0:00 /usr/sbin/acpid 2054 ? S 0:00 /usr/sbin/hddtemp -d -l 127.0.0.1 -p 7634 -s | /dev/sda 2075 ? Ss 1:06 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 105:108 2130 ? S 5:23 /usr/sbin/snmpd -LS6d -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid 2143 ? Ss 0:00 /usr/bin/dbus-daemon --system 2162 ? Ss 0:00 /usr/sbin/cron 2203 ? Ss 0:01 /usr/sbin/sshd 322988 ? Ss 0:00 \_ sshd: root@pts/1 322993 pts/1 Ss+ 0:00 | \_ -bash 324651 ? Ss 0:00 \_ sshd: root@pts/2 324656 pts/2 Ss 0:00 \_ -bash 325167 pts/2 R+ 0:00 \_ ps axf 2221 ? Ss 0:00 /usr/sbin/squid3 -YC -f /etc/squid3/squid.conf 2223 ? S 2:58 \_ (squid) -YC -f /etc/squid3/squid.conf 2248 ? S 0:00 \_ (unlinkd) 15995 tty1 Ss+ 0:00 /sbin/getty 38400 tty1 15996 tty2 Ss+ 0:00 /sbin/getty 38400 tty2 15997 tty3 Ss+ 0:00 /sbin/getty 38400 tty3 15998 tty4 Ss+ 0:00 /sbin/getty 38400 tty4 15999 tty5 Ss+ 0:00 /sbin/getty 38400 tty5 16000 tty6 Ss+ 0:00 /sbin/getty 38400 tty6 16005 ? Sl 0:01 /usr/sbin/console-kit-daemon --no-daemon 52128 ? S 37:13 /usr/sbin/dnsmasq -x /var/run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new 185550 ? Ss 2:12 /usr/lib/quagga/zebra --daemon -A 127.0.0.1 185554 ? Ss 21:57 /usr/lib/quagga/bgpd --daemon -A 127.0.0.1 185558 ? Ss 0:02 /usr/lib/quagga/watchquagga --daemon zebra bgpd |
А по долу асоциираме процеса.
taskset -cp 1 185550 |
В случая имаме 4 ядра:
0 = първо ядро
1 = второ ядро
2 = трето ядро
3 = четвърто ядро
26. smp_affinity
Асоцииране на устройство към ядро на процесор
Първо трябва да прегледаме номерата на устройствата с cat /proc/interrupts
core2:~# cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 0: 1870 1310 338 50 IO-APIC-edge timer 1: 1 0 1 1 IO-APIC-edge i8042 6: 1 1 0 1 IO-APIC-edge floppy 7: 1 0 0 0 IO-APIC-edge parport0 8: 0 0 1 0 IO-APIC-edge rtc0 9: 0 0 0 0 IO-APIC-fasteoi acpi 14: 520 328056 520 19037 IO-APIC-edge ata_piix 15: 0 0 0 0 IO-APIC-edge ata_piix 16: 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb3 17: 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb4 18: 0 0 0 0 IO-APIC-fasteoi ehci_hcd:usb1, ata_piix, uhci_hcd:usb5, uhci_hcd:usb8 22: 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb7 23: 0 0 0 0 IO-APIC-fasteoi ehci_hcd:usb2, uhci_hcd:usb6 92: 2544239156 44008373 2 1 PCI-MSI-edge eth0 93: 2 3 161935823 3988820087 PCI-MSI-edge eth1 94: 1 828139906 4127077 39015258 PCI-MSI-edge eth2 NMI: 766215 61908 41672 578597 Non-maskable interrupts LOC: 2047505432 1299479813 531116521 1813348140 Local timer interrupts SPU: 0 0 0 0 Spurious interrupts PMI: 766215 61908 41672 578597 Performance monitoring interrupts IWI: 33 6 22 34 IRQ work interrupts RES: 612444 2008260 42005167 2011006 Rescheduling interrupts CAL: 5633 93413552 141842 50985616 Function call interrupts TLB: 6154 5446 4202 3254 TLB shootdowns TRM: 0 0 0 0 Thermal event interrupts THR: 0 0 0 0 Threshold APIC interrupts MCE: 0 0 0 0 Machine check exceptions MCP: 3526 3526 3526 3526 Machine check polls ERR: 0 MIS: 0 |
и да асоциираме определено устройство например лан интерфейса eth0 към първото ядро от четириядрен процесор.
echo 1 > /proc/irq/92/smp_affinity |
параметъра след echo е както следва:
1 = първо ядро
2 = второ ядро
4 = трето ядро
8 = четвърто ядро
f = всички ядра
27. traffic control
Debian – Traffic Control: Linux Advanced Traffic Control
Linux Traffic Shaper per IP – Iptables CLASSIFY
Linux Traffic Shaper ifb interface
28. policy routnig
Policy Routing – iptables mark routing
Policy Routing – sample split access
Policy Routing – iptables mark port and protocol
29. mii-tool
Тази програма проверява или определя статута на мрежовия интерфейс.
core2:~# mii-tool eth0: negotiated, link ok eth1: negotiated flow-control, link ok eth2: negotiated 100baseTx-FD, link ok eth3: no link |
Благодаря за подробната и полезна статия!