Tuesday, July 18, 2023

I wrote my own network bandwidth monitoring tool for Linux

Most of existing tools is focused to visualize data. In text mode usually we see tools which used ncurses library. Previously I used e.g. Speedometer to monitoring network usage on servers, but this tool is not ideal for that jobs.

On server we needs tools which generate output like logs.

 $ ifrtstat enp0s3
ifrtstat enp0s3 start at Tue Jul 18 12:21:15 2023
enp0s3[1] Sum rx 5200 bit tx 0 bit Cur rx 5200 bit/s tx 0 bit/s
enp0s3[2] Sum rx 8968 bit tx 0 bit Cur rx 3768 bit/s tx 0 bit/s
enp0s3[3] Sum rx 9448 bit tx 0 bit Cur rx 480 bit/s tx 0 bit/s
enp0s3[4] Sum rx 19456 bit tx 0 bit Cur rx 10008 bit/s tx 0 bit/s

This output we can redirect to some file and see after fews days.

To get precise information when we have a problem with bandwidge we need save date on every time probe. It help use option -d (print date) and -m (record max value).

$ ifrtstat enp0s3 -dm
Tue Jul 18 12:28:14 2023 enp0s3[1] Sum rx 3288 bit tx 0 bit Cur rx 3288 bit/s tx 0 bit/s Max rx 3288 bit/s
Tue Jul 18 12:28:15 2023 enp0s3[2] Sum rx 5616 bit tx 0 bit Cur rx 2328 bit/s tx 0 bit/s
Tue Jul 18 12:28:16 2023 enp0s3[3] Sum rx 8904 bit tx 0 bit Cur rx 3288 bit/s tx 0 bit/s
Tue Jul 18 12:28:17 2023 enp0s3[4] Sum rx 10856 bit tx 0 bit Cur rx 1952 bit/s tx 0 bit/s
Tue Jul 18 12:28:18 2023 enp0s3[5] Sum rx 18984 bit tx 0 bit Cur rx 8128 bit/s tx 0 bit/s Max rx 8128 bit/s

Instead of options -d we can use option -t (print counter from start in days/hours/minutes)

On default ifrtstat print data in 'bps'. Option -B change it to 'Bps'.  When we use option -c values is auto converting to larger units (k,M,G...)

If we want record only bigger values to avoid generate too many data we can use option -g.

$ ifrtstat enp0s3 -dmc -g 1000
Tue Jul 18 13:03:52 2023 enp0s3[15] Sum rx 96.488 kb tx 44.656 kb Cur rx 84.808 kb/s tx 39.408 kb/s Max rx 84808 bit/s Max tx 39408 bit/s
Tue Jul 18 13:03:54 2023 enp0s3[16] Sum rx 274.080 kb tx 91.240 kb Cur rx 177.592 kb/s tx 46.584 kb/s Max rx 177592 bit/s Max tx 46584 bit/s
Tue Jul 18 13:03:55 2023 enp0s3[17] Sum rx 11.637 Mb tx 268.096 kb Cur rx 11.363 Mb/s tx 176.856 kb/s Max rx 11363832 bit/s Max tx 176856 bit/s
Tue Jul 18 13:03:56 2023 enp0s3[18] Sum rx 87.956 Mb tx 553.456 kb Cur rx 76.318 Mb/s tx 285.360 kb/s Max rx 76318720 bit/s Max tx 285360 bit/s

This example print only values greater than 1000 bps (default units).

iftrstat is available on https://github.com/grzesieklog/ifrtstat

Download and installation

Install dependencies (GMP nad netlink):

root# apt install libgmp3-dev
root# apt install libnl-3-dev libnl-route-3-dev

Download sources and compilation:

root# git clone  https://github.com/grzesieklog/ifrtstat.git
root# cd ifrtstat/
root# make
root# cp -v ifrtstat /usr/local/bin/

System network stack performance test

root1# nc -vlp 4567 > /dev/null

root2# dd if=/dev/zero bs=4096 count=500000000 | nc -nv 127.0.0.1 4567

$ ifrtstat lo -ct
...
lo[4m59] Sum rx 0 bit tx 0 bit Cur rx 0 bit/s tx 0 bit/s
lo[5m00] Sum rx 795.401 Mb tx 795.401 Mb Cur rx 795.401 Mb/s tx 795.401 Mb/s
lo[5m01] Sum rx 4.135 Gb tx 4.135 Gb Cur rx 3.339 Gb/s tx 3.339 Gb/s
lo[5m02] Sum rx 7.332 Gb tx 7.332 Gb Cur rx 3.196 Gb/s tx 3.196 Gb/s
lo[5m03] Sum rx 10.506 Gb tx 10.506 Gb Cur rx 3.174 Gb/s tx 3.174 Gb/s
lo[5m04] Sum rx 13.633 Gb tx 13.633 Gb Cur rx 3.126 Gb/s tx 3.126 Gb/s
lo[5m05] Sum rx 16.766 Gb tx 16.766 Gb Cur rx 3.133 Gb/s tx 3.133 Gb/s
lo[5m06] Sum rx 19.634 Gb tx 19.634 Gb Cur rx 2.867 Gb/s tx 2.867 Gb/s
lo[5m07] Sum rx 22.790 Gb tx 22.790 Gb Cur rx 3.156 Gb/s tx 3.156 Gb/s
lo[5m08] Sum rx 26.369 Gb tx 26.369 Gb Cur rx 3.579 Gb/s tx 3.579 Gb/s
lo[5m09] Sum rx 29.786 Gb tx 29.786 Gb Cur rx 3.416 Gb/s tx 3.416 Gb/s

