Linux Essentials Sertifikasyon Sınavına Hazırlık – Modül 4

Merhaba arkadaşlar, bir önceki makalemizde dosya/dizin yönetme, arşivleme ve sıkıştırma gibi konuları incelemiştik. Bu makalemizde ise Network, Hardware, Processes gibi konulara değineceğiz.
Modül 3 için bakınız: https://www.cozumpark.com/linux-essentials-sertifikasyon-sinavina-hazirlik-modul-3/

Modül 4 konuları;
1. Bilgisayar Donanımları
2. Veriler ve Süreçler
3. Temel Komut Dosyası
4. Ağ Ayarları

BİLGİSAYAR DONANIMLARI

Bilgisayarlar bir donanım aygıtları olsa da, tamamen yazılımdan oluşturulmuştur. Bilgisayarın hangi bileşenlerden oluştuğunu anlaşılmaz ise, sistem düzgün bir şekilde çalıştırılamaz, yapılandırılamaz, yönetilemez, korunamaz ve sorun giderilmez.
Güvenlik duvarları, dizüstü bilgisayarlar, sunucular ve bir çok özel amaçlı bilgisayar türleri bulunmaktadır. Bu tür cihazların bilgisayar yapan aynı temel bileşenlerden en az birkaçına sahiptir. Biz bu bölümde kısaca bilgisayarı oluşturan temel unsurları inceleyeceğiz.

MOTHERBOARD

Anakart veya sistem kartı, CPU, RAM ve diğer bileşenlerin tümünün bağlandığı bilgisayarlardaki ana donanım kartıdır. Masaüstü, dizüstü, sunucu gibi bilgisayar türüne bağlı olarak, CPU ve RAM gibi cihazlar doğrudan anakart’a bağlanırken, Ekran, Tv, Wifi, Ses Kartı vb. gibi bazı kartlar bir veri yolu (AGP, PCI, ISA) ile bağlanabilir.

CPU

Bir merkezi işlem birimi, bilgisayarın en kritik donanım bileşenlerinden birisidir. Hesaplamaların yapıldığı, kodların çalıştığı yer olan işlemci, bilgisayarın beynidir. Anakarta doğrudan bağlanır, anakartlarlar tipik olarak belirli işlemci türleriyle çalışacak şekilde yapılandırılmıştır. Bir donanım sistemi birden fazla işlemciye sahipse, sistem çok işlemcili olarak adlandırılır. Birden fazla işlemci tek bir genel işlemci yongasında birleştirilirse, buna çok çekirdekli denilmektedir.
Linux’ta diğer işletim sistemlerinden daha fazla işlemci türü için destek mevcut olsa da, masaüstü ve sunucu bilgisayarlarda kullanılan başlıca x86 ve x86_64 olarak 2 tür işlemci vardır. Bir x86 sisteminde 32 bit veri işlerken, x86_64’te sistem 64 bit bit veri işler. X86_64 sistem aynı zamanda geriye dönük uyumlu modda bir seferde 32 bit veri işleme kapasitesine sahiptir. 64 bitlik bir sistemin temel avantajlarından biri, daha fazla bellekle çalışma yeteneğidir, diğer avantajları ise işlem verimliliğinin ve güvenliğin artmasıdır.
Sonuç olarak, bugün üretilen modern işlemcilerin neredeyse tamamı x86_64 mimariye sahiptir.
Mevcut sistemin CPU’sunun hangi aileye ait olduğunu görmek için arch komutu kullanmalıyız.
arch

CPU ile ilgili daha detaylı bilgi almak için lscpu komutu kullanılabilir.
lscpu

RAM

32 bit mimari sistemler 4 gigabayta kadar Ram kullanabilirken, 64 bit mimariler çok daha fazla RAM’i adresleyip kullanabilmektedir. Sistemin sahip olduğu ram, tüm işletim sistemi gereksinimlerini karşılayamadığı durumlar olabilir. Sistem RAM seviyesi azaldığında, verileri geçici olarak diske depolamak için takas (swap) alanı adı verilen sanallaştırılmış bellek kullanır. Belli bir süre sonra kullanılmayan veriler RAM’de depolanır ve sabit sürücünün takas olarak atanan bölümüne taşınır. Akabinde mevcut etkin programlar tarafından kullanılmak üzere daha fazla RAM alanı genişlemiş olur. Gerekirse, bu değiştirilen veriler daha sonra RAM’ geri taşınabilir. Takas yapılandırıldığı sürece sistem tüm bunları otomatik olarak yapar.

Takas alanı da dahil olmak üzere sisteminizdeki RAM miktarını görüntülemek için free komutunu çalıştırmalıyız. Opsiyon olarak -m megabayt veya -g gigabayt olarak çıktılarda alabilirsiniz.

Yukarıda ki çıktıya baktığımızda, sistemin toplam 1.698 MB kapasiteye sahip olduğunu ve şu anda used kısmında 1.225 MB kullandığını görebiliyoruz. Takas miktarı ise 1.639 MB gözüküyor ve 1.231 MB kullanıyor. Bu durumda RAM’in yetmediğini ve swap alanından kullanıldığını rahatlıkla söyleyebiliriz. Ancak RAM’ boşta olsaydı, swap alanı kullanmasına gerek kalmayacaktı.

HARD DRIVE

Sabit diskler, disk aygıtları veya depolama aygıtları olarak da adlandırılır. Sisteme bir kaç yolla bağlanabilirler, denetleyici anakart’a, PCI kart üzerine veya bir USB aygıtı olarak entegre edilebilir. Sabit sürücüler bir veya daha fazla bölüme ayrılmıştır. Bölme, büyük miktarda kullanılabilir depolama alanı oluşturmak ve onu daha küçük alanlara bölmek için tasarlanmış olan sabit sürücünün mantıksal bir bölümüdür. Microsoft Windows’ta her sabit sürücü için tek bölüme sahip olmak yaygın olsa da, Linux dağıtımlarında, sabit sürücü başına birden çok bölüm yaygındır. Bazı sabit sürücüler MBR adı verilen bir bölümleme teknolojisi kullanırken, diğerleri ise GPT adı verilen bir bölümleme türünü kullanır.
MBR bölümünde çalışmak için kullanın araçlar, fdisk, cfdisk ve sfdisk komutlarıdır. GPT diskleri, kullanıcın diski MBR’nin desteklediğinden daha fazla bölüm oluşturmasını sağlayan daha yeni bir bölüm türüdür. Ek olarak MBR bölümde iki terebayttan daha büyük bölüm oluşturulamazken, GPT bölümünde iki terebayttan daha büyük bölümler oluşturulabilir. GPT bölümünde çalışmak için kullanın araçlar, fdisk, gdisk ve sgdisk komutlarıdır. Hem MBR hem de GPT tipi diskleri desteklemeye çalışan bir araç ailesi de vardır. Bu araç seti, parted komutu ve grafiksel gparted aracı içerir.
Sabit sürücüler, /dev dizininde depolanan dosya adlarıyla ilişkilendirilir. Her aygıt dosya adı birden çok parçadan oluşur.
* Dosya tipi: Farklı sabit sürücü türlerine göre dosya adı ön ek olarak verilir. IDE sabit sürücüler ile başlarken hd, USB, SATA ve SCSI sabit sürücüler ise sd ile başlamaktadır.
* Cihaz Sırası: Her sabit sürücüye bir harf atanır. Örneğin ile SATA sabit diskte /dev/sda ikincisinde ise /dev/sdb gibi.
* Bölüm: Bir diskteki her bölüme benzersiz bir sayısal gösterge verilir. Örneğin, bir SATA sabit sürücüsünün iki bölümü varsa, bunlar /dev/sda1 ive /dev/sda2 aygıt dosyalarıyla ilişkilendirilebilir.
Yani farklı fiziksel diskler a,b,c gibi harf ile belirtilirken, bölümler 1,2,3 gibi sayısal olarak gösterilmektedir. Microsoft Windows’ta bu tam tersidir.

