4. Sistem Yönetimi ve temel ağ yapılandırması
Bölüm içersinde sistem yönetimi temel araçlarını kullanıcı yönetimi ve ağ yapılandırması konusunda temel bilgiler edineceğiz.
Bölüm içersinde aşağıdaki konular işlenecektir:
- 1. Kullanıcı ve Gurupların yönetimi
- Kullanıcıları ve Gruplar nasıl çalışır?
- Kullanıcı Hesabı Ekleme
- Kullanıcı yönetiminde /etc/passwd dosyası
- Gurup Yönetiminde /etc/group dosyası
- usermod ile kullanıcılarda değişiklik yapmak
- Kullanıcının guruplarını listelemek
- Kullanıcı Kilitleme v Kilit açma
- Kullanıcı hesaplarını silme
- Gurup eklemek/silmek
- 2. vim Linux Metin Düzenleyicisi, linux komutsatırı için notepad
- 3. Temel ağ yönetimi
- Bolum4 ağ komutları, telnet ssh ..
- Linux101 - Ana Sayfa
Kullanım İpuçları:
Eğitim içersinde, komut satırı bilgileri aşağıdaki üç farklı şekilde belirtilmiştir.
-
şunun
gibi görünen komut betimleri şeklinde gösterilmler daha çok örnekler ve yazılması gereken komutları tanımlamak için kullanılır. - Aşağıdaki gibi kutu içersinde gördüğünüz kodlar üzerine tıkladığınızda, kopyala yapıştır yapmanıza gerek kalmadan terminal içersinde çalıştırılacaktır:
uname -a
- Aşağıda gördüğünüz gibi bir pencere içersinde yazılmış olan kod betimleri sizin klavyeden yazmanız gereken kod betimleridir.
Genellikle benzersiz bir ID veya başka bir değişken girmeniz gerekiyordur. Buradaki benzersiz veri eğitim sırasında kullandığınız ortam içersinden bulunabilir.
<> içersinde bulunan maddeler sizin değiştirmeniz gereken verinin yerini göstermektedir.
hostnamectl set <sunucu adı>
1. Kullanıcı ve Gurupların yönetimi
Linux işletim sistemi kullanıcıların yönetildiği hesapların olduğu, bunların belli ilişkiler ile farklı gurup ve yetkilerle birbirine bir veri bütünlüğü ile bağlı olduğu bir işletim sistemidir.
Hesapları yönetmek, sistem yöneticilerinin en temel işlevlerinden biridir. Öncelikle kullanıcı ve grup yönetimi hakkında birkaç temel kavramı anlamanız gerekir. Ayrıca, kullanıcıları ve grupları yönetmek için ihtiyaç duyduğunuz araçlar ve yapılandırma dosyalarını da bilmeliyiz. Temelde yapılan işlem basit bir ilişkisel veri tabanıdır ve yine bunlar dosya sistemi üzerindeki yetkiler ile kısıtlıdırlar.
Kullanıcıları ve Gruplar nasıl çalışır?
Banka hesabı veya kullanıcı adı/şifre konusunu günümüzde herkes bilmekte. Aynı şekilde, Linux hesapları da Windows, Mac OS ve diğer işletim sistemlerinde bulunan hesaplar gibidir. Linux içersindeki hesaplar, içersinde kullanıcı adı, kullanıcı parolası, bağlı bulunduğu guruplar, ev dizini, tercih ettiği kabuk(shell) gibi bilgiler vardır.
Linux kullanacak kişiler dışında, linux işletim sistemi için farklı fonksiyonları olan hesaplar vardır. Linux özel hesapları içersinde arka planda çalışan hizmetler, kullanıcısı olmayan fakat sürekli var olması gereken yazıcı(cups) gibi hesaplar vardır. Bu hesaplar, linux geçmişinden gelmektedirler ve değişik fonksiyonların yüklendiği işleri yaparlar. Mesela cups hesabı, sunucunuz üzerindeki yazıcı çıktıları için gereklidir, bilgisayarınızda yazıcı işlemlerinin donanım yetkilendirmesi için böyle bir kullanıcıya ihtiyaç vardır.
Linux çok kullanıcılı bir işletim sistemi olduğundan (farklı bilgisayarlardaki veya terminallerdeki birden fazla kullanıcının tek bir sisteme erişmesine izin verdiği için), kullanıcı yönetimini mutlaka bilmeniz gerekecektir. Kullanıcı yönetimi içinde eklemek, düzenlemek, askıya almak, ve silmek işlemlerini mutlaka bilmelisiniz. Bunların dışında kullanıcı hesaplarının, kendilerine atanmış görevleri yapmaları için gerekli izinleri nasıl verebileceğimizi bilmemiz gerekir.
Kullanıcı Hesabı Ekleme
Yeni bir kullanıcı hesabı eklemek için, aşağıdaki iki komuttan birini root olarak çalıştırabilirsiniz.
$ adduser [yeni_hesap]
$ useradd [yeni_hesap]
(siz kendi adınıza bir kullanıcı açın)
adduser senol
Sisteme yeni bir kullanıcı hesabı eklendiğinde aşağıdaki işlemler yapılır.
- Ev dizini oluşturulur (varsayılan olarak /home/kullanıcı_adi)
- Aşağıdaki gizli dosyalar kullanıcının ana dizinine kopyalanır ve kullanıcının oturumu için ortam değişkenleri sağlamak için kullanılır
.bash_logout .bash_profile .bashrc
- Kullanıcı için /var/spool/mail/username konumunda bir posta klasörü oluşturulur
- Yeni bir grup oluşturulur ve yeni kullanıcı hesabının adı verilir
Kullanıcı eklemek için farklı komutlar kullanabilirsiniz. aşağıda buna bir örnek verdik.
useradd -m -d /var/www/html -k /etc/other.skel -s /bin/zsh -c "AcikKaynakFikirler Web" -u 1999 akf-web
parametreler
-m
home dizini olsun
-d
home dizininin yolu /var/www/html olsun
-k
iskelet dizini tercihi(şablon)
-c
açıklama
-u
userid(sistem yerine biz belirtebiliriz, sistem varsayılan olarak 1000 sonrasındaki ilk boş id verir)
-s
varsayılan shell /bin/zsh
Kullanıcı yönetiminde /etc/passwd dosyası
Tüm hesap bilgileri /etc/passwd
dosyası içersinde saklanır. Bu dosya, sistem kullanıcı hesabı başına bir kayıt içerir ve aşağıdaki şekilde bir yapıya sahiptir. Parolaların saklandığı /etc/shadow
isimli başka bir dosya vardır, bu dosyada manuel işlem yapmanızı ve yetkileri ile oynamamanızı öneririm.(600 hakları ve root kullanıcısı)
(alanlar iki nokta üst üste ile sınırlandırılmıştır)
[kullanıcı_adı]:[x]:[UID]:[GID]:[Yorum]:[Ana_dizin]:[Varsayılan_kabuk]
passwd dosyasındaki alanların açıklaması:
[Kullanıcı_adı] ve [Yorum] ne için kullanıldıkları anlaşılabilir
İkinci alandaki x, hesabın [kullanıcı_adı] oturum açmak için gerekli olan gölgeli bir parola (/etc/shadow
içinde) ile korunduğunu gösterir
[UID] ve [GID] alanları, sırasıyla Kullanıcı Kimliği tanımlamasını ve [kullanıcı adı] ‘nın ait olduğu birincil Grup Kimliği tanımlamasını temsil eden sayılardır
[Ana_dizin], [kullanıcı_adı] ’nın ana dizininin mutlak yolunu gösterir
[Varsayılan_kabuk], kullanıcı sistemde oturum açtığında bu kullanıcıya sunulacak olan kabuktur
cat /etc/passwd
Gördüğünüz gibi yeni eklediğimiz kullanıcı şuanda listenin souna eklenmiş durumda.
Gurup Yönetiminde /etc/group dosyası
Grup bilgileri /etc/group
dosyasında saklanır. Her kayıt aşağıdaki düzene göre oluşur.
[Grup_adı]:[Grup şifresi]:[GID]:[Grup_üyeleri]
group dosyasındaki alanların açıklaması
[Grup_adı], grubun adıdır
[Grup_parolası] içinde x var ise, grup parolalarının kullanılmadığını gösterir
[GID]: /etc/passwd ile aynıdır
[Grup_üyeleri]: [Grup_adı] üyesi olan kullanıcıların virgülle ayrılmış listesi
cat /etc/group
Kullanıcı eklenirken aynı zamanda aynı isimdeki gurup dosyaya eklenmiş
usermod ile kullanıcılarda değişiklik yapmak
Bir hesap ekledikten sonra, usermod komutunu kullanarak kullanıcı hesabı üzerinde istediğiniz değişiklikleri yapabilirsiniz.
Kullanımı:
$ usermod [seçenekler] [kullanıcı adı]
Bir hesap için son kullanma tarihini ayarlama
–-expiredate
parametresini bir tarih ile YYYY-AA-GG şeklinde verelim
usermod --expiredate 2021-1-1 senol
Kullanıcıyı ek gruplara ekleme
Gurup eklemek için -aG
veya –append –groups
seçeneklerini ve ardından virgülle ayrılmış bir grup listesi kullanmanız gerekir
usermod --append --groups root,users senol
Kullanıcının ev dizini değerini değiştirmek
-D
veya –home
seçeneklerini ve ardından yeni ana dizinin mutlak yolu belirtilir
Yeni home dizini tanımlamadan önce yetkilerini ayarlamayı unutmayın
mkdir /a
chown senol:senol -R /a
şimdi home dizinini kullanıcıya tanımlıyoruz
usermod --home /a senol
Kullanıcının varsayılan olarak kullanacağı kabuğu değiştirme
–-shell
tanımlamak istediğiniz kabuk yolunu verin.
usermod --shell /bin/sh senol
Kullanıcının guruplarını listelemek
groups senol
id senol
$ id teknoloji
Yukarıda usermod ile yazdığımız komutları tek satırda yapabiliriz
usermod --expiredate 2021-01-01 --append --groups root,users --home /a --shell /bin/sh senol
usermod ile useradd komutlarının parametresleri
Kullanıcı Kilitleme v Kilit açma
Bir kullanıcı hesabının Linux üzerinde erişimine engel olmak istediğinizde kapatırsınız. Bu işlem için lock/unlock yaparsınız.
Kullanıcının erişimini kilitlemek için.
usermod --lock senol
Kullanıcının erişimini açmak için.
usermod --unlock senol
Kullanıcı hesaplarını silme
Normal userdel işlemi kullanıcı hesabına ait ev dizini ve yaratılmış dosyaları silmeden sadece kullanıcıyı siler.
userdel komutunu --remove
seçeneğiyle kullanarak bir hesabı tamamen silebilirsiniz. Kullanıcıya ait ana dizin ve burada bulunan tüm dosyalar silinir, ayrıca posta (spool) klasörü altındaki dosylarda silinir.
$ userdel –remove [kullanıcı adı]
oluşturduğumuz kullanıcıyı şimdi silelim.
userdel --remove senol
Gurup eklemek/silmek
Yeni gurup eklemek için groupadd komutu kullanılır.
groupadd [gurup_adi]
Aynı şekilde aşağıdaki komutla bir grubu silebilirsiniz.
groupdel [grup_adı]
Group_name’ye ait dosyalar varsa bunlar silinmeyecek, ancak grup sahibi silinen grubun GID’sine ayarlanacaktır.
2. vim Linux Metin Düzenleyicisi, linux komutsatırı için notepad
vim ile ilgili birşeyler söylemeden önce linux üzerinde çok daha sıklıkla karşılaşabileceğiniz başka bir editörden bahsetmeliyim. nano(eski ismi pico
), nano oldukça basit, görüntü odaklı bir metin düzenleyicidir. Komutlar ve bunların Kontrol tuşu kısayolları ekranın alt kısmında görüntülenir. Karakterler yazılırken hemen metne eklenirler.
Düzenleme komutları, Kontrol tuşu kısayolları kullanılarak girilir. Belirli kontrol karakterlerini yutan iletişim programları için bir geçici çözüm olarak, iki kez Escape tuşuna ve ardından istenen kontrol karakterine basarak bir kontrol tuşuna atayabilirsiniz. Örneğin, “Esc Esc c” ctrl-c girmekle eşdeğerdir. Düzenleyicinin beş temel özelliği vardır: paragraf yaslama, arama, blok kesme / yapıştırma, yazım denetimi ve dosya tarayıcısı.
apt-get update&&apt install nano -y
nano /tmp/ilknanotest.txt
ilk dosyanızın içersinde gezinirken, aşağıda sizin için sağlanmış kısayol bilgileri ile kolaylıkla istediğiniz işlemleri yapabilirsiniz. Ben size nano kullanmanızı tavsiye etmem, mutlaka vim kullanmalısınız. Çünkü nano gibi bir editör ile yapabilecekleriniz oldukça sınırlıdır. Gündelik hayatınızda vim kullanımını alışkanlık haline getirirseniz size inanılmaz kolaylıklar sağlayacağını görürsünüz. Ne zaman nano kullanırız?, vim kuramayacağınız ortamlarda veya internet bağlantısı olmayan eski sunucularda dosya edit etmek için nano oldukça işe yere bir araçtır.
Vi, Unix için oluşturulan ilk ekran yönelimli metin düzenleyiciydi, metin işleme için basit ama güçlü olacak şekilde tasarlanmıştır. Vim ismi ise VI improved şeklinde iki kelimenin bir araya gelmesi ile oluşmuştur. Vi’nin bir klonudur ve Vi’den daha fazla özellik sunar. Hem komut satırı arayüzünden hem de grafik kullanıcı arayüzünde (GUI) bağımsız bir uygulama olarak kullanılmak üzere tasarlanmıştır, ücretsiz ve açık kaynaklıdır. Ayrıca tüm “Sonu X ile biten işletim sistemleri” vim editörünü barındırır.
Oldukça fazla özelleştirme seçenekleri vardır, sözdizimi vurgulama(syntax highlight), fare desteği, grafik sürümler, görsel mod, birçok yeni düzenleme komutu vardır. Bunun yanında oldukça fazla dosya uzantısını tanır ve çok daha fazla ileri seviye özellikler sunar. Hayatımın bir döneminde Vim ile development yapmış biri olarak söyleyebilirim, alışırsanız, diğer editörlere geçmekte zorlanırsınız. Müthiş ve çok güçlü bir editör.
Linux ekosistemi içinde en bilinen editör olan Vi/Vim’i öğrenmek, Nano veya Emacs öğrenmek kadar kolay değildir. Linux ile iş yapacaksanız mutlaka vim öğrenmeniz gerekir, bunu kolaylaştırmak ve keyifli hale getirmek için aşağıda temel bazı komutlarını gösteriyoruz.
Debian bir sunucu kullanıyorsanız, vim-light gibi bir sürüm kurulu gelecektir. Normal Vim ile güncellemenizi öneririm.
apt update&&apt install -y vim
şimdi basit bir dosya açalım ve dosya içersinde birşeyler yazarak dosyayı kaydedelim.
vim /tmp/ilkvimdosyasi.txt
veya
vi /tmp/ilkvimdosyasi.txt
Açılan dosya sürekli view modundadır, yani herhangi bir değişiklik yapmayacağımız, sadece görüntüleme yapacağımız varsayılıyor. Burada boş bir dosya açıldığı için dosya içersine önce birşeyler yazalım. Önce i
harfine basmalıyız, böylece insert moduna geçebiliriz. i harfine bastığınızda ekranın sol alt köşesinde –INSERT– yazısı belirir, böylece insert yaptığımızı anlarız.
Şuan istediğiniz birşeyi yazabilir veya kopyaladığınız birşeyi buraya yapıştırabilirsiniz. Yazma işleminiz bittiğinde “ESC” (escape) tuşuna basarak yazmamızı sonlandırlalım. Şimdi dosyamızı kaydedip çıkmamız gerekiyor, bunun için command mode a geçmemiz gerek. command (komut) modu için :
basmamız gerekiyor, bu bizi ekranın sol alt köşesine atar. şimdi istediğimiz komutu yazabiliriz.
Dosyayı kaydedip çıkmak için wq
yazıp enter yapabiliriz,
veya
w
enter yaparız bu sayede dosyaya veriyi kaydederiz, sonra tekrar komut moduna geçip(yani:
enter) q
yapabiliriz.
komut satırına geldiğimizde böyle bir dosya olup olmadığını kontrol edelim,
ls -la /tmp/
Genellikle yukarıdaki gördüğünüz dosya açma editleme(değiştirme) ve sonrasında kaydetme işlemi yaparız. i
insert için kullandığımız bir mode, buna benzer şekilde a
append ve R
replace mode’ları çok kullanışlıdır. Ayrıca edit ettiğiniz dosya içersinde arama yapmak için /
bastığınızda sizi direkt olarak search mode ile arama yaptırır.
Sizin için işleri kolaylaştırabilecek iki tane cheatsheet örneği