...

What's the deal with counter overflow?

In Linux like other operating system network interface counter is a normal int 64-bit value. It max value is 18446744073709551615. It is around 18 exabyte (EB).

When our system send more data via interface this counter will rewind and start again form 0. At this moment we lost total data rx/tx sum form network interface counted form system start up.

For that reason we use big number library GMP.

Saturday, March 6, 2021

Red Hat porzuca projekt CentOS

Około trzy miesiące temu Red Hat ogłosił, że przestaje wspierać dystrybucję CentOS na rzecz CentOS Stream. Jaka jest różnica między nimi? Red Hat robił RHEL bazując na osiągnięciach Fedory. Następnie efekt tej pracy w uproszczeniu był kopiowany z kilkoma zmianami w kompilowaniu do CentOS. Teraz osiągnięcia Fedory nie będą trafiać bezpośrednio do RHEL lecz do CentOS Stream, który będzie dystrybucją typu Rolling Release i to dopiero na jego podstawie będzie powstawał RHEL. Efekt? RHEL będzie bardziej Enterprise, a użytkownicy CentOS - zwłaszcza Ci nieprywatni, będą załamani i porzuceni. A co na to 'social Media'? Rozpoczęły się ankiety, na co przejdą użytkownicy CentOS.

Chociaż nie wiele mnie to już interesuje to napisze co ja o tym myślę. Ja tu widzę bardziej ogólny problem, który rozwijał się pomału od kilku lat. Wielkie korporacje dały dla Linuksa bardzo wiele, zwłaszcza Red Hat. Wyciągneły go z niszy i zrobiły z niego topowy system serwerowy. Cieszą się użytkownicy Linuksa, duma ich rozpiera. Niestety, każdy kij ma dwa końce. Punkt krytyczny, który zamienił Linuksa w bardziej korporacyjny niż społeczny system został osiągnięty już jakiś czas temu. Od co najmniej ok. 3 lat nowe fantastyczne rozwiązania wdrażane do Linuksa to głównie funkcje używane w serwerowniach największej skali - czyli w korporacjach. Ogólnie rozwiązania te w mniejszym lub większym stopniu można określić mianem orkiestracji.

Nie sposób tu nie wspomnieć o The Linux Foundation. Nie wiem ilu pamięta, ale jak powstawała to głosiła, że powstaje aby chronić interes społeczności open source podczas jego integracji z biznesem. Jak jest teraz? Wystarczy przykład Cisco. Teraz chyba wszystkie ich urządzenia bazują na Linuksie. Hej zaraz, skoro rozbudowują Linuksa to według licencji GPL powinni udostępnić kod źródłowy tych zmian. Już jakiś czas temu próbowałem go zobaczyć. Niestety Cisco nawet pliku nie udostępnia, tylko jakiś e-mail gdzie możesz po to się zgłosić - próbowałem :). Po przejrzeniu plejady sponsorów The Linux Foundation dostrzeżemy, że Cisco to ich srebrny sponsor (teraz nazywają to memberem), który płaci im co roku ileś tam tysięcy dolarów i temu tak może robić. Oczywiście nie tylko on. Na marginesie te oprogramowanie robione na bazie Linuksa jest gorsze niż te wcześniejsze. Oczywiście nie tylko w Cisco. Ja to nazywam technologią XXI wieku.

Jaki z tego morał? Nie da się połączyć biznesu z modelem open source. Przynajmniej nie w taki sposób w jaki życzyli by sobie tego twórcy open source.

To wszystko co chciałem na ten temat powiedzieć :)

Thursday, June 6, 2019

Sync or async, that is the question

When you write changes in some config file or create new dir and files you expect that is saved on the disk. The reality is different and data may not be written. That is the difference between asynchronous and synchronous write modes. First of them is default mode for almost all filesystem and not write your data immediately to the disk. Second of them forcing write changes immediately.

So how long your data can be not write into disk in asynchronous mode? Most frequently this period of time is equal to 5 seconds. Exactly 5 sec in ext4 and ZFS, and 30 sec in UFS. Why? For best performance. This is a general problem in computer system, all about is speed. This is good? If speed is more important than safety yes, but in most cases I prefer first safety, seconds speed in filesystem.

So, how to change this settings? In ext4 in Linux we have mount options sync, dirsync and commit:

dirsync - is default, it's mean directory operation save immediately, but not data operations
commit - default is 5 second, this is time between saves all data to disk
sync - instructs save any write operation to disk and process waiting for end of this operation