Kendi kurduğumuz sistem üzerinde sd olan sürücülere bakalım.
ls /dev/sd*

Yukarıda ki görsele baktığımızda tek bir disk (USB, SATA, SCSI) ve 3 bölümden oluştuğunu anlayabiliyoruz.
Aşağıda ki görselde daha net anlaşılması için bir disk ekledim. Tekrar komutu çalıştırdığımda /dev/sdb aygıtın geldiğini görebiliyoruz.

PERIPHERAL DEVICE

Çevresel cihazlar, giriş/çıkış veya veri depolamaya izin veren bilgisayara bağlı bir bileşendir. Klavyeler, fareler, monitörler, yazıcılar ve sabit disklerin tümü çevre birimleri olarak kabul edilir. PCI veri yolu ile bağlanan tüm aygıtları görüntülemek için, lspci komutunu kullanabiliriz. Sanal makine kullandığım için komutu kullanmanın çok bir anlamı olmuyor.

UNIVERSAL SERIAL BUS DEVICE

PCI veri yolu, ses ve ağ kartları gibi bir çok dahili aygıt için kullanılırken, çok sayıda harici aygıt bilgisayara USB aracılığıyla bağlanır. Dahili olarak bağlanan cihazlarda, bir cihaz bağlamak veya bağlantısı kesmek için sistemin kapatılması gerekir. USB cihazları çalışırken takılabilir, yani sistem çalışırken bağlanabilir veya çıkarılabilirler. Ek olarak USB cihazları düzgün bir şekilde kaldırılmadığı zaman, veri kaybı ve dosya sisteminin bozulmasına neden olabilir.
Sistem üzerinden bağlı USB cihazlarını görüntülemek için lsusb komutunu kullanabiliriz. Sanal makine kullandığım için komutu kullanmanın çok bir anlamı olmuyor.

OPTICAL DRIVE

Optik Sürücüler genellikle CD-ROM, DVD veya Blu-Ray olarak adlandırılır. Çıkarılabilir depolama ortamlarıdır. Optik disklerle kullanılan aygıtlar salt okunur ve yazılabilir türde olabilir. CD-R, CD+R, DVD+RW, DWD-RW gibi yazılabilir diskler için standartlar olabilir.
Bu çıkarılabilir disklerin dosya sistemine nerede takılı olduğunu bilmemiz önemlidir. Linux dağıtımlarında modern olanlar /media dizinine altına yerleşirken, eski dağıtımlar genellikle /mnt dizini altına yerleşir. Örneğin, /media/usb yoluna USB flash sürücü takılabilir.

DISPLAY CARD

Çıkışı monitörde görüntülemek için, bilgisayar sistemi bir ekran kartı ve bir monitöre sahip olmalıdır. Video görüntüleme aygıtları genellikle doğrudan ana kartın içine yerleştirilir ve bağlanır. Aynı zamanda ana kart üzerindeki PCI yuvaları aracılığıyla da bağlanabilmektedir.
Üreticiler, her video görüntüleme aygıtı için genellikle özel bir sürücüye ihtiyaç duymaktadır. Bu sürücüler genellikle Microsoft Windows için yapılır. Linux için aynı şey geçerli değildir. Global üreticiler ise belli bir düzeyde Linux desteği sunmaktadır. Yaygın olarak kullanılan üç tür video kablosu vardır. Çok eski olan 15-Pinli VGA, daha yenisi ve Dijital olan 29-Pinli DVI ve çok yaygın olarak kullanılan 4k veya Ultra HD kadar çözünürlük destekleyen HDMI. Monitörlerin video görüntüleme cihazlarıyla doğru şekilde çalışması için, video görüntüleme cihazıyla aynı çözünürlüğe desteklemesi gerekmektedir.

POWER SUPPLY

Güç kaynakları, bilgisayarın çeşitli voltajlarda (3.3v, 5v, 12v) kullandığı alternatif akımı (120v, 240v) doğru akıma çeviren cihazlardır. Güç kaynakları genellikle programlanamaz. Gelen voltaj dalgalanmalarından cihazı korur. Güç kaynağı çok önemli olduğu için kaliteli bir ürün seçmemiz her zaman doğru olacaktır. Arızalı bir güç kaynağı bilgisayar sistemine ciddi hasarlar verebilir. Masaüstü, sunucu, bağımsız sistemler, güç dalgalanmalarına karşı dizüstü bilgisayardan daha savunmasızdır. Güç dalgalandığında, pil tabanlı olmayan sistemlerde çok fazla hasara neden olabilir. Ancak dizüstü bilgisayarlar gücü bitene kadar pilinden enerji almaya devam eder. Sunucular, Storage, Firewall gibi kritik ürünlerde varsayılan veya opsiyonel olarak 2 tane power supply (PSU) ürün üzerinde gelmektedir.

Bilgisayar Cihazlarını Yönetme

Birçok farklı grafik kartı, monitör ve yazıcı vardır. USB depolama cihazları, kameralar ve cep telefonları gibi USB cihazlarının popülaritesiyle, bir Linux sistemine bağlamak isteyebileceğiniz mevcut cihazların sayısı binleri bulabilir.
Bu donanım aygıtları tipik olarak sürücülerle, işletim sistemi arasında iletişim kurmalarına izin veren yazılıma ihtiyaç duyması nedeniyle , çok sayıda farklı aygıt sorun yaratır. Donanım üreticileri bu yazılımları Microsoft Windows için sağlar. Bunun sebeplerinden bir tanesi de pazar payıdır. Linux’un masaüstü pazar payı, Microsoft ve Apple sistemlerine göre çok uzak olmaya devam etmektedir. Global üreticiler yine Linux belli dağıtımlarına destek vermektedir. Sonuç böyle olunca yeni aygıt satın almadan önce Linux’u destekleyip desteklemediklerini öğrenmek için araştırın veya aygıtın satıcısına danışın.

VERİLER ve SÜREÇLER (DATA and PROCESSES)

