19 Mayıs 2014 Pazartesi

F5 Config Parser 


          Merhaba

          Bir süredir F5 cihazları ile ilgileniyorum. Bilmeyenler için söyleyeyim, F5 cihazları; genellikle sistemlere gelen yükü birden çok sunucuya dağıtma olarak bilinen yük dağıtma işini yaparlar. Tek yetenekleri bu değil ancak onlar bu özellikleri ile biliniyorlar.

          Bazı durumlarda bir F5'in içinde bulunan yapılandırmayı tüm bileşenleri ile birlikte başka bir F5'e aktarmak gerekiyor. Bu durumda konsoldan ssh ile cihazlara bağlanıp birisinden alıp diğerine aktarmak gerek. İtiraf etmeliyim ki, F5 bu konuda çok yardımsever. Fakat iş, birden çok yapılandırmayı aktarmaksa işte o zaman biraz yardım almak gerekebiliyor.

          İyi haber, F5 sistemleri Red Hat Enterprise Linux üzerinde hazırlananmış. Yani içinde Linux var. Eğer Linux'a aşina iseniz F5'e alışmak çokda zor değil. Bende Bash ile F5 üzerindeki yapılandırmayı alıp tüm bileşenlerini ekrana basan bir script yazdım. Script, F5 BIGIP ver. 11 üzerinde yazıldığı için sadece bu sürümü destekliyor. Ama lazım olduğunda elinizin altında olması güzel olur.

configParser.sh

17 Ocak 2014 Cuma

OpenBSD için bağış zamanı

    OpenBSD misc mail listesine Theo de Raadt tarafindan gonderilen bir mailde OpenBSD sisteminin hazirlanmasi icin kullanilan tum altyapinin elektrik giderinin karsilanabilecek limitlerin üzerine çıkmasından dolayı ciddi sorun oluşturduğunu belirtmişti. Bu yuzden elektrik masrafini uzerine alabilicek Kanada icinde faaliyet gosteren bir firmaya ihtiyac duyduklarini belirtmis ve mevcut bagislarin ancak elektrik faturasini karsilayabildigini, projelerin devami icin ciddi destege ihtiyaclarinin oldugunuda eklemisti. Aradan gecen yaklasik 1 aylik sürede herhangi bir ilerleme olmamasi nedeniyle Bob Beck listeye ayni konu icin bugun yeni bir cagri atti.

Eğer şimdiye kadar, bugün kullandığımız özgür yazılımların bize sunulmasını sağlayan insanlara teşekkür edebilmek için ne yapabilirim diye düşündüyseniz, ya da düzenli veya düzensiz bağışta bulunan biri iseniz şimdi bağışta bulunmak için en uygun zaman. OpenBSD takımı OpenSSH, OpenBGPD, PF, OpenOSPFD, OpenSMTPD gibi bir çok güzel projenin ana geliştiricisidir.

Bağışta bulunmanın en kolay yolu sanırım Pay-Pal kullanmak.

Aşağıda orjinal mailin bir kopyası mevcut.

from: Theo de Raadt

Hi everyone.

The OpenBSD project uses a lot of electricity for running the
development and build machines.  A number of logistical reasons
prevents us from moving the machines to another location which might
offer space/power for free, so let's not allow the conversation to go
that way.

We are looking for a Canadian company who will take on our electrical
expenses -- on their books, rather than on our books.  We would be
happiest to find someone who will do this on an annual recurring
basis.

That way the various OpenBSD efforts can be supported, yet written off
as an off-site operations cost by such a company.  If we reduce this
cost, it will leave more money for other parts of the project.

We think that a Canadian company is the best choice for accounting
reasons.  If a company in some other jurisdiction feels they can also
do this successfully, we'd be very happy to hear from them as well.

I am not going to disclose the actual numbers here.  Please contact me
for details if serious.

Thanks.

18 Kasım 2013 Pazartesi

Yum "Multilib version problems" sorunu


        Makinamda güncel hayat için gereken sanal makina çözümlerini şimdiye kadar VirtualBox ile kullanıyordum. Ancak F5'in kullanıma sunduğu sanal makina template'leri içinde maalesef VirtualBox için herhangi bir öneri yok. Red Hat üzerinde KVM kullanarak F5'i sanal makina içinde çalıştırmak için qemu-kvm kurulumu yapmak istedim. Ancak sisteme EPEL, RPMFusion, RPMForce gibi ek repolardan kurulmuş olan bazı paketler nedeniyle yum qemu-kvm kurulumu yapmama izin vermedi. Halbuki Red Hat DVD içindeki paketler bu kurulumu yapmak için yeterliydi. Karşılaştığım uyarıya gelince;

Multilib version problems found. This often means that the root cause is something else and multilib version checking is just
pointing out that there is a problem. Eg.:

1. You have an upgrade for gnutls which is missing some
dependency that another package requires. Yum is trying to
solve this by installing an older version of gnutlst of the
different architecture. If you exclude the bad architecture
yum will tell you what the root cause is (which package
requires what). You can try redoing the upgrade with
--exclude gnutls.otherarch ... this should give you an error
message showing the root cause of the problem.

2. You have multiple architectures of gnutls installed, but
yum can only see an upgrade for one of those architectures.
If you don't want/need both architectures anymore then you
can remove the one with the missing update and everything
will work.

3. You have duplicate versions of gnutls installed already.
You can use "yum check" to get yum show these errors.

...you can also use --setopt=protected_multilib=false to remove
this checking, however this is almost never the correct thing to
do as something else is very likely to go wrong (often causing
much more problems).



Protected multilib versions:  gnutls-2.8.5-10.el6.2.x86_64  != gnutls-2.8.5-10.el6.x86_64 

        Gördüğünüz gibi, gnutls paketinin bendeki sürümü Red Hat DVD içindeki paketlerden daha yeni. Bu durumda ilk aklınıza gelen eğer yeni paketi kaldırıp bu sorunu çözmek ise, ben bunu yum'dan istedim ve hummalı bir çalışmadan sonra bağımlılıkları çözerek bana, yaklaşık olarak 1.2 Gbyte ek alan kazandıracağını söyledi çünkü gnutls'ye bağlı paketlerin miktarı bayağı fazla. Yani yum kısacası sistemimin içindeki paketleri sırf bu durumu düzeltmek için kaldıracağını ve beni tüm o alıştığım konfordan men edeceğini söyledi.  Bunu pek sevmedim açıkcası. 

Başka bir seçenekte olarak şu sunulmuş. "yum distro-sync" komutu ile orjinal paketlere geri dönmek? Bunu uyguladığımda, yum bir önceki gibi bol miktarda paketin sistemden kaldırılıp DVD içindeki orjinalleri ile değiştirileceğini söyledi (downgrade işlemi) VLC kurulumu yapmak için biraz zaman harcamıştım ve onu kaybetmek istemiyorum. Yanlış anlmayın film izlemek için değil. Screen Recording özelliği için. Belki duymamış olabilirsiniz ama VLC'nin  aynı zamanda screen capture / record özelliğide var. 

Peki şuna ne dersiniz? Rpm ile bağımlılıklarını görmezden gelerek bu paketi  kaldırmaya çalışıp sonrada Red Hat'ın DVD'de verdiği paketi kursak olur mu?


  • # rpm --nodeps -e gnutls

Sonra da;

  • yum   localinstall   gnutls    gnutls-devel

diyerek eksikliği hissedilmeden gnutls paketini sisteme kuralım.

Hepsi bu sonrasında yum ile libvirt ve KVM için gerekli olan diğer paketleri kurabiliriz.

10 Ağustos 2012 Cuma

CentOS 6 ve Red Hat 6 üzerinde 64 bit Dynamips


       Merhaba

       Rhel6 veya CentOS 6 üzerinde Dynamips kurulumu ile ilgili yaşadığım sorunu paylaşmak istedim. Bilmenizi isterim ki öyle yum install diyip işin içinden çıkarım diyorsanız hevesiniz kursağınızda kalacak. Ne yazık ki Dynamips paketinin x86_64 (amd64) sürümü yok. Bu yüzden onu başka bir yerden edinmeniz gerekecek. Mesela şu link işinizi görecektir. Ya da rpm-build komutuyla yeniden derlemek için şu paketi indirebilirsiniz. Olmadı make ile derlemek için, şunu deneyebilirsiniz. Unutmadan make komutunu verirken "DYNAMIPS_ARCH=amd64" demeniz gerek.

25 Şubat 2011 Cuma