See simple test for default options:
# mount  | grep root
/dev/mapper/storage1--vg-root on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
# dd if=/dev/zero of=test bs=1024 count=200000
200000+0 records in
200000+0 records out
204800000 bytes (205 MB, 195 MiB) copied, 0.537975 s, 381 MB/s
# rm test
# dd if=/dev/zero of=test bs=1024 count=200000
200000+0 records in
200000+0 records out
204800000 bytes (205 MB, 195 MiB) copied, 0.5754 s, 356 MB/s
# rm test
# dd if=/dev/zero of=test bs=1024 count=200000
200000+0 records in
200000+0 records out
204800000 bytes (205 MB, 195 MiB) copied, 0.544742 s, 376 MB/s
# rm test
With commit=1:

# mount -o remount,commit=1 /
# mount  | grep root
/dev/mapper/storage1--vg-root on / type ext4 (rw,relatime,errors=remount-ro,commit=1,data=ordered)

# rm test
# dd if=/dev/zero of=test bs=1024 count=200000
200000+0 records in
200000+0 records out
204800000 bytes (205 MB, 195 MiB) copied, 0.57459 s, 356 MB/s
# rm test
# dd if=/dev/zero of=test bs=1024 count=200000
200000+0 records in
200000+0 records out
204800000 bytes (205 MB, 195 MiB) copied, 0.570971 s, 359 MB/s
# rm test
# dd if=/dev/zero of=test bs=1024 count=200000
200000+0 records in
200000+0 records out
204800000 bytes (205 MB, 195 MiB) copied, 0.57707 s, 355 MB/s
# rm test
And now with sync:

# mount -o remount,sync /
# mount  | grep root
/dev/mapper/storage1--vg-root on / type ext4 (rw,relatime,sync,errors=remount-ro,commit=1,data=ordered)
# dd if=/dev/zero of=test bs=1024 count=200000
^C25644+0 records in
25644+0 records out
26259456 bytes (26 MB, 25 MiB) copied, 1177.03 s, 22.3 kB/s
# rm test
So commit=1 is ok, but sync is overkill operations and I need stop it. My config is:

# grep root /etc/fstab 
/dev/mapper/storage1--vg-root /               ext4    errors=remount-ro,dirsync,commit=1 0       1

That is Linux, now FreeBSD. When I/O operations in async mode this means not all operation use this mode. Program can use fsync() system call, this is instructs system to write this file immediately even filesystem in async mode. This applies also to Linux. On FreeBSD we can check this via:

# mount -v
/dev/vtbd0p2 on / (ufs, local, writes: sync 213 async 8228, reads: sync 1064 async 5, fsid 3c98e15c4c4a6b0c)

Most operation execute in async mode but not all. So this is may depend of program/programer.

FreeBSD have mount option:

noasync - this is like dirsync, but for FreeBSD

Default time period to save all cached data to disk in UFS is:

# sysctl -a | egrep "kern.*delay"
kern.metadelay: 28
kern.dirdelay: 29
kern.filedelay: 30

We can change this:

# vi /etc/sysctl.conf
kern.metadelay=1
kern.dirdelay=1
kern.filedelay=1
# service sysctl restart

and operation is not slow to mauch:

# dd if=/dev/zero of=test bs=1024 count=200000
200000+0 records in
200000+0 records out
204800000 bytes transferred in 0.385911 secs (530692229 bytes/sec)

But FreeBSD has mechanism called Soft Updates for metadata, this is dangerous because buffered metadata saved to disk even in minutes. I turn it off. You must boot system in single user mode and execute:

tunefs -n disable /

At the end ZFS has vfs.zfs.txg.timeout options. It period of 'transaction groups' equal 5 sec. We also change it by sysctl.conf. Also we can enable sync mode:

# zfs set sync=always my/datasets

So, first of program should force save data if it is important. If you do some I/O operations in shell you can always use sync command (maybe in you some script eg. backups). System not should wait with saves to long - we can changes this. The last we can create specjal separate filesystem for important data and enable sync mode for it. In btrfs or ZFS dataset is easy.

Saturday, March 3, 2018

Linux - not perfect, but exists!

It is almost 10 years pass after I migration to Linux system, so it is great occasion to write some my reflections about it. I don't want repeat some information which can you find in web, so I try write it in not common ways. Great, so I tell you what Linux geeks probably never tell to you. So it is a summation 10 years of using Linux without sweeten.

In the beginning it is good to write for whom Linux will by a good choice. I skip glorifying of Linux, about all supercomputers and others super features. Linux is a industrial operating system which can you also use legally at home. It is one of main differences between UNIX operating system which you can not had used at home. Why it is a industrial operating system? Well, because it is developing and using mainly in big IT companies. Did this means that Linux is not by able to use in small companies or organization as open platform for network services? Of course it is suitable for this very well. Ok, but what about using Linux in home as desktop computer? - I expected you to ask about that :). Well, if you not interesting about deep IT subjects I will not recommend to use Linux for you, unless you need free and legaly OS at home. The price of this is a some problem with missing drivers or necessary to deep configuration of system. On the other side if you are IT geek and it is more important for you than computer games (more or less then when you grow up ;) ) and you had buy computer which is 100% compatible with Linux then it will be great. I use the stable version of Debian distribution on my home computer from 10 years and I want to say it is not much different from macOS.

So, what the great things you can do on the Linux? Learning! Because you very interesting about IT, right? You can become a programmer, system and network administration, security specialist, penetration tester and probably a few other which I don't remember. But what if you only interesting how operating system and computer works? Well, I'm sorry but probably you will become computer engineer - that's how it was with me and many others Linux fan. For person who interesting how operating system works the open source OS is very attractive.