Çoğumuz Linux’tan bahsettiğinde, aslında işletim sistemini tanımlayan GNU/LINUX adlı bir yazılım kombinasyonundan bahsediyoruz. GNU, çekirdeği çevreleyen ve birçok yaygın UNIX komutunun açık kaynak eşdeğerlerini sağlayan özgür bir yazılımdır. Bu kombinasyonun Linux kısmı, İşletim sisteminin çekirdeği olan Linux çekirdeğidir.
Linux çekirdeğinin bir uygulaması, çekirdeğin bir parçası olan birçok alt sistemi ve gerektiğinde modüler bir şekilde yüklenebilen diğerlerini içerir. Linux çekirdeğinin temel işlevleri arasında bir sistem çağrı arabirimi, süreç yönetimi, sanal dosya sistemleri, ağ oluşturma ve aygıt sürücüleri bulunur.
Özetle çekirdek, bir kabuk aracılığıyla kullanıcıdan gelen komutları kabul eder ve bu komutları yerine getiren işlemleri, bellek, diskler, ağ arayüzleri, klavyeler, fareler, monitörler ve daha fazlası gibi cihazlara erişim sağlayarak yönetir. Tipik bir Linux sisteminde binlerce dosya vardır. Dosya Sistemi Hiyerarşi Standardı bu dosyaları düzenlemek için dağıtımlar için bir kılavuz sağlar. Dosya sistem hakkında /proc ve /sys dizinleri bilgi vermektedir.

Processes

Süreçler, komut satırından çalıştırılan kısa süreli komut olabileceği gibi işletim sisteminin açık olduğu süre boyunca çalışan bir ağ servisi de olabilir. Kullanıcıların süreçleri yönetebilmesi için her process’e ait bir PID numarası vardır.
Linux altında çalışan ilk process init olup PID numarası her zaman 1′ dir. Init ilk process olduğu için kullanıcı tarafından değil çekirdek tarafından başlatılır.
/proc sanal bir dosya sistemidir. Linux’un sunduğu en güçlü özelliklerden biri de / proc dosya sistemidir. Buradaki dosyalar gerçek içerik taşımaz. Çalışma zamanında çekirdek tarafından içerikler güncellenebilir. Sistem belleği, bağlanmış aygıtlar, donanım bilgisi, süreçlerin durumu gibi çekirdeğe ait bilgileri barındırır.
ls /proc komutunu çalıştıralım.

Yukarıdaki çıktıda, numaralandırılmış dosyalar ve dizinler gözükmektedir. Sistemde çalışan her işlem için numaralandırılmış bir dizin vardır. Burada ki dizin adı, çalışan işlemin işlem kimliği (PID) ile işleşir.
Örneğin, sayılardan 72, aynı isimli bir dizin ile temsil edilir, çalışan bir süreci, konfigürasyonunu, bellek kullanımını ve diğer birçok öğeyi tanımlayan dosya ve dizini içeren çalışan bir program olan PID 72’yi belirtir.
Çalışan bir Linux sisteminde her zaman bir işlem kimliği veya PID 1 vardır.
Ayrıca /proc dizininde çalışan, çekirdek hakkında bilgi sağlayan birkaç normal dosya vardır.

Dosya –>> İçindekiler
/proc/cmdline Komut satırı parametreleri ve özel talimatlar gibi ilk başlatıldığında çekirdeğe aktarılan bilgileri sunar.
/proc/meminfo Çekirdek tarafından bellek kullanımı hakkında bilgi verir.
/proc/modules Ekstra işlevsellik eklemek için şu anda çekirdeğe yüklü modüllerin listesi verir.

/proc dizin altındaki dosyaların çoğu, kök kullanıcı tarafından bile değiştirilemez. Ancak /proc/sys dizinin altındaki “dosyalar” potansiyel olarak kök kullanıcı tarafından değiştirilebilir. Bu dosyaları değiştirmek, Linux çekirdeğinin davranışını değiştirebilir. Bu dosyaların doğrudan değiştirmek çekirdekte geçici olarak kalmasını sağlar. Kalıcı hale getirmek için /etc/sysctl.conf dosyasında uygun bölümlere eklenmelidir.

Süreç Hiyerarşisi

Çekirdek, önyükleme prosedürü sırasında yüklemeyi bitirdiğinde, init işlemini başlatır ve ona 1’lik PID atar. Bu işlem daha sonra diğer sistem işlemlerini başlatır ve her işleme sıralı bir PID atanır.
Başlangıç işlemlerinden herhangi biri diğer işlemleri başlatırken, sırayla diğer işlemleri başlatabilecek işlemleri başlatabilir. Bir süreç başka bir süreci başlattığında, başlatmayı gerçekleştiren sürece üst süreç ve akabinde başlatılan sürece çocuk süreç adı verilir.
Sistem uzun bir süre çalıştığında, /proc/sys/kernel/pid_max dosya üzerinden görüntülenebilen ve yapılandırılabilen maksimum PID değerine ulaşabilir. En büyük PID kullanıldığında, sistem “devredilir” ve aralığın altında bulunan PID değerlerini atayarak sorunsuz bir şekilde devam eder.
Processes, child, parent aile ağacına eşlenebilir. Bu ağacı görüntülemek için pstree komutunu kullanabiliriz. Yani birbirine bağımlı çalışan süreçleri görüntülemek için kullanılır.
pstree

İşlemleri görüntülemenin başka bir yolu da ps komutudur. Varsayılan olarak ps komutu yalnızca geçerli kabukta çalışan mevcut işlemleri gösterir.
ps

Sistemdeki tüm process’leri görüntülemek için ps aux komutu kullanılır.
ps aux

ps aux komutu yukarıda gördüğünüz gibi tüm işlemleri gösterdiği için çıktıyı anlamak zor olacaktır. head ve tail komutları ile yalnızca on işlemi görüntüleyebilirsiniz. Eğer filtreleme yapılmaz ise yüzlerce işlem arasında bulmanız gerekecektir. grep komutu burada da çok işimize yarayacak. Bir tane firefox tarayıcı açtım . Bunu görüntülemek için aşağıdaki komutu çalıştırıyorum.
ps -e | grep firefox

Sistem adminleri başka bir kullanıcının işlemlerine bakmak isteyebilir. Belirli bir kullanıcının işlemlerini görüntülemek için -u seçeneğini kullanabiliriz.
ps -u root | head

İşlemleri gerçek zamanlı olarak görüntüleyebiliriz. top komutu düzenli çalışan sistemlerin çıktısını güncelleyen dinamik ve ekran tabanlı bir arayüze sahiptir. En çok cpu kullanan processes’lere bakmak için top komutu kullanabiliriz. Görevleri CPU kullanımına, bellek kullanımına ve çalışma süresine göre sıralar bu sayede sistem yöneticisi kaynak kullanımını analiz edebilir.
top

top ekranından çıkmak ve komut istemine dönmek için q tuşuna basınız.

top komutu ile son olarak load average kısmında yük ortalamasını görebilirsiniz. Aşağıdaki görselde numaralandırdığım kısımlarda son 1, 5 ve 15 dakikalık aralıklardaki yük ortalamasını gösterir.

uptime komutu ile sistemin çalışma süresini ve yük ortalamasını da rahatlıkla görebiliriz.

