Juniper Lab Kurulumu – Qemu ve Olive

Juniper routerlarda kullanılan işletim sistemi olan Junos aslinda linux kernel üzerinde derlenmiş ve özünde FreeBSD olan bir işletim sistemi.Dolayısı ile routerın control plane ortamını bir PC üzerinde oluşturmak ve bu platform ile Juniper lab kurmak mümkün.PC’de çalışan Junos’a Olive ismi veriliyor. Olive aslinda bir codename ve Juniper tarafından desteklenmiyor ancak engellenmiyor da 🙂 detaylar icin bu linki inceleyebilirsiniz. Özetle denmiş ki:

Juniper’s official position is that Olive does not exist. Considering that Olive is an unsupported and unsupportable platform using “free” (aka illegally licensed) software, this is not an unreasonable official position.

Olive is essentially a hackers platform, with absolutely no support of any kind, and it is not suitable for any type of commercial use. If you are in any doubt, or if you are not able to figure it out, you should invest in a low-cost platform such as J-Series instead.

It is also important to remember that Olive exists because Juniper allows it to exist, and is a testament to the mutual respect between the extremely knowledgeable developer and user bases.

If the Olive platform became widely abused, Juniper could easily add additional software checks to prevent it from working.

Olive PC üzerinde çalışan Junos olduğuna göre, Junos da FreeBSD temeline dayandığına göre FreeBSD çalıştırabilecek bir PC ortamı labın ilk adımları olarak işimizi görecektir. FreeBSD çalıştırmak için 3 yöntem söz konusu:

1- Doğrudan FreeBSD kurmak – Bilgisayarın başka amaçlarla kullanımını engeller.

2- Mevcut işletim sistemi üzerine VMware kurmak ve oluşturulan VM’e (sanal makina) FreeBSD kurmak – VMware ürünü lisanslı ve ücretli bir ürün ayrıca multicast desteği kısıtlı olacağı için kurulan labda ospf,ldp ve diğer multicast gerektirecek senaryolarda problem yaşamak söz konusu. Multicast desteği için harici yamalar gerekli.

3- Mevcut işletim sistemi üzerine QEMU kurmak ve oluşturulan VM’e (sanal makina) FreeBSD kurmak – Ücretsiz ve en verimli yöntem. Kurulum ve konfigurasyon VMware kadar kolay olmasa da elde edilen sonuçlar çok iyi.

Ben kendi lab ortamımda QEMU kullandım. QEMU için ana işletim sistemi Windows da olabilir Linux da olabilir ancak CPU ve RAM kullanım verimliliği açısından Linux üzerinde QEMU kullanımını tercih ettim ve ana işletim sistemi olarak Ubuntu kurdum. Ancak Qemu kurulum adımı dışındaki tüm adımlar her iki işletim sistemi için de aynı. Kurulum adımındaki fark da windows ve linux’e program kurma farkından ibaret sadece. Bu özet giriş sonrası Ubuntu üzerine Qemu kurulumu ve ardından Qemu üzerine Olive kurulumu ile yazıya devam ediyorum. Farklı platformlar (windows/linux) ve kurulum adımlarındaki karşılaştığınız problemler ile ilgili yorumlarınızı paylaşabilirsiniz.

Ubuntu için Qemu Kurulumu:

İlk olarak Qemu konfigurasyon ve kurulumu için gerekli destek dosyaları (packet dependency) elde edilmeli ve kurulmalıdır.

$sudo apt-get install build-essential

$sudo apt-get build-dep qemu

$sudo apt-get install libpcap-dev

Son sürüm Qemu’nun indirilebilmesi ve derlenebilmesi için de subversion ve gcc yüklü olmalıdır. Tüm linux dağıtımlarında gcc geliyor o nedenle gcc versiyonunun 3.4 ve üstü olmasına dikkat etmek yeterli olacaktır.

$sudo apt-get install gcc-3.4

$sudo apt-get install subversion

Çalışan Qemu performansını arttırmak ve bir PC’de performans sorunu yaşamadan birden fazla Qemu oluşumu çalıştırabilmek için “Qemu Accelerator” olarak adlandırılan KQemu indirilmeli ve kurulmalıdır.

$wget http://www.nongnu.org/qemu/kqemu-1.4.0pre1.tar.gz