Taşınabilir bir Debian Squeeze

       
       Merhaba.
       Şu aralar var olan Usb diskimde hiç yer kalmadığı için kendime bir Usb disk almak istiyordum. Bir mağazaya gidip taşınabilir disklerin arasından 2.5" Western Digital 500 Gbyte Usb(2.0 & 3.0) disk aldım. Disk aynı zamanda Usb 3 bağlantılarını da destekliyor. Geleceğe yatırım yapalım değil mi? Uzunca bir süreden bu yana taşınabilir harddiskler üzerinde çeşitli Linux dağıtımları kullanıyorum. Şu ana kadar bu konuda kullanıcı dostu olarak niteleyebileceğim tek dağıtım Ubuntuydu. Ancak bazı servislerle yaşadığım problemler nedeniyle Ubuntu, bana artık o kadar da kullanışlı gelmiyor. Denemesini yaptığım bir çok dağıtım arasında tabi ki Debian da var. Ama ne yazık ki Debian 5 Lenny'nin sahip olduğu eski paketler ve güncelliğini yitirmiş driver'lar nedeniyle testlerde pek de başarılı bir sonuç elde edememiştim. Hata bende ama yine de suçu Debian'a atacağım. :) Bkz: “it sevdiği deriyi yerden yere vururmuş.” Bu konuda BSD listesini de yoklamadım dersem ayıp olur. En başarılı sistem Grub ile birlikte çalıştıracağınız OpenBSD ama bu başka bir yazıya konu olacak türden bir haber. Bunu şimdilik es geçelim.
        Taşınabilirlik de nedir? Bilgisayarınızı yanınızda taşımak istersiniz, çünkü her şey onun içindedir. Kullanmak istediğiniz tüm programlar, dökümanlar, muziğiniz, foroğraflarınız... Saymaya devam etmek mümkün ama sayılacak şeylerin bitmesini umud etmek yanlış. Bu liste uzar gider. Bir dizüstü bilgisayarı yanınızda taşımanın da iyi ve sıkıcı (hatta bezdirici) yanları vardır. Ayrıca neredeyse tüm dökümanlarınızı, internette bir yerde tutuyor da olabilirsiniz.  Bazı zamanlarda ben de acaba bir dizüstü alsam mı diye düşünmüyor değilim ama yolculuklarda sırtımda taşımak için daha basit bir ve daha hafif bir şey istiyorum. Ne yazık ki performans noktasında hafiflik istemek makul değil. Hem hafif hem de performanslı bir şey ise "pahalı" sınıfına giriyor. Eee şimdi ne yapacağız? işte benim bu yazıda size bir önerim var. Taşınabilir bir disk -hızlı veri aktarımı yapabilen yeni usb stickler de olabilir- üzerine Debian Squeeze kuralım ve bunu herhengi bir yerde herhangi bir bilgisyara takıp çalıştıralım. Hayatımızı mecburiyetlerden kurtarmak adına bağımlılıklarımızdan birini daha azad edelim.
        Şimdi Debian 6 Squezee deneme zamanı. Taşınabilirlik göz önüne alındığında dikkat edilmesi gereken bir iki önemli nokta var ki, sanırım bu yüzden saatlerimi harcamışlığım var. İlki ve size de tavsiyem asla 64 bitlik sürümleri yüklemeyin. Bu şekilde bir yükleme herzaman çok çekirdekli bir bilgisayar bulmak zorundasınız demek olur. Taşınabilirliğin önündeki en büyük engellerden ilki bu! İkincisi ise asla özelleştirmeler yapmamaktır. Mesela nasıl özelleştirmeler? Asla ekran artı driver'ı yüklememek, sisteminizi boot ettiğiniz makinada o makinaya özgü değişiklikler yapmamak gibi.
        Artık neye ihtiyacımız var biliyorsak başlamaya da hazırız demektir. Debian 6.0 i386 DVD-1 'i indirelim ve bir DVD ye yazalım. (Not: Bu nokta da DVD 'yi yazdıracak yer bulamamıştım ama neyse ki Yonca var. "Teşekkürler Yonca" demek istiyorum. ) Normal bir kurulum ile bu kurulumu ayıran bir tek özelliği var. Kurulumun sonunda ki, sistemi yüklemek için kullanılacak olan grubun kurulum ve yapılandırma kısmı. Bildiğiniz gibi Debian 6 da ve Ubuntu'nun (9.10 ve sonrası) güncel sürümlerinde Grub2 default olarak geliyor ve kurulumu yapılıyor. Debootstrap ile yaptığınız kurulumlarda da durum aynı. Fakat bizim için bu pek de iyi bir haber değil zira, Grub2 taşınabilirliği pek de desteklemiyor. Belki de destekliyordur da, ben bu konuda yeterli araştırmayı yapmamışımdır. Taşınabilir sistemler olması için kurduğum Ubuntu ve Debian'ın grub 2 yüzünden boot esnasında kerneli yükleyemediklerini gördüm. Bunun grub2 'de bir çözümü var mı bilmiyorum ama bilen varsa lütfen beni de biligilendirsin. Kurulumun dahili bir harddiske yapılması ile bir Usb diske yapılması arasındaki fark tek Grub2'den Grub-legacy olarak anılan eski gruba geri dönmek ile ilgili. Kurulum esnasında sisteminiz size gurbun hangi harddiske yapılacağını sorarsa ona olması gereken diski göstermelisiniz. Olması gereken? Evet haklısınız, bu çok kapalı bir cümle oldu buna biraz açıklık getirelim. Siz bilgisyarınızı açmak için düğmeye bastığınız da sistem çeşitli testler yapar. Bios olarak bilinen sisteminizin çevresel aygıtlarını işlemci ile haberleştiren donanımları denetleyen ve açılış işlemlerini yürüten o güzide chip aslında işlemciye çalıştıracağı ilk kodları sunan ve hangi diskin açılacağını da söyleyen yapılandırmayı saklar. Her ne kadar bunun sıralamasını siz değiştirebiliyor olsanız da bunu işlevsel kılan aslında biosudur. 2005 yılından sonra çıkan tüm bios yazılımları Usb disklerden boot etmeyi de destekliyorlar. Daha başka boot seçenekleri de sunulduğunu belirtmeliyim. Olması gereken kısmına geri dönelim. Hangi disk? Evet bu nokta da kullandığımız diskin bios açısından sıralamadaki yerine bir bakmak gerek. Bunu yapmanın kolay yolu şu. Çalışan bir Cd-Dvd ile sistemi boot edip konsol üzerinden aşağıda ki komutu çalıştırmak.

# fdisk -l

Çıkan liste de sda sdb ve sdc gibi sıralamalar göreceksiniz. Her sıralama aslında o fiziksel diskteki partition'ları içeren bir listedir. Mesela benim sistemimdeki çıktı şöyle.

Disk /dev/sda: 80.0 GB, 80025280000 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x85f8b5d6

Device Boot Start End Blocks Id System
/dev/sda1 1 1571 12619026 7 HPFS/NTFS
/dev/sda2 * 1572 2876 10482412+ 83 Linux
/dev/sda3 2877 3137 2096482+ 82 Linux swap / Solaris
/dev/sda4 3138 9729 52950240 f W95 Ext'd (LBA)
/dev/sda5 3138 8945 46652728+ 7 HPFS/NTFS
/dev/sda6 8946 8951 48163+ b W95 FAT32
/dev/sda7 ? 84091 159235 603586563+ 7 HPFS/NTFS

Disk /dev/sdb: 500.1 GB, 500074283008 bytes
255 heads, 63 sectors/track, 60797 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000521ab

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 9792 78654208+ 83 Linux
/dev/sdb2 9793 9984 1542240 82 Linux swap / Solaris
/dev/sdb3 9985 23039 104864287+ 83 Linux
/dev/sdb4 23040 60797 303291104+ 5 Extended
/dev/sdb5 23040 36094 104864256 83 Linux
/dev/sdb6 49150 59593 83891398+ 83 Linux
/dev/sdb7 59594 60797 9671098+ 83 Linux
/dev/sdb8 36095 49149 104862720 83 Linux

Liste de aslında iki farlı disk ve o disklerin sahip olduğu partitionlar -parça da denilebilir- var. Benim kullandığım disk sdb olarak isimlendirilmiş. Bu diskin ilk parçası boot edelebilmesini sağlayacak şekilde işaretlenmiş. O halde ben sisteme grub kuracağım zaman /dev/sdb olarak göstermeliyim hedefi. Kurulum için diskin hangi kısmını da seçtğime göre devam edebilirim. Tabi bunu kuruluma başlamadan önce tespit etmek iyi olacaktır.
        Linux kerneli, yukarıdaki listeyi oluştururken disklerin donanımsal olarak bağlı oldukları bağlantı noktasını ve buna göre konumlarını baz alır. Oluturulan listeye Bios dan gelen sıralama bilgisi girmez. Bios'un da elinde bir liste vardır. Ama o daha değişkendir. Bios da diskleri, bağlantı noktasına göre sıralayabilir ama bunu yerine boot edilecek olanı ilk disk olarak kabul ederek listeler.
        Sistemde bir diskin boot edilebilmesi için boot sector içerisinde bir boot programı -mesela grub- yüklenmiş olmalı. Nerede mi? Bunu da açalım. Her diskin yazılabilir alanının dışında hatta bu alanın en başında boot sector olarak adlandırılan bir alan vardır ve toplam boyutu 512 byte'dır. Küçük mü? Evet küçük. IPv4'ün tüm dünyaya yüzyıllaca yeteceğini düşünmüş insanların bunu da yeterli görmesi aynı zamana denk geliyor sanırım. Ya da o zamanlar bu büyük bir sayıydı. 20 Mbyte'lık disklerin bitmek-tükenmek bilmeyen bir hafızaya sahip olduğu düşünüldüğü zamanlarda 512 Byte'ın da anlamı vardı. Şimdi ise bizi kısıtlayan başka bir standart. Her neyse... Bu 512 byte'lık alana, diskin hangi