free komutu ile, kullanılabilir boş veya kullanılmayan bellek alanını görüntüleyebiliriz. free komutu aynı zamanda swap kullanımı hakkında da bilgi verir.
free

Belli bir zaman aralığında bellek kullanım miktarını izlemek isteyebilirsiniz. -s seçeneği ile saniye olarak bir sayı belirtebilirsiniz. Aşağıdaki örnekte 10 saniyede bir güncellemesini söyledik.
free -s 10

Yukarıdaki görsele ek olarak çıktıları yorumlarken işinizi kolaylaştırmak adına –m (megabayt) veya -g (gigabayt) cinsinden bakmanız daha faydalı olacaktır.

NOT: Kullanılabilir bellek ve takas miktarı aşırı azalırsa, sistem işlemleri otomatik olarak sonlandırmaya başlar ve sistemin bellek kullanımın izlenmesini kritik hale getirir. Sistemin boş belleğin azaldığını fark ettiğiniz zaman, sistemin işlemleri otomatik sonlandırası yerine kendi seçtiğiniz işlemleri sonlandırabilirsiniz.

Eğer terminal ekranından bir uygulama çalıştırırsanız, process ön planda başlayacaktır. Yani terminal ekranına komut yazılamaz. Terminal ekranında firefox yazıp çalıştırıyorum. Artık firefox’u kapatmadığınız sürece komut istemine dönülemez. Bu durumu aşmak için bir kaç tane yöntem var. İlk olarak aşağıdaki görselde uyguladığım gibi ilk olarak CTRL + Z ile işlemi durdurup. bg ile firefox’u arka plana alabilirsiniz.
jobs: Arka planda çalışan process’leri listeler.
bg: Bir process’ i arka plana alabilirsiniz.
fg: Bir process’i ön plana alabilirsiniz.
& sembolunü uygulamanın yanına koyarak ilk açılışta arka planda başlatabilirsiniz. Örneğin, firefox&

Şimdide kill komutu ile süreçleri sonlandıralım. Komut satırından processes’lere sinyal göndermek için kullanılır. Procesess sonlandırmamız için PID ile kullanılması gerekmektedir. Aşağıdaki görselde yine firefox çalıştırdım. PID numarasını öğrenip süreci kill komutu ile sonlandırdım.
firefox&
ps
kill [PID number]

LOG FILES (Günlük Dosyaları)

Çekirdek ve çeşitli işlemler sistemde çalıştığı süre boyunca, nasıl çalıştıklarıyla ilgili çıktılar üretmektedir. Bu çıktıların bir kısmı, işlemin yürütüldüğü terminal penceresinde standart çıktı ve hata olarak görüntülense de, bu verilerin bir kısmı ekranda gösterilmez. Bunun yerine çeşitli dosyalara yazılır. Bu bilgilere günlük verileri veya günlük mesajları denilmektedir.
Günlük dosyaları birçok nedenden dolayı kullanışlıdır, sorunları gidermeye ve yetkisiz erişim gibi bir çok bilgiye erişmemize yardımcı olur. Syslog, neredeyse genel olarak Linux sistemlerinde günlüğe kaydetmeyi tanımlamak için kullanılan terimdir.
Günlüğe kaydetme, son dağıtımlarda iki şekilde farklılık gösterir. Sistem günlüğü tutmanın eski yöntemi, birlikte çalışan iki arka plan olarak adlandırılmış syslogd ve klogd birlikte çalışmasıdır. Daha yeni dağıtımlarda ise tek bir hizmet olarak rsyslogd bu iki işlevi ve daha fazlasını tek bir arka planda birleştirilir.
Daha yeni dağıtımlarda, systemd’ye dayalı olanlar günlük kaydı arka plan programı adlandırılır. journald ve günlükler esas olarak metin çıktısına izin verecek şekilde tasarlanmıştır. journald tabanlı günlükleri görüntülemek için journalctl komutunu kullanmaktır.
Kullanılan arka plan programı işlerinin ne olduğuna bakılmaksızın, günlük dosyaları kendilerini neredeyse her zaman /var/log dizin yapısına yerleştirir. Bazı dosya adları değişik gösterse de, bu dizinde bulunabilecek daha yaygın dosyalardan bazılarına bakalım.

Dosya —>> İçindekiler
boot.log Sistemin başlatılması sırasında servis olarak üretilen mesajlar.
cron Temelde yürütülecek işler için arka plan programı tarafından oluşturulan mesajlar .
dmesg Sistem açılışı sırasında çekirdek tarafından oluşturulan mesajlar.
maillog Arka plan programı tarafından gönderilen veya alınan e-posta mesajları için üretilen mesajlar.
messages Çekirdekten ve başka bir yere ait olmayan diğer işlemlerden gelen iletiler.
secure Yetkilendirme veya kimlik doğrulama gerektiren işlemlerden gelen iletiler (oturum açma işlemi gibi).
journal Varsayılan yapılandırmadan gelen mesajlar.
Xorg.0.log X Windows (GUI) sunucusundan gelen mesajlar.

Günlük dosyaları belli bir sürede planlı olarak yazmayı durdurur ve dosyaları düzenli olarak yeniden adlandırılır. Sonrasında yeni günlük dosyalarıyla değiştirilir. Yani eski günlük dosyaları yeniden adlandırılır ve yerine yeni günlük dosyası oluşur. Bu dosyalara sayısal ve tarihsel ek eklenebilir.

Aktif bir sistemde çok sayıda çekirdek hatası oluşursa, arabelleğin kapasitesi aşılabilir ve bazı mesajlar kaybolabilir. Bu arabelleğin boyutu, çekirdek derlendiğinde belirlenir.

/var/log/dmesg dosyası sistem açıldığı andan itibaren çekirdek loglarının tutulduğu dosyadır. Açılış sürecinde tüm donanım sürücülerini, başarı durumları veya neden başarısız olduklarını görebiliriz. (USB, HDD, KEYBOARD, MOUSE vb.) gibi. dmesg komutu direk olarak çalıştırılabilir. dmesg komutun yürütülmesi 512 kilobayta kadar metin üretebilir. Bu yüzden komutu pipe ile kullanarak less veya grep gibi ile komutlar kullanmamız doğru olacaktır. Örneğin USB ile ilgili sorun gidermek istiyoruz.
dmesg | grep -i usb

FILE EDITORS (DOSYA DÜZENLEYİCİLER)

UNIX’in bir çok metin editörü vardır. Biz 2 tanesi üzerinden devam edeceğiz. (nano ve vi) Nano düzenleyici, küçük metin dosyalarını düzenlemek için çok basit ve kullanışlı bir düzenleyicidir. vi veya daha yeni sürümü olan vim oldukça güçlü bir editördür, ancak diğerine göre öğrenmesi biraz daha zordur. Kısaca dosya düzenleyicilerden bahsedelim ve nano ile devam edelim.

vi editör

Vi editörü tüm UNIX ve Linux dağıtımlarıyla birlikte gelen ve yaygın bir kullanıcı kitlesi olan bir metin editörüdür. Komut satırından çalışmaktadır ve dosya oluşturmak, var olan dosyada değişik yapmak için kullanılır.
vi içerisinde üç alan vardır.