$tar zxfv kqemu-1.4.0pre1.tar.gz

$cd kqemu-1.4.0pre1

$./configure

$make

$sudo make install

Yüklenen KQemu linux çekirdeğine (kernel) eklenmelidir.

$sudo modprobe kqemu

En güncel kaynak kodun indirileceği geçici bir klasör oluşturulmalı ve bu klasör içine qemu indirilmelidir (subversion yardımı ile)

$mkdir ~/qemu-lab

$cd ~/qemu-lab

$svn co svn://svn.savannah.nongnu.org/qemu/trunk -r 5193

Daha sonra multicast desteği sağlayacak olan yama linkten siteden indirilmeli ve uygulanmalıdır. (eger ilgili yama siteden elde edilemezse benimle iletişime geçebilirsiniz)

$cd trunk

$wget http://shef.net.ru/misc/qemu-cvs20080910-brb_01-olive.patch

$patch -p1 < qemu-cvs20080910-brb_01-olive.patch

Tüm destek dosyaları kurulumları tamamlandıktan sonra sıra Qemu derleme ve kurulumuna geldi. Default olarak kurulum /usr/local altına yapılıyor. Eğer bu dizini değiştirmek isterseniz –prefix parametresine kurulumu istediğiniz path’i yazmanız gerekli. Ben /usr/local altında kurulumu yaptım.

$./configure –prefix=/usr/local/ –target-list=i386-softmmu

$make

$make install

Olive yüklemek için FreeBSD platformuna ihtiyaç duyulduğundan bahsetmiştim. FreeBSD platformu yüklediğimiz Qemu ile oluşturacağımız sanal makinaya kurulmalıdır.

Bunun için önce FreeBSD 4.11’i indirmemiz gerekli. FreeBSD versiyonu JunOS’un kernel uyumluluğu için önemli. mini iso dosyasını bu linkten indirebilirsiniz.

$wget ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/i386/ISO-IMAGES/4.11/4.11-RELEASE-i386-miniinst.iso

Daha sonra 4GB’lık bir disk alanını qemu kullanımı için reserve etmemiz lazım. Reserve ettiğimiz alan Qemu disk image formatında olmalı yani qcow2 (qemu copy on write) formatında. qemu-img komutu ile olive-base.img adinda 4GB’lık bir disk alanı reserve edeceğiz. olive-base.img daha sonra kullanacağımız yeni router imajları için bir model olacak ve bu sayede her router için 4GB alan kullanmaktan kurtulacağız. Örneğin 3 router R1.img, R2.img ve R3.img imajlarına sahip olacak ve sadece farklar bu img disklerine (sanal disk) yazılacak, ortak veriler olive-base.img’de yer alıyor olacak. qemu ile ilgili komutları yürütürken b
ulunduğunuz dizin ve binarylerin bulunduğu path önemlidir. Hata ile karşılaşırsanız önce path’i kontrol etmenizde fayda var.

$qemu-img create olive-base.img -f qcow2 4G

Oluşturulan disk imajı Qemu ile boot edilmeli, boot ederken daha önceden indirilmiş FreeBSD 4.11 iso dosyasını kullanabiliriz ve bu sayede FreeBSD kurulumunu başlatmış oluruz. FreeBSD kurulumu için boot edilen sanal makinada 1 adet ethernet interface’i olması yeterli. Bu interface “user” modunda ayarlanırsa NAT sayesinde sanal makinanın ana makina ile haberleşmesi ve bu sayede yüklenecek JunOS’un sanal makinaya kopyalanması sağlanabilir.

$qemu -m 256 -hda olive-base.img -cdrom 4.11-RELEASE-i386-miniinst.iso -boot d \

-curses -localtime -net nic,macaddr=00:aa:00:00:01:01,model=i82559er -net user

Boot edilen sanal makinamız üzerine FreeBSD kurulumuna başlayabiliriz artık. Ekranda makinanın bootable FreeBSD CDsinden açıldığını görebilirsiniz.

Kurulumu başlatmalı ve default değerlerle FreeBSD Installation Tool menusune kadar ilerlemeliyiz. Bu menuye gelince de Standart kurulum seçeneğini seçerek kurulumu başlatmalıyız.

(Bu aşamada Express kurulum adımı da seçilebilir)