Size tavsiyem yukarıdaki resmi yazıcıdan çıktı almanız ve görebileceğiniz biryerde tutmanız. Çıktı aldıktan hemen sonra, bir kere sayfayı baştan sona okuyun, sonrasında ihtiyacınız olduğunda kolaylıkla nereye bakacağınızı bilirsiniz.
iki dosya aynı anda açma
komut:
Altlı üstlü
vim -o /tmp/ilkvimdosyasi.txt ikincivimdosyasi.txt
dosyalar arasında geçiş için kullanacağınız kısayollar:
Ctrl+w k – üst
Ctrl+w j – alt
yan yana
vim -O /tmp/ilkvimdosyasi.txt ikincivimdosyasi.txt
dosyalar arasında geçiş için kullanacağınız kısayollar:
Ctrl+w l – sol
Ctrl+w h – sağ
yukarıdaki dosyaları kapatmak için iki kere :q
yapmanız gerekir.
kelimeyi bulmak ve değiştirmek
Önce bir dosya oluşturalım ve içine bir yazı yazalım.
cat >> /tmp/degistirornek.txt <<EOL
Ay dogmuyorsa yuzune Gunes vurmuyorsa pencerene kabahati ne Guneste ne de Ay da ara! Gozlerindeki perdeyi arala!
kimimben
EOL
vim /tmp/degistirornek.txt
Dosyanızın içine biryere kimimben
yazın, sonrasinda aşağıdaki komut ile onu değiştirin. Yerine Mevlana
yazın.
Şimdi aşağıdaki şekilde bir arayıp bulma ve değiştirme işlemi yapalım.
:%s/kimimben/Mevlana/g
Dosyayı şimdi kaydedip kapatabiliriz. wq!
Dosya içersinde aradığınız bir satır var ise onu direkt komut satırından dosyayı açarken veya vim içinde komut modunda belirtebilirsiniz. Sizi belirtilen satıra götürecektir.
vim /tmp/degistirornek.txt +2
Vim ayarları
Yapılandırma dosyalarını düzenlemek veya kod yazmak için vim kullanırsanız, programı ilk açtığınızda satır numaralarını görüntüleyebilmeyi ve otomatik girintiyi ayarlamayı isteyeceksiniz, böylece Enter tuşuna bastığınızda imleç otomatik olarak uygun konuma yerleştirilir.
Ek olarak, bir sekmenin kapladığı beyaz alanların sayısını özelleştirmek isteyebilirsiniz. Bunu vim’i her başlattığınızda yapabilseniz de, bu seçenekleri ~/.vimrc
içinde ayarlamak daha kolaydır, böylece otomatik olarak uygulanacaklar:
set number
set autoindent
set shiftwidth=4
set softtabstop=4
set expandtab
Komut modu içindeyken :
aynı komutları yazabilirsiniz. Özellikle kopyala yapıştır yapamadığınız vim mouse ayarı için. :set mouse=""
yapabilirsiniz.
vimtutor ile kendi kendinize vim bilginizi geliştirin
vimtutor programı size interaktif bir şekilde vim anlatan bir eğitimdir, eğitimi baştan sonra bir kere yapmanızı öneririm. Bu sayede vim kullanımı ile ilgili temel konuların neler olduğunu anlarsınız. Sonrasında cheatsheet daha kullanışlı olacaktır.
Vim konusu çok uzun işlenebilecek bir konu fakat biz burada sadece basit şekliyle neleri nasıl yapabileceğinizi anlatmaya çalıştık, bu konuda pratik yapmanız gerektiğini lütfen unutmayın. Başlangıç için vimtutor ve yukarıdaki cheatsheet sizin için oldukça faydalı olacaktır.
3. Temel ağ yönetimi
TCP/IP bağlantı noktalarında önemli bir ayrım, ayrıcalıklı bağlantı noktaları ile ayrıcalıksız bağlantı noktaları arasındaki farktır. İlki 1024’ten az sayıya sahiptir.
Unix ve Linux sistemleri, ayrıcalıklı bağlantı noktalarına erişimi kök ile sınırlar. Buradaki fikir, bir istemcinin ayrıcalıklı bir bağlantı noktasına bağlanabilmesi ve bu bağlantı noktasında çalışan sunucunun sistem yöneticisi tarafından yapılandırıldığından emin olmasıdır.
ve bu nedenle güvenilir olabilir. Maalesef günümüz İnternet’inde bu güven, yalnızca bağlantı noktası numarasına dayalı olarak gerekçesiz olacaktır, bu nedenle bu ayrım pek kullanışlı değildir. Bağlantı noktası numaraları Sıradan kullanıcılar 1024’ten daha fazlasına erişebilir.
İstemci ve Sunucu ne demektir (İstemci & Sunucu)
İstemciler ve sunucular arasındaki fark önemlidir. İstemci, veri alışverişi yapmak için bir ağ bağlantısı başlatan bir programdır. Bir sunucu bu tür bağlantıları dinler ve bunlara yanıt verir.
Örneğin, Firefox veya Opera gibi bir web tarayıcısı bir istemci programıdırlar. Programı başlatır ve bir web sayfasına yönlendirirsiniz, yani web tarayıcısı web (HTTP) sunucusuna belirtilen adrese bir istek gönderir. Web sunucusu, isteğe yanıt olarak verileri geri gönderir. İstemciler ayrıca, bir web formuna bilgi girdiğinizde ve bir Gönder düğmesini tıkladığınızda sunucuya veri gönderebilir.
İstemci ve sunucu terimleri, çoğunlukla bir veya diğer rolde çalışan tüm bilgisayarlara uygulanabilir. Bu nedenle, web sunucusu gibi bir ifade biraz belirsizdir, web sunucusu üzerinde çalışan servis (program) bir veya birden fazla sunucu tarafından oluşturulabilir.
Linux işletim sistemindeki bağlantı noktalarını yapılandırmak için hiçbir şey yapmanıza gerek yoktur. Olağandışı sunucular çalıştırıyorsanız bu sorunu çözmeniz gerekebilir, çünkü sunucuları doğru bağlantı noktalarına bağlamak için sistemi yapılandırmanız gerekebilir.
Bazen bağlantı noktası numaralarını adlarla eşleyen /etc/services
değiştirmeniz gerekebilir, böyle durumlarda standart dışına çıkacağınızı unutmayın, en son çare değiştirebilirsiniz. Mümkün olduğunca standart portları ve hep belirttiğim gibi single purpose sunucu kurarsanız, port çakışması yaşamazssınız.
Dosya içersinde sunucu üzerindeki protokollerin uzun bir listesi vardır, ilk 1023 tanesi ve birkaç tane çok bilinen port numarası vardır. Port numaralarını zaman içersinde istemeseniz de ezberleyeceksiniz zaten, 22 ssh portudur 80 web portudur ve 443 ssl portudur diye bilmeniz şuan için yeterlidir. Windows dünyasına aşina arkadaşlarımız 3389 portunun RDP portu olduğunu bilirler, 3306(mysql) ve 1521(oracle listener) portları daha çok DBA olan arkadaşlarımızın bildiği portlardır.
portların uzun bir listesine aşağıdaki komut ile erişebilirsiniz
less /etc/services
işiniz bitince q
ile komut satırına dönebilirsiniz.
Linux bilgisayarınızı bir ağa bağlamak oldukça basittir. Linux, birden çok ağ arabirim bağdaştırıcısını kolayca yönetir. Dizüstü bir bilgisayarlar hem kablolu hem de kablosuz arayüzler içerebilir ve hücresel ağlar için WiMax
arayüzlerini de destekleyebilir. Linux masaüstü bilgisayarları ayrıca birden çok ağ arabirimini destekler ve Linux bilgisayarınızı çok ağlı bir istemci(client) veya dahili ağlar için bir yönlendirici(router) olarak kullanabilirsiniz.
Aşağıda size Centos/Redhat/Fedora için kullanabileceğiniz ağ yapılandırma dosyalarından bahsedeceğim. Debian tabanlı işletim sistemleri için dosya lokasyonları ve aygıt isimleri farklı olacaktır. Temelde yapılan işlem aynı olsa da, farklı dosyalar içersinde farklı formatlar tercih edilmiştir.
DNS Komutları - isim çözümleme komutları
DNS (Domain name system) Etki Alanı Adı Sistemi , IP adresleri ve ana bilgisayar adları arasında dönüşüm sağlayan dağıtık bir veritabanıdır. Her etki alanı, etki alanındaki her bilgisayarın adını sağlayabilen veya bir DNS sorgusunu isteği daha iyi işleyebilecek başka bir DNS sunucusuna yeniden yönlendirebilen en az iki DNS sunucusu bulundurmalıdır.
Bu nedenle, bir ana makine adı aramak, ana bilgisayar adından sorumlu sunucu bulunana kadar her bir aramayı yeniden yönlendiren bir dizi DNS sunucusunu sorgulamasını içerir. Uygulamada, bu süreç sizden bağımsız gizli gerçekleşir, çünkü çoğu kuruluş, diğer DNS sunucuları ile iletiğim kuran DNS sunucularına sahiptir.
Yalnızca bilgisayarınızı kuruluşunuzun DNS sunucularına yönlendirmeniz yeterli olacaktır.
Kullanacağımız DNS komutlarını kuralım.
apt update&&apt install -y dnsutils
Linux üzerinde dns ismi için öncelik sıralaması mevcuttur ve bu bilgi /etc/nsswitch.conf
dosyası içinde tanımlıdır.
cat /etc/nsswitch.conf | grep hosts
çıktı olarak gelen hosts: files dns
burada files ile söylenmek istenen, önce /etc/hosts
dosyasına bak sonrasında /etc/resolv.conf
dosyasındaki dns sunucularına bak demektedir.
Yukarıda DNS aramasının /etc/hosts ve /etc/resolv.conf’a başvurduğunu görebilirsiniz. İlk DNS araması, adı yeniden taşımak için / etc / hosts dosyasına bakın ve ardından ana bilgisayar adını çözümlemek için /etc/resolv.conf dosyasına bakacaktır.
Ömemli!!
nslookup ve dig gibi DNS arama araçları /etc/nsswitch.conf dosyasını yok sayacak ve her zaman /etc/resolv.conf kullanarak DNS sunucusuna başvuracaktır.
/etc/hosts dosyası
/etc/hosts
dosyası Linux işletim sistemindeki en önemli tanım dosyalarından biridir. İsim çözümlemesi için IP Adresi –» domain-adı bir metin dosyasıdır.
cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.2 www.neresiburasi.com neresiburasi neresi nb.com nb
192.168.0.3 web1.localhost web1
Her iki alan da boşlukla veya sekmeyle ayrılır, ardından satır başına IP ve Ana bilgisayar adı gelir. sunucu adı yalnızca alfanümerik karakterler, eksi işareti (-) ve nokta (.) İçerir.
Alan Açıklamaları:
192.168.0.3: IP adresi
www.neresiburasi.com: Hostname
nb.com: IP adresinin takma adı
neresiburasi: IP adresi takma adı
Ayrıca /etc/hosts dosyasındaki 127.0.0.1 geri döngü adresleri gibi tanımları görürüz. “localhost” bulunduğunuz sunucunun kendi adı için tanımladığı isimdir varsayılan isimdir.
Kendi sunucularınıza mutlaka bir ip karşılığı isim vermenizi tavsiye ederim(hostname). Bu sayede birden fazla sunucunuz olduğunda, sunucuların isimlerini hatırlamanız çok kolay olacaktır. Sunucu ismi verirken çok farklı kombinasyonlar olabilir, benim tavsiyem genel bir convention belirlemenizdir. DB, WEB, LDB, gibi kısaltmaları olabildiğince kullanın. Ayrıca bölge ve yer bilgilerini kullanmaya çalışın, local, pub, dmz1 ,ndmz1 gibi.
Sunucu isim örnekleri:
web1.dmz1.delivery.com
ldb5.pub3.aws1.delivery.com
db3.ndmz5.gcp1.delivery.com
Şunu unutmayın, aynı sunucu için birden fazla dns tanımı yapabilirsiniz, yönetilebilir olması adına olabildiğince amaç/bölge/güvenlikseviyesi bilgilerini içermeye çalışın.
Güvenlik seviyesi sizin belirlediğiniz birşeydir, buradaki maksat izolasyon seviyesinin belirlenmesidir.
/etc/resolv.conf dosyası
Linux işletim sistemindeki bir diğer önemli dosyadır. Bilgisayarın etki alanı adını IP adresine dönüştürmesine yardımcı olacak DNS sunucularının ismini barındırır. Tüm süreç çözümleme olarak adlandırılır.
cat /etc/resolv.conf
Örnek bir çıktı aşağıdaki gibi olacaktır:
search acikkaynakfikirler.com
nameserver 10.0.20.1
nameserver 8.8.8.8
Yukarıda İsim Sunucusunun IP adresini gösteren nameserver
tanımını görebilirsiniz.
Örneğimde 10.0.20.1 bizim birincil yerel DNS Sunucumuz. Sonrasında kullandığımız 8.8.8.8 ise google tarafından kullanılan public DNS adresidir.
search
olarak verilmiş olan acikkaynakfikirler.com sizin komut satırındayken varsayılan domain adınız olarak kullanılır.
Yani komut satırında ping web2
dediğinizde önce yerel /etc/hosts
içersinde böyle bir tanım varmı ona bakar, sonrasında ``/etc/resolv.conf dosyası içindeki tanımlı dns sunucuları üzerinden
search` içersindeki tanıma da bakacak şekilde arama yapar. Yani “web1.acikkaynakfikirler.com” ile arama yapar, böyle bir kayıt yok ise sadece “web1” ile yine dns sorgulaması yapar. Ve sonuç üretir veya üretmez.
nslookup name server lookup - isim sunucusu sorgulama
Nslookup ayrıca DNS sunucularını hem etkileşimli hem de etkileşimli olmayan bir şekilde sorgulamak için kullanılabilen popüler bir komut satırı programıdır. Farklı işletim sistemlerinde vardır. DNS kaynak kayıtlarını (RR) sorgulamak için kullanılır. Bir alan adının “A” kaydını (IP adresi) gösterildiği gibi farklı parametreler ile değişik kayıt bilgilerini alabilirsiniz.
interaktif
nslookup
www.google.com
İnteraktif mode dan çıkmak için exit yazmanız gerekir.
Direkt sorgulama
nslookup -query=mx www.yahoo.com
Ben halen nslookup ile interaktif ekrana girerek dns sunucsu değiştirerek sorgulama yaptırırım. Örn. google için “server 8.8.8.8” dedikten sonra domain araması yaparım.
hostnamectl hostname control
hostnamectl
komutu, Linux sistem adını kontrol etmek ve ilgili ayarlarını değiştirmek için kullanılabilen bir arayüz sağlar. Komut, belirli bir sistemde /etc/hostname
dosyasını değiştirip düzenlemeden de ana bilgisayar adını değiştirmeye yardımcı olur.
Kullanım şekli:
hostnamectl [Parametre] komut
Örnek kullanım:
hostnamectl set-hostname web1.acikkaynakfikirler.com
dig Domain Information Groper - Alan adı bilgi toplayıcısı
dig
kısaltması (Etki Alanı Bilgileri Groper), Etki Alanı Adı Sistemi (DNS) ad sunucularını sorgulamak için bir ağ yönetimi komut satırı aracıdır. DNS ile ilgili sorun yaşadığınızda ilk başvuracağınız araçlardandır.
Sorgulanan ad sunucusundan döndürülen yanıtları görüntüler. dig, BIND alan adı sunucusu yazılım paketinin bir parçasıdır. dig
komutu, nslookup
ve ana bilgisayar gibi eski araçların yerini alır. kazma aracı büyük Linux dağıtımlarında mevcuttur.
Kullanım şekli:
dig alan-adi [parametreler]
örn.
dig acikkaynakfikirler.com
Yukarıdaki komut, dig’in acikkaynakfikirler.com alan adı için “A” kaydını aramasına neden olur. Dig komutu /etc/resolv.conf dosyasını okur ve burada listelenen DNS sunucularını sorgular. DNS sunucusundan gelen yanıt, dig’in görüntülediği yanıttır.
host - istemci
host
komutu DNS aramalarını gerçekleştirmek için en basit sorgulamadır. Bilgisayar adlarını IP adreslerine çevirir veya bunun tam tersini yapar.
Örnek:
host acikkaynakfikirler.com
host 127.0.0.1
whois - sahibi kim?
whois
Bu komut ile bir alan adının tamamına ilişkin bilgilere bakabilirsiniz. Örneğin, whois acikkaynakfikirler.com yazıldığında, Alan adının kime ait olduğu, sorun çıkması durumunda kiminle iletişime geçileceği vb. bilgileri öğrenebilirsiniz.
whois acikkaynakfikirler.com
Centos için ağ yapılandırma dosyaları
Her ağ arayüzünün(interface) /etc/sysconfig/network-scripts
dizininde kendi yapılandırma dosyası vardır. Her arabirim, ifcfg-arabirim-adı-X
adlı bir yapılandırma dosyasına sahiptir. Burada X
, kullanılan adlandırma kuralına bağlı olarak ‘0’ veya ‘1’ ile başlayan arabirimin numarasıdır;
örnek bir dosya şu şekildedir
/etc/sysconfig/network-scripts/ifcfg-eth0
, buradaki ifcfg-eth0
ilk Ethernet arayüzü içinkullanılan dosyayı içermektedir.
/etc/sysconfig/network-scripts
dizinindeki diğer dosyaların çoğu, çeşitli ağ yapılandırma etkinliklerini başlatmak, durdurmak ve gerçekleştirmek için kullanılan scriptler dir.
Her arayüz yapılandırma dosyası, arayüzün MAC adresi ile belirli bir fiziksel ağ arayüzüne bağlıdır.
Debian/Ubuntu için ağ yapılandırmaso
Ağ arabirimi adlandırma kuralları
Ağ arayüzleri için adlandırma kuralları eskiden çok daha basitti. EthX kullanmak bana mantıklı geldi ve yazması kolaydı. Hangi uzun ve belirsiz ismin bir arayüze ait olduğunu anlamak için ekstra adımlar gerektirmiyordu. Ne yazık ki ağ konusunda çıkan yeni donanımlar ve gereksinimler bu konudaki eski standartları oldukça değiştirdi.
Bazı uzun ve anlaşılmaz ağ arabirim adlarıyla kısa bir süre sonra, artık yalnızca marjinal olarak daha iyi görünen üçüncü bir adlandırma kuralımız var. EthX gibi daha basit isimler kullanmak isterseniz, kernel boot parametreleri içine biosdevname=0 net.ifnames=0
yazmanız yeterli olacaktır. Ben yine de size eth0,eth1.. isimlendirmesini kullanmanızı tavsiye etmem, (bonding vs için).
Günümüzde, eno1 ve enp0s3 gibi adlara sahip en yeni adlandırma kuralları RHEL 7/8, CentOS 7/8 ve Fedora’nın daha yeni sürümleri tarafından kullanılmaktadır.
Ağ Yapılandırma dosyası ayrıntıları (Centos/Redhat)
Sanal sunucu üzerindeki ens18 isimli ağ bağdaştırıcısının ayarları
Aşağıda Centos8 bir sunucunun network ayarlarını görebilirsiniz,
nucleuss@ops.nucleuss ~ $ cat /etc/sysconfig/network-scripts/ifcfg-ens18
NAME=ens18
DEVICE=ens18
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
ONBOOT=yes
IPADDR=10.34.45.65
NETMASK=255.255.255.0
GATEWAY=10.34.45.1
DNS1=10.34.45.254
USERCTL=no
ZONE=public
Bu dosya önyükleme sırasında arabirimi başlatır, ona statik bir IP adresi atar, bir etki alanı ve ağ geçidi tanımlar, bir DNS sunucusu belirtir ve root olmayan kullanıcıların arabirimi başlatıp durdurmasına izin vermez.
Aşağıdaki abaşka bir örnekte ise ifcfg-eno1, bir DHCP yapılandırması örneğini görüyoruz
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no
NAME=eno1
UUID=a67804ff-177a-4efb-959d-5feed15cf296
ONBOOT=yes
IPV6_PEERDNS=no
IPV6_PEERROUTES=no
Bu ikinci yapılandırma dosyası örneğinde, DHCP girişleri, IP adresi, arama etki alanı ve diğer tüm ağ bilgileri, DHCP sunucusu tarafından sağlandıkları için tanımlanmamıştır. DNS sunucuları gibi yapılandırma öğeleri, önceki statik yapılandırma örneğinde olduğu gibi, DNS1 ve DNS2 satırları eklenerek arabirim yapılandırma dosyasında geçersiz kılınabilir.
Bu ikinci örneğin bir UUID satırı içerdiğine dikkat edin. Belirleyebildiğim kadarıyla, bu satırın yapılandırma dosyasının işlevselliği üzerinde bir etkisi yok. Genelde bu satırı bırakırım, ama bazen silmek te iyi olabilir.
Her iki arayüz yapılandırma dosyasında, HWADDR satırı bulunmuyor, HWADDR fiziksel ağ arayüzünün MAC adresini belirtir. Bu, fiziksel arayüzü arayüz yapılandırma dosyasına bağlar. Arayüzü değiştirirseniz, dosyadaki MAC adresini değiştirmeniz gerekir. Tek arayüzü olan sunucularda ve sanal sunucularda bu satırı kullanmamaya özen gösteriyorum.
Bir NIC’nin MAC adresini bulmanın birkaç yolu vardır. Genelde kurulu tüm NIC’leri, MAC adreslerini ve çeşitli istatistikleri gösteren ifconfig komutu ile bulabilirsiniz. Pek çok yeni NIC’in MAC adresi kutu üzerinde mevcuttur veya NIC’nin üzerinde etiketlenmiştir.
Çoğu arabirim yapılandırma dosyası kurulum sırasında veya NIC yeni kurulduktan sonra ilk algılandığında otomatik olarak oluşturulur ve MAC adresi yeni arabirim yapılandırma dosyasının bir parçası olarak eklenir. Sanal sunucularda bu satırı kesinlikle silmenizi tavsiye ederim, clone ve backup işleri sırasında sorunlara sebep olacaktır.
ONBOOT satırı, arayüzün başlatma sırasında etkinleştirileceğini belirtir. Bu satır ‘no’ (hayır) olarak değiştirilirse, arabirimin manuel olarak veya bir kullanıcı oturum açtıktan sonra NetworkManager tarafından etkinleştirilmesi gerekecektir.
USERCTL satırı, ayrıcalıklı olmayan kullanıcıların arayüzü yönetemeyeceğini belirtir; yani ağ birimini açıp kapatamazlar. Bu parametrenin “evet” olarak ayarlanması, normal kullanıcıların arayüzü etkinleştirmesine ve devre dışı bırakmasına izin verir.
Arayüz konfigürasyon dosyalarındaki satırların sıraya duyarlı olmadığına ve herhangi bir sırada gayet iyi çalıştığına unutmayın lütfen. Geleneksel olarak, seçenek adları büyük harflidir ve değerler küçük harflidir. Seçenek değerleri tırnak içine alınabilir, ancak değer tek bir sözcük veya sayıdan fazla olmadığı sürece bu gerekli değildir.
Yapılandırma seçenekleri
Arayüz yapılandırma dosyaları için birçok yapılandırma seçeneği vardır. Bunlar daha yaygın seçeneklerden bazılarıdır:
DEVICE: Cihazın eth0 veya enp0s2 gibi mantıksal adı.
HWADDR: 00:22:55:AB:BA:DB gibi dosyaya bağlı ağ bağdaştırıcısının MAC adresi
ONBOOT: Ana bilgisayar önyüklendiğinde bu cihazda ağı başlatın. Seçenekler 'yes' veya 'no' olabilir.
IPADDR: 192.168.0.10 gibi bu NIC'ye atanan IP Adresi
BROADCAST: 192.168.0.255 gibi bu ağ için yayın adresi
NETMASK: Bu alt ağ için, C sınıfı maske 255.255.255.0 gibi ağ maskesi
NETWORK: Bu alt ağ için C sınıfı ID 192.168.0.0 gibi ağ kimliği
SEARCH: "example.com" gibi niteliksiz ana bilgisayar adlarında arama yaparken aranacak DNS etki alanı adı
BOOTPROTO: Bu arayüz için önyükleme protokolü. Seçenekler statik, DHCP, bootp, hiçbiri'dir. "Hiçbiri" seçeneği varsayılan olarak statiktir.
GATEWAY: Bu alt ağ için ağ yönlendiricisi veya varsayılan ağ geçidi, örneğin 192.168.0.254
ETHTOOL_OPTS: Bu seçenek, hız, çift yönlü durum ve otomatik anlaşma durumu gibi ağ arayüzü için belirli arayüz yapılandırma öğelerini ayarlamak için kullanılır. Bu seçenek birkaç bağımsız değere sahip olduğu için, değerler tek bir tırnak kümesi içine alınmalıdır, örneğin: "otomatik başlatma hızı 100 çift yönlü tam".
DNS1: Yerel ağdaki bir sunucu olan 192.168.0.254 gibi birincil DNS sunucusu. Burada belirtilen DNS sunucuları, NetworkManager kullanılırken veya peerdns yönergesi evet olarak ayarlandığında /etc/resolv.conf dosyasına eklenir, aksi takdirde DNS sunucuları /etc/resolv.conf'a manuel olarak eklenmelidir ve burada yok sayılır.
DNS2: İkincil DNS sunucusu, örneğin ücretsiz Google DNS sunucularından biri olan 8.8.8.8. Arayüz yapılandırma dosyalarında üçüncül bir DNS sunucusunun desteklenmediğini, ancak uçucu olmayan bir resolv.conf dosyasında üçüncüsü yapılandırılabileceğini unutmayın.
TYPE: Ağ türü, genellikle Ethernet. Burada gördüğüm diğer tek değer Token Ring'di ama bu artık çoğunlukla alakasız.
PEERDNS: yes seçeneği, /etc/resolv.conf'un bu dosyaya DNS1 ve DNS2 seçenekleriyle belirtilen DNS sunucu girişleri eklenerek değiştirileceğini belirtir. "Hayır", resolv.conf dosyasını değiştirmeyin anlamına gelir. BOOTPROTO satırında DHCP belirtildiğinde "Evet" varsayılandır.
USERCTL: Ayrıcalıklı olmayan kullanıcıların bu arayüzü başlatıp durdurmayacağını belirtir. Seçenekler 'yes' veya 'no' dur.
IPV6INIT: Bu arayüze IPV6 protokollerinin uygulanıp uygulanmayacağını belirtir. Seçenekler evet / hayır'dır.
DHCP seçeneği belirtilirse, diğer seçeneklerin çoğu yok sayılır. Gereken tek seçenekler BOOTPROTO, ONBOOT ve HWADDR'dir. DHCP sunucusu tarafından sağlanan DNS girişlerini geçersiz kılmak istiyorsanız, faydalı bulabileceğiniz, göz ardı edilmeyen diğer seçenekler, DNS ve PEERDNS seçenekleridir.
Udev arka plan programı, ağ aygıtları ve çıkarılabilir yığın depolama aygıtları dahil tüm aygıtlar için tutarlı ve kalıcı aygıt adlandırması sağlaması beklenen bir çekirdek aygıt yöneticisidir. Ayrıca m için kullanılır
Dosyalar üzerinde değişiklik yaptıktan sonra network systemctl restart networking
yaparak network servislerini restart edebilirsiniz. Böylece yeni vermiş olduğunuz ayarlar geçerli olacaktır.
Eğitimimiz içeriğinde network ile ilgili bilgilendirme yapmıyoruz, TCP/IP bilginizin olduğunu ve Ağ için verdiğimiz değerlerin ne anlama geldiğini anladığınızı varsayıyoruz.