The history of Linux is very interesting. First of no one planned what happened, it just proves that used to exist a need for public available operating system. The beginning of Linux is 80's when GNU free operating system project is born. Then, it was created most of today tools in Linux. Next in 90's GNU project has received a new kernel of operating system and the name of system is derived from it. Linux kernel was grow popularity because it is from beginning was created for x86 CPU architecture. What is benefit from this? The Intel x86 architecture it's noting like IBM PC standard for personal computer. The big merit for that is IBM and his PC standard. So, computer was commonly, but not exist UNIX for this architecture. The both GNU tools and Linux kernel it was created for likeness to Unix. Often you can hear that the GNU/Linux it's not UNIX. But this is UNIX, just only rewritten for Intel x86. Division by UNIX and UNIX-like it's all about it's has derived from originally UNIX or it's not. Moreover UNIX trademark it was registered and etc. so what from that the Linux is not derived from originally UNIX if it is clon of it. Many people criticized the facts that Linux is not fully compliant with a UNIX certified and he does not deserve to be called him UNIX. Well, I think the expectation from modern operating system to be compatible in 100% from templates created over 40 years ago it is pointless. Simply, Linux is a modern type of Unix system and it's very matured. For example, the first company how make money on created and support Linux system Red Hat is 24 years old. Very few UNIX system was developed by companies such a long period of time. For comparison Solaris system was developed for almost the same period of time, but it company was changed to Oracle Solaris. So in such a period of time like UNIX system epoch the GNU/Linux system has survive a long time and what's more interesting it continues to grow.

Linux history is behind us, so let's talk about his future. Nowadays main trends in Linux is computing cloud and embedded systems. No one know how Linux future finally will be look, but it is known his open development model is work wery well. It may seem a strange but Linux community succeeded in development process simultaneously for private and enterprise users. Each of side develops Linux for owns need, because big can more so desktop solutions developing four times slower than server solutions. I think the glue that keeps it all together is a hight configurability which allows all parties of interest assembled such combination as they need. In this way was born in some sense universal UNIX system. Never in IT history so much companies was not make money from one operating system like today on Linux. In the past each of company have own Unix variants and development of this system was very fragmented. Today Linux development is centralized and for this reason is the fastest developing operating systeme in the world. It is reason only for pride? Not all times but as I said for now this is the best model fo development.

It's time to say what is wrong in Linux. Ironically the worst thing in Linux is the same as the best things. Take note that new features in Linux are evolves in specific independent projects. Intel wants beter support of their products - so is developing Linux kernel. Someone needs support for SMB protocol - he developing Samba project. Each of this projects is in high level but before creating distribution it comes time to merge this software from different projects to one system - this is work for distribution developers. If specific distribution have more developers this is the better. Merge this software is the main work for companies witch develops the biggest distributions like RedHat, Oracle, Novell, Canonical. Also exists many non-profit organization who developing linux distribution from GNU parts. No doubt the best effects in creating non-profit Linux distribution has GNU/Debian community.

Evolving so complicated operating system like Linux is very time consumption and cost. More and more company understood this fact and begins collaborations in Linux system because this is is cheaper. Cooperation company from open source projects like Linux become a trend already. Sometimes if company want to be a competitive he must us open source system even if he to not want to. Strange situation, the company became hostages of own economy laws - 'faster cheaper better'. It is genius of Stallman or pure accident? But on the other hand if USA with Russia building together International Space Station so maybe collaboration always is good. Maybe that is the nature of creating big things so we must accept this and just profit for it.

In the end I think the biggest thanks for developing GNU/Linux it belongs for smallest group of developers because their work made the big companies start to contributing Linux. Without enthusiasts Linux would never have been created. So it looks like the most popular industrial operating system was created at ... home. What an irony of fate.

Saturday, December 2, 2017

Ile naprawdę jest dystrybucji systemu Linux

W ostatnim wpisie pisząc ogólnie o systemie Linux doszłem między innymi do wniosku, że na końcowy kształt systemu największy wpływ mają deweloperzy dystrybucji. W tym wpisie chciałbym poruszyć właśnie ten temat, czyli dystrybucji. Gdy patrzę na ilość dostępnych dystrybucji systemu Linux to widzę wielki nadmuchany balok, w który zaraz wbiję szpilę. Wcześniej jednak chciałbym napisać jak wygląda mniej więcej ogólnie proces powstawania dystrybucji GNU/Linux.

Wszystko zaczyna się od pewnej grupy ludzi, których łączy wspólna wizja jakiegoś kształtu dla systemu Linux. Ustalają sobie wewnętrzne zasady działania społeczności i zasady techniczne w jaki sposób będą rozwijać system, chodzi tu o cykl wydawniczy przede wszystkim. Technicznie proces ten wygląda mniej więcej tak:
  1. Pobierane są źródła poszczególnych komponentów systemu z tzw. upstream
  2. Budowane są pakiety w jakimś formacie, mogą to być np. tylko skrypty
  3. Dodawane są własne rozwiązania dotyczące organizacji systemu (instalator, sposób konfiguracji, sposób rozruchu systemu itd.)
  4. Przygotowuje się dystrybucji do wydania (obrazy .iso, witryna, społeczność, repozytoria, testowanie wersji próbnych)
  5. Udzielanie wsparcia dla wydanej dystrybucji (łatki bezpieczeństwa, usuwanie błędów, nowe wersje pakietów itp.)