: ile başlayan Ex komutlarının verildiği satır alanı. (:q : wq : x gibi)
Yazı alanında ESC ile geçilen ve karakterlerin özel fonksiyon icra ettiği komut modu.
Yazı alanı. Karakterlere basınca istenilen metnin yazıldığı alan.
Komut modunda editöre sadece komutlar gönderilir. Verilen komutlar ekranda yazı olarak gözükmez. Bu komutlar satır, kelime silme, dosyada aşağı, yukarı, sağa, sola hareket etme, dosyada kelime arama vs amaçlı verilebilir. Yazı modunda ise basılan her karakter ekrana veri olarak yazılır. Yazı modundan komut moduna geçmek için ESC tuşu kullanılır.

Yeni bir dosya açalım.
vi dosyaadı

Yukarıdaki komutla istediğiniz isimde bir dosya vi ile açılmış olur. Bu komut aynı zamanda sizi, bu dosyayı düzenlemek üzere vi dosya düzenleyicisinin içine sokar. Verdiğiniz dosya diskte yoksa ve yeni oluşturulacak aşağıdaki gibi bir bilgilendirme ile karşılaşırsınız.

Buradaki ~ ifadesi boş satırları ifade eder. “i” tuşuna basılarak yazma moduna geçilir. i tuşuna basıp yazma moduna geçiyorum.

Dosyadan Çıkmak;
Öncelikle komut moduna geçmek için ESC tuşuna basılır. Komut modunda : (iki nokta üst üste) karakterine basarak nasıl çıkış yapacağınızı belirtebilirsiniz:
Kaydederek çıkmak için :wq!
Kaydetmeden çıkmak için :q!

a tuşu Ekleme moduna geçer. İmleçin bulunduğu pozisyondan itibaren basılan karakterler dosyaya yazılır.
h tuşu İmleci bir karakter sola taşır.
j tuşu İmleci bir satır aşağı alır.
k tuşu İmleci bir karakter yukarı alır.
l tuşu İmleci bir karakter sağa alır.
u tuşu En son yapılan değişikliği geri alır. Tekrar basılırsa yapılan değişikliği yeniden yapar.
x tuşu İmlecin altındaki karakteri siler.

nano editör

Basit ve küçük bir dosya düzenleyicisidir. nano komutuyla beraber var olan bir dosya adı verilirse o
dosyayı açar. Aynı vi editöründe olduğu gibi. Olmayan bir dosya adı verilirse o isimde dosya oluşturulur. Hiçbir isim verilmezse yeni ve boş bir dosya açar ve kaydederken ismini sorar.
Nano içinde işlemlerin çoğu kısayollarla yapılmaktadır. Bu kısayolların önemli olanları nano ekranının altında
gözükmektedir. Ancak burada gösterilenden daha fazla kısayol bulunmaktadır. Ctrl G tuş kombinasyonu ile yardım ekranına ulaşıp kısayolların tamamı hakkında bilgi alınabilir.

nano dosyaadi2

Bazı kısayolların açıklamaları:
Ctrl O Dosyayı kaydetmek için kullanılır. Kaydedilecek dosya ismini sorar.
Ctrl R Başka bir dosyanın içeriğini mevcut dosyanın içine aktarır. İçe alınacak dosyanın yolunu sorar.
Ctrl C O an yapılan işlemi kesmek için kullanılır.
Ctrl X Dosyadan çıkmak için kullanılır. İçeriği değiştirilmişse içeriğin kaydedilip edilmeyeceğini soracaktır.
Ctrl A Satır başına gider (Home tuşu).
Ctrl E Satır sonuna gider (End tuşu).
Ctrl V Aşağı doğru sayfa sayfa gider.
Ctrl Y Yukarı doğru sayfa sayfa gider.
Ctrl Space Kelime kelime dosya içinde ilerler.

BASIC SCRIPTING ( Basit Komut Dosyası)

Bir Shell script, bir metin dosyası olarak saklanmış yürütülebilir komutlar dosyasıdır. Dosya çalıştırıldığında, her komut yürütülür. Kabuk betikleri, kabuğun tüm komutlarına erişebilir. Bu nedenle bir komut dosyası, bir dosyanın varlığını test edebilir veya belirli bir çıktıyı arayabilir. Sürekli yaptığımız çalışmaları otomatikleştirmek için komut dosyaları oluşturabiliriz. Buda bize hem zaman hem de tutarlılık sağlar.

Komut dosyası, tek bir komut kadar basit olabilir.
echo “Merhaba, Ben Shell Scripting Öğreniyorum!”

Komut dosyası kısmında bazı özel durumlar olduğu için siz uygulama yapmayınız. İleride izinler kısmını gördüğümüz zaman uygulayabilirsiniz.
Kursun ilk bölümlerinde $PATH kısmından bahsetmiştik. Linux komut satırına bir program yazdığından o programı PATH adı verilen değişkende belirtilen dizinlerde aramaktadır. Bizim oluşturduğumuz komut dosyası bu dizinin içerisinde olmayabilir. Bu gibi durumlarda shell script’i çalıştırmak için başına ./ koyarak mevcut dizin dışında çalıştırılmasını sağlayabiliriz.
Kendi sözdizimlerine sahip çeşitli kabuklar vardır. Bu nedenle daha karmaşık komut dosyaları, yorumlayıcıya giden mutlak yolu ilk satır belirterek, Örnek #! gibi ön ek olarak belirli bir kabuğu belirtecektir.

#!/bin/sh
echo “Merhaba, Ben Shell Scripting Öğreniyorum!”

veya
#!/bin/bash
echo “Merhaba, Ben Shell Scripting Öğreniyorum!”

#! karakterleri geleneksel sırayla hash ve bang olarak adlandırılır. Kısaltılmış olarak “shebang” biçimine yol açar. Shebang geleneksel kabuk komut dosyaları ve Perl, Ruby ve Pyhton gibi diğer metin tabanlı diller için kullanılır. Çalıştırılabilir olarak ayarlanan metin dosyası, komut dosyası doğrudan çalıştırıldığı sürece ilk satırda belirtilen yorumlayıcı altında çalıştırılacaktır.
Biraz önce echo ile ekrana yazdırdığımız, çıktıyı script haline getirdim ve çalıştırdım. Komut dosyası çalıştırılabilir izinlere sahip olmadığı için Permission denied hatasına takıldı.

Gerekli yetkileri verip tekrar çalıştırıyorum. Aşağıda görsele bakıldığında, herhangi bir hata almadan çalıştı. Ek olarak uzantıların (sh) herhangi bir önemi olmadığını sadece işimizi kolaylaştırmak adına olduğunu tekrar hatırlatmakta fayda var. Çalıştırılabilir dosyanın yeşil renkte olduğunu da görmüş olduk.
./komut.sh

Metin dosyaları oluşturmamız gerekeceğinden, kabuk dosyaları yazmadan önce artık metin düzenleyicileri işimizi çok kolaylaştıracaktır.
nano komut.sh yazıp biraz önce oluşturduğum dosyayı açıyorum. Komut dosyasını görüntüledim ve CTRL + X ile çıkış yaptım.

