Perşembe, Nisan 18, 2013

Linux'ta Temel Ağ Yapılandırması - 1

LPIC sertifikası konuları dahilinde çalıştığımızı söylemiştim önceden. Ben geçtiğimiz haftalarda Linux'ta Temel Ağ Yapılandırmasını anlattım. Bu konuyla ilgili bir özet çıkarmıştım kitaptan, onu buradan paylaşmamın iyi olabileceğini düşündüm. Öncelikle bu konuyu anlatmak için seçmemin sebebi Linux'la yaşadığım en büyük sorunun genelde ağa bağlanmayla ilgili olması ve eğer bu konuyu anlatırsam ağ ile ilgili bana anlatılandan daha çok şey öğrenebileceğimdi. Öyle olduğunuda düşünüyorum. Kimler ne sorabilir düşüncesiyle daha dikkatli oluyor insan konu anlatacakken. Gerçi ilk defa topluluk önünde böyle bir konu anlattığımdan anlatmaya başlarken her şeyi unuttum diyebilirim. En azından özeti paylaşıp anlatırken atlamış olduğum ya da tam anlatamadığım bir yer varsa ona çare olur diye umuyorum.

Linux'ta Temel Ağ Yapılandırması

Çoğu Linux sistemi istemci ya da sunucu olarak (genelde her ikisi birden) bir ağa bağlıdır. Bu sebeğle Linux'un temel ağ yapılandırma araçlarını öğrenmemiz Linux'u tam anlamıyla yapılandırabilmek için oldukça önemlidir. Öncelikle temel modern ağların yapısını anlamamız - ağ adresleri ve ağlarda sıklıkla kullanılan araçları - gerekmektedir. Bunları öğrendikten sonra Linux'ta bilgisayar adresi, routing ve dns konularını uygulayabiliriz. Ne yazık ki, ağ yapılandırması bazen ters gider, bu sebeple sorunları çözecek araç ve yöntemleri öğrenmek işimizin bir parçası olacaktır.

TCP/IP Ağlarını Anlamak

Ağ birbiri üzerine kurulmuş birkaç parçadan oluşur. Bu ağ donanımını, veri paketlerini ve veri aktarımı için protokolleri içerir. Bu parçalar birlikte ağ yığını denilen birimi oluşturur. Günümüzdeki en yaygın yığın Transmission Control Protocol / Internet Protocol (TCP/IP) dür ama bu varolan tek yığın değildir. Fakat TCP/IP nin temellerini anlamak ağları yapılandırma ve yönetmede yardımcı olacaktır.

Ağ Donanımının Temel Fonksiyonlarını Öğrenmek

Ağ donanımları birden fazla bilgisayarın birbirleriyle iletişim kurması için tasarlanmıştır. Genelde iletişim için kablolar kullanılsa da artık kablosuz bağlantılar daha sık kullanılmaya başlanmıştır.

Ağ Donanımının Türünü Araştırmak

Linux yaygın bazı ağ donanımlarını destekler. En yaygın olanı Ethernettir. Başka donanımlarda mevcuttur ama bunlar Ethernet'e göre pek yaygın sayılmazlar. Bunlara örnek olarak TokenRing, LocalTalk, Fiber Distributed Data Interface (FDDI), High-Performance Parallel Interface (HIPPI) ve FibreChannel verilebilir.

Wireless Ethernet'in baskınlığına karşı çıkan bir ağ türüdür. Yaygın wireless protokolleri 801.11a (54 Mbps), 802.11b (11 Mbps), 802.11g (54 Mbps) ve 802.11n (300 Mbps) dir. Bunların farkları hızlarında yatar. 802.11a dışında hepsi birbiriyle uyumludur fakat hangisi en yavaş çalışıyorsa onun hızında çalışır.

Uyarı: Eğer kablosuz ağ kullanıyorsanız, verileriniz radyo dalgaları aracılığıyla iletilir ve bu sebeple kolayca araya girilebilir. Bu sebeple kablosuz ağlar sıklıkla şifreleme standartlarını kullanır. WEP artık kolayca kırılabilmektedir bu sebeple WPA ya da daha iyisi WPA2 şifrelemeyi aktif hale getirmeyi unutmayın.

