Showing posts with label Linux. Show all posts
Showing posts with label Linux. Show all posts

11 June 2013

Automatski shutdown virtuelnih mašina na ESXi hostu, po nestanku struje

Zadatak

Nedavno smo kolega i ja imali zadatak da napravimo sistem za automatski shutdown virtuelnih mašina na ESXi serveru, a na kraju i samog hosta, po nestanku struje. Ovo je rješenje problema sa nekontrolisanim gašenjima virtuelnih mašina, što posebno zna biti nezgodno ako se na serveru nalazi baza koja lako može da pukne ukoliko u momentu gašenja bude u toku neka transakcija. Odmah nam je pao na pamet PowerChute Business, softver koji dolazi na CD-u za UPS, ali nismo znali kako da on pokrene shutdown virtuelnih mašina. U pitanju su bili server Fujitsu Primergy TX200 S6 i UPS APC SMT1000I

Fujitsu Primergy TX200 S6

APC SMT1000I


















Negdje na Internetu smo našli da će ESXi sam prepoznati signal za shutdown koji šalje PowerChute, te da će sam odraditi shutdown po redoslijedu kako je podešeno u Virtual Machine Startup/Shutdown odjeljku u podešavanjima u vSphere Clientu, međutim to nama nije radilo sa softverom koji je došao na CD-u. Njega smo instalirali na CentOS i softver nikako nije mogao detektovati UPS koji je bio priključen preko kabla. Kabl na jednoj strani ima RJ-45 priključak (strana koja ide u UPS), a na drugoj RS-232 (onoj koja ide u računar). Rješenje je bilo u appliance-u za vmware - vSphere Management Assistant (vMA) 5.1, sistemu koji ima instalirane alate za menadžment Vmware hostova.

Instalacija i podešavanje softvera

Na server je instaliran ESXi 5.1 i dodate tri virtuelne mašine koje imaju svoje zadatke. Mi ćemo za potrebe našeg sistema za shutdown napraviti još jednu virtuelnu mašinu - vSphere Management Assistant (vMA) 5.1, proizvod Vmware-a. Moguće ga je besplatno downloadovati sa lokacije https://my.vmware.com/group/vmware/get-download?downloadGroup=VSP510-VMA-510 .

Poslije deploymenta OVF-a, dobija se virtuelna mašina sa diskom od 3,5GB (provisioned size) i 600MB RAM memorije. Appliance je napravljen na SuSe Linuxu Enterprise 11 x64. Prije prvog paljenja je na virtuelnu mašinu potrebno dodati serijski port i tom prilikom označiti opciju "Use physical serial port on the host". Do kraja ostaviti sve po podrazumijevanim podešavanjima (kod nas je oznaka porta bila /dev/char/serial/uart0). Upaliti mašinu. 

Po prvom paljenju se pokreće wizard u vidu konfiguracionog menija

Ovdje su osnovna podešavanja: IP adresa, DNS, Hostname, Gateway. Setovati ih u skladu sa mrežnim okruženjem i izabrati 1 - Exit this program.