Komutları çalıştırmanın dışında, aşina olmamız gerek 3 konu vardır:

  1. Değişkenker
  2. Koşullu İfadeler
  3. Döngüler

1. Değişkenler

Değişkenler, herhangi bir programlama dilinin en önemli parçasıdır. En basit kullanımına bakalım. Değişken adı Meyve ve eşittir işareti dizeyi elma’ya atar. Yukarı satırı çalıştırdıktan sonra, Meyve kelimesi elmayı içermektedir. Değişken adı, eşittir ve değişkene atanacak öğe arasında boşluk olmaması gerekmektedir. Eğer “command not found” gibi bir hata görürseniz boşluk bıraktığınızı anlayabilirsiniz. Dize, önünde dolar işareti bulunan değişkenin adını içerir. Yorumlayıcı bu dolar işaretini gördüğünde, değişkenin içeriğini değiştireceğini anlar ve betiğin çıktısını verir. Bir değişkeni atamak için, sadece değişken adını kullanın. Değişkenin içeriğine erişmek için, bir dolar işaretiyle önüne ekleyin.
nano modul4

#!/bin/bash
meyve=”elma”
echo “En sevdiğim meyve bir $meyve”

2. Koşullu İfadeler

Diğer bir aşama ise betiğinizin dallanma adı verilen testlere dayalı olarak farklı işlevleri yerine getirmesidir. if ifadesi, dallanmayı uygulamak için temel işleçtir. Aşağıda basit bir örnek yapılmıştır.

Yukarıdaki görselde kullanıcıdan bir numara girmesini istedik. Bu numaraya göre işlem yapılacaktır. “read” komutu ile numarayı “sayi” değişkenine atamış olduk. “if” sonrasında karşılaştırma yaptırıyoruz ve “then” ile koşulumuzun doğru olması durumunda bilgisayar adının (hostname) çıktısını veriyor. Ancak 99 dışında herhangi bir numara girince “yanlıs” şekliden ekrana bir çıktı yazdırılacaktır. Son olarak fi ile işlem bitirilir.

3. Döngüler

Döngüler, kodun tekrar tekrar çalıştırılmasına izin verir. Bir dizindeki her dosya üzerinde aynı komutları çalıştırmak veya bazı eylemleri 50 kez tekrarlamak gibi, çeşitli durumlarda ihtiyaca göre yararlı olabilirler. Kabuk betiklerinde iki ana döngü vardır. for ve while döngüleri.
for döngüler, dosya listesi veya sunucu adları listesi gibi yinelemek istediğiniz sonlu bir koleksiyonunuz olduğunda kullanılır.
Aşağıdaki görselde basit bir örnek verilmiştir.

while döngüsü ise, önceden belirlenmiş bir koşul bozulana kadar devam eder. 
Aşağıdaki görselde basit bir örnek verilmiştir.

NETWORK CONFIGURATION (AĞ YAPILANDIRMA)

Olmaz ise olmazlardan ağ erişimi, internette gezinmek, e-posta göndermek/almak ve diğer kullanıcılarla dosya aktarmak sürekli yaptığımız rutin işler arasında. Linux, hem ağınızı yapılandırmak hem de nasıl performans gösterdiğini izlemek için size birkaç araç sağlamaktadır.

Temel Ağ Terminolojisi

Bir ağ kurmadan veya mevcut bir ağa erişmeden önce, ağ ile ilgili bazı temel terimleri bilmek yararlıdır. Makinalar arasında iletişim kurmak için bazı terimlere bakalım.

Paket: Ana bilgisayarlar arasında ağ iletişimi göndermek için bir ağ paketi kullanılır. İletişimi daha küçük parçalara bölerek, veri teslim yöntemi çok daha verimlidir.
IP adresi: Bir Internet Protokol (IP) adresi bir ağ üzerinde bir ana bilgisayara atanan benzersiz bir numaradır. Ana bilgisayarlar, ağ iletişimini için bu numaraları kullanır .
Maske: Netmask , Subnetmask veya mask , bir ağ maskesi IP adresleri tek bir ağ içinde olduğu kabul edilen tanımlamak için kullanılabilecek bir sayı sistemidir.
Ana bilgisayar adı: Bir ağdaki her ana bilgisayarın kendi ana bilgisayar adı vardır. İsimler insanların hatırlaması için sayılardan daha kolaydır, bu da ağ paketlerini başka bir ana bilgisayara yönlendirmemizi kolaylaştırır. Ana bilgisayar adları, ağ paketi ağa gönderilmeden önce IP adreslerine çevrilir.
URL: Bir Uniform Resource Locator genellikle web adresi olarak adlandırılan, internette bir web sayfası gibi bir kaynağı bulmak için kullanılır. Bir web sayfasına erişmek için web tarayıcınıza yazdığınız şeydir. Örneğin, https://www.mehmetoz.net
DHCP: DHCP sunucusu tarafından ana bilgisayar adları, IP adresleri ve ağla ilgili diğer bilgiler atanabilir . Bilgisayar dünyasında bir protokol, iyi tanımlanmış bir kurallar dizisidir.
DNS: Ana bilgisayar adları, ağ paketinin ağa gönderilmesinden önce IP adreslerine çevrilir. Bu nedenle, ana makinenizin iletişim kurduğunuz diğer tüm ana bilgisayarların IP adresini bilmesi gerekir. Bir Alan Adı Sistemini, alan adlarının IP adreslerine çevrilmesi hizmetini sağlar.
Ethernet: Kablolu bir ağ ortamında Ethernet , ana bilgisayarları bir ağa fiziksel olarak bağlamanın en yaygın yoludur. Ethernet kabloları ve cihazları farklı iletişim hızlarını desteklemek için özel olarak tasarlanmıştır.
TCP / IP: İnternet protokol takımı, bilgisayarlar ve ağ cihazları arasında iletişimi sağlamak amacıyla standart olarak kabul edilmiş kurallar dizisidir. Bu kurallar dizisi temel olarak verinin ağ üzerinden ne şekilde paketleneceğini ve iletilen veride hata olup olmadığının nasıl denetleneceğini belirlemektedir.

IPv4 noktayla ayrılmış (192.168.1.10) 4 bölümden oluşan decimal yapıdaki mantıksal adreslerdir. Nokta ile ayrılan bölümlere oktet adı verir, her oktet 8 bitten oluşur.

1-126 A
128-191 B
192-223 C –>> (192.168.1.10) gibi.
224-239 D
240-255 E
Bir IP adresinin hangi sınıfta olduğunu anlamak için ilk oktete bakılır.

Private IP’ler
Özel ağlarda adreslemeyi basitleştirmek, internet ağlarıyla çakışmayı önlemek için bazı IP’ler rezerve edilmiştir.
Özel IP’ler internet ağ geçitleri tarafından yönlendirilmez, yalnızca iç ağlarda kullanılırlar.
•10.0.0.8/8
•172.16.0.0/12
•192.168.0.0/16

Public IP’ler
İnternet ortamından kullanılan ip adresleridir.