bölümünün boot edileceği, disk üzerinde ki birincil -primary- parçaların adresleri ve boot programı sığıyor. Alan biraz küçük olduğu için “sığıyor” demeden önce sınırları belirtmek gerekli. En fazla 4 tane birincil disk bölümü adresi yazılabiliyor. Neden bir diskte, primary partition sayısının en çok 4 olabileceği sorusuna cevap olacak açıklamayı da yapmış olduk dolaylı olarak. Bu durum çözümsüz mü? Hayır! Uzatılmış disk bölümleri ile sayıyı artırmak mümkün.
          Boot sector konusunu da açıklığa kavuşturduktan sonra, bazı önlemler almanız içi sizi bilgilendirmeliyim. Bir diskin boot sector'una her işletim sistemi kendi önyükleme programını yazar. Bu durumda kuracağınız işletim sisteminin, kurulumu yapmaya başlamadan önceki sistemleri de içine alacak olan bir program mı değil mi diye düşünmek gerekli. Grub, neredeyse her sistemi boot edebilir. (Neredeyse...) Ama Windows ve Mac sistemleri sadece kendi ürünlerini -kendi ürünlerinin hepsini de değil- boot edebilecek bir boot programına sahiptirler. Olası durumlarda bir B planına sahip olmak iyidir. profesyonellik açısından da önemlidir. Size tavsiyem kuruluma başlamadan önce var olan diskin boot sector kısmının bir yedeğini almanız yönünde. Nasıl mı? Daha önce fdisk ile hangi diskin sistemin yerel diski olduğuna bakmayı öğrendiğimize göre aşağıda ki komut içerisinde renkli kısmı kendi sisteminize göre değiştirebilir ve uygulayabilirsiniz. Benim kullandığım makinada ki yapılandırma için aşağıdaki komut yeterli.

sudo dd if=/dev/sda of=old.grub bs=512 count=1

Bu komut der ki;
/dev/sda -yerel disk- üzerinden başlangıçtan itibaren ilk 512 byte'lık kısmı oku ve bunu “old.grub” isimli dosyaya yaz. İşte yedeğimiz de hazır. Ama yanlışlıkla yerel diske kurulum yaparsanız bu durmu da yapacak fazla bir şey yok. Yine de aldığımız yedek güvenli bir yere alınmalı. Özellikle de live Cd-Dvd kullanıyorsanız bu yedeği kalıcı bir yere alın.

Yedeği geri yazdırmak gerekirse peki?

sudo dd if=old.grub of=/dev/sda bs=512 count=1

Yukarıda ki komutlar bana Debian 6 kurulumda lazım oldu çünkü ben daha sistemdeki yerel diski tespit etmeden Debian Grub2'yi kurup, kurulumu tamamlamıştı. Şanslıydım çünkü yanı başımda aynı donanıma ve yapılandırmaya sahip 15 tane daha bilgisayar vardı. Onlardan birisine bağlanıp diskin boot sector'ünün bir kopyasını yukarıdaki komutla alıp yerel diski eski aline getirdim. Ama kendi diskimde grub yoktu bu kez de. Yazıyı yazma sebebim de bu desem yalan olmaz herhalde. Grub2 yi kurdum ama akşam evde bilgisayara takıp boot etmediğini görünce -evet o da bir başkasının bilgisayarı- grub2 den grub-legacy' e geçmek gerektiğine karar verdim. Öncelikle ne olur ne olmaz diye bir yedeğini alalım var olan Grub2'nin.

mv /boot/grub/ /boot/grub.old

Not: Komutlara “sudo” eklemek gerekebilir.

Sonra da eski grubdan kurtulalım.

sudo apt-get purge grub grub-common

Yenisini sisteme kuralım.

sudo apt-get install grub-legacy  

Bağımlılkları ile birlikte eski grub paketi kurulacaktır. Sonrasında /boot dizini altına grub/ dizinini oluşturalım.

sudo mkdir /boot/grub
sudo chmod 755 /boot/grub/

Not: “grub” dizini root'a ait olmalıdır.

Artık Grub'u diskin başına yazdırma zamanı geldi.

sudo grub-install /dev/sdb

/dev/sdb yerine /dev/sdb1 ya da /dev/sdb2 yazmanız gerekebilir. Bunu yapabilmek için diski biçimlendirirken boot edilecek partitionu değiştirmiş olmanız gerekir. Ama default olarak boot edilecek olan kısım diskin başlangıcı olan yerdir. Yani /dev/sdb. Kurulum tamamlanınca sorun olup olmadığını anlamak için çıkan ileti de aşağıda ki satırı görmelisiniz.

“No error were reported”

sudo update-grub

komutuyla da menu.lst dosyasının oluşturulmasını sağlayalım.

Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-2.6.32-5-686
Updating /boot/grub/menu.lst ... done

Sizde bu çıktıya benzer bir çıktı aldıysanız ve kernelin yerini bulup, menu.lst dosyasını oluşturduğunu söylüyorsa olmuş demektir. Sonra da herhangi bir metin editörü ile bu dosyayı açıp bir göz atalım.

Bir iki nokta var bu dosyada. Birlikte inceleyelim. Benim dosyamda aşağıdaki işletim sistemleri listesinde sadece aşağıda ki bölüm var.

title Debian GNU/Linux, kernel 2.6.32-5-686
root (hd1,0)
kernel /boot/vmlinuz-2.6.32-5-686 root=UUID=dc3a58f9-6aad-45bf-9c14-96b0676bb49e ro
initrd /boot/initrd.img-2.6.32-5-686

Sistem kerneli bulup dosyaya yerini işlemiş. Ama ikinci satır da bulunan root kısmı bu diskin bios tarafından algılanan 2. sırada ki disk olduğunu söylüyor. Bu diskin bağlandığı nokta ve sistemde takılı durumda ki disklerin sayısı ile ilgili. Şu ahliyle bırakırsam sistem bu diski boot edemeyecektir. Çünkü bu dosya da boot edilecek diskin sistemin 2. diski ve onun üzerinde bulunan ilk partition olduğu yazılı. Ama biz zaten bios kısmına girerek diskimizi listenin başına alıyoruz ve o zamanda diskimiz, biosa göre sistemin ilk diski ünvanını alıyor. O halde bu dosya aslında olmayan bir diski boot etmeye çalışıyor.
Bunu da şöyle düzeltelim. İkinci satıra gidip onu silelim. Onun yerine diskin o partitionuna ait UUID numarasını ekleyelim. Sonunda şöyle görünecek yani.

title Debian GNU/Linux, kernel 2.6.32-5-686
uuid dc3a58f9-6aad-45bf-9c14-96b0676bb49e
kernel /boot/vmlinuz-2.6.32-5-686 root=UUID=dc3a58f9-6aad-45bf-9c14-96b0676bb49e ro
initrd /boot/initrd.img-2.6.32-5-686

Artık diskin ilk bölümünü sisteme UUID -benzeri olmayan bir numara- ile gösterdik. Elindeki listee bakıp hangisini kastettiğimiz anlaması zor olmaz. UUID linux da kullanılan bir sistem. Diskler biçimlendirilirken her parçaya benzersiz bir kod üeritilip üzerine eklenir. Disklerinize ait olan UUID leri görmek için

sudo blkid

komutunu kullanabilirsiniz. Artık herşey hazır.


          En baştan belirtmeliydim ama şimdi de söylesem olur sanırım. Eğer burada okuduklarınızdan bir şey anlamadıysanız lütfen uygulamaya kalkışmayın. Doğabilecek sıkıntılardan dolayı sorumluluk almayı reddediyorum. Disleksi krizinin içerisinde yazdığım bu yazıyı başıma gelen bir olay üzerine hazırladım. Şu an için yazım hatası var mı diye kontrol etme lüksüne sahip değilim ama normale dönünce ilk iş olarak bunu yapacağım. İşinize yaraması dileklerimle...

10 Şubat 2011 Perşembe

Debian üzerinde SSH ile Ekran Görüntüsünü Aktarmak

   
       Linux hayatımızın bir parçası olduğundan beri eminim hepimiz çok şey denemiş ve öğrenmişizdir. Bu defa da SSH tarafına yelken açalım. Denetimimiz altında bulunan makinalardan bir başkasına bağlanalım ve neler yapabiliyoruz bi görelim. Yaparken de öğrenmeye devam.

Ubuntu & Debian ile default gelen ssh sistemi yerine OpenSSH paketlerini kurarak başlayalım. 

#sudo apt-get install openssh-server openssh-client 


Sisteminizden bazı paketlerin kaldırılacağını ve yerine bazı yeni paketlerin kurulacağını söyleyen uyarıdan sonra;

#sudo vi /etc/ssh/sshd_config

dosyasının içerisinde, aşağıdaki satırın önündeki  "#" işaretini kaldırın ve şöyle görünmesini sağlayın. Ben editör konusunda kişisel tercihimi Vim'den yana kullanıyorum ama siz başka biri ile de aynı şekilde dosyayı değiştirebilirsiniz.

X11Forwarding yes

Bu satırı değiştirdikten sonra dosyayı kaydedip çıkın. Makinanızda aşağıda ki komutla bir key çifti oluşturun.

#ssh-keygen

Komutu uygulama esnasında sizden bu keyi kaydetmek için bir yol belirtmenizi, bu key için bir şifre girmenizi isteyecek. Default hellerinde kalmalarında herhangi bir sıkıntı olmaz. Şifre girip, girmemek size kalmış ama gireceğiniz şifreyi daha sonra bağlantı yapacağınızda sizden isteyecektir. Eğer bir script yardımıyla düzenli olarak aynı noktalar arasında bağlantı yapmak ve hedef makinalarda otomatize olmuş işlemler çalıştırmak gibi bir niyetiniz varsa burada bir şifre girmezseniz daha iyi olur. Böylece yazacağınız script & programlar, kolayca karşı tarafa bağlanıp gereken işlemleri yapabilirler.