Bilgisayardaki ağ donanımı dışında bilgisayarın dışında da bir donanıma ihtiyç duyarsınız. Bu merkezi cihazlar hub ya da switch olarak bilinir. Hub ve switch arasında birkaç fark bulunur. Öncelikle hub bir bilgisayardan aldığı veriyi kendisine bağlı olan bütün bilgisayarlara ayırt etmeden yollarken switch hangi verinin hangi bilgisayara gideceğini bilir ve veriyi ona göre yönlendirir. Ayrıca hubda bir bilgisayar veri gönderirken diğeri beklemek zorundadır switchde ise aynı anda birden çok bilgisayar veri alışverişi yapabilir. Burada hub telsizlere ve switch telefonlara benzetilebilir.

Ağ Paketlerini Anlamak

Modern ağlar verileri paket denilen birimlere ayırırlar. Örneğin 100kb bir veri yollamak istersek bilgisayarımız bu veriyi 1kb parçalara ayırarak yollar. Bu şekilde aktarımda bir sıkıntı olursa sadece hatalı olan paket tekrar yollanır.

Ağ Protokol Yığınlarını Anlamak

Ağ verisini soyut olarak birkaç seviyede düşünebiliriz. Örneğin bir seviyede ağ bir veri paketini Ethernet gibi özelleşmiş bir ağ türü için taşıyor olabilir. Bir protokol yığını veriyi soyut olan birkaç katman arasında dönüştüren ve saklayan bir yazılım setidir. Örneğin, yığın bir e-mail transfer protokolünün komutlarıyla alıp bu taşınan e-mail mesajlarını Ethernet çerçevelerine uygun olarak tekrar paketleyebilir. Bu şekilde aynı yığın yapısını kullanan e-mail istemcileri arasında değişiklik yapmak zor olmaz.

TCP/IP yığını şu anda en sık kullanılan yığındır. Gönderen sistemin her bileşeninin katmanı alıcı sistemdeki katmanla eşleşmelidir ama bunlar kesinlikle birbirinin aynısı olmak zorunda değildir. Ethernet ve TokenRing gibi tümüyle farklı iki ağ donanımı kullanılıyor olsa bile sistem bunlar arasında dönüşümü yapar. Bilgisayarlar farklı işletim sistemleri üzerinde çalışıyor olabilir ve bu sebeple farklı ama mantıksal olarak benzer protokol yığınları kullanır. Linux ve İnternet TCP/IP üzerinde tasarlanmıştır. (Daha doğrusu Linux tasarlanmış, İnternet TCP/IP yapısı üzerine inşaa edilmiştir.) TCP/IP dışında da yığınlar mevcuttur; NetBEUI, AppleTalk, IPX/SPX. Linux NetBEUI dışındakileri destekler.

TCP/IP Protokol Çeşitlerini Öğrenmek

 TCP/IP içinde de çeşitli protokol çeşitleri mevcuttur. TCP/IP de katmanlar  Application --> Transport --> İnternet --> Link şeklindedir, oklar alınan cevapta ters yöne işler.

IP  İnternet Protokolü TCP/IP nin çekirdek protokolüdür. Katmanlardan internet katmanına karşılık gelir. IP paketlerin bilgisayarlar arasında transferini en iyi şekilde sağlamaya çalışır. Paketler yanlış ya da hatalı iletişmiş olabilir. TCP/IP bununla da ilgilenmelidir. IP ayrıca TCP/IP de IP adresleriyle bağlı olan kısımdır.

ICMP  The Internet Control Message Protocol veri aktarımındaki basit bir protokoldür. Genelde bilgisayarlar arası hata mesajlarının iletiminde kullanılır. ICMP teknik olarak bir internet-katman prtokolüdür ve IP protokolüne dayanır.ICMP paketleri sizin isteğinize göre yaratılmaz, gerekirse bilgisayar tarafından arka planda oluşturulacaktır. Bunun tek istisnası ping dir.

UDP  The User Datagram Protocol transport-katmanındaki en basit TCP/IP protokolüdür.Yanlış gönderilen paketlerle ilgilenmez, iletim garantisi vermez buna rağmen daha hızlıdır.UDP üzerine inşaa edilmiş yaygın application-katmanı protokolleri DNS, NFSdir.