Często dystrybucje różnią się tym z czego zostaną złożone, dobrym przykładem są różne odmiany programu init. Jednak większość powodów, dla których ktoś kocha albo nienawidzi daną dystrybucję pochodzi z punktu trzeciego, czyli własne rozwiązania (np. w Ubuntu i OpenSUSE własna nakładka graficzna na GNOME).

Teraz zobaczmy jak wygląda oferta dostępnych dystrybucji społeczności GNU/Linux. Jako punkt odniesienia proponuje drzewo rozwoju dystrybucji dostępne w artykule Linux distribution na Wikipedii. Dlaczego uważam, że jest to dobry punkt odniesienia? Jeżeli interesujesz się systemem Linux, to zapewne spotkałeś się już z stwierdzenie wyglądającym mniej więcej tak: "według distrowatch.com najpopularniejszą dystrybucją jest ...". Niestety distrowatch.com jest bardzo częstym źródłem informacji o najpopularniejszych dystrybucjach systemu Linux. Ja tak nie uważam, i to jest jeden z powodów, dla których powstał ten wpis. Jeżeli ktoś siedzi długo w tej tematyce i zobaczy tą listę najpopularniejszych dystrybucji na wspomnianej stronie to od razu zauważy, że cos tu się nie zgadza. Po pierwsze to należy sobie zadać pytanie jak oni to liczą, choć sami przyznają, iż nie jest to dokładny szacunek. Czy można ustalić to na podstawie ilości pobrań danej dystrybucji? Nie, często ludzie pobierają jakąś dystrybucję aby ją zainstalować, nie spodoba się i ją usuwają. Czy ilość pobranych aktualizacji jest wiarygodnym wskaźnikiem? To już lepsze rozwiązanie, ale również ma wady. Jeżeli ktoś instaluje wielokrotnie system od nowa to pobiera wielokrotnie te same aktualizacji. Z kolei duże organizacje, które mają setki instalacji często pobierają raz obraz, a następnie redystrybucją go wewnątrz swojej wewnętrznej sieci z własnych serwerów. Spotkałem się z wypowiedzią twórcy systemu MINIX, który na pytanie o popularność systemu odpowiedział, że monitoruje ilość pobrań ale nie wie, kto go pobiera i co z nim robi.

Kolejną kwestią w "bańce dystrybucyjnej" jest ilość dostępnych dystrybucji, wg. distrowatch.com jest ich ponad 300! Ręce opadają. Postaram się odnieść do tej liczby i w tym bardzo przydatne okaże się wspomniane drzewo rozwoju dystrybucji. Jeżeli na nie popatrzymy to większość dystrybucji jest forkami kilku głównych. Postanowiłem przejrzeć czym są te liczne forki. Duża rzesza to dystrybucje rozwijane przez firmy w celu dostosowania dystrybucji do potrzeb ich produktu. Jest też wiele dystrybucji nie będącymi forkami, głównym ich przeznaczeniem są systemy wbudowane. Są też takie, których głównym celem jest predefiniowana konfiguracja lub stworzenie prześlicznego środowiska graficznego. Niektóre powstały tylko z nienawiści do jakiegoś komponentu dystrybucji macierzystej (np systemd). Znalazłem również takie, których główną stroną jest blog na blogger i wyglądają raczej na hobby twórcy, niż zaspokojenie do tej pory niezaspokojonych potrzeb. Warto zwrócić uwagę, że duża ilość odszczepów umarła śmiercią naturalną. Są też takie które są zaznaczone jako ciągle rozwijane, ale ich strony www już nie działają. Wiele z nich to tylko LiveCD, bądź dystrybucje z preinstalowanym tematycznym oprogramowaniem. Jednym zdaniem podsumowując większość forków to dystrybucje  spreparowane pod czyjeś potrzeby bądź upodobania. Nie są to systemy uniwersalne jak ich macierzyste wersji.

Teraz wymienie moim zdaniem dystrybucje, które rzeczywiście mogą pretendować do miana odmiany systemu Linux, reszta to zazwyczaj przeróbki. Oczywiście mam tu na myśli dystrybucje, które są budowane w celu ogólnego przeznaczenia, a nie tylko do konkretnych upodobań. Wymienie je w kolejność wg. popularności moim zdaniem:
  1. Debian (119)
  2. Ubuntu (52) - potomek Debiana
  3. CentOS (6) - potomek RedHata
  4. RedHat (41)
  5. Gentoo (12)
  6. Slackware (37)
  7. Arch (13)
  8. ...
