Инструментите на мрежовия администратор в линукс рутера

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

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 ще показва имената на хостовете, свързани с адреси преглеждайки пакетите които преминават през рутера.
iftop

13. bmon

bmon е програма за мониторинг на трафика с множество методи за входни и изходни режими.
bmon

14. nload

nload е конзолно приложение, което следи мрежовия трафик и използването на пропускателната способност в реално време. Тo визуализира и изходящия трафик с втора графикa и предоставя допълнителна информация, като общата сума на прехвърлените данни и мин/макс и използване на мрежата.
nload

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

iptraf1
iptraf2
iptraf3

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

iptables mini howto

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

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This Post Has One Comment

  1. Avrora

    Благодаря за подробната и полезна статия!