Yukarıdaki komut ile default olarak RSA tipi şifreleme (encryption) ile bir çift key oluşturulur ve bit derinliğide 2048 bittir. Eğer isterseniz bu encryption tipini DSA ile değiştirebilirsiniz ancak DSA da maksimum 1024 bit derinlikte şifreler oluşturabilirsiniz. Sistem şifre oluştururken /dev/urandom, /dev/random gibi aygıtlardan gelen verileri ayrıca mouse hareketlerini, kullanıcıya ait bilgileri de (başka kaynaklar da var) ele alarak benzersiz bir şifre oluşturur. Oluşturduğu bu key çiftleri için size bir parmak izi sunar. Yani ekranınıza text olarak hazırlanmış bir çerçeve içerisine ascii karakterler ile oluşturulmuş bir resim basılır. Olur da bu keyi değiştirmek isterseniz aynı işlemi tekrarlamanız yeterli olacaktır. Bu durumda mevcut key çiftinin üzerine yazacağını söyler. Yeni şifrenizi kullanmak için onaylamanız yeterli olacaktır. Oluşturulan anahtar çiftlerine, dafault kayıt yeri olan, kullanıcı dizini altında ki ".ssh" dizini içerisinden ulaşabilirsiniz. Burada "id_rsa" ve "id_rsa.pub" isimli iki dosya ve "known_hosts" isimli bir de dizin bulunur.Sırasıyla, id_rsa sizin private (kişisel); id_rsa.pub ise sizin public (paylaşılabilir) keyinizdir. Keyler için son birkaç şey daha! Key çiftleri bir birlerini açabilir. Her ikisi de eşit öneme sahiptir. Matemetiksel olarak bu keyler birbirlerine bağlıdırlar. Birisi ile şifrelenen diğeri ile açılabilir. Hangisi olduğunun önemi yoktur. Bu keylerden birisini dağıtıp, diğerini kendinize saklayabilirsiniz. Ancak sisteminiz, kendisi otomatik olarak bunu yaptığı için bu duruma müdahale etmeyin ve id_rsa.pub isimli keyin dağıtılabilir key olduğunu ve sistemin bunu dağıtma, diğerini de "id_rsa.pub" ile şifrelenmiş paketleri açmak için kişisel key olarak kullanma eğiliminde olduğunu unutmayın. Key dağıtma işini elle yapmak dikkat ister. Şifrelemek için kullanılan anahtar ile aynı paketi açamazsınız. Açmak için diğer anahtara ihtiyacınız var.

Sonraki adıma geçmeden önce SSH ve çalışma şekline biraz değinelim. Bir makinaya bağlanmak istediğinizde, makinanız önce karşı tarafla bağlantı kurar ve onun parmak izini alır. Parmak izinin değiştiği durumlarda var. Mesela siz sizteminizi silip yeniden yüklediğinizde -formatlamak- veya yeni bir key çifti ürettiğinizde bu parmak izi de değişir. (Aslında bu noktada IP adresinin de önemli bir görevi var biraz daha sabır.) Makinanız, hedefler ile ilk kez yaptığınız bağlantılar için şuna benzer bir çıktı üretir ve sorar; "Bu parmak izini bilinen hostların arasına kaydedeyim mi?"

$ ssh root@192.168.0.75
The authenticity of host '192.168.0.75 (192.168.0.75)' can't be established.
RSA key fingerprint is 16:41:be:8e:92:70:c2:74:4f:37:c3:9d:c3:ef:85:a1.
Are you sure you want to continue connecting (yes/no)? 

"Yes" cevabını vermeniz ile birlikte  karşı tarafın RSA keyine ait parmak izi kullanıcının dizini altında bulunan ".ssh/known_hosts" dosyasına kaydedilir. Evet demeniz daha sonra yapacağınız bağlantılar için önemli.

Warning: Permanently added '192.168.0.75' (RSA) to the list of known hosts.

Parmak izinin ne anlamı olduğuna değinelim. Bu parmak izi bir saldırı tekniği olan "aradaki adam" -Man in the middle- saldırısından korunmak için tasarlanmıştır. Her makinanın kendine ait bir parmak izi vardır ve bu parmak izinin oluşumuna etki eden çok sayıda da etken vardır. (İşletim sistemi, sistemin kuruluş zamanı, bağlandığınız interface, donanımı vs.) Yukarıda ki soruya evet dediğinizde karşı makina ile yaptığınız ilk bağlantıda alınan parmak izi ile o anki parmak izi karşılaştırılır uyumluluk sağlanıyorsa bağlanmak için sonraki adım olan key değiş-tokuşu yapılır. İşte SSH'da IP adresinin gerçek önemi burada ortaya çıkıyor. İlk bağlantıda karşı tarafın parmak izi alınır ve bu parmak izi bir dosyada saklanır demiştim. Bu parmak izi filan IP numaralı makinaya aittir diye işaretlenerek saklanır. Karşı taraftaki makina ip adresini değiştirirse bağlanmak için gereken ilk adım da elinizdeki IP adresi de farklı olacağı için, hedef makinanın parmak izini yeniden bilinen hostlar arasına dahil eder ve yola devam edersiniz. Ama ya Ip adresi değişmemiş fakat hedefin parmak izi daha evvel alınan parmak izine uymuyorsa? Basit anlamda parmak izini değiştirebilecek 2 ihtimal var.
  • Hedef üzerinde köklü bir değişiklik yapılmıştır. (Format vs.)
  • Hedef ile aranızda, trafiği dinleyen birisi vardır. (Man in the middle)
 
 Man in the middle


Bu durumda makinanız sizi uyarır. Aşagıda bir örneği var.


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
27:65:da:63:29:e0:e6:82:83:9c:e5:99:24:db:23:e5.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:5
RSA host key for 192.168.0.55 has changed and you have requested strict checking.
Host key verification failed.
lost connection


Bağlanmaya çalıştığınızda (sftp, ssh veya scp), makinanız bu bağlantının güvenli olmadığını bu yüzden bağlantı yapılamayacağını yukarıda ki gibi ifade eder ve bağlanmaya engel olur.




Burada anlatmayı hedeflediğim şey ile doğrudan bağlantılı olmasına rağmen konunun çok dışına çıkacağından "Man in the middle" konusunu burada keseceğim ve hiç bir sorun olmadan ve karşıya bağlanmamızı sağlayacak senaryo üzerinden gideceğim.



Karşı tarafa login olmak için şu komut yeterli olacaktır.

#ssh root@192.168.0.80

Sonrasında hedef üzerinde "root" kullanıcısına ait şifreyi girerek login olabilirsiniz. Buna biraz daha yakından bakalım. Ilk bağlantıyı yaparken aldığımız Ip adresine karşılık parmak izi ile bağlanırken aldığımız parmak izi aynı ise bu hedefin düşündümüz ve bağlanmak istediğimiz kişi olduğunu artık biliyoruz. Doğal olarak artık public keyleri bir birimiz arasında paylaşabiliriz. Public keyleri verdiğimiz anda şunu söylemiş oluruz.
"Artık bana yolladığın paketleri, sana verdiğim key ile şifrele. Ben de sana yolladığım paketleri bana verdiğin key ile şifreleyeceğim."
Paketlerimiz olması gerektiği gibi şifreli olarak gidip gelecek. Bu nokta da bir ilave daha yapayım. Tcp/IP de bağlantı kurulunca bağlantı kuran taraflar arasında bir session (oturum) açılır. SSH bu session için ilave olarak 768 bitlik bir key üretir ve paketleri bu key ile tekrar şifreler. Dahası her 1 saat için, bu key yeniden oluşturulur ve yenisiyle değiştirilir.

       Herhangi bir sorun olmadan karşı tarafa bağlandığımıza göre işin yarısını hallettik demektir. İyi haber, sıradan bir SSH oturumu kurmak için buraya kadar anlatılanlar yeterlidir. Sadece 2-3 satır komut ile yapılan iş aslında ne kadar da uzun değil mi?
       Karşı taraftaki makinaya bağlandığımıza göre işlemleri bu bağlantı üzerinden de yapabiliriz. Kendimize ait olan public keyi hedef makinanın bağlanılan kullanıcısına ait "home" dizini (root oturumunda "/root", diğerleri için /home/"user_id") altında bulunan .ssh/ dizini altına "authorized_keys" isimli bir dosya oluşturup içerisine kaydedelim. Burada Vi kullanıcıları için kopyalama ve yapıştırma işlemlerinde dikkat edilmesi gereken bir ayrıntı var. Yapıştırmadan önce mutlaka "insert" moda geçin. Yoksa bağlanamazsınız. Bağlanmaya engel olan vi değil, insert moda geçmeden keyi yapıştırmanız sebebiyle bu key içerisinde i,a gibi insert moda geçiş yaptıran karakterlere gelene kadar ki kısımların dosyaya alınmaması nedeniyle eksik key aktarmanızdır.
       Sorun yoksa artık bağlanmak için ssh root@"hedef_makina_IP" yazınca sizden login olmak için şifre istemeyecek ve hemen bağlanacaktır.
Bu sayede bundan sonra bu iki makina arasında kullanacağınız scp ve ssh komutları için de şifre girmeniz gerekmeyecek.
       Peki ya ekran görüntüsü?  Sanırım bu, anlatım içinde ki en kolay yer. Bağlantı yaparken atık komutu aşağıda ki şekilde verirseniz, çalıştıracağınız komutlarla karşı tarafın ekranı üzerinde hiç bir şey olmadan tüm görüntü size aktarılacak. Mesela firefox'u çalıştırdığınız da karşı makina internete bağlanacak ama görüntü sizde olacak. İş yerinizde bazı engellemeler yüzünden istediğiniz gibi sörf yapamıyorsanız bu iyi bir çözüm olabilir. Tabi bunu yapmadan önce evdeki makinanıza erişebiliyor olmanız da gerekli ki o da başka bir yazının konusu. Örnekleri çoğaltmak mümkün.