TCP  The Transmission Control Protocol TCP/IP de kullanılan en yaygın transport-katman protokolüdür. UDP'nin aksine hata kontrolü yapar, bu hızda yavaşlamaya sebep olur.

TCP/IP nin isminin böyle olmasının sebebi TCP ve IP protokollerinin çok önemli olmasından kaynaklanır.

Ağ Adreslemesini Anlamak

Bir bilgisayarın diğeriyle ağ üzerinden haberleşebilmesi için bilgisayarlar birbirlerini işaret edebilmek için bir yola ihtiyaç duyarlar. Bunun yapabilmenin temelinde birkaç değişik form bulunur ve bunları ağ adresleri sağlar. Örneğin, uzaktaki bir bilgisayardaki belirli bir programı adreslemek için port numaraları kullanılır.

Ağ Adreslerini Kullanmak

Ağı anlamak için üç çeşit adres önemlidir. Bunlar ağ donanım adresi,sayısal IP adresleri ve metin tabanlı host isimleridir.

Donanım Adresleri

Bütün ağ donanımları Media Access Control (MAC) olarak bilinen eşsiz donanım adreslerine sahiptir. Donanım adresinizi ifconfig komutu yardımıyla görebilirsiniz.

tugce@tugce:~$ ifconfig
eth0     Link encap:Ethernet  HWaddr 00:A0:CC:24:BA:02

Buradaki HWaddr bizim MAC adresimizdir. Peki bu ne işe yarar? Örneğin network switchleri veri paketlerini doğru bilgisayara yönlendirmek için kullanırlar bu adresi.

IP Adreslerini Yönetmek

Ipv4 adres uzayı 4 milyar adresi destekliyordu yeni gelen IPv6 ise çok daha fazlasını desteklemekte. IPv4 adresleri 32 bitten oluşmaktadır.

4 byte IPv4 adresi ile (ya da 16 byte IPv6 adresi) matematiksel olarak 6 byte Ethernet adresi ile bağlantılı değildir. Bu sebeple Address Resolution Protocol (ARP) IPv4 için, Neighbor Discovery Protocol (NDP) IPv6 için kullanılır.

IP adresi ifconfig komutu yardımıyla öğrenilebilir.

tugce@tugce:~$ ifconfig
          inet addr:192.168.1.4  Bcast:192.168.1.255  Mask:255.255.255.0

Buradaki inet addr bizim IP adresimize karşılık gelir.IP adresleri 0-255 arasında değişen 4 bloktan meydana gelir. IP adresleri yerel ağda ve internette kullanılmak üzere iki şekildedir. Bunun amacı yönlendiricilerin işini kolaylaştırmaktır. IPv6 benzer şekilde çalışır ancak boyutu daha büyüktür.

          inet6 addr: fe80::20d:f0ff:fe7d:9b70/64

16lık düzende bulunan 8 bloktan oluşur.

Alt ağ maskesi TCP/IP'de iki cihaz aynı ağda olup olmadıklarını IP adresinin ilk birkaç basamağına bakarak anlarlar. Bu basamağa Alt ağ maskesi denir. Örneğin alt ağ maskesi 255.255.255.0 olan bir makinenin IP adresinin ilk 3 bölümü aynı olan başka bir makineyle aynı ağdadır. Bu durumda 192.168.0.1 ile 192.168.1.1 adreslerine sahip olan iki makine aynı ağda değildir. Bu maskeler genelde 255 ya da 0 değerlerini alır. 255 ağ byte ını 0 bilgisayar byte ını işaret eder.


Geleneksel olarak IPv4 adresleri sınıflara bölünmüştür. Bu birkaç özel durum haricinde geçerlidir. Örneğin, 127.x.y.z loopback (localhost) için ayrılmıştır. A,B,C sınıfları genel ağ için kullanılır, D sınıfı multicasting için (birden fazla bilgisayardan aynı anda veri transferi için) ve E sınıfı gelecekte lazım olur belki diye ayrılmıştır.

A Sınıfı 1.0.0.0 - 127.255.255.255 arasındadır 10.0.0.0 - 10.255.255.255 olan kısmı ayrılmıştır.