Linux altında network interfaceleri /dev altında sanal bir aygıt olarak yönetilir. Fiziksel erişim türüne göre interfaceler farklı isimlerle çağrılır:
•lo : loopback
•eth : Ethernet kartları
•fddi : Fiber hat

İnterface ler sırasıyla isimlendirilir. Örneğin bir sunucuda iki adet Ethernet kart varsa bunlar ana kart üzerindeki sırasına göre eth0 ve eth1 olarak isimlendirilirler. Numaralandırma her zaman 0’dan başlar.
Ağ yapılandırma işlemlerine başlayalım. Ben GUI üzerinde göstermeyeceğim. Bu durumda da, ağ için kullanılan yapılandırma dosyalarını bilmemiz gerekmektedir.
NOT: Bu dosyalar, Linux dağıtımına bağlı olarak değişebilir.

Birincil IPv4 ağ arabirimi için yapılandırma dosyası /etc/sysconfig/network-scripts/ifcfg-ens192 dosyasıdır. Aşağıda, bu dosyanın nasıl bir statik IP adresi için yapılandırıldığını işaretledim.

Eğer cihazının bir DHCP istemcisi olarak yapılandırılmış olsaydı, BOOTPROTO kısmında DHCP yazacaktı ve IPADDR, GATEWAY, DNS değerleri olmayacaktı.
Birincil IPv6 ağ arabirimi için yapılandırma dosyası, IPv4 ile aynı /etc/sysconfig/network-scripts/ifcfg-eth0 dosyasıdır. Sisteminizde statik bir IPv6 adresi tanımlamak istiyorsak aşağıdaki yazanları ekleyebilirsiniz.
IPV6INIT=YES
IPV6ADDR=<IPV6 IP ADRESINIZ>
IPV6_DEFAULTGW=<IPV6 GATEWAY ADRESINIZ>

IPv6 DHCP istemcisi olmasını istiyorsak, aşağıdaki ayarları eklememiz yeterlidir.
DHCPV6C=yes

ek olarak /etc/sysconfig/network dosyasına aşağıdaki ayarıda eklememiz gerekmektedir.
NETWORKING_IPV6=yes

Ağ arabiriminde değişiklik yaptığımız zaman işlemlerin geçerli olması için bir kaç yöntem vardır. Ağ arabirimini aşağıdaki komutlar ile açıp kapatabilirsiniz.

Aktif edilmiş interface i kapatmak için
ifdown eth0
Aktif edilmiş interface i açmak için
ifup eth0

Diğer bir yöntem ise ağ servisini yeniden başlatmak. Bu daha az kullanılmaktadır, bu yöntem tüm ağ yapılandırma dosyaları okur ve ardından ağı yeniden başlatır. Yani sistemdeki ağ’ın tamamen yeniden başlatır. Ağ hizmetini yeniden başlatmak için aşağıdaki komutu yürütün.

Ağ hizmetlerini başlatmak için:
service network start
Ağ hizmetlerini kapatmak için:
service network stop
Ağ hizmetlerini yeniden başlatmak için:
service network restart

Alan Adı Sunucusu (DNS)

Bir bilgisayardan www.ornek.com gibi bir web sitesine erişmesini istediğimizde hangi IP adresini kullanacağını bilmeyebilir. Bilgisayarın bir IP adresini URL veya ana bilgisayar adı talebiyle ilişkilendirmesi için, bilgisayar DNS hizmetine güvenir.
DNS sunucunun adresi /etc/resolv.conf dosyasında saklanır. Varsayılan olarak bu dosya otomatik olarak oluşturulur. Bu dosya üzerinden manuel olarak DNS sunucularımızı girebiliriz.
cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

Linux ana bilgisayarda isim çözümlemesi 3 kritik dosya üzerinden gerçekleştirilir.

/etc/hosts
/etc/resolv.conf
/etc/nsswitch.conf

/etc/hosts dosyası IP adresleri için bir ana bilgisayar adları tablosu içerir. Bir DNS sunucusunu desteklemek için kullanılabilir. Örnek, 1.1.1.1 mehmetoz.net
/etc/resolv.conf dosyası isimleri IP adreslerine çözümlemek için her türlü girişimde sistemin başvurması gereken ad sunucularının IP adreslerini içerir. Bu sunucular genellikle DNS sunucularıdır. Örnek, nameserver 8.8.8.8
/etc/nsswitch.conf dosyası ana bilgisayar adı aramalarının gerçekleştiği yeri değiştirmek için kullanılabilir. Hangi sıra adı çözümleme kaynaklarına başvurulduğunu açıklayan belirli bir giriş içerir.

1- Sistem önce /etc/nsswitch.conf dosyasına danışır. nsswitch.conf ilk olarak dns sorgusunu hosts veya resolv.conf dosyalarından, hangisinden sorgu yapılacağının sırası belirlenmektedir.

2- İkinci olarak, sistem isim çözümleme için /etc/hosts dosyasına danışacaktır. İsim /etc/hosts içinde bir girişle eşleşirse çözülür. Çözümleme yanlış olsa bile, DNS sunucularına devretmez.
cat /etc/hosts

3- Üçüncü olarak, /etc/hosts dosyasında bir eşleşme sonucu olmaz ise, sistem isim çözümleme için /etc/resolv.conf dosyasında bulunan DNS sunucularını kullanır.
cat /etc/resolv.conf

DNS çözümleme sistemi, ismin aranması için ilk DNS’i kullanacaktır. Bu mevcut değilse veya bir zaman aşımı süresine ulaşılırsa, ikinci DNS için sorgulanacaktır. Bir eşleşme bulunursa, sisteme döndürülür ve bir bağlantı başlatmak için kullanılır. Ayrıca bir süre boyunca DNS önbelleğine yerleştirilir.

Ağ Araçları

Ağ bilgilerini görüntülemek için kullanabileceğiniz birkaç komut vardır. Bu araçlar, ağ sorunlarını giderirken de yararlı olacaktır.
ifconfig komutu ağ kartlarına IP vermek  ve ağ yapılandırma bilgilerini görüntülemek için kullanılır. Ağ ayarlarını görmek için ifconfig komutunu çalıştıralım. Aşağıdaki görselde ethernet kartını (ens192) , 10.106.250.114 (IP adresi) ve cihazın etkin olduğunu (UP) olarak sarı renkle işaretledim. Bu kısımları çok iyi bilmemiz gerekmektedir. 

Yukarıdaki görselde lo: ise cihazın kendisi olarak adlandırılır. Sistem kendisine ağ üzerinden veri gönderirken kullandığı özel bir ağ’dır.
ifconfig komutu biraz önce bahsettiğim gibi ağ ayarlarını değiştirmek için kullanılabilir. Ama bu değişikler kalıcı olmayacaktır. Bu nedenle pek kullanışlı değildir. Bilginiz olması adına, aşağıda nasıl yapıldığını örnek olarak bırakacağım ama uygulamayacağım.
ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up

IP komutu