Wyszukiwarka Google zdobyła wielką popularność ponieważ okazała się przydatna dla wielu ludzi. Jej algorytm opiera się na liczbie linków do danej strony. Skoro tam taki algorytm się sprawdził to czemu nie zastosować go w przypadku dystrybucji. W tym celu przy ich nazwach w nawiasach podałem ilość forków wywodzących się z danej dystrybucji. Uważam, że jeżeli ktoś opiera swoją dystrybucję na jakiejś innej to znaczy, że uznał ją za dobrą podstawę. Jak widać Debian pod tym względem wygrywa, duża w tym zasługa systemu Ubuntu. CentOS nie ma wiele forków, ale wynika to z faktu, że z założenia jest kopia RedHata, która wśród serwerów jest bardzo popularna. Jeżeli chodzi o Arch i Slackware to szczerze mówiąc nie orientuje się który bardziej jest popularny, pierwszy to bardziej desktop, drugi z kolei to serwer.
We wspomnianej liście pominąłem kilka niezależnych dystrybucji, ale są to zazwyczaj dystrybucje narzędziowe bądź laboratoryjne. Dobrym przykładem jest Kali przeznaczony do testów penetracyjnych, jego zaletą jest wyposażenie w narzędzia i skrypty do tego służące. Innym przykładem jest płytka SystemRescueCd bazująca na Knoppix, z której sam wiele lat korzystałem jako zestawu narzędzi do diagnozowania i naprawiania komputerów. Z kolei przykładem pewnego rodzaju eksperymentu bądź laboratorium jest Qubes OS, którego celem demonstracja najbardziej bezpiecznego złożenia systemu. Sam niedawno instalowałem dystrybucję, która wyposażona jest w narzędzia do inspekcji sieciowych pakietów. Także jak widać wiele forków jest stworzona w celu konfiguracji systemu pod konkretne zadania.

Oczywiście przedstawiona przeze mnie lista nie jest idealna, ponieważ można by zrobić oddzielną dla desktopów i serwerów. Poza tym część z nich jest komercyjna, jednej z nich np. SUSE nawet nie wymieniłem. Nie wymieniłem również Fedory, która jest poligonem doświadczalnym RedHata. Z kolei surowa liczba obecnie żyjących forków też nie jest idealnym wskaźnikiem. Możnaby wybrać tylko te, które mają już co najmniej np. 7 lat. Ale myślę, że rozdrabnianie się na te szczegóły nie ma już dalej sensu, bo i tak każdy wybierze według upodobania lub potrzeb. Nie mniej łatwiej wybrać z ok. 10 niż 300. Należy, również nadmienić, że wybierając dystrybucję bazową pod nową dystrybucję deweloperzy chyba najbardziej kierują się stabilnością rozwoju takiej dystrybucji. Tak więc takie stabilne, ale przestarzałe dystrybucje są dobrą podstawą dla nowej dystrybucji z aktualniejszymi pakietami.

Nie ma co się przejmować ilością istniejących dystrybucji, bo to co będzie potrzebne przetrwa, reszta nie. Taka jest natura wolności open source. Myślę, że dobrze tą sytuację oddaje to co kiedyś Winston Churchill powiedział, że demokracja, to zarazem najlepszy i najgorszy system jaki do tej pory wymyślono.

Thursday, November 23, 2017

Linux nie jest idealny, ale jest!

Z okazji zbliżającego się 10-lecia mojego przejścia na system Linux postanowiłem co nieco napisać na jego temat. Z drugiej strony nie chciałbym powtarzać rzeczy napisanych gdzie indziej, więc wyszło na to, że trzeba by napisać to w sposób mało spotykany. No i fajnie, napiszemy o tym o czym zazwyczaj wyznawcy systemu Linux nigdy by Ci nie powiedzieli. Hy czyli wyjdzie takie nietypowe 10-lecie - bez słodzenia.

Na wstępie należałoby napisać dla kogo GNU/Linux będzie dobrym systemem. Pominę zachwalanie, o osiągnięciach systemu Linux o tych wszystkich superkomputerach i super możliwościach. Najkrócej rzecz ujmując Linux jest systemem przemysłowym, którego możesz również używać legalnie w swoim domu. Tym mniej więcej Linux różni się od UNIX-a, którego nie mogłeś używać w domu. A czemu przemysłowym? Cóż, bo rozwijany jest głównie przez przemysł informatyczny i głównie w nim jest używany. Czy to znaczy, że Linux nie nadaje się do małych firm jako darmowa platforma do pewnych usług sieciowych. Ależ nadaj i to wyśmienicie. No dobrze, a co z używaniem Linuksa w domu na tzw. desktopie? - liczyłem na to, że o to zapytasz :) Cóż, powiem tak. Jeżeli nie interesuje Cię informatyka w szerokim tego słowa znaczeniu to nie polecałbym go, chyba, że zależy Ci na tym aby mieć legalny i darmowy system w domu. Oczywiście kosztem jakiś problemów czy to z obsługa sprzętu albo koniecznością grzebania w systemie. Z kolei jeżeli jesteś zapaleńcem informatyki, jest Ci ona ważniejsza od grania w gierki (czyli mniej więcej wtedy jak wydoroślejesz ;)  i jeszcze wcześniej kupisz sprzęt z myślą o tym aby Linux go obsłuży to pannie..., aż strach mówić co się stanie. Od 10 lat na komputerze domowym, obecnie laptopie używam dystrybucji Debian w wersji stabilnej i powiem, że nie wiele to się różni od Mac OS X.