Windows üzerinden de bu yapılabilir ama putty isimli programın Xorg paketlerini içeren bir kopyasını kurmanız gerekli. Bağlanacağınız hedef te Xserver o an için çalışmıyor olsa bile -Xserver kurulu ama çalışmıyor diye düşünün- bunu yapabilirsiniz. Sanırım bu da server sistemlerine hitap eden bir çözüm. Serveriniz de XServer kurulu olsun ama GDM yada onun yerine kullanacağınız bir program kurmazsanız açıldığında direkt olarak grafik ekrana geçmeye çalışmaz. Böylece siz de serverinize bağlanıp grafik ekrandan onu yönetebilirsiniz.  Say say bitmeyecek nimetleri var sanırım SSH'ın. Komutu da yazalım ki eksik olmasın :)

#ssh -Y root@"hedef_IP"

Üzerinde denediğim sistemler. Debian, Ubuntu ve Red Hat.

5 Şubat 2011 Cumartesi

OpenBSD üzerinde Bluetooth ile internete bağlanmak

 
 
      Artık benim de Nokia 6233 telefonum üzerinden bluetooth ile internet 
bağlantım var. İşte burada da yapılması gereken işlemlerin bir listesi var. 
Herşeyden önce Bluetooth cihazınızın OpenBSD tarafından tanındığından emin 
olun. Telefonunuzun yapılandırmasının düzgün yapıldığını ve telefonunuzla 
internete bağlanabildiğinizi kabul ediyorum. Burada ben MSI Bluetooth 
Adapter isimli cihazı kullandım. Ayrıntılar aşağıda.
 
$ dmesg | grep ubt
   ubt0 at uhub4 port 1 "Micro Star International Bluetooth" \
   rev 2.00/32.64 addr 2

"bluetooth-tools" yazılımını kurarak başlayalım. Bu sayede btconfig, bt pin ve 
rfcomm_spdd gibi paketleri de kurmuş olacağız ki, bunlar da bize lazım olacaklar.

Bluetooth adaptörünü takın ve interface etkin hale getirin. 
Daha sonra da adaptör üzerinden telefonunuzu bulmaya çalışın. Telefonunuz 
bluetooth taramalarında görünecek şekilde ayarlanmış ise aşağıda ki gibi onu 
görebilmelisiniz. 
 
  $ sudo btconfig ubt0 up
   bthub0 at ubt0 00:21:85:b2:51:41
   $ btconfig ubt0 inquiry
   Device Discovery from device: ubt0 .... 1 response
     1: bdaddr 00:1d:e9:e5:ad:01 (phone)
      : name "Nokia 6233"
      : class: [0x5a0204] Cellular Phone <Networking> <Capturing> <Object Transfer>
           <Telephony>
      : page scan rep mode 0x01
      : clock offset 27997 
 
Telefonunuzun "bdaddr" değerini -bluetooth mac address- /etc/bluetooth/hosts 
dosyasına ekleyin. Bu sayede her bağlantı yapmak istediğinizde taramanız 
gerekmeyecek. 
 
$ sudo echo "00:1d:e9:e5:ad:01 phone" >> /etc/bluetooth/hosts 
 
"bthcid" programını çalıştırın ve btpin komutu ile aşagıdaki gibi bir pin ürettirin.
your phones' Dial Up Networking (DUN) service using rfcomm_sppd(1). 
Telefonunuza bağlanırken bu pin kodu ile bağlanacaksınız. Sonra da 
rfcomm_spdd komutuyla telefonunuza Dial Up Network (DUN) ile balanın.

   $ sudo /usr/local/sbin/bthcid
   $ btpin -a phone -r -l 4
   PIN: 2701
   $ rfcomm_sppd -d ubt0 -a phone -s DUN
 
Telefonunuzun ekranında bağlantı kurmak için onay isteyen bir soru belirecek.
Az önce oluşturduğunuz PIN kodunu girerek bağlantıyı kabul edin. Artık 
telefonunuza bağlanmış ve iletişim kurabilmiş olmanız gerekli. 

   rfcomm_sppd[16519]: Starting on stdio...
   AT
   OK
   ATI3
   Nokia 6233

   OK

Artık buraya kadar ki kısmının çalıştığını biliyoruz. Bu bağlantıyı bir pty terminal 
ile ilişkilendirebiliriz.
 
$ rfcomm_sppd -d ubt0 -a phone -s DUN -t /dev/ttyp0
$

"pppd" komutu ile bir PPP interface oluşturalım ve bağlanalım.   $ sudo ifconfig ppp0 create

   $ pppd call netcom
   $ ifconfig ppp0
   ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
           priority: 0
           groups: ppp
           inet 89.8.5.99 --> 10.6.6.6 netmask 0xff000000

  Routing Tablonuzu kontrol edin. 
 
$ netstat -rnf inet | grep default
   default            10.6.6.6           UG         0        0     -    56 ppp0

Hangi DNS adresini kullanacağını söyleceğimi bilmiyorum . Ama ben kendi 
DNS sunucumu kullandım. Siz /etc/resolv.conf dosyasına yazacağınız herhangi bi' 
Dns sunucu adresini kullanabilirsiniz.
 
$ sudo /usr/sbin/named
$ sudo echo "nameserver 127.0.0.1" >> /etc/resolv.conf

Yayındayız!

   $ ping -c 4 www.google.comwww.l.google.com (209.85.137.104): 56 data bytes
   64 bytes from 209.85.137.104: icmp_seq=0 ttl=237 time=640.756 ms
   64 bytes from 209.85.137.104: icmp_seq=1 ttl=237 time=595.876 ms
   64 bytes from 209.85.137.104: icmp_seq=2 ttl=237 time=619.887 ms
   64 bytes from 209.85.137.104: icmp_seq=3 ttl=237 time=645.883 ms
   --- www.l.google.com ping statistics ---
   4 packets transmitted, 4 packets received, 0.0% packet loss
   round-trip min/avg/max/std-dev = 595.876/625.600/645.883/19.746 ms

 Aşağıda dosyalarımın içeriği görünüyor. Büyük ihtimalle değiştirmeniz gerekebilir.
Çünkü bazı yerleri fazlalık.
    $ cat /etc/ppp/peers/netcom  # probably don't need all this poop
    /dev/ttypz
    115200
    local
    debug
    #crtscts
    nodetach
    noipdefault
    defaultroute
    lock
    novj
    nobsdcomp
    novjccomp
    nopcomp
    noaccomp
    noauth
    connect '/usr/sbin/chat -f /etc/ppp/peers/chat/umts.netcom'

    $ cat /etc/ppp/peers/chat/umts.netcom
    TIMEOUT  5
    ECHO  ON
    ABORT  '\nBUSY\r'
    ABORT  '\nERROR\r'
    ABORT  '\nNO ANSWER\r'
    ABORT  '\nNO DIAL TONE\r'
    ABORT  '\nNO DIALTONE\r'
    ABORT  '\nRINGING\r\n\r\nRINGING\r'
    ''   \rAT
    TIMEOUT  30
    OK   ATD*99#
    TIMEOUT  10
    CONNECT  ""

Bu yazı OpenBSD/Misc mail listesinden çevirilmiştir. Yazının orjinali buradadır.
Her nekadar bu yazıyı ben çevirmiş olsamda benim dışımda bir kişinin daha bu çevirinin hazırlanması esnasında dolaylı da olsa yadsınamayacak derece de önemli katkısı oldu. Kendisine teşekkürü bir borç bilirim. Not: Henüz adını öğrenemediğim, günlük hayatta sıkça karşılatığımız ve insanlara tanısa da tanımasa da yardım eden birisi.

19 Ocak 2011 Çarşamba

TFTP Server olarak ATFTPD Kullanmak

       
       Merhaba Cisco ve embedded sistemler ile ilgilenen herkesin ihtiyaç duyduğu bir kavramdır "tftp".
Bu yazıyı da Tftp sunucuya ihtiyaç duyduğum bir zamanda hazırladım. Normalde bu gibi işleri Windows üzerinden yürütmek isteyenler için Cisco Tftp Server isimli uygulama yeterli oluyor. Ayrıca kullanımı da ücretsiz ve Wine ile de Linux üzerinde de hizmet verebiliyor. Fakat geliştirilmesi uzunca bir süre önce durmuş ve en son sürümü de 1.1'dir.

 İlk Kan!
       Taşınabilir bir işletim sistemi olması için hazırladığım Linux Usb diskimin üzerinde kullanmak için, yine Cisco Tftp Server uygulamasını kurmuştum ama sistemde başka bir uygulamanın Tftp için rezerve edilen portu kullandığını söyleyerek, çalışmamakta inad etmesi beni kendinden soğutmaya yetti. Şu komutun bu durumda bir çözüm olması gerekirdi ki olmadı.

sudo fuser -kn udp  69

Ayrıca, bana sunduğu bahaneleri geçerli kılacak bir delil olmadığı gibi, klasik bir tftp sunucusu senaryosunda elzem olan "Xinet" bile yüklü değildi.  Buna cevabım çok hızlı oldu ve Atftp Server kurmaya karar verdim.

