Bu yazı Can Kavaklıoğlu
tarafından, Vasfi Uysal'ın debian listesine attığı epostaya
cevap olarak yazılmıştır.
Yazıdaki hataları, önerileri, soruları ve/veya yazının oluşturduğu
tepkileri
yukarıdaki bağlantıdan ulaşabileceğiniz eposta adresine yollarsanız pek
de güzel olur.
Herzamanki gibi bu yazıda yazanlar etkisinde kalarak yaptığınız
hareketlerden yazar sorumlu değildir.
2.0 Giriş
Yerel Ağ | Yönlendirici | | Başka Ağ Adsl
Bir yönlendirici, bir yerel ağ, bir başka ağ, bir de adsl
hattından oluşmakta. Bu yazının amacı "Debian kullanarak böyle bir
yönlendiriciyi nasıl oluşturabiliriz?" sorusuna bir cevap
önermek.
3.0 Yönlendirici Kurulumu
3.1 Donanım
Yazının geri kalanında kullanılacak ağ kartlarının isimlendirilmesi ve
bağlanacakları ağlar:
eth0 - adsl hattına bağlanan ethernet kartı.
eth1 - başka ağ.
eth2 - yerel ağ.
Not. Sistem yöneticisinin kafasındaki kart numaralandırması ile
sistemin numaralandırılması uymalıdır. Aksi taktirde, yanlış karta
yanlış ağ kablosu takılırsa ve bunun farkına varılmazsa, bilgisayar
başında kabuslar yaşanabilir. Sistemin numaralandırması genelde şu
şekildedir: en düşük numaralı kart, işlemciye en yakın
olandır.
3.2 IP adreslendirmesi
Hangi ağın hangi IP ye sahip olduğunu en baştan belirlemek, bir
sürü karmaşayı önleyecektir. Şimdiden belirtelim:
adsl - sabit ip 20.30.8.8
eth1 - 192.168.200.15
eth2 - 192.168.222.200
adsl adresini tamamen salladım.
eth1 in adresi başka ağın yönlendiriciye verdiği adres, değişken
yada sabit olabilir.
eth2 nin adresi önemli, bu adres üzerinden ayarlamalar
yapacağız.
Dikkat edilmesi gereken nokta, IP
sınıflandırmasına uymaktır, uyulmazsa sıkıntılar doğacaktır.
Vasfi Uysal epostasında eth1 ve eth2 nin aynı ağda bulunmasını
istediğini belirtmiş. Ancak bu durum, eğer tam olarak
kontrolümüzde olan bir yönlendirici elde etmek
istiyorsak mümkün değil. Bir ağda sağlıklı olarak sadece bir
yönlendirici çalışabilir, aksi taktirde (en azından benim
bildiğim kadarıyla) iki yönlendirici arasında çakışmalar
olacaktır. Normal bir sistemde bir ağda bir yönlendirici olabilir.
Denenebilecek bir yöntem yönlendirme işlerini başka ağdaki
yönlendiriciye bırakmak olabilir, ancak bu da söz konusu
olamaz, çünkü bu yolda bir yönlendirici elde
etmiş olmayız.
3.3 /etc/network/interfaces
dosyası
Debian sisteminde bu dosya, sistemin ağ elemanlarının (ifup, ifdown,
ifconfig), hangi ağ donanımına, hangi ayarı yapacaklarını belirleyen
dosyadır. Sistemimiz için şöyle bir dosya uygun olacaktır.
(Not. # ile başlayan satırlar komut belirtmezler, açıklama
getirirler, sistem de bunu böyle algılayacaktır. Ancak eğer
konsolunuzda Türkçe karakter sorunu varsa, # ile başlayan
satırları hiç eklemeseniz daha iyi olabilir)
Birkaç genel komut açıklaması:
auto "ağarayüzü"
ile belirtilen arayüzler (ör. ethernet kartları), sistem
açılışında yüklenir.
iface
"interface" (arayüz) kelimesinden gelmektedir, bir
arayüzü tanıtan satırı belirtir.
#Bulunduğunuz bilgisayarda (yönlendirici), sistemin kendi
#kendine TCP/IP iletişimi kurabilmesini sağlar. Bu güne kadar
#herhangi bir sorun yarattığını görmedim, her eve lazımdır.
#Zaman zaman işe yarayabilir.
auto lo
iface lo inet loopback
#Adsl ağından DHCP sistemini kullanarak IP mizi alalım.
auto eth0
iface eth0 inet dhcp
#Başka ağda bir DHCP sunucusu olduğunu varsaymak
#yanlış olmasa gerek.
auto eth1
iface eth1 inet dhcp
#Başka ağda DHCP sunucusu yoksa, illaki sabit adres belirtmemiz
#gerekiyorsa, şöyle belirtebiliriz, ancak dikkat edin, ya
yukardaki
#yada aşağıdaki geçerli olmalıdır. Bir arayüz için
iki tanım olmaz.
#Buradaki değerler şöyle açıklanabilir:
#netmask, ağımızda kullandığımız ağ ve sunucu bölümlerini
belirtir.
#Detaylar için aşağıdaki IP sınıflandırması
bölümüne bakabilirsiniz.
#
#broadcast, ağımızda herkesin duyması için yapılan yayılan
sinyallerin
#hangi IP üzerinden yapılacağını belirtir. Genelde ger ağın 255
numaralı
#IP si bu iş için saklanır ve hiçbir sunucuya verilmez.
#
#gateway, bu yönlendiricimizin IP sidir.
#
#network, ağımızın adresini belirtir, adresin sunucu kısımları 0
#olmalıdır. Detaylar için aşağıdaki IP sınıflandırması
bölümüne
#bakabilirsiniz.
Sistemin en temel taşlarından birisi DHCP' dir. DHCP sistemini
kullanarak, sabit yada değişken bir şekilde, yerel ağımızdaki
bilgisayarlara
IP dağıtabiliriz. DHCP sunucusunu yönlendiricimize yüklemek
için:
aptitude install dhcp
Başarılı yükleme sonunda bazı ayarlar yapmamız gereklidir.
3.4.1 /etc/default/dhcp
Bu ayar dosyasında hangi ethernet kartı üzerinde DHCP sunucusunu
çalıştıracağımızı belirtmemiz gerekiyor. Bizim durumumuzda bu
eth2:
INTERFACES="eth2"
Bu değerin doğru girilmesi gereklidir, aksi taktirde başka ağlarda
sıkıntı yaratabiliriz; çünkü her ağda bir DHCP
sunucusu vardır, biz onun yerine geçersek, o anda IP isteyen bir
bilgisayarın yanlış ayarlanmasına sebep olabiliriz.
3.4.2 /etc/dhcpd.conf
Bu ayar dosyasından yerel ağımız için ayar yapmamız gereklidir:
#DNS sunucularımızı belirtmemiz gerekli. Burada seçilebilecek iki
#yol var, birincisi yerel bir DNS önbelleği oluşturmak, ikinci yol
ise
#başka ağdaki, yada adsl deki DNS sunucularını öğrenmek ve
#bunlardan bir yada birkaçını buraya yazmak olabilir.
#
#Belgenin tamamlığı adına yerel bir DNS önbelleği oluşturmayı
#seçerek eth2 nin IP sini yazıyorum.
option domain-name-servers 192.168.222.1;
#Verilen IP lerin geçerlilik süresi, yanılmıyorsam saniye
cinsinden.
default-lease-time 60000;
#Sunucuların isteyebileceği en uzun IP geçerlilik süresi.
İstediğimiz ayarları yaptıktan sonra, kök kullanıcısı olarak, DHCP
sunucumuzu yeniden başlatmak gereklidir:
/etc/init.d/dhcp restart
Eğer DHCP sunucusu hata vermeden başlarsa, ve ayarlarımız doğru ise
çalışan bir DHCP sunucumuz var demektir.
3.5 ipmasq
ipmasq paketi diğer ağlar ile yerel ağımız arasında IP paketlerini
aktarabilmemizi sağlayan ayarları standart haliyle yapacaktır. Bu
işlemde kullanılan temel sistem iptables dır. iptables ' ı elle de
ayarlamak mümkündür, ancak bunun için araştırma,
bilgi ve deneyim gereklidir. Öğrenmek isteyenler için
çok iyi bir başlangıçtır, ancak işlerin nispeten
çabuk ve yine nispeten düzgün olması için
ipmasq paketini kullanmanızı öneririm.
aptitude install ipmasq
Yükleme sırasında birkaç soru gelecek. Bunlardan ilki ppp
(telefon hattı modemi, adsl değil, "modem" modem : ) ) hakkında, "her
ppp bağlantısı yapıldığında iptables tablolarını yeniden yapılandırayım
mı?", bu sorunun cevabı, önceden tanımlanmış olan "evet" olması
doğru olacaktır. İkinci soru iptables tablolarının ne zaman ayarlanması
gerektiğini soruyor, buna da önceden tanımlı olan "ağ
arayüzlerinin yeniden yapılandırması" doğru olacaktır.
Buradaki bir nokta, ağda bir değişiklik olduğu zaman ipmasq ın yeniden
başlatılması gerektiğini unutmamaktır; çünkü ağda
birşeyler değiştiği zaman (mesela diğer ağların bize verdiği IP
adresi), ipmasq ın iptables tablolarını yeniden hazırlması gereklidir.
Bu işlem yapılana kadar, eski tablolardaki kurallar geçerli
olduğu için, tablolar yeniden hesaplanana kadar, ilgili ağ ile
bağlantı duracaktır.
Daha önce, ipmasq ı, iki ayrı ağ ile beraber kullanmadım. Ancak
iki ağla çalışmaması için bir sebep göremiyorum.
Deneyenlerin bu konudaki haberlerini bekliyorum.
3.6 dnsmasq
DHCP yi ayarlarken bahsettiğimiz gibi, dnsmasq programı aynı ipmasq
gibi DNS sunucusu şeklinde çalışır. dnsmasq kullanarak, yerel
ağdaki DNS sorgularına (mesela bir Internet sayfasına girilmek
istendiğinde, sayfanın ismine denk gelen IP yi bulmak için DNS
sunucusu sorgulandığında) daha hızlı cevap verebilirsiniz.
Yüklemek için:
aptitude install dnsmasq
Bugüne kadar dnsmasq paketi ile herhangi bir ayar yapmaya gerek
duymadım. Ancak ipmasq gibi, ağda değişiklikler olduğu zaman yeniden
başlatmak işe yarayabilir.
dnsmasq zaman zaman yaşadığım bir sorun, yönlendirici her yeni
açıldığında ilk yapılan bir, iki DNS sorgusu başarısız oluyor,
ancak bu durum, yönlendiricinin çalışması sırasında bir
daha ortaya çıkmıyor. Bunun neden olduğunu bilen varsa, bana
söylerse sevinirim.
3.7 bwm
bwm, "bandwidth monitor" (bant genişliği
denetleyici) anlamına gelen bir kısaltmadır. Bu paket, konsolda
çalışır ve ağ arayüzlerinizdeki (eth0..2) hareketleri
görmenizi sağlar, neler olduğunu anlamak için gerekli
olabilir:
aptitude install bwm
4.0 Yerel Ağdaki Bilgisayarlar
Yönlendiriciye eth2 üzerinden bağlı bilgisayarların hepsi bir
DHCP istemcisiyle (herhangi bir işletim sisteminden) IP alarak
bağlanabilirler. Eğer ayarlarımız doğruysa, eth2 den bağlanan
bilgisayarların tümü, yönlendiricimiz üzerinden,
eth0 (adsl->Internet) ve eth1 (başka ağ) den bağlandığımız ağlardaki
bilgisayarlara ulaşabilmeleri lazım.
5.0 Diğer Ağlardaki Bilgisayalar
Yönlendiricimizdeki ipmasq programının uyguladığı standart ayarlar
dahilinde, diğer ağlardaki bilgisayarların yerel ağdaki bilgisayarlara
bağlanabilmesi mümkün değildir. Ancak yerel ağımızdan bir
istek üzerine gelen cevaplar yerel ağa aktarılır. Bu durum
tabiki belli bir derece güvenlik getirir. Internet'in yapısı
istek üzerine oluşan cevaplardan oluştuğu için,
günlük işlemlerde bu durumun bir sorun yaratmaması lazımdır.
Eğer sorunlar yaşanmaya başlanırsa, her türlü sorun, ipmasq
programının ayarlarından, yada direk elle iptables ayarları yapılarak
giderilebilir.
6.0 Ekler
6.1 IP sınıflandırması
6.1.1 IP sınıflandırılması
nedir?
TCP/IP protokolünün ilk kurallarından birisi ağdaki
(Internetteki) her sunucunun kendine özel bir IP adresi olmasıdır.
Ancak şu an genel olarak kullanılan IPv4 protokolünde bildiğimiz
üzere XXX.XXX.XXX.XXX şeklinde yazılabilen numaralar, en fazla
(yaklaşık olarak) 4.2 milyar adrese izin veriyor. 4.2 milyar IP
adresinin tek elden yönetilmesinin imkansızlığı bir kenarda
dursun, 4.2 milyar sayısı dünyanın IP adresi ihtiyacını da
karşılamaya yeterli olmamaktadır. Özellikle yakın gelecekte cep
telefonları gibi taşınabilir sistemlerin de Internette bolca
dolaşacağını düşünürsek, bu sayının
küçüklüğü iyice ortaya çıkacaktır.
Yukarıda bahsedilen sıkıntıya bir çözüm IP
sınıflandırılmasıdır. Bu belgede anlatıldığı gibi yönlendirici
sistemler
kullanarak, başka ağların altında, alt ağlar oluşturulabilir,
böylece
Internet üzerinde her bilgisayarın özel bir IP adresi
verilmiş
olunabilir. Yerel ağın dışındaki sunucular için yerel ağın
tümü, içinde kaç bilgisayar olursa olsun bir IP
den ibarettir. Yönlendirici paketleri doğru şekilde dağıttığı
sürece bu durum ne yerel ağdaki, ne de yerel ağın dışındaki
bilgisayarlar için bir sorun yaratmayacaktır. Sonuçta 4.2
milyar adresin her birisi yüzlerce bilgisayarı temsil edebildiği
için, IP adresi sayısı sıkıntısı aşılabilmiştir.
IP sayısı sıkıntısına bir diğer çözüm de IPV6
protokolünün geliştirilmesidir. Diğer bir çok
özelliğinin yanında (güvenlik, kalite, kısacası var olan
sistemlerin geliştirilmesi), daha uzun bir harfler ve numaralar dizisi
kullanarak, kullanılabilecek IP sayısı 3.4 × 1038 çıkarılmıştır.
6.1.2 IP sınıflandırılması
nasıl çalışır?
IP ler şu şekilde bölümlere ayrılmıştır.
Tip IP Adresi
A Ağ.Sunucu.Sunucu.Sunucu
B Ağ.Ağ.Sunucu.Sunucu
C Ağ.Ağ.Ağ.Sunucu
Ağ, sunucuların bulunduğu ağın numarasını temsil eden kısmı belirtir.
Sunucu, ağdaki tek bir sunucuyu temsil eder.
Yani A sınıfı bir IP de üç haneli bir ağ numarası,
arkasından 255*255*255 olasılık arasından birisi olan sunucu numarası
yer alır. Mesela 100.123.211.2, 100 numaralı ağdaki, 123.211.1 numaralı
sunucuya işaret etmektedir.
Diğer yandan 256 sayısını ikili ("binary") sistemde ifade etmek
için 8 bit gereklidir. Buradan yola çıkarak, aşağıdaki
gibi bir gösterim sistemi ortaya çıkmıştır.
Yukarıda verdiğimiz A sınıfı IP deki bütün sunucuları
kastetmek istersek, bunu şöyle yazabiliriz: 100.123.211.2/8 .
Buradaki 8 sayısı, ilk 8 ikiliyi ("bit") (ondalık sistemde ilk 1-256
arasındaki sayıyı) yani 100 'ü kastetmektedir. Eğer B sınıfı bir
IP kullanıyor olsaydık, o zaman 200.123.211.2/16 dememiz gerekirdi zira
B sınıfı IP lerde, ağı belirtmek için 16 bit, yani 2 tane 1-256
arası sayı gereklidir. Eğer 200.123.211.2 yerine 200.12.211.2
kullansaydık, 200.12.211.2/12 kullanmamız gerekirdi,
çünkü 200 için 8, 12 için 4 ikili
gereklidir. 8+4 = 12.
Dikkat ettiyseniz, B sınıfı bir örnek vermek için 100
yerine 200 ile başlayan bir IP kullandım, bunun sebebi, IP sınıflarının
numaralarının da belirlenmiş olmasıdır:
TiP ARALIK
A 1.0.0.0 - 126.0.0.0
B 128.1.0.0 - 191.254.0.0
C 192.0.1.0 - 223.255.254.0
Bunun yanında yerel ağlar için ayrılmış adresler vardır. RFC 1918 den
öğrenebileceğimiz gibi aşağıdaki adresler yerel adresler olarak
kullanılabilir.
Başka adresler kullanmak isterseniz sizi kimse engellemeyecektir, ancak
bu adreslerin dışında bir adres aralığı kullandığımızda, yukarıda
bahsettiğimiz TCP/IP nin ilk kurallarından birisini olan "her sunucunun
kendine özel IP adresi olmalıdır" ı unutmuş oluruz. Sonuçta
da seçtiğimiz başka adres, muhtemelen dünyanın bir yerinde
kullanılan bir sunucunun adresi olur ve eğer varsa o sunucunun sunduğu
servislere (http, ftp vb..) ulaşamayız.
7.0 Belgeler
man interfaces
man dhcpd.conf
man ipmasq
man dnsmasq