Kurulum başladıktan sonra en önemli ve hatasız yapılması gereken adım disk bölümlendirme adımıdır. Junos diski genel olarak aşağıdaki yapıda kullanır :

ad0s1a / 512M

ad0s1b swap 1024M

ad0s1e /config 100M

ad0s1f /var rest

Kurulum sırasında doğru bölümlendirilmiş disk aşağıdaki gibi gözükecektir (alanların boyutlarını yukarıdaki tabloya göre verebilirsiniz):

Bu tabloyu elde etmek için disk formatlama ve bölümlendirme adımında izlenmesi gereken yol sırası ile aşağıdaki gibidir:

FDISK Parition Editor menusunde tüm diski kullanmak içim A’yı tuşla ve ardından Q‘yu tuşlayarak menuden çık.

Boot Manager menusunde “Standard – Install a standard MBR (no boot manager)” seçeneğini seç.

Disklabel Editor menusunde:

1/4: C ile partition oluştur, size bölümüne 512M yaz, FS (File System) bölümünde de system root anlamına gelen / sembolunu gir.

2/4: C ile partition oluştur, size bölümüne 1024M yaz, bu alanı FS değilSwap olarak seç.

3/4: C ile partition oluştur, size bölümüne 100M yaz, FS (File System) bölümünde de /config yaz.

4/4: C ile partition oluştur, size bölümünde kalan disk alanını kullan yaz, FS (File System) bölümünde de /var yaz.

Q ile menuden çık.

Disk formatlama ve bölümlendirme işleminden sonra ethernet interface’i ile ilgili adımda ipv4 konfigurasyonunda DHCP etkinleştirmeliyiz ve sistemin root kullanıcısına şifre atamalıyız.

Diğer tüm seçenekleri “No” ile geçebiliriz.

Daha önce en az bir kere linux kurulumu gerçekleştirmiş birisi için bu adımlar çok hızlı geçecektir. Kurulum tamamlandıktan sonra sanal makina reboot olacaktır, http://pharmacyincanada-onlineon.com/ bu aşamada qemu processini sonlandırabilirsiniz.

$sudo killall qemu

FreeBSD kurulumu tamamlandıktan sonra sıra üzerine Olive kurmaya geldi. Bunun için olive-img diskli makinamızı boot etmemiz gerekli. Bu sefer cdrom’dan degil diskten boot edeceğiz, diğer parametreler bir önceki ile aynı olacak.

$qemu -m 256 -hda olive-base.img -boot c -localtime -curses \

-net nic,macaddr=00:aa:00:00:01:01,model=i82559er -net user

Sanal makina açıldıktan sonra FreeBSD işletim sistemine root ile login olup daha önceden ana makimanıza kopyaladığımız JunOS’u sanal makina üzerine almalıyız.

(JunOS telif hakkına sahip bir yazılım olduğu için temini konusunda juniper.net sitesinden yararlanmanızı öneririm. )

ifconfig ve netstat -rn komutları yardımı ile makinamızın ip aldığını teyid edebiliriz. Genellikle makina 10.0.2.15 ip adresini cheap cialis alır ve default gateway olarak da 10.0.2.2 adresini kullanır.

10.0.2.2 adresi ana makinanin sanal makinaya bakan adresidir (sanal makina dış dünyaya NAT ile çıkabilmektedir bu durumda). Kopyalama işlemi için scp komutundan yararlanabiliriz.

Burada kullanıcı adı olarak ana makinadaki kullanıcı hesabı kullanılır ve kopyalanacak junos’un pathi verilir.

$scp arda@10.0.2.2:~/Desktop/jinstall-8.3R1.5-domestic-signed.tgz /var/tmp

Artık JunOS sanal makinamızda var ve Olive kurulum öncesi son bir adım kaldı. Juniper yeni JunOS’larda PIC uyumluluk kontrolu yapıyor. PC’ye JunOS kurarken de bu programcık sorun çıkartıyor bu nedenle JunOS’u kurmadan önce paketin içindeki bu programcıkı değiştirmemiz gerekmekte. Bunun için yapılması gerekenler paketi aç dosyayı değiştir ve yeniden paketle adımlarından oluşmaktadır. Aşağıdaki şekilde yapılabilir:

$cd /var/tmp

$mkdir jinst-signed

$cd jinst-signed

$tar zxvf ../jinstall-8.3R1.5-domestic-signed.tgz