İntikam soğuk yenen bir yemektir!
Debian ve Ubuntu kullanıcıları için bu iş aslında çocuk oyuncağı. Ama belirtmeliyim ki, önce Xinet ile Tftp/d ikilisini kullanmayı denedim ve bazı sıkıntılarım oldu. Bu belki de tamamen benden kaynaklanıyordur.  

sudo apt-get install atftpd atftp

Kurulum bu kadar. RedHat için öncelikle rpmforce deposunu ve Red Hat DVD'yi sisteme repo olarak ekleyin. Daha sonra da aşagıdaki komutlarla gereken kurulumu yapın.

yum install atftp-server atftp

Debian Squeeze üzerinde bu krulumu yaptığınızda Atftpd hizmeti başta Xinet üzerinden çalışacak şekilde yapılandırılmış oluyor. Bu haliyle de çok kullanışlı olduğunu belirtmeliyim. Aşağıda da standalone olarak kullanabilemek için gerekenler anlatılıyor.

***Standalone olarak kullanmak için konfigurasyon dosyasını şu komutla Debian&Ubuntu üzerinde; 

sudo vi /etc/default/atftp

 açıp en üstte bulunan  USE_INET=TRUE satırını USE_INET=FALSE olarak değiştiriyoruz. Dosyanın en altında bulunan  
/var/lib/tftpboot kısmından da anlaşılacağı üzere program kurulumu yaptığımız esnada sistemimize gelen giden paketler için bir klasör oluşturuldu. Bu klasörü kullanılabilir yapmak için klasörün izinlerini değiştirmek gerekli.

sudo chmod -R 777 /var/lib/atftpboot/

Red Hat içerisinde atftp, Xinet ile çalışıyor. Bu sebeple /etc/xinet.d/tftp dosyasını düzenlemek gerekli. Dosya şu şekilde görünmeli.

service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot
disable = no
}

Şimdi gelecek ve gidecek olan verilerin de bulunacağı klasörü hazırladığımıza göre servisi başlatmak için tek yapılması gereken şu komutu vermek.

sudo atftpd --deamon /tftpboot/

Bu komut ile atftpd programını kendi deamonu ile standalone olarak Xinet'den bağımsız çalıştırıyoruz. Son parametre de gelen ve giden paketler için kullandığımız klasörümüz.

RedHat default olarak /tftpboot klasörünü kullanıyor. Red Hat Xinet üzerinden tftp servisi verdiği için hizmeti kullanmaya başlamadan önce Xinet servisini;

service xinetd restart 

komutu ile yeniden başlatmanız yaptığınız ayarların kullanılmaya başlaması için gerekli.

      Debian&Ubuntuda da hizmet zaman aşımı için verilen süre dolunca -300 saniye- yine aynı şekilde hizmete ait process'i kill ile sonlandırılıyor.  Dosyaların kopyalanmasını başlatmadan önce atftpd servisini yukarıdaki komutla elle başlatmanız gerekli.

      Not: Klasör tercihi size kalmış ama utnutmayın erişim için klasörün izinlerini ayarlamalısınız.

29 Aralık 2010 Çarşamba

OpenBSD Network FAQ Dökümanından çeviri



Merhaba, bu yazı OpenBSD sitesinde SıkçaSorulanSorular (FAQ) sayfasının "Network" başlığının bulunduğu sayfanın çevirisidir.  Sayfanın orjinali şu adrestedir. http://www.openbsd.org/faq/faq6.html

6.1 - Uzaklara Gitmeden Önce...

    Dökümanı okumadan önce ifconfig, netstat ve Kernel Yapılandırma kısmını ya da bir kısmını okumanız, dökümanda anlatılanları anlamanıza yardımcı olacaktır. Eğer bir Network Admin iseniz ve router olarak OpenBSD kullanıyor (veya bunu düşünüyorsanız), IP yapılandırması hakkında şu adreste bulunan Understanding IP Adressing isimli dökümanı okumanızı öneririm. Bu mükemmel belge gerçekten işinize yarayacaktır. Bu belge, birden fazla ağdan sorumlu iseniz, IP adresleri ve network kavramları hakkında temele dair oldukça iyi bir bilgi kaynağıdır.
    Eğer web sunucuları, ftp sunucuları ve Mail sunucuları gibi uygulamalarla uğraşıyorsanız,  RFC Dökümanlarını okumak cidden fayda sağlayabilir. Büyük ihtimalle, tümünü okuyamazsınız. İlgilendiğiniz ya da ağınızda kullandığınız kısımlarını seçip, bunlara öncelik vermeniz daha akıllıca olur. Bu dökümanlar size uygulamaların nasıl çalışmak üzere tasarlandıklarını gösterecektir. RFC'ler internet üzerine sayıları binlerle ifade edilen bir çok standart ve protokolleri ve nasıl çalıştıklarını tanımlar.

6.2 - Network yapılandırması

    Normalde kurulum esnasında OpenBSD network kurulumunuz için bilinmesi gerkenleri öğrenir ve kaydeder.  Ancak, bu sereçte neler olduğunu ve nasıl çalıştığını öğrenmek iyidir. Tüm network konfigurasyonu /etc dizini içinde bir  text dosya kullanılarak yönetilir.

6.2.1 Network yapısını tespit etmek ve ayarlamak


    OpenBSD içerisinde, interface'ler kart tiplerine göre isimlendirilirler, bağlantı tiplerine göre değil. Ağ kartınızı sistemin yüklenmesi esnasında görebilirsiniz, veya açılış işlemleri tamamlandıktan sonra dmesg(8)
komutu yarıdmıyla da görebilirsiniz. Aynı zamanda ifconfig(8) komutuyla da ağ kartınızı görme imkanınız var. Örneğin burada OpenBSD altında fxp(4) olarak adlandırılan, Intel Fast Ethernet kartının dmesg komutuyla elde edilmiş bir çıktısı bulunuyor.

    fxp0 at pci0 dev 10 function 0 "Intel 82557" rev 0x0c: irq 5, address  00:02:b3:2b:10:f7
    inphy0 at fxp0 phy 1: i82555 10/100 media interface, rev. 4

    Eğer kartınızın, OpenBSD altında hangi isimle kullanıldığını bilmiyorsanız http://www.openbsd.org/plat.html adresinden kartınıza hangi ismin atandığını öğrenebilirsiniz. Bu adreste, kartların tamamına yakın kısmına ait bir isim listesi mevcut. Bu listeden kartınızn OpenBSD altında hangi isimle çağrıldığını bulabilirsiniz. Donanımlar, beraberinde bir de numara ile (fxp0 gibi) alfabetik olarak listelere eklenir. Donanımlara kernel tarafından atanan bu numaranın atama işleminde farklı kriterler ve sisteme ait bazı detaylar söz konusudur. Bazı kart ve donanımlar sistem tanılama ve initialize esnasında bulundukları
veri yoluna göre isimlendirilirler. Diğerleri de donanımsal başka kriterlere (donanım kaynakları, MAC vs...) göre isimlendirilmiş olabilir. Aynı zamanda başka donanım ve kartlar için de burada, farklı başlıklar altında alfabetik listelere ulaşmak mümkün. Bu siteye girdiğinizde karşınıza gelecek olan sayfadan kullandığınız platformu  (i386, amd64, sparc, arm, mips vs...) seçerek gereken araştırmaları yapabilirsiniz.

    ifconfig komutuyla ağ kartlarınızın OpenBSD altında hangi isimle kullanıldığını bulamanız mümkün. ifconfig komutu sistemizindeki tüm ağ kartlarını ve komutu verdiğiniz an ki bazı ayarlarını size gösterecektir.

    $ ifconfig
    lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33224
            inet 127.0.0.1 netmask 0xff000000
            inet6 ::1 prefixlen 128
            inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
    lo1: flags=8008<LOOPBACK,MULTICAST> mtu 33224
    fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
            address: 00:04:ac:dd:39:6a
            media: Ethernet autoselect (100baseTX full-duplex)
            status: active   
            inet 10.0.0.38 netmask 0xffffff00 broadcast 10.0.0.255
            inet6 fe80::204:acff:fedd:396a%fxp0 prefixlen 64 scopeid 0x1
    pflog0: flags=0<> mtu 33224
    pfsync0: flags=0<> mtu 2020
    sl0: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 296
    sl1: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 296
    ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
    ppp1: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
    tun0: flags=10<POINTOPOINT> mtu 3000
    tun1: flags=10<POINTOPOINT> mtu 3000
    enc0: flags=0<> mtu 1536
    bridge0: flags=0<> mtu 1500
    bridge1: flags=0<> mtu 1500
    vlan0: flags=0<> mtu 1500
            address: 00:00:00:00:00:00
    vlan1: flags=0<> mtu 1500
            address: 00:00:00:00:00:00
    gre0: flags=9010<POINTOPOINT,LINK0,MULTICAST> mtu 1450
    carp0: flags=0<> mtu 1500
    carp1: flags=0<> mtu 1500
    gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
    gif1: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
    gif2: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
    gif3: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
   
Yukarıdaki örnekte de gördüğünüz gibi ifconfig(8) komutu sistemde takılı konumdaki ağ kartlarımız hakkında bize bir çok bilgi verdi. Yukarıdaki örnekte ağ kartının network ayarlarının yapılmış olduğu açıkca görülüyor. Bu kart açık, çünkü bir ip adresi, bu adres için bir netmask değeri ve bir de broadcast değeri atanmış durumda. Aynı zamanda UP ve RUNNING bayrakları da "set" (Boolean matematiği ile "1" veya "True") edilmiş durumda. Son olarak varsayılan olarak etkin gelen bazı arabirimler daha göreceksiniz. Bunlar çeşitli servisler için çalışan bazı sanal arabirimlerdir. Aşağıdaki satırlar bu arabirimleri açıklayan manual sayfalarına birer link de içeriyor.

    * lo - Loopback Arabirimi http://www.openbsd.org/cgi-bin/man.cgi?query=lo&sektion=4
    * pflog - Packet Filter Log Arabirimi http://www.openbsd.org/cgi-bin/man.cgi?query=pflog&sektion=4
    * sl - SLIP Network Arabirimi http://www.openbsd.org/cgi-bin/man.cgi?query=sl&sektion=4
    * ppp - Point to Point Protocol http://www.openbsd.org/cgi-bin/man.cgi?query=ppp&sektion=4
    * tun - Tunnel Network Interface http://www.openbsd.org/cgi-bin/man.cgi?query=tun&sektion=4
    * enc - Encapsulation interface http://www.openbsd.org/cgi-bin/man.cgi?query=enc&sektion=4
    * bridge - Ethernet Bridge Interface http://www.openbsd.org/cgi-bin/man.cgi?query=bridge&sektion=4
    * vlan - IEEE 802.1Q Encapsulation Interface http://www.openbsd.org/cgi-bin/man.cgi?query=vlan&sektion=4
    * gre - GRE/MobileIP Encapsulation Interface http://www.openbsd.org/cgi-bin/man.cgi?query=gre&sektion=4
    * gif - Generic IPv4/IPv6 Tunnel Interface http://www.openbsd.org/cgi-bin/man.cgi?query=gif&sektion=4   
    * carp - Common Address Redundancy Protocol Interface http://www.openbsd.org/cgi-bin/man.cgi?query=carp&sektion=4
    * vether - Virtual Ethernet Interface  http://www.openbsd.org/cgi-bin/man.cgi?query=vether&sektion=4

    Interface'ler boot esnasında "/etc/hostname.if(5)" dosyaları ile yapılandırılır.

Yukarıdaki örnek arabirimi yerine koyarsak buradaki dosya adı "/etc/hostname.fxp0" olacaktır. Yapılandırma dosyasında, tanımlamalar şöyle yapılır.

     address_family address netmask broadcast [diğer parametreler]

Bu dosyada kullanılabilecek ayarlar ve tanımlamalarla ilgili daha fazla detayı "hostaname.if(5)" man sayfasında bulabilirsiniz.

IPv4 için tipik bir konfigurasyon dosyası şöyle görünmelidir.

    $ cat /etc/hostname.fxp0
    inet 10.0.0.38 255.255.255.0 NONE

Bu satırlarla fxp0 isimli arabirime, IPv4 (inet) sınıfından 10.0.0.38 IP numarası ve
255.255.255.0 alt ağ maskesi atanmış oldu. Fakat herhangi bir broadcast adresi tanımlanmamaıştır.
Buna rağmen bu yapılandırma ile 10.0.0.255 adresi yine de bu ağın "Broadcast" adresidir.

Aynı zamanda daha detaylı tanımlamalar ile donanıma özel ayarlamalar da yapılabilir.

    inet 10.0.0.38 255.255.255.0 NONE media 100baseTX mediaopt full-duplex

(Tabi ki hiçbir zaman bir interface full duplex modda çalışmaya zorlanmamalıdır, tabi eğer
karşıdaki de full duplex çalışmıyorsa. Bu şekilde bir ayarlamaya özellikle ihtiyacınız yoksa
arabirime böyle bir zorlamada bulunmayın. Bunu yapabilmek için detaylı network, donanım
bilgisi ve tecrübe gerektiğini unutmamalısınız. Çoğu zaman bir ev kullanıcısının böyle spesifik bir ayar
yapmasını gerektirecek bir durum yoktur. Bugünün donanımlarının neredeyse tamamı
100Base-TX desteğine sahiptir ve ortamdaki haberleşme bunu gerektiriyorsa otomatik olarak kendisi
bu moda geçebilir. Ancak altyapınız 10Base-T veya half-duplex çalışma gerektiriyorsa
bu şekilde bir ayarlamaya gidelebilir.)

Veya interface'lere özel tanımlamalar yapmak için Flagların (doanımın desteklediği
1 bitlik bazı özel registerlar. Bkz: Elektronik Terimler Sözlüğü -> Register) değerlerini
değiştirmek isteyebilirsiniz.

    $ cat /etc/hostname.vlan0
inet 172.21.0.31 255.255.255.0 NONE vlan 2 vlandev fxp1

6.2.2 - Default Gateway (Varsayılan Ağ geçidi)

    Kullandığınız Gateway (Ağ Geçidi) bilgisini /etc/mygate dosyasına yazın. Böylece
sisteminizi boot ettiğiniz andan itibaren ağ geçidinizi kullanabileceksiniz.
Makinanızın ağ geçidi bilgisi sadece basit bir IP bilgisinden oluşur. Beraberinde herhangi
bir konfigurasyon yapmanız veya bir şey yazmanız gerekmez.
Örneğin:
    10.0.0.1


6.2.3 - DNS Çözümleme Ayarları

    DNS sistemi için yapılandırma /etc/resolv.conf dosyası ile yapılır. Örnek bir yapılandırma
şöyle yapılabilir.

    search example.com
    nameserver 125.2.3.4
    nameserver 125.2.3.5
    lookup file bind

Yukarıda ki konfigurasyonda example.com domain adı olarak belirtilmiştir. 125.2.3.4 ve 125.2.3.5
adresleri ise DNS sunucusu olarak kullanılacak makinaların adresleridir. Fakat isim çözümlede /etc/hosts
dosyası içerisine girilen bilgiler daha baskındır. /etc/hosts dosyasına yazılan isimlerin DNS
sunucuları üzerinden çözümlemesi yapılmaz.
Hemen Hemen tüm Unix (ve Unix olamayan) sistem /etc/hosts dosyasına sahiptir. Bu dosya üyesi olmadığı
(veya kendinde barındırmadığı) domain, makina veya site isimlerine karşılık gelen IP'leri tutar. Ya da
yukarıda olduğu gibi "lookup" ile bunları resmi DNS servisnden öğrenmeye çalışır.
Eğer dhcp kullanıyorsanız; resolv.conf.tail dosyası ile ilgli kısmı dikkate alarak, bu dökümanın
6.4 - DHCP kısmına bakmak isteyeceksiniz.

6.2.4 - Host Name

    Her Unix makinasının bir adı vardır. OpneBSD'de bu isim /etc/myname dosyasında,
"Tamamı Tanımlanmış Domanin Adı" ( FQDN ) şeklinde bir satırlık bir kayıttır. Biraz önceki DNS
örneğinde (search example.com)gördüğünüz satırı hatırlayın. Bilgisayarımızın adı olarak "puffy"
(OpenBSD ile ilgili dökümanlarda ve internette gördüğünüz Dikenli Balık) seçtiğimizi düşünürsek
/etc/myname dosyası şöyle görünecektir. Dosya sadece bir satır içerir.
   
    puffy.example.com

6.2.5 - Değişiklikleri Uygulamak

    Ağ ayarlarınız ile ilgili değişiklikler yaptığınız zaman yeni ayarları uygulamak istediğinizde
ya sistemi yeniden başlatmalısınız, ya da netstart scriptini çalıştırmalısınız.

    # sh /etc/netstart
    writing to routing socket: File exists
    add net 127: gateway 127.0.0.1: File exists
    writing to routing socket: File exists
    add net 224.0.0.0: gateway 127.0.0.1: File exists

Halihazırda konfigure edilmiş olan ağ ayarlarınızı bu scriptle yeniden yapılandırmaya çalıştığınızda yukarıdaki gibi hatalarla karşılaşmanız normaldir. Emin olamak için ifconfig komutu ile ayarlarınızı
teyid edebilirsiniz.
    Çok önemli bir ayarlamadan sonra sistemi yeniden başlatmanız önerilir. Ancak yeniden başlatmadan da
ağınız ile ilgili ayarlamaları yapabilirsiniz. Bu öneride bulunmamızın nedeni sistemin boot edilmesi anı
ile çalışan sistemin birbirlerinden biraz farklı olmasıdır. Örneğin, herhangi bir dosyada özel olarak
tanımlanmış bir sembolik makina adı mevcutsa yeniden yapılandırma sonrası çalışır durumdaki sisteminizde
beklendiği gibi görevini yerine getirecektir. Ancak açılış esnasında internet üzerindeki bir DNS sunucusunu
kullanıyorsanız ve bu Sunucu ulaşılabilir değilse bu isim çözümleme başarılı olamayacaktır. (OpenBSD
üzerinde OSPF algoritmasının çalışabildiğini ve herhengi bir OpenBSD yüklü makinanın bir Network Router
olarak kullanılabileceğini düşünerek çok özel yapılandırmalar için bu örneğin verildiğini farzediyorum)

6.2.6 - Yönlendirmeler (Route Tanımları)