B sınıfı 128.0.0.0 - 191.255.255.255 arasındadır 172.16.0.0 - 172.31.255.255 olan kısmı ayrılmıştır.

C Sınıfı 192.0.0.0 - 223.255.255.255 arasındadır 192.168.0.0 - 192.168.255.255 olan kısmı ayrılmıştır.

D Sınıfı 224.0.0.0 - 239.255.255.255 arasındadır.

E Sınıfı 240.0.0.0 - 255.255.255.255 arasındadır.

IPv4 adresleri yönlendirmeyi kolaylaştırmak için tasarlanmıştır ancak İnternet çok geliştiği için artık kısıtlayıcı bir hale geldiler.

Hostname

IP adresleri gibi host isimleri makine isimleri ve domain isimleri olarak iki grup şeklindedir. İlki belirli bir makineye işaret ederken diğeri bir bilgisayar grubuna işaret eder.

İnternet domainleri (alan adları) hiyerarşik olarak yapılandırılmıştır. En üst seviyedekiler .com, .edu gibidir. Bunlar çeşitli ülke ya da oluşumlara işaret eder. Örneğin .tr Türkiye içindir, .edu ise eğitim kurumlarına işaret eder. Bunlara subdomainler eşlik eder. Bu subdomainler kendi altında da ayrılabilir.

Hostname Çözümlemek

The Domain Name System (DNS) IP adresleri ile host isimleri arasında dönüşümleri yapar. Bazen DNS bilgisine manuel olarak bakmanız gerekebilir. Bazı programlar bu kontrolleri yapmaya yardımcı olur.

nslookup  Bu program DNS aramalarında yardımcı olur. Çeşitli sorguları gerçekleştirebileceğiniz bir interaktif mod sunar. Bu program artık geliştirilmemektedir bu sebeple nslookup yerine host ya da dig kullanmayı alışkanlık haline getirmelisiniz.

host Bu nslookup ın daha basit hali gibi davranır. En basit senaryoda host target.name şeklinde bir komut kullanabilirsiniz. (target.name arama yapmak istediğiniz hostname ya da IP adresi olabilir.)

tugce@tugce:~$ host www.google.com
www.google.com has address 173.194.40.80
www.google.com has address 173.194.40.83
www.google.com has address 173.194.40.82
www.google.com has address 173.194.40.81
www.google.com has address 173.194.40.84
www.google.com has IPv6 address 2a00:1450:400a:805::1012

host un man sayfasına bakarak komutla ilgili daha detaylı bilgi öğrenebilirsiniz.

dig host'tan daha karmaşık DNS arama işlemi yapar. host'a göre daha esnektir.

whois domain üzerine bilgi verir.

Linux normalde DNS'den önce /etc/hosts dosyasının içinde arama gerçekleştirir. Bu davranışı değiştirmek için /etc/nsswitch.conf dosyasındaki hosts satırını düzenlemeniz gerekir. /etc/hosts dosyasına ek olarak /etc/networks dosyası bulunur fakat bu dosya ağ adresleriyle ilgilidir.

Network Portları

Belirli bir bilgisayara bağlanmak önemlidir anca uzaktaki bir sistemde bulunan belirli bir program bilinmelidir. Örneğin bir web tarayıcısı kullandığınızı düşünelim. Web sunucusu kendisi dışında sunucuları çalıştırıyor olabilir (FTP sunucusu ya da e-mail sunucusu gibi) IP adresinden öte hangi programa yönlendirme yapılacağı bilinmelidir. Bu network port numarasıdır.

Başlangıçta sunucular kendilerini belirli port numaralarıyla eşleştirirler. Örneğin Web sunucusu 80. portu kullanırken FTP sunucusu 21. portu kullanır. Port numaralarından önemli olanlar bilinmelidir, bütün liste şurada bulunabilir. FTP 21, SSH 22, Telnet 23, SMTP 25, DNS 53, HTTP 80. portu kullanır.

Bazen port numaralarıyla ilgili işler yapma ihtiyacı duyabilirsiniz, bunun için /etc/services dosyasını düzenlemeniz gerekir.