Sljedeće što će trebati je da se setuje password za korisnika vi-user. Ovo je account sa root ovlaštenjima i password mora da zadovoljava complexity requirements (8 znakova, velika i mala slova, brojevi i specijalni znakovi). Ako sve ovo nije ispoštovano, neće htjeti da kreira password :( Sigurno je da se i to može podešavati, ali se nismo bavili ovom banalnom problematikom.

Sljedeće što bi se trebalo vidjeti na ekranu je ovo (naravno sa Vašom adresom):


Sada treba skinuti novu verziju softvera. Probali smo sa softverom koji dođe na CD-u, međutim nikako nije uspijevao da detektuje priključeni UPS, ili je u nekim modovima pokazivao da je UPS na bateriji umjesto da je online. Na stranici APC-a postoji novija verzija softvera. Skinuti verziju za ESXi:


Downloadovani fajl pcbe910_linux.tar.gz otvoriti WinRarom i iz njega (iz foldera RPM) ekstraktovati fajl pbeagent-9.1.0-614.i386.rpm. Ovaj fajl WinSCP-om (ili nekako drugačije) prebaciti na naš vMA. Spojiti se na vMA preko SSH, i instalirati paket komandom rpm (bitno je da se bude u folderu gdje se nalazi navedeni paket)
# sudo rpm -i pbeagent-9.1.0-614.i386.rpm
Softver pokrenuti komandom
# sudo sh /opt/APC/PowerChuteBusinessEdition/Agent/config.sh
Pokreće se konfiguraciona skripta. Prvo se setuju korisničko ime i šifra za pristup aplikaciji (mi smo za testiranje stavili admin i za username i za password), zatim se izabere port na koji je priključen UPS (to je kod nas bio /dev/ttyS0), zatim se unese Yes za potvrdu konfiguracije, a onda IP adresa ESXi hosta. Ovdje je moguće da prijavi grešku "Error: No targets have been defined for this vMA.", ali ako se ovo desi, potrebno je ručno dodati ESXi host kasnije. Poslije ovoga, vMA pita za kredencijale od ESXi-a, i na kraju pita da li želite da startuje PowerChute. Vi kažete Yes. To izgleda ovako:


Da bi se provjerio status servera (tj. da li je managed, unese se komanda)
# vifp listservers
Ako je server managed, trebao bi da bude izlistan. Ako nije, tada ga je potrebno dodati komandom
# vifp  addserver <server>
Na mjesto oznake  <server> ide IP adresa ili DNS ime ESXi servera. Bitno je da imena servera (i vMA i ESXi) budu dodati na lokalni DNS server u vidu A recorda, ili da se host name ESXi-a doda u fajl /etc/hosts na vMA serveru.


Glavna ideja je da na ESXi host smjestimo skriptu koja će preko Vmware CLI-a ugasiti virtuelne mašine jednu po jednu, a na kraju i samog hosta. Na vMA ćemo smjestiti drugu, mini skriptu koja će pozivati skriptu na ESXi-u, a softver PowerChute će znati kada će se to desiti. Ovdje su se pojavila dva problema: Da bi se uradio shutdown hosta, on mora prvo otići u maintenance mode, pokrenuti shutdown i što prije izaći iz maintenance mode-a, da bi se prilikom sljedećeg startovanja normalno pokrenule virtuelne mašine. Skripta koja odrađuje sve navedeno se može naći na adresi https://github.com/sixdimensionalarray/esxidown/blob/master/esxidown.sh . Drugi problem je bio daljinsko pokretanje komande na hostu. Za to je inače dobar program sshpass, neinteraktivni SSH klijent, ali njega nije bilo instaliranog na vMA Linuxu. Kopanjem po netu smo naišli na odgovarajući rpm koji smo instalirali komandom
# yast2 -i sshpass-1.04-4.2.x86_64.rpm

Instalacija i podešavanje skripti

Sljedeće što smo uradili: omogućili smo SSH pristup Vmware hostu - u vSphere clientu na Security Profile-u uključili servis SSH, a port 22 je na njegovom Firewallu već bio propušten. Obavezno treba napraviti bar jednu SSH konekciju npr. iz Putty-ja sa vMA na ESXi host da bi došlo do razmjene ključeva između SSH servera i klijenta. Bilo bi nezgodno ako bi prvu konekciju ostvario sshpass jer je on neinteraktivan alat i ne bismo mogli da otkucamo "yes" da bi prihvatili novi ključ.

Skripta esxidown.sh ima tri bitne promjenjive: SERVERIDS (id za svaku virtuelnu mašinu, razdvajaju se razmacima), WAIT_TRYS (broj pokušaja za uspješan shutdown - ako se mašina ni tada ne ugasi, tada ide poweroff, kod nas setovano na 2) i WAIT_TIME (vrijeme u sekundama za shutdown virtuelne mašine, u našem primjeru 20). Vrijednosti svih promjenjivih je potrebno prilagoditi okruženju. Za dobijanje ID-eva virtuelnih mašina se SSH klijentom spojimo na ESXi host i izvršimo komandu

# vim-cmd vmsvc/getallvms
koja će izlistati sve virtuelne mašine sa njihovim ID-evima. Ove ID-eve prepisati u skriptu esxidown.sh onim redoslijedom kojim želimo da se gase virtuelne mašine, kao vrijednosti promjenjive SERVERIDS. ID-evi se razdvajaju razmacima. Kada se setuju željene vrijednosti, skriptu iskopirati na ESXi. Lokacija skripte mora biti na datastore-u jer se ne može permanentno snimiti ni na jedno drugo mjesto. U našem slučaju lokacija je bila /vmfs/volumes/51aef5c3-d5e5d538-117c-001999c95462/Install/eshidown.sh. Obavezno komandom
# chmod +x esxidown.sh
dodati execute permisiju za skriptu da bi se mogla pokrenuti.

Druga skripta se zove gasiesxi.sh i nju treba kreirati na lokaciji /opt/APC/PowerChuteBusinessEdition/Agent/cmdfiles/. Ova skripta je samo "okidač" za skriptu esxidown.sh i sadrži samo jednu komandu:
sshpass -p P@$$w0rd ssh root@xxx.xxx.xxx.xxx 'sh /vmfs/volumes/datastore1/Install/esxidown.sh'
Naravno, P@$$w0rd predstavlja password za root account na ESXi hostu sa adresom xxx.xxx.xxx.xxx. I njoj treba dodati pravo izvršavanja komandom chmod, kao što smo to uradili i za prethodnu skriptu. Poslije ovoga restartovati vMA virtuelnu mašinu.

Još je ostalo da kažemo kada će se izvršiti skripta gasiesxi.sh. Otići na URL https://<ipservera>:6547. Dobija se sljedeći login screen:

Ovdje unesemo kredencijale koje smo setovali u konfiguraciji softvera (u mom slučaju admin admin) i kada se ulogujemo, pokreće se Initial Setup wizard za osnovna podešavanja. Klikom na Next, otvaraju se podešavanja za Outlete. Izabrali smo Outlet 1 grupu zato što u tu grupu pripada naša utičnica za server sa zadnje strane UPS-a. Klikom na Next se otvaraju podešavanja za shutdown, za nas najbitnija podešavanja. Ovdje smo setovali Power Failure Configuration na 600 sekundi za opciju When power fails, begin a shutdown procedure After the UPS has been on battery for. Setovali smo 300 sekundi za opciju Time for operating system to shut down. U dropdown meniju Choose command file izabrati gasiesxi.sh, stavku koja bi se trebala pojaviti tu poslije kopiranja skripte na navedenu lokaciju.


Kada se klikne na Finish, web interface se prebacuje na status page gdje bi u gornjem lijevom uglu trebao pisati model UPS-a (u našem slučaju Smart-UPS 1000) a pod stavkom Device status treba pisati On line (Green Mode).



Ako nestane struje, status se mijenja na On battery i kada prođe 600 sekundi, pokreće se skripta gasiesxi.sh, koja "okida" skriptu esxidown.sh na hostu koja zadatim redoslijedom gasi virtuelne mašine, a na kraju i samog hosta. U BIOS-u servera uključiti opciju za automatsko paljenje servera prilikom dolaska struje, a na Vmware-u takođe treba podesiti startup virtuelnih mašina.

Korištene informacije i ideje sa bloga No Joke IT

21 March 2013

Instalacija Zabbixa 2 na Centosu 6.3 x64

Zabbix je jedan od najpoznatijih monitoring sistema, a uz to i besplatan, tj. pod GPL licencom. Ovo uputstvo je rađeno za Centos 6.3 x64 i podrazumijeva se da ga čitaoc ima instaliranog sa podešenom mrežom i izlazom na Internet. Uputstvo obuhvata kompajliranje source paketa. Na Zabbixovom sajtu se mogu naći i paketi za određene distribucije, kao i gotovi appliance-i za razne platforme. Zabbix se nalazi i u repozitorijima nekih poznatijih distribucija, te ga je moguće i tako instalirati, ali takav način instalacije daje znatno manju kontrolu od instaliranja iz source-a.

Instalacija


  1. Prvo se instaliraju komponente koje su neophodne za kompajliranje paketa za Zabbix (zajedno sa dependency-jima):
    # yum install gcc
    # yum install automake
    # yum install make
  2. Instalirati sljedeće pakete (takođe sa svim dendency-jima). Oni su uslov za normalno funkcionisanje Zabbixa: mysql-server, mysql-devel, curl-devel, net-snmp-devel, OpenIPMI-devel, libssh2-devel.
  3. Sa adrese http://www.zabbix.com/download.php skinuti Zabbix source pakete i raspakovati ih u neki folder, npr. zabbix-2.0.5. Zatim ove raspakovane pakete WinSCP-om prebaciti na naš Linux (nekome će jednostavnije biti raspakivati na samom Linuxu).
  4. Ući u taj folder i setovati execute permission za fajl configure:# cd /root/zabbix-2.0.5
    # chmod +x configure
  5. Izvršiti sljedeće komande za konfigurisanje instalacije i kompajliranje:
    # ./configure --enable-server --with-mysql --with-net-snmp --with-libcurl --with-openipmi --enable-agent

    Trebao bi da se dobije sljedeći output:
    Enable server: yes
    With database: MySQL
    WEB Monitoring via: cURL
    SNMP: net-snmp
    IPMI: openipmi
    Enable agent: yes

    Zatim se odradi:
   # make install
  1. Dodati korisnike za Linux:
    # groupadd zabbix
    # useradd -g zabbix zabbix
  2. U folderu /usr/local/etc/ postoje fajlovi zabbix_server.conf i zabbix_agentd.conf. U konfiguraciji servera će biti potrebno izmijeniti stavke DBName, DBUser i DBPassword. Za DBName ćemo ostaviti podrazumijevano podešavanje - baza će se zvati zabbix. Sa ostala dva parametra će biti potrebno skinuti komentar i takođe im setovati vrijednost na zabbix.  
  3. Podešavanje MySQL-a:
    # mysql_install_db
    - Inicijalizacija MySQL-a
    # /usr/bin/mysqladmin
    -u root password 'pa$$w0rd' - Setovanje passworda za korisnika root
    # chkconfig mysqld on
    - Podešavanje MySQL daemona da se pokreće automatski sa sistemom
    # mysql -u root -p
    - logovanje roota na MySQL server
    mysql> create database zabbix character set utf8;
    - Kreiranje baze zabbix
    mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix'; - Podešavanje permisija za korisnika zabbix. Koristi se isti password koji smo setovali u fajlu zabbix_server.conf. Sada je potrebno otići u sljedeći folder:
    # cd /root/zabbix-2.0.5/database/mysql
    Zatim izvršiti sljedeće komande kojima se importuju inicijalne baze Zabbixa:

    # mysql -u zabbix -p zabbix < schema.sql
    # mysql -u zabbix -p zabbix < images.sql
    # mysql -u zabbix -p zabbix < data.sql

    Poslije svake unesene komande mysql će pitati za password za korisnika
    zabbix, to je takođe zabbix. Bitan je redoslijed importovanja baza, moraju se importovati navedenim redoslijedom.
  4. Zabbix server i agent su sada spremni da se pokrenu. To se radi komandama
    # /usr/local/sbin/zabbix_server
    # /usr/local/sbin/zabbix_agentd
  5. Podešavanje automatskog pokretanja. Iz foldera /root/zabbix-2.0.5/misc/init.d/fedora/core5/ iskopirati skripte zabbix_agentd i zabbix_server u folder /etc/init.d/. Zatim se komandama
    # chmod +x /etc/init.d/zabbix_agentd

    # chmod +x /etc/init.d/zabbix_server
    ove skripte učine izvršnim (dodaju im se execute permisije). Onda se ove skripte dodaju u servise na sljedeći način:

    # chkconfig --add zabbix_agentd
    # chkconfig --add zabbix_server

    Takođe je potrebno setovati automatsko pokretanje ovih servisa:

    # chkconfig zabbix_agentd on
    # chkconfig zabbix_server on

    Kada se poslije ovoga izvrši komanda

    # chkconfig

    u listi servisa bi trebali biti i
    zabbix_agentd i zabbix_server i trebalo bi biti setovano "on" za runlevele 2, 3, 4 i 5.
    Ubuduće će se ovim servisima moći upravljati kao i sa svakim drugim servisom (npr.
    service zabbix_server restart).
  6. Instalacija web servera. Zabbix može raditi na bilo kojem web serveru koji podržava PHP. Slijedi instalacija Apache-a sa podrškom za PHP:
    # yum install httpd mod_ssl
    - Osnovna instalacija Apache-a.
    # service httpd start
    - Startovanje web servera.
    Normalno je da se prilikom prvog pokretanja pojavi poruka
    "Starting httpd: httpd: apr_sockaddr_info_get() failed for zabbix.racunari-bl.com httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName". Da bi se riješio ovaj problem, potrebno je otvoriti fajl:
    # nano /etc/httpd/conf/httpd.conf

    U njemu, pri kraju, postoji stavka
    #ServerName www.example.com:80. Ispod nje upisati (u novom redu)
    ServerName zabbix
    .
    Sačuvati izmjene i resetovati Apache komandom

    # service httpd restart
    .
    Potrebno je i otvoriti port za web saobraćaj na firewallu, npr.

    # iptables -A INPUT -p tcp -m state --state NEW, ESTABLISHED -m tcp --dport 80 -j ACCEPT

    # service iptables save - Ovim se trenutna Iptables pravila snimaju permanentno.
    # chkconfig httpd on
    - Uključivanje automatskog startovanja Apache-a
    # yum install php-mysql php-devel php-gd php-pecl-memcache php-pspell php-snmp php-xmlrpc php-xml php-bcmath
    - Instalacija PHP-a i njegovih dodataka.
    U fajlu
    /etc/php.ini treba setovati nekoliko parametara:
    date.timezone = Europe/Belgrade
    post_max_size = 16M
    max_execution_time = 300
    max_input_time = 300
    # service httpd restart
    - Prilikom sljedećeg startovanja Apache-a, trebali bi biti loadovani i moduli za PHP.
  7. Instaliranje Web interfejsa. Folder /root/zabbix-2.0.5/frontends/php iskopirati u /var/www/html i preimenovati ga u zabbix. Na nekom računaru koji je u istoj mreži u web browseru otići na adresu http://172.18.2.95/zabbix (pretpostavimo da je 172.18.2.95 adresa našeg Linuxa). Trebao bi da se pojavi prvi ekran Zabbix-ovog Setupa. Na ovom ekranu kliknuti Next.
    Otvara se ekran "Check of pre-requisites". Ovdje će Zabbix provjeriti da li su instalirani i podešeni svi moduli koji su mu potrebni. Trebalo bi da pored svih stavki bude zelenim slovima ispisano "OK".  Kliknuti Next.
    Na sljedećem ekranu se konfigurišu parametri za pristup bazi: Database type: MySQL, Database host: localhost, Database port: 0 (0 označava korištenje standardnog porta za MySQL - TCP 3306), Database name: zabbix, User: zabbix, Password: zabbix. Ispod ovih polja se nalazi dugme "Test connection" - poslije pritiska na njega bi se trebao pojaviti zeleni znak OK, ako je sve u redu. Kliknuti Next.
    Na ekranu "Zabbix server details" unijeti puno ime hosta računara na kojem se pokreće zabbix. U mom slučaju je to bilo zabbix.test.local. Bitno je da se ovo ime može razriješiti preko DNS-a ili preko hosts fajla. Moguće je navesti i IP adresu umjesto imena. Ostaviti podrazumijevani port 100051 i opciono unijeti ime Zabbix instalacije, to sam podesio na "Zabbix server". Kliknuti Next.
    Sljedeći ekran prikazuje ukratko sve parametre koje smo podešavali. Klikom na dugme Next počinje instalacija. Ako se pojavi poruka "Configuration file "/var/www/html/zabbix/conf/zabbix.conf.php" created: Fail", potrebno je na dnu ekrana kliknuti "Download configuration file". i ručno ga snimiti na navedenu lokaciju. Poslije ovoga kliknuti "Retry" i na kraju Finish.

To je sve, vezano za instalaciju Zabbixa. Sada se može otići na adresu http://172.18.2.95/zabbix. Korisničko ime je Admin, a password zabbix.


Reference


  1. Zabbix 1.8 Network Monitoring, PACKT Publishing, April 2010
  2. linux.about.com

01 February 2013

Priprema Linux servera podsjetnik

Dobra praksa je da se prilikom instalacije novog servera instalira samo ono što je potrebno, zbog optimalnijeg korišćenja resursa i lakše administracije. Najbolje je (ukoliko to mogućnosti dozvoljavaju) da za svaki servis postoji poseban server. Zbog ovakvih zahtjeva, najbolje je podići CentOS sa minimalnom instalacijom. Nedostatak ovakvog postupka je to što nema osnovnih alata kao što je npr. nano ili wget, a prednost je što se dobija "čista instalacija", bez suvišnih servisa.

Za svaki novi server potrebno je podesiti mrežu, instalirati drajvere za virtuelni hardver (Vmware Tools), dodati potrebne repozitorije, itd. Ovo uputstvo se odnosi na CentOS 6 x64.

Podešavanje mreže

Najbolje je da se mrežni parametri setuju odmah prilikom instalacije sistema. Tada je potrebno uključiti opciju  "Connect automatically" da bi parametri bili permanentni. Međutim, ukoliko se propusti ovo setovanje, uvijek je to moguće uraditi alatom  Network Connections (ukoliko se koristi GUI), ili preko skripte koja se nalazi na lokaciji /etc/sysconfig/network-scripts/ifcfg-eth0 (ako je eth0 oznaka mrežnog interfejsa). Ova skripta se izvršava svaki put prilikom startovanja sistema. Ako su svi mrežni interfejsi down, tada neće biti skripte - potrebno je inicijalizovati interfejs npr. komandom
# ifconfig eth0 up
Poslije ovoga će se na navedenoj lokaciji pojaviti fajl ifcfg-eth0 u koji treba napisati mrežne parametre. Primjer ovakve skripte:
DEVICE="eth0"
NM_CONTROLLED="yes"
ONBOOT="yes"
HWADDR="00:0C:29:B4:C7:5E"
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.100.97
PREFIX=24
NETMASK=255.255.255.0
GATEWAY=192.168.100.31
DNS1=192.168.100.31
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
PEERDNS="yes"


Instalacija Vmware Tools-a:
  1. Prvo se importuju javni GPG ključevi za Vmware:
    # rpm --import http://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-DSA-KEY.pub
    # rpm --import http://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-RSA-KEY.pub
  2. Zatim se doda Vmware Repository, tako što se napravi novi fajl /etc/yum.repos.d/vmware-tools.repo sa sljedećim sadržajem:
    [vmware-tools]
    name=VMware Tools
    baseurl=http://packages.vmware.com/tools/esx/4.1latest/rhel6/$basearch
    enabled=1
    gpgcheck=1
  3. Sada možemo pokrenuti komandu
# yum install vmware-open-vm-tools
koja će izvršiti instalaciju. Po završetku restartovati server.
Instalacija EPEL repozitorija

EPEL (Extra Packages for Enterprise Linux) je posebna interesna grupa koja razvija i održava dodatne softverske pakete za Red Hat Enterprise Linux, CentOS, Fedoru, Scientific Linux i ostale distribucije zasnovane na Red Hat distribuciji. To je stvarno velika baza softvera. Instalira se na sljedeći način:
  1. Prvo je potrebno skinuti instalacioni paket za EPEL:
    # wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  2. Zatim se paket instalira komandom
    # yum localinstall epel-release-6-8.noarch.rpm
  3. Poslije ovoga bi na lokaciji /etc/yum.repos.d/ trebao postojati fajl epel.repo i u njemu treba biti setovano enabled=1.

Instalacija osnovnih alata
Instalirati sljedeće pakete: nano (jednostavan tekst editor), wget (program za download), munin-node (node za Munin server - monitoring), htop (brzi pregled pokrenutih procesa i zauzeća resursa),


Isključivanje SE Linuxa

U fajlu /etc/selinux/config vrijednost parametra SELINUX postaviti na disabled. Podrazumijevano, ovaj parametar je setovan na permissive.

08 January 2013

tcpdump mini howto


Tcpdump je packet sniffer program - jedan od osnovnih alata za dijagnostiku mreže. On "hvata" pakete koji prolaze kroz mašinu i može da ih sačuva u fajl. Ovaj fajl se kasnije može analizirati i samom komandom tcpdump, ali i alatima kao što je Wireshark. Mogu se čuvati čitavi paketi ili samo njihovi headeri. Pokretanje komande bez argumenata će na ekran ispisivati saobraćaj sa prvog od mrežnih interfejsa (ignoriše se lo).

Prilikom čuvanja rezultata izvršavanja u fajl, tcpdump će sačuvati samo prvih 68 bajtova podataka iz svakog paketa. Ostatak se odbacuje. Ovo ponašanje je moguće podešavati opcijom -s.

Moguće je koristiti i filtere paketa. Takvi izrazi su: port, portrange, ether, net, host. Uz njih se mogu koristiti i prefiksi (ili sufiksi) src i dst. Ako se prefiksi ili sufiksi ne navedu, podrazumijeva se saobraćaj u oba smjera.
Tcpdump omogućava pravljenje kompleksnih filtera korištenjem izraza not, and, or, length, greater, less, kao i korištenje zagrada u cilju grupisanja izraza, tj. određivanja prioriteta izvršavanja.

Opcije tcpdumpa
  1. -A - Prikazuje sadržaj capture-ovanih paketa u ASCII formatu.
  2. -c - Capturuje samo određen broj paketa.
  3. -e - Prikazuje ethernet header svakog paketa.
  4. and - Kvalifikator - logičko i. Koristi se u kompleksnim upitima za tcpdump.
  5. ether - Filtriranje paketa po Ethernet (MAC) adresi. Može se koristiti u oblicima ether src, ether dst i ether host.
  6. host - filtriranje paketa po imenu hosta. Može da se koristi i u oblicima host, src host i dst host.
  7. -i - Capturuje pakete sa određenog mrežnog interface-a.
  8. less N - Capture-uje pakete koji su manji od N bajtova. Vidjeti primjer.
  9. -n - Ne razrješava DNS imena. Ovo omogućava brži rad komande i smanjuje ukupnu količinu paketa koji se vide na ekranu (nema DNS upita)
  10. net - Filtriranje paketa po subnetu. Može se koristiti u oblicima src net, dst net  i net. Ova komanda zahtijeva i korišćenje mask parametra.On se može navoditi po staroj notaciji navođenjem netmaska ili po CIDR notaciji. Vidjeti primjere.
  11. not - Izraz. Koristi se za filtriranje saobraćaja - ako ne želimo da tcpdump prikazuje saobraćaj po nekom portu.
  12. or - Kvalifikator - logičko ili. Koristi se u kompleksnim upitima za tcpdump.
  13. port - Koristi se za označavanje porta. Ako se navedu izrazi src ili dst prije njega, može se specifikovati da li se filter odnosi na dolazni ili odlazni saobraćaj. Ako se ništa ne navede, izraz port će filtrirati sav saobraćaj po nekom portu. Primjer:
    tcpdump -n dst port 80 - Prikazuje sve odlazne HTTP pakete.
  14. portrange - Radi vrlo slično kao izraz port, međutim, odnosi se na rang portova. Takođe može da ima prefikse src i dst.
  15. -r - Koristi se za čitanje fajla sa capture-ovanim paketima.
  16. -s - Koristi se prilikom snimanja rezultata u fajl i označava koliko će se podataka snimiti iz svakog paketa. Ako se navede vrijednost 0, snimiće sve pakete u kompletu (neće odbacivati ostatak od prvih 68 bajtova).
  17. -x - Prikazivanje sadržaja TCP paketa u heksadecimalnom obliku. Podrazumijevano, prikazaće prvih 82 bajta paketa (ethernet header se ne prikazuje). Komandom -s je moguce kontrolisati broj bajtova koji se prikazuju, a korišćenjem komande -xx umjesto -x ce se prikazati i ethernet header - dodatnih 14 bajtova.
  18. -v - Verbose mode. Korištenje opcije -vv daje više detalja, a korišćenje -vvv još više detalja.
  19. -w - Snima izlaz tcpdumpa u fajl
Primjeri korišćenja:
  1. tcpdump -ni eth0 not port 22 - Filtrira saobraćaj tako da prikazuje sve pakete osim onih koji dolaze na port 22 (SSH). Ovo je posebno korisno ako se preko SSH pristupa sistemu - ignoriše sve pakete koji se razmjenjuju između SSH klijenta i servera. Takođe, u komandi je rečeno da ne razrješava DNS imena i da se "sluša" samo interfejs eth0.
  2. tcpdump -c 10 - Capturuje samo prvih 10 paketa.
  3. tcpdump -w file.cap -s 0 - U navedeni fajl snima rezultate izvršavanja komande i to čitave data pakete, bez odsijecanja.
  4. tcpdump -r file.cap - Čitanje paketa iz navedenog fajla
  5. tcpdump -e -n not port 22 - Prikazuje ethernet headere svakog paketa osim paketa koji dolaze na port 22.
  6. tcpdump -n src portrange 22-23 - Primjer filtriranja paketa za SSH i Telnet saobraćaj.
  7. tcpdump src host example.com - Ispisuje sve pakete koji dolaze sa domena example.com.
  8. tcpdump src net 81.93.11.100 mask 255.255.255.0
  9. tcpdump src net 81.93.11.100/24 - Obe varijante (klasična i CIDR notacija) rade isto, a to je filtriranje paketa koji dolaze sa mreže 81.93.77.100.
  10. tcpdump -XX greater 100 and \(src host google.com or src host microsoft.com\) - Prikazuje sve pakete (uključujući i Ethernet header) veće od 100kb, koji dolaze sa domena google.com ili microsoft.com. Karakter "\" znači escape sekvencu koja se navodi ispred znaka zagrade, da bi se zagrada u takvom obliku i poslala komandi tcpdump. Ona određuje prioritet izvršavanja komandi. U ovom slučaju, da nema zagrade, nikada ne bi došlo do capture-ovanja paketa sa microsoft.com.
    Ovaj primjer se mogao napisati i kao
    tcpdump -XX greater 100 and \(src host google.com or microsoft.com \).
    Izostavljen je prefiks src host za domen microsoft.com. Ovo se koristi zbog pojednostavljenja korišćenja komande i boljeg pregleda, tj. kada se kvalifikator koristi dva ili više puta u nizu, dovoljno ga je navesti samo za prvi host.
  11. tcpdump -w l_1024.pcap less 1024 - Capture-uje pakete koji su manji od 1024 bajta i snima ih u fajl l_1024.pcap.