Route tanımlamalarınızı netstat(8) veya route(8) komutlarıyla kontrol edebilirsiniz. Eğer yönlendirmeler
ile ilgili problemleriniz varsa route komutunu "-n" anahtarı ile kullanmak isteyebilirsiniz. Bu,
çıktılardaki adreslerin (FQDN isimler -makina adları-) çözümlenmeden direkt, IP adresleri olarak
görüntülenmesini sağlayacaktır. Aynı zamanda çözümleme için vakit kaybetmeden hızlıca çıktılara
ulaşabilirsiniz. Aşağıdaki örnekte her iki komutla alınmış birer routing (yönlendirme) çıktısı
listelenmiştir. (Bkz: Dns ile isimlerin çözümlenmesi )

    $ netstat -rn
    Routing tables

    Internet:
    Destination        Gateway            Flags     Refs     Use    Mtu  Interface
    default            10.0.0.1           UGS         0       86      -  fxp0
    127/8              127.0.0.1          UGRS        0        0      -  lo0
    127.0.0.1          127.0.0.1          UH          0        0      -  lo0
    10.0.0/24          link#1             UC          0        0      -  fxp0
    10.0.0.1           aa:0:4:0:81:d      UHL         1        0      -  fxp0
    10.0.0.38          127.0.0.1          UGHS        0        0      -  lo0
    224/4              127.0.0.1          URS         0        0      -  lo0

    Encap:
    Source             Port  Destination        Port  Proto SA(Address/SPI/Proto)



    $ route show
    Routing tables

    Internet:
    Destination      Gateway            Flags
    default          10.0.0.1           UG
    127.0.0.0        LOCALHOST          UG
    localhost        LOCALHOST          UH
    10.0.0.0         link#1             U
    10.0.0.1         aa:0:4:0:81:d      UH
    10.0.0.38        LOCALHOST          UGH
    BASE-ADDRESS.MCA LOCALHOST          U


6.2.7 - OpenBSD yüklü bir makinanın Gateway olarak kullanılması.

    OpenBSD yüklü bir makinanın nasıl bir Gateway (Router olarak da bilinir) olarak çalıştırılacağını
basitçe açıklayalım. Eğer OpenBSD'yi internet üzerinde bir router olarak kullanacaksanız, PacketFilter ile
potansiyel art niyetli (malicious) trafiğin nasıl engellenebileceğini anlatan kurulum ve kullanım klavuzunu
okumanızı öneririz. Ayrıca, altyapı, şebeke ve servis sağlayıcıları tarafından kullanılmaması gereken
adres alanları ile ilgili (ev ve işyerlerimizde kullandığımız 192.168.x.x - 10.x.x.x gibi) NAT
(Network Adress Translation) kısmına da bakmak isteyebilirsiniz.

    GENERIC kernel (OpenBSD ile gelen standart kernel. Tabi başka kernel olmadığınıda belirtmek iyi
olur) halihazırda IP Yönlendirme -IP Forwarding- yapabilir. Ama önce Kernelin bu özelliğini
aktifleştirmek gerekir. Bunu sysctl(9) aracını & dosyasını kullanabilirsiniz. Ip paketlerini yönlendirmek
ve bunu kalıcı kılmak için /etc/sysctl.conf dosyasını düzenlemeniz gerekir. Dosya içerisinde
aşağıdaki satır yoksa eğer eklemelisiniz. Satır var fakat önünde "#"işareti bulunuyorsa bunu
kaldırmanız da yeterlidir.
   
    net.inet.ip.forwarding=1

Bu satırı ekledikten sonra yaptığınız değişikliğin sistemi yeniden başlatana kadar etkin olmayacağını
unutmayın. Bu değişikliği hemen gerçekleştirmek için sysctl komutunu kullanabilirsiniz. Unutmamanız
gereken bir diğer nokta ise aşağıdaki komutu çalıştırmakla sistemi reboot etmeden de bu değişikliği
uygulayabilirsiniz. Ancak yukarıdaki satırları /etc/sysctl.conf dosyasına eklemediyseniz, aşağıdaki komut
sistemi yeniden başlattığınızda etkin olmayacaktır. IP paketlerini yönlendirebilmek için bu komutu
sisteme tekrar girmeniz gerekrir.

    # sysctl net.inet.ip.forwarding=1
    net.inet.ip.forwarding: 0 -> 1

Artık yönlendirme yapılacak olan noktalardaki Yönlendirme Tablolarını / Kurallarını hazırlayabiliriz. Bunu yapmanın birçok yolu vardır OpenBSD üzerinde. OpenBSD platformunu Router haline getirmek için
OpenBSD'nin kendi paket koleksiyonu içerisinde bulabileceğiniz OpenBGPD, routed(8), mrtd, zebra, ve quagga programlarını kullanabilirsiniz. OpenBGPD ve routed programları sisteminize base.system kurulumunun bir parçası olmalarından dolayı kurulmuş olarak gelirler. ("Base" kurulum esnasında default olarak seçili gelir ve yapacağınız tüm kurulumlarda yüklenmesi gereklidir.) OpenBSD içerisinde; T1, HSSI, ATM, FDDI, Ethernet ve Seri iletişim (PPP/SLIP) çeşitlerinin de bulunduğu uzun bir interface listesini destekler.

6.2.8 - Interface Üzerinde 'Alias' (Bir Interface ile Çoklu IP )Tanımlamaları Yapmak

IP Alias tanımlamaları yapmak için, OpenBSD'nin çok basit bir mekanizma sunduğunu belirtmeliyim. Basit bir şekilde /etc/"hostname".<if> (Daha önce verdiğimiz örnekte bu dosyanın adı /etc/puffy.nge0) dosyasını
düzenlemek yeterlidir. Bu dosya açılışta çalışan ve sistemi ayağa kaldırmak & servisleri başlatmak ve diskleri bağlamak gibi işlemleri yürüten rc.startup hiyerarşisinin bir parçası olarak /etc/netstart(8) scripti tarafından boot
esnasında okunur. Örneğin, 192.168.0.0/24 (yazının orjinalinde CIDR adres belirtme yoktu) ağına dahil olan dc0 isimli bir interfacesimiz olsun sistemimizde. Düşündüğümüzü kağıda dökmek gerekirse şöyle görünecektir.
    
    IP for dc0 is 192.168.0.2
    NETMASK is 255.255.255.0

İşte bu ayarlama ile ilgili bir kaç ufak not. OpenBSD'de sadece interfacelerin isimlerini kullanabilirsiniz. Eğer bir Linux kullanıcısı iseniz ve alışılageldik alias tanımlarında olduğu gibi eth0:1, eth1:2  (OpenBSD de dc0:1 gibi düşünülen) gibi tanımlamaların burada bir geçerliliği olmadığını baştan belirtmeliyim. Ip Atamaları ya da Alias tanımlamaları OpenBSD'de bu şekilde ifade edilmiyor. Eğer ifconfig komutuyla IP alias tanımı yapmak istiyorsanız "ifconfig int" kullanın. (bu komutun yerine "ifconfig int alias" kullanmaya çalışmayın) Alias tanımlamalarını silmek için "ifconfig int delete" komutunu kullanmanız yeterlidir.

Aynı IP Subnet içerinde olduğu farzedilirse, çoklu IP adresi tanımlamasını (IP Alias) şöyle yapabilirsiniz. Ancak bu durumda her alias tanımının kendi subnetinin değeri de "255.255.255.255" olarak verilmelidir. Bu örnekte /etc/"hostname".dc0 dosyasında dc0 isimli ve 192.168.0.2 netmask 255.255.255.0 olarak konfigüre edilmiş olan arabirime, aynı network içinden iki tane IP Alias tanımlaması yapılmıştır.

    # cat /etc/hostname.dc0
    inet 192.168.0.2 255.255.255.0 NONE media 100baseTX
    inet alias 192.168.0.3 255.255.255.255
    inet alias 192.168.0.4 255.255.255.255
   
Bu konfigurasyonu yapıp kaydettiğinizde, yapılan değişikliğin işler hale gelebilmesi için sistemi yeniden başlatmanız
gerekecektir. Tabi ki ifconfig komutuyla bunu IP alias yanımlamalarını hemen işler hale getirmek de mümkün. İlk
Alias tanımı için:

    # ifconfig dc0 inet alias 192.168.0.3 netmask 255.255.255.255

(Ama herşeyin beklediğiniz gibi olması için reboot etmeniz daha iyi olacaktır.)

Yaptığınız tanımlamaların geçerli olup olmadığını görebilmek için, şu komutu kullanabilirsiniz.

    $ ifconfig -A
    dc0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST>
            media: Ethernet manual
            inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255
            inet 192.168.0.3 netmask 0xffffffff broadcast 192.168.0.3


6.3 - OpenBSD'de Firewall ve Fitlreleme

Packet Filter, (buradan itibaren artık "pf" olarak anılacaktır.) OpenBSD sisteminin IP trafiğini filtreleme
ve NAT (Network Address Translation) görevlerini yürütür. Aynı zamanda paket normalizasyonu, IP koşullama, Bant Genişliği
kontrolü, Paket Önceliklerini değiştirebilme özelliklerini içeren, güçlü ve esnek  bir Firewall'dur.
Ancak bu denli geniş özellikleri olan bu programın yapıs ve çalışması ayrı bir başlık altında incelenecektir.

6.4 - Dinamik Host Configuration Protocol (DHCP)

Dinamic Host Configuration Protocol, Network interfacelerinin kolay ve "otomatik" olarak yapılandırılması
için kulanılan bir yoldur. OpenBSD DHCP sunucu (diğer makinaların konfigurasyonu için) ya da,
DHCP üzerinden yapılandırma ayarlarını temin eden bir "client" olarak veya, bazı durumlar için her
ikisini de ihtiva edecek şekilde kullanılabilir.


6.4.1 - DHCP Client
---Devamı Gelecek---

İzleyiciler