Więc jakie to wspaniałe rzeczy można robić na systemie Linux? Uczyć się! Tak, bo przecież fascynuje Cię informatyka, prawda? Możesz uczyć się na programistę, administratora systemów i sieci, specjalistę od bezpieczeństwa, pentestera i pewnie jeszcze kilka specjalizacji o których zapomniałem. A co jeżeli Ciebie po prostu interesuje jak działa system i cały komputer? Cóż, przykro mi, ale pewnie zostaniesz informatykiem - tak było ze mną i wieloma innymi fascynatami systemu Linux. Dla osoby interesującej się informatyką system open source jest bardzo atrakcyjny.

Z Linuksem to ciekawa historia wyszła. Po pierwsze to nikt tego do końca tak nie planował, co tylko świadczy o tym, że widocznie istniało zapotrzebowanie na ogólnie dostępny system operacyjny. Początki powstawania Linuksa sięgają lat 80-tych gdy powstał projekt wolnego systemu zwany GNU. Wtedy tak naprawdę powstała większość narzędzi używana dziś w systemie Linux. Później w latach 90-tych projekt GNU doczekał się jądra systemu i to właśnie od niego wywodzi się nazwa systemu. Popularności dla jądra Linux na pewno dodawał fakt, iż od początku było pisane z myślą o architekturze x86. A co to daje? Architektura Intel x86 to nic innego jak upowszechnienie komputerów domowych. Dorzucił się do tego również IBM swoim otwartym standardem PC. Tak więc komputery stawały się powszechne, ale na te powszechne komputery w tamtych czasach nie było systemu Unix. Zarówno narzędzia GNU jaki i jądro Linux były wzorowane na systemach Unix. Często można spotkać się ze stwierdzeniem, iż GNU/Linux to nie UNIX. Ależ to jest UNIX, tylko napisany od nowa i na powszechną architekturę x86. Całe to wydzielanie systemów na UNIX i Unix-like odnosi się tylko do tego, czy dany system wywodzi się z rodziny pierwszych systemów UNIX, czy też nie. Poza tym nazwa UNIX była zarejestrowana itd., więc co z tego, że Linux nie wywodzi się ze żadnego systemu UNIX skoro jest jego klonem. Wiele osób zarzuca dla systemu Linux, że nie jest zgodny ze standardami UNIX i nie zasługuje na to aby go tak nazywać. Cóż, wydaje mi się, że oczekiwanie od nowoczesnych systemów 100% zgodności ze wzorcami stworzonymi ponad 40 lat temu trochę mija się z celem. Po prostu Linux jest nowoczesną odmianą systemu typu Unix i to do tego bardzo dojrzałą. Dla przykładu, pierwsza firma żyjąca z rozwoju i wsparcia systemu Linux, czyli RedHat ma już 24 lata. Mało która komercyjna odmiana system UNIX rozwijana jest tak długo. Dla porównania system Solaris rozwijany jest przez prawie taki sam okres czasu, z tym, że już zdążył zmienić właściciela i teraz to już jest Oracle Solaris. Tak więc jak na całą epokę systemów UNIX system GNU/Linux przetrwał bardzo długo i co najciekawsze, obecnie jest w kulminacyjnym okresie swojego rozwoju.

Skoro już było o historii to czas też na przyszłość systemu Linux. Więc obecne trendy w tym systemie to chmury i systemy wbudowane. Nikt nie wie jaka do końca czeka przyszłość system spod znaku pingwina ale wiadomo jest, iż obecny otwarty model rozwoju systemu po prostu się sprawdza. Może wydawać się to dziwne, ale dla Linuksa udało się połączyć rozwój systemu do użytku prywatnego i komercyjnego. Każda ze stron rozwija go na swoje potrzeby, a że duży może więcej to rozwiązania desktopowe rozwijają się jakieś cztery razy wolniej niż serwerowe. Wydaje mi się że klejem, który to  wszystko jeszcze trzyma jest to, że system ten jest tak konfigurowalny, iż każda ze stron różnych interesów składa go na swój sposób. Tak więc powstał w pewnym sensie uniwersalny system Unix. Jeszcze nigdy w historii IT z jednego systemu nie żyło tyle firm co dziś z Linuksa. Kiedyś każda z firm miała swoją odmianę i rozwój systemu Unix był bardzo rozproszony. Dziś jest scentralizowany i dzięki temu jest najszybciej rozwijającym się systemem. Czy jest to powód tylko do dumy? Nie zawsze, ale jaki już pisałem, na razie ten model się sprawdza.

Nadszedł czas aby powiedzieć sobie co złego jest w systemie Linux. A no chyba to co jest w nim najlepsze, czyli rozproszony rozwój. Zauważ, że rozwijanie nowych funkcjonalność w tym systemie odbywa się głównie na poziomie poszczególnych komponentów. Intel chce lepszego wsparcia sprzętu - rozwija jądro. Komuś innemu zależy na obsłudze protokołu SMB - rozwija projekt Samba. W każdym z tych projektów poziom rozwoju jest bardzo wysoki, ale w końcu przychodzi czas na złożenie kompletnego systemu i tu wkraczają do akcji deweloperzy wszelkich dystrybucji. Im jest ich więcej w danej grupie tym system udaje się lepiej, ale z tym bywa różnie. Właśnie tym problemem zajmuje się większośc firm żyjąca z Linuksa: RedHat, Oracle, Novell, Canonical. Istnieje również cała masa niekomercyjnych organizacji zajmujących się składaniem systemu z kawałków GNU. Bez wątpienia najlepiej udaje się to dla społeczność systemu Debian, co mogę osobiście potwierdzić.