$mkdir jinst

$cd jinst

$tar zxvf ../jinstall-8.3R1.5-domestic.tgz


$mkdir pkgtools

$cd pkgtools

$tar zxvf ../pkgtools.tgz


$cd bin

$cp /usr/bin/true ./checkpic

$cd ..


$tar zcvf ../pkgtools.tgz *

$cd ..

< /strong>

$rm -rf pkgtools

$tar zcfv /var/tmp/jinstall-8.3R1.5-domestic-olive.tgz *

$md5 -q jinstall-8.3R1.5-domestic-olive.tgz > jinstall-8.3R1.5-domestic-olive.tgz.md5

$openssl sha1 jinstall-8.3R1.5-domestic-olive.tgz > jinstall-8.3R1.5-domestic-olive.tgz.sha1


Bu işlem tamamlandıktan sonra jinstall-8.3R1.5-domestic-olive.tgz Junos PC üzerine yüklenmeye hazırdır yani Olive yüklenmeye hazır durumdadır ve aşağıdaki komut ile Olive yüklemesi tamamlanır.

$pkg_add -f /var/tmp/jinstall-8.3R1.5-domestic-olive.tgz

Yüklemeden sonra “halt” komutu ile sanal makina kapatılır ve qemu programından çıkılır : “sudo killall qemu”

Ve ilk boot…
Labınızı çalıştırmadan önce referans img olarak kullanacaginiz olive-base.img ile yapmanız gereken bir işlem daha var. O da bu img’yi boot etmek.
Sadece boot edip boot işleminden sonra sanal makinayı kapatmanız yeterli olacak. Burada ram seçeneğini bir defaya mahsus yüksek seçmemiz önemli, bundan sonra çalıştıracağımız routerlarda 96mb ram işimizi görecektir. Junos default olarak görüntüyü ekrana degil serial porta verir (routerlardaki console) biz de olive-base.img ile calıştırdığımız sanal makinanın serial interfaceini (sanal com port) standart input olarak ekrana vereceğiz. Bu adımdan sonra router imajlarında ekran çıktısını bir tcp portuna yönlendirip reverse telnet ile routerlara login olacağız.

$qemu -m 256 -hda olive-base.img -boot c -localtime -nographic -serial stdio

Ve sonunda ilk routerımızı çalıştırabiliriz. Beilgisayarımızın performansına göre aynı anda bir çok router da çalıştırabiliriz…

Referans img dosyamızı kullanarak R1 routerını oluşturuyoruz : R1.img adında qcow2 formatında yeni bir disk alanı, ancak bu sefer boyut bildirmiyoruz sadece referans veriyoruz.

$qemu-img create -b olive-base.img -f qcow2 R1.img

ve R1.img boot edilmeye hazır. Bu router’i standalone çalıştırmak için tek bir interface ile boot edip Junos CLI’ina login olabiliriz.
R1 console’u icin 2001. porta reverse telnet yapmamız gerekli. oluşturulan interface şu an hiç bir yere bağlı değil sadece 6000. portu dinliyor (bu aşamada önemli değil)

$qemu R1.img -m 96 -nographic -daemonize -serial telnet::2001,server,nowait -localtime \
-net nic,macaddr=00:aa:00:60:00:01,model=i82559er -net socket,listen=:6000

ve router kullanıma hazır: (router calisirken performans arttırıcı Kqemu’nun çalışırlığını da kontrol etmekte fayda var, bunun için lsmod komutunun aşağıdaki kullanımını inceleyebilirsiniz)
telnet 127.0.0.0 2001

Artık labımız hazır ve JunOS Cli’ini tanımamız için önümüzde bir engel yok…
Takip eden yazılarımda bu lab ile basit topolojiler oluşturmayı göstereceğim ve topolojiler üzerindeki testlerimi paylaşacağım.

Network alanında uzmanlaşmak icin okumak kadar denemek de önemlidir, bu nedenle iyi lablar 🙂










“Juniper Lab Kurulumu – Qemu ve Olive” için bir cevap

  1. Çok güzel bir yazı teşekkürler Arda. GNS3 te kısa bir süre uğraşıp çalıştıramayınca boşver demiştim kendime, bi ara uğraşıp çalıştırabilirsem siteye onu da ekleyeceğim..

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir