Internet'e Bağlanma
Önceki TCP/IP Sonraki
Internet'e Bağlanma
Linux'u İnternet'e bağlamak ilk aşamada biraz zor görünse de biraz teori, biraz pratik yardımıyla mantık kolayca anlaşılabiliyor. Ağlar, bilgisayar sistemlerinde hata olma olasılığı en yüksek, en çok sorunun çıktığı alandır. Bu bölüm, özelde bir ethernet kartı ile bağlantı yapıldığı varsayılarak anlatılmıştır. Ancak anlatılan birçok kavram herhangi bir yapıdaki İnternet bağlantısı için geçerli olacaktır.
Öncelikle çekirdeği -daha önce yapmamışsanız- ağ bağlantısına destek verecek şekilde tekrar derleyin. Bunun için gerekli birkaç soruya "y" cevabı vermek yeterli olacaktır:
CONFIG NET ? [Y/n] y
...
TCP/IP networking (CONFIG_INET) [Y/n/?] y
...
Network device support (CONFIG_NETDEVICES) [Y/n/?]
...
Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET) [N/y/?] y
...
Other ISA cards (CONFIG_NET_ISA) [N/y/?] y
...
NE2000/NE1000 support (CONFIG_NE2000) [N/y/m/?] y
Yukarıdaki örnekte ethernet kartınızın ne2000/ne1000 ya da uyumlu bir kart olduğu var sayılıyor. Kartınızın marka/modeline uygun seçeneneğe `y' cevabı vermelisiniz. Ethernet kartlarının dışında bağlanma yönteminize bağlı olarak çekirdeği PPP, SLIP, Token Ring gibi bir destekle derlemeniz gerekebilir. Bunları modül olarak derlemeniz de mümkün. Çekirdek derlemek konusunda daha ayrıntılı bilgiyi bu kitabın ilgili bölümünde bulabilirsiniz.
Tabi ki çekirdeği derlemek yetmiyor, derleme aşamasından sonra ağ desteğine sahip olan çekirdek ile makinanın açılması gerekir.
Bağlantıyı gerçekleştirmek için ağ sorumlusundan bazı önemli bilgileri almalısınız. Makinanızın IP adresi bunların başında gelir. Diğer gerekli bilgiler de subnet mask ve broadcast adresidir.
DNS adres çözümleyici olarak çalışan DNS makinası ve makinanızı İnternet'e bağlayacak olan yönlendiricinin IP adreslerini de biliyor olmalısınız.
Bu aşamadan sonra yapılandırma işlemlerine geçilebilir.
Ağ Yapılandırması
Bu bölümde anlatılan rc.* yapılandırma dosyaları Slackware dağıtımına özeldir. Diğer dağıtımlarda da açılışta çalışan benzeri rc dosyaları değiştirilerek ya da sistemle birlikte gelen sistem yönetim araçları kullanılarak istediğiniz yapılandırmayı gerçekleştirebilirsiniz.
Linux, açılırken bazı dosyalara bakarak düzgün çalışması için gerekli yapılandırmayı yapar ve bazı yazılımları çalıştırır. Bu dosyalar /etc/rc.d dizini altında yeralır. İnternet bağlantısı için sadece iki dosyaya gerek duyulur. Slackware dağıtımı içinde bunlar, yapılandırmayı gerçekleştiren /etc/rc.d/rc.inet1 ve temel ağ programlarını çalıştıran /etc/rc.d/rc.inet2 dosyalarıdır.
Bu dosyadaki değerleri gerektiği şekilde düzenleyerek İnternet'e bağlanacağız. Öncelikle rc.inet1 dosyasının içeriğine göz atalım:
HOSTNAME=`cat /etc/HOSTNAME`

/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0

IPADDR="144.122.71.55"
NETMASK="255.255.255.0"
NETWORK="144.122.71.0"
BROADCAST="144.122.71.255"
GATEWAY="144.122.71.1"

/sbin/ifconfig eth0 $IPADDR broadcast $BROADCAST netmask $NETMASK
/sbin/route add -net $NETWORK netmask $NETMASK
/sbin/route add default gw $GATEWAY metric 1
ifconfig komutu, ağ bağlantısı yapan kartın belirli parametreler ile yapılandırılmasını sağlar. Kart kimliğini bilgisayara tanıtmak için bu komut kullanılır.
İlk satırdaki ifconfig programı, makinanın kendisiyle haberleşmesini sağlamak amacıyla kendi ağ adresini (loopback device) 127.0.0.1 olarak tanıtmıştır. İnternet üzerindeki her makinanın loopback adresi 127.0.0.1 'dir. 127 ile başlayan hiç bir adres, İnternet üzerinde gerçek bir adres olarak kullanılamaz.
Her paket, gönderileceği adrese gitmeden önce bir tabloya bakar. Bu tablo, paketin muhtemel rotasını içerir. route komutu yardımıyla bu tablo oluşturulur veya kontrol edilir. Genellikle bir kart için bir ifconfig kullanılırken, paketin yollanacağı birden fazla rotanın olması durumunda rc.inet1 dosyasında birden fazla route komut girdisi yapılacaktır.
Kullanılan her ağ kartının bir veya birden fazla internet adresi olabilir. Linux'a takılan birinci kart eth0 ismini alırken ikinci karta eth1, üçüncüye eth2 ... denir. Loopback cihazının ismi lo dur. ifconfig komutunu parametre vermeden kullanırsanız, Linux'a tanıtılan çevresel birimlerin listesi ekrana gelir.
$ ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
          UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
          RX packets:493 errors:0 dropped:0 overruns:0
          TX packets:493 errors:0 dropped:0 overruns:0

eth0      Link encap:10Mbps Ethernet  HWaddr 48:54:33:00:E8:3A
          inet addr:144.122.71.55  Bcast:144.122.71.255 Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:171956 errors:0 dropped:0 overruns:0
          TX packets:113212 errors:3 dropped:0 overruns:0
          Interrupt:3 Base address:0x300
cclub.metu.edu.tr makinasının ifconfig bilgisi yukarıdaki şekildedir. Bu makina üzerinde tek ethernet kartı olup, ifconfig bilgisinde ikinci sırada yeralıyor. Kartla ilgili ayrıntılı bilgi (her kart özgü donanım numarası, alınan ve verilen paket sayısı gibi) ifconfig çıktısında var.
route komutunun genel kullanımı şu şekildedir:
route [add | del] [-net | -host] varis_adresi [gw yonlendirici] secenekler...
host: paketin gideceği yer başka bir makina
net: paketin gideceği yer başka bir ağ
varış_adresi: paketin gideceği yer
yönlendirici: bu paketin gidebilmesi için geçmesi gereken yönlendirici
add: tabloya ekle
del: tablodan sil
Tablonun genel durumunu kontrol etmek için route komutuna parametre vermeden komut satırından yazın:
cclub:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
localnet        *               255.255.255.0   U     0      0       67 eth0
loopback        *               255.0.0.0       U     0      0        3 lo
default         router71.ceng.m 0.0.0.0         UG    1      0      404 eth0
Örnek tabloda üç ayrı yönlendirme girişi vardır. Birincisi, makinanın kendisi ile haberleşmesini sağlayacak olan loopback. İkinci satırda, yerel ağa gidecek olan tüm paketlerin yönlendiriciye verilmeden ağa yönlendirilmesi söylenmiş. Son sırada ise (default) paket ilk iki satırda yeralan varış adresinden farklı bir adrese gidecekse, önce yönlendiriciden geçip sonra dış dünyaya açılacağından yönlendiricinin IP adresi yazılmıştır.
ifconfig, biraz karmaşık bir komuttur. Sistem yöneticisinden öğrenmeniz gereken subnet maskesi, broadcast adresi ve IP adresini kullanıp kartları yapılandırır.
ifconfig eth0 144.122.71.55 netmask 255.255.255.0 broadcast 144.122.71.255
Yukarıda ifconfig yardımıyla eth0 kartına hem bir IP adresi verilmiş, hem de bilgisayarın bulunduğu ağın özellikleri tanıtılmıştır.
Bu andan sonra istendiği kadar route komutu ile makinadan çıkacak paketler için yeni yollar tanımlanabilir.
route add -net ...
route add -host ...
Dosyanın içeriğini sistem görevlisinin verdiği bilgiler doğrultusunda değiştirdikten sonra komut satırından çalıştırmanız, İnternet'e bağlantı için yeterli olacaktır.
# /etc/rc.d/rc.inet1
Bağlantıyı kontrol etmek İnternet adresini bilip çalıştığından emin olduğunuz bir makinaya telnet ile bağlantı yapmaya çalışın:
$ telnet orca.cc.metu.edu.tr
Connected to orca.cc.metu.edu.tr
Escape character is ^]
Ethernet kartının bağlantısını yazılım yoluyla kesmenin yolu ifconfig 'in down seçeneğidir. Örneğin tek ethernet kartı üzerinden İnternet bağlantınız var ve bunu hemen kesmek için aşağıdaki satırı yazın.
# ifconfig eth0 down
ethernet bağlantısını yeniden açmak için
# ifconfig eth0 up
komutunu girmelisiniz. Bu işlem sonrasında yönlendirme bilgilerini yeniden girmeniz gerekebilir.
ping komutu, bağlantıları ve aynı zamanda bağlantı hızını ölçmek için kullanılan bir komuttur. Ping, ICMP protokolü yardımıyla hedef makinaya belirli uzunlukta paketler gönderir. Karşıdaki makina bunları aldığı anda bekletmeden geri yollar. Arada geçen zaman farklı, iki makina arasındaki bağlantı hızı hakkında fikir verir.
cclub:~# ping knidos.cc.metu.edu.tr
PING knidos.cc.metu.edu.tr (144.122.199.20): 56 data bytes
64 bytes from 144.122.199.20: icmp_seq=0 ttl=253 time=34.0 ms
64 bytes from 144.122.199.20: icmp_seq=1 ttl=253 time=487.7 ms
64 bytes from 144.122.199.20: icmp_seq=2 ttl=253 time=3.6 ms

--- knidos.cc.metu.edu.tr ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 3.6/175.1/487.7 ms
netstat komutu, makinanın ağ kartı üzerinden yapılan bağlantıların dökümünü çıkarır.
cclub:~# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 cclub.metu.edu.tr:1947  ftp02.quicktime.appl:20 ESTABLISHED
tcp        0      0 cclub.metu.edu.tr:1943  despair.thebandit.c:ftp ESTABLISHED
tcp        0      0 cclub.metu.edu.tr:1424  despair.thebandit.co:20 ESTABLISHED
tcp        0      0 cclub.metu.edu.tr:1932  ftp02.quicktime.app:ftp ESTABLISHED
tcp        0      0 cclub.metu.edu.tr:1407  165.113.58.253:20       ESTABLISHED
tcp        0      0 cclub.metu.edu.tr:1392  165.113.58.253:ftp      ESTABLISHED
tcp        0      0 cclub.metu.edu.tr:1377  ppp23.cc.metu.ed:telnet ESTABLISHED
tcp        0      0 cclub.metu.edu.t:telnet pclabI_23.feas.met:7075 ESTABLISHED
tcp        1      0 cclub.metu.edu.t:telnet ppp23.cc.metu.edu.:1054 TIME_WAIT
tcp        0      0 cclub.metu.edu.t:telnet labmonitor.feas.m:10345 ESTABLISHED
tcp        0   9495 cclub.metu.edu.t:telnet a5-03-asy27.bil-ro:1026 ESTABLISHED
tcp        0      0 cclub.metu.edu.t:telnet pclabI_14.feas.me:15694 ESTABLISHED
tcp        0      0 cclub.metu.edu.t:telnet stu21.math.metu.e:16158 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  1      [ ]         STREAM     CONNECTED     232
unix  1      [ ]         STREAM     CONNECTED     299
unix  1      [ ]         STREAM     CONNECTED     327
unix  1      [ ]         STREAM                   591
İkinci önemli dosya olan /etc/rc.d/rc.inet2, belli başlı tüm İnternet sunucularını çalıştırır. Aşağıda bu dosyanın bir kısmı görülüyor.
#!/bin/sh

NET="/usr/sbin"
IN_SERV="lpd"
LPSPOOL="/var/spool/lpd"

echo -n "Starting daemons:"

# inetd calistiriliyor.
if [ -f ${NET}/inetd ]; then
  echo -n " inetd"
  ${NET}/inetd
else
  echo "no INETD found.  INET cancelled!"
  exit 1
fi

# degisik internet servisleri sirasiyla calistiriliyor.
for server in ${IN_SERV} ; do
  if [ -f ${NET}/${server} ]; then
    echo -n " ${server}"
    ${NET}/${server}
  fi
done
Bu açılış dosyası, ağ üzerinden servs veren bir dizi sunucu programı çalıştırıyor ve hataları engellemek için programların yerinde olup olmadığına da bakıyor.
Kontrol Dosyaları
Yapılandırmayı tamamlamak için /etc dizini altında yeralan bazı dosyaların elden geçirilmesi gerekir. Bu dosyalar sistemin daha güvenli ve verimli çalışmasına yardım eder. Bu dosyaların belli başlı olanları ve ne işe yaradıklarını görelim. /etc/hosts dosyasında makinaların IP numaraları ve İnternet adresleri yazılır. Buraya sürekli kullanılan belli başlı önemli makinaların girişi yapılabilir. Her makinanın uzun isimleri yerine kısa bir kelime yazılarak sözkonusu makinaya ulaşılabilir. Örnek bir /etc/hosts dosyası:
127.0.0.1               localhost
144.122.199.20     knidos.cc.metu.edu.tr knidos
İlk satırda loopback IP numarası ve buna karşılık gelen makina ismi vardır. Bu satırı silmemelisiniz. İkinci satırda ise knidos.cc.metu.edu.tr makinasının IP numarasını 144.122.199.20 olarak belirtilmiş ve bu bilgisayara "knidos" ismi ile de ulaşılabilmesi sağlanmıştır.
/etc/hosts.allow ve /etc/hosts.deny yapılandırma dosyaları, başka bir makinadan Linux'unuza yapılan bağlantıları denetler. /etc/hosts.deny içine, sınırlandırılma getirmek istediğiniz İnternet servislerini ve hangi makinalar için sınırlandırma istediğinizi yazabilirsiniz.
$ cat /etc/hosts.deny
#

in.fingerd: ALL except localhost, localhost : \
        echo "request from %d@%h" >> /tmp/req;
in.telnetd : .net.tr
Yukarıdaki hosts.deny dosyasında dışarıdan gelebilecek finger istekleri filtreleniyor ve bu istekler hakkında ayrıntılı bilgi (hangi kullanıcı, hangi makinadan) /tmp/req dosyasına ekleniyor.
Sonraki satır in.telnetd yazılımını çalıştıran isteklerin *.net.tr adreslerinden gelmesi halinde bunların gözardı edileceğini belirtir.
hosts.allow dosyasında, genellikle hosts.deny dosyasına gruplanan makina isimlerinin sınırlandırma istenmeyen bir veya birkaç tanesi yazılır. Eğer bir makina ismi ve karşılık gelen İnternet adresi her iki dosyada da varsa, sözkonusu servise izin verilir.
Daha fazla bilgiyi hosts_access(5) man sayfalarından bulabilirsiniz.
/etc/resolv.conf dosyasında alan adı ve alan adı sunucusunun IP numarası yazılır.
$ cat /etc/resolv.conf
domain linux.org.tr
nameserver 144.122.199.20
Yukarıdaki satırlardan üzerinde bulunduğum makinanın alan adının (domain name) linux.org.tr, alan adı sunucusunun ise 144.122.199.20 IP numaralı knidos makinası olduğu anlaşılıyor.
Önceki Üst Ana Başlık Sonraki
Protokoller Başlangıç Yönlendirme
Bir Linux Kitaplığı Sayfası