Budowa systemu, zwłaszcza tak zaawansowanego jest bardzo czasochłonnym i kosztownym zajęciem, więc wydaje się że coraz więcej firm zaczyna to akceptować i dorzuca swój cenny czas w rozwój wspólnego systemu. Stało się to już trendem, więc doszło już do czegoś takiego, że jak firma chce być konkurencyjna to czasami musi sięgnąć po gotowy system, nawet jeżeli nie chce. Dziwna sytuacja, firmy stały się zakładnikami własnych praw ekonomii - czyli 'tnijta koszty'. Geniusz Stallman, czy czysty przypadek? Ale z drugiej strony, skoro USA z Rosją razem rozwijają Międzynarodową Stację Kosmiczną, to czego tu się czepiać. Widocznie taka jest natura rozwoju wielkich projektów, należy to zaakceptować i póki co korzystać.

Koniec końców, wydaje mi się, że największe podziękowania za wkład w rozwój systemu GNU/Linux należą się jego najmniejszym twórcom a nie dużym firmom, bo te wcale by się nim nie zainteresowały gdyby nie wkład fascynatów. Wychodzi na to, że najpopularniejszy system przemysłowy narodził się w... domu. Co za ironia losu.

Sunday, May 15, 2016

Home Lab - Cisco & MikroTik

I would like to share with you my experience of building a network home lab. If you think about to build your own network home lab some of this tips can be useful for you. At the beginning i want to discuss about why to do it and what is the goal of my lab. Even if you have other goal some basic concepts will stay the same.

The first assumption is to do it cheaply. If you live in country where GDP is not the biggest you want to build lab but don't spend all money for it ;)
The second assumption is to have switching, routing and WiFi in lab. Switching give you Cisco devices, routing you have in MikroTik (or Cisco) and WiFi in MikroTik. From my perspective it is the best combination and I will explain why.

When I had chosen Cisco switch I didn't want pass the exam certificate for CCNA or another. I'm just need a professional management switch. That is the reason why I buy End-of-life devices. My choice is Cisco Catalyst 2950 and Cisco Catalyst 3550. The first is switching only device (L2 only), the second switch is combination switching and routing (L2+L3).

Cisco 2950 is great switch, it have all what probably you will need. It have not large size like on switch, low power consumption and it is be quiet. And of course it's cheap today (2016). Another switch Cisco 3550 made a bad first impression for me, is big, noisy and it costs two times more than 2950. But, when I tested it I change the mind. Now it is my favorite switch, but in beginning I have big problem with it. When I enable routing it's working less then one minute and stop working. Upgrade system for highest available version resolved this problem.
So first things which you should do is upgrade all Cisco switch, but here is the next problem. Usually this switch from auctions is send without any cable. So you to have need own power cable and console cable. About console cable, it have two connector, RJ-45 to switch and DB9 to computer (serial port). If you don't have serial port in your computer you need also to have serial port to USB adapter. And finally you can use and upgrade your Cisco switch ;)

Another bad things about this switch is that it's very old and yet not support auto-negotiation (Auto-MDI/MDIX). The result is that, if you want connect two switch together via Ethernet cable you need crossover cable. Yes, and this moment I finish the bad news about Cisco switch 2950 and 3550, it's time for good news :)

I have three Cisco switch in my lab (two 3550 and one 2950), I think it's enough to test of switching (e.g. STP). Now I little describe the 3550 switch. As I had said earlier 3550 offers routing. 2950 can have only one IP address mainly to management, but 3550 can have many IP address. Each port can by used of two mode, routable (L3) and not routable (L2). But you can set L2 port with and without IP address, in result you get three combinations: port L3 (routing), L2+L3 (VLAN + IP) and L2 (VLAN without IP). If you use last combination you can simulate many switches in one 3550 switch. In fact one 3550 switch allows you to use one switch as one router and many switches. That its great.
And I will be forgot, 3550 is selling with two version SMI and EMI. The SMI version don't have all dynamic routing protocol, EMI version have got, but cost double than SMI version of devices. The next great good news is that in the SMI version you can upload EMI image without any technical problem.

Time to describe second type of device which is MikroTik. First of, why MikroTik? Two reasons. The first it's big configuring possibility and CLI interface. The second it's new model named MikroTik hAP lite. It is designed to home use and it's cost is low. In my country in 2016 year one new device of this model cost the same as one Cisco 2950 switch. MikroTik hAP lite has the same version operating system as MikroTik RouterBoard, it has only less powerful equipment (CPU, RAM, etc.). I've three this devices and I'm very happy with them. This MikroTik router with Cisco switch 3550 you can use at the same time as WAN router and as LAN AP, is sufficient that you divide ether-* ports in MikroTik. Generally I think Cisco switch and MikroTik router is a great combination.

The below presents schematic of network in my home lab. With this equipments and computers with Linux system I can simulate any type of Linux service in network (WAN, LAN, WLAN).


And how its looks.