ifconfig komutu bazı linux dağıtımlarında kullanımdan kaldırıldı. Sistem yöneticilerinin çoğu eski alışkanlıklarından dolayı ağ cihazlarını (NIC) ayarlamak için ifconfig komutunu kullanırlar, ancak ifconfig uzun süredir geliştirilmeyen ve artık terk edilen (deprecated) bir yazılımdır. Artık ip addr show komutu kullanılmaktadır.

ip [options] OBJECT COMMAND

Sistemdeki tüm eth kartlarını ip adresleri ile listeler.
ip a , ip ad veya ip addr show
eth0 NIC cihazına ait bilgileri görüntüler.
ip addr show eth0
Sistemdeki çalışan NIC cihazlarına ait bilgileri görüntüler.
ip addr sh up
eth0 NIC cihazına yeni ip adresi tanımlar
ip addr add 192.168.1.100/24 dev eth0
ip adresini kaldırır.
ip addr del 192.168.1.100/24 dev eth0

Her ikisi de arayüz tipini, protokolleri, donanım ve IP adreslerini, ağ maskelerini ve sistemdeki aktif arayüzlerin her biri hakkında çeşitli diğer bilgileri gösterir.
Not: Linux ve Unix komutları genellikle eski olduklarında kaybolmazlar.

iwconfig komutu

Hangi cihazın kablosuz arayüzünün olduğunu (wireless extension) anlamak için iwconfig komutu kullanılabilir.

Route komutu

Bilgisayarın IP adresi olması ağ üzerinde paket alışverişi yapmasını temin eder. Ancak başka ağlara ulaşamaz. Bir ağdaki bilgisayarın kendi ağında olmayan bir hedefe ulaşabilmesi için yönlendirme girilmesi gerekmektedir.
Nereye yönlendirileceği bilinmeyen her paketin yönlendirildiği ağ geçidine default gateway denir ve şu şekilde tanımlanır.
route add default gw 192.168.1.1

Yazılan bütün yönlendirmeler yönlendirme tablosunda tutulur. Bir paket hedefe doğru yola çıktığında bu tablo okunarak paketin nasıl yönlendirileceğine karar verilir. Herhangi bir yönlendirme bilgisi bulunmayan hedefler için
varsayılan ağ geçidine yönlendirme yapılır.
Yönlendirme tablosunu görmek için:
route -n
0.0.0.0 ile belirtilen hedef bütün ağ anlamına gelip varsayılan ağ geçidine yönlendirilir.

NOT: Komut satırından yapılacak yapılandırmalar bilgisayar yeniden başlatıldığında geçersiz olacaktır.
Bilgisayar her açıldığında yapılandırmanın yeniden yapılabilmesi için yapılandırma dosyaları kullanılır.
Ağ arayüzlerini kontrol eden ana yapılandırma dosyası etc/sysconfig/network scripts /eth0

Ping komutu

Ping ICMP haberleşmesidir. Ping komutunun amacı hedefimizdeki cihazın ayakta olup olmadığını, paket kaybı oranını ve cevap süresini tespit etmektir. Varsayılan olarak ping komutunu çalıştırırsanız, sonsuz bir şekilde paket göndermeye devam eder. Kaç ping göndereceğimizi sınırlamak için -c seçeneğini ve ardından kaç yineleme isteğini belirten bir sayı kullanmalıyız.
ping -c3 8.8.8.8

NOT: Ping komutunun başarısız olması, uzaktaki sistemin erişilemez olduğu anlamına gelmediğini unutmayalım 🙂

Sistem yöneticileri makinaları veya tüm ağları ping isteklerine kapatabilir, sebebi ise denial of service attack adı verilen saldırı türünden korunmak içindir. Ek olarak, ping komutunu ping hostname olarak kullanırız ve başarısız olursa hatanın ad çözümlemede olup olmadığını görebiliriz. Sorun çözmek için zaman kazanmış oluruz. Komut başarı olursa, uygun ad çözümlemesi ve IP adresi doğru şekilde çalışır.

netstat komutu

netstat komutu, ağ bilgileri büyük miktarda sağlayan güçlü bir araçtır. Ağ bağlantılarıyla ilgili bilgileri görüntülemenin yanı sıra route komuta benzer yönlendirme tablosunu görüntülemek için kullanılabilir . Ağ bağlantılarını, yönlendirme tablolarını ve interfacelerin istatistiklerini görüntüler.
Sistemdeki interface’leri ve ağ trafiği ile ilgili istatistikleri görüntülemek için -i seçeneğini kullanalım.

Yukarıdaki görselde en önemli istatistikler TX-OK ve TX-ERR, eğer TX-ERR kısmında çok fazla bir yüzde gözükür ise ağ’da çok fazla trafik olduğu gibi bir sorun gösterebilir.
Yönlendirme bilgileri görüntülemek için -r seçeneğini kullanalım.

netstat komutu ayrıca yaygın ve açık olan portları görebiliriz. Bağlantı noktası açıksa, hizmet diğer ana bilgisayarlar tarafından kullanılabilir. Örneğin, SSH adlı bir hizmeti kullanarak başka bir ana bilgisayardan farklı bir bilgisayarda oturum açabilirsiniz. SSH hizmetine 22 numaralı bağlantı noktası atanmıştır. Şu anda açık olan tüm bağlantı noktalarının bir listesini görmek için aşağıdaki komutu kullanalım.
netstat -tln

Yukarıdaki görselde gözüktüğü gibi 22 numaralı bağlantı noktası dinleniyor, yani açık. Daha fazla bilgi için man sayfasından yardım alabilirsiniz.

dig komutu

Ana makinenizin kullandığı DNS sunucusunun işlevselliğini test etmeniz gereken zamanlar olabilir. dig komutu ile gerekli bilgilerin sunucuda olup olmadığını, kapsamlı olarak görebiliriz.

Yani ip adresi içerir 185.242.161.49 DNS sunucusunun, veritabanındaki DNS çeviri bilgisine sahip olacak IP adresine sahip olduğu anlamına gelir.

host komutu

DNS sorguları yapan basit bir araçtır. İsimleri IP adresine çevirir.

Daha detaylı bilgiler almak için -a seçeneğini de kullanabilirsiniz. host -a www.example.com gibi.

ssh komutu

ssh komutu ağ üzerinden başka bir makineye bağlanmak ve giriş yapabilmek için kullanılır. Uzaktaki bilgisayardan yerel makinanıza dönmek için exit komutunu kullanabilirsiniz.

ssh username@hostname veya ssh username@ip adresi

NOT: exit komutunu çok fazla kullanırsanız, çalışmakta olduğunuz terminal penceresini kapatırsınız.

Bu makalemizde sizlerle network, script, hardware ve processes gibi bir çok konulara baktık ve uygulama yaptık. Makaleyi yazarken, Networking Academy ve Oracle Linux’ten faydalandım. Modül 5’te kullanıcı ve grup oluşturma, sistem güvenliği ve son olarak sahiplik ve izinler gibi konular ile devam edip makaleyi bitireceğim. Merak ettiklerinizi, eksikleri veya eklemek istediklerinizi yorumlarda belirtebilirsiniz. Umarım faydalı olmuştur. Başka bir makalede görüşmek üzere. Sağlıcakla kalın ?

Exit mobile version