Quantcast
Channel: Linux Unix
Viewing all 96 articles
Browse latest View live

Linux Sistemlerde Systemd Nedir?

$
0
0

Systemd Öncesi init ve runlevel’lar

Bilindiği gibi Linux sistemlerde sistem açılışında runlevel dediğimiz sistemin sunacağı hizmetlere göre yapılandırıldığı çalışma seviyeleri mevcuttur. Basitce windows sistemlerde Safe mode ile girdiğimiz ve sistemlerin tekli kullanıcı moda’ta sorunları çözebileceğimz şekilde de Linux işletim sisteminde RunLevel ‘lar günlük hayatımızda karşımıza çıkar.

Linux dünyasında RunLevel’lar değişik dağıtımlarda farklı işlevlere sahip olabilmektedir. Bu yazımızda daha çok Red Hat bazlı (Centos,OEL vs) işletim sistemlerin RunLevel’ları anlatılacaktır. Bu RunLevel’lar eskiden init dediğmiz ve işletim sistemi kernel yüklemesinden sonra çalışan ve PID (Process ID) 1 olan süreçlerle yönetilmekte idi.  init süreci /etc/inittab dosyasını okuyup sistemin hangi Run Level’dan başlayacağına karar verirdi. Aşağıda /etc/inittab dosyasından bir kesit sunulmaktadır.

# Default runlevel. The runlevels used by RHS are:

#   0 - halt (Do NOT set initdefault to this)

#   1 - Single user mode

#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)

#   3 - Full multiuser mode

#   4 - unused

#   5 - X11

#   6 - reboot (Do NOT set initdefault to this)

#

id:3:initdefault:

 

Buradaki  id:3:initdefault: satırı bizim işletim sistemimizin RunLevel 3 ‘den başlayacağını göstermektedir. Red Hat sistemlerde RunLevel’lar

·        0 - halt (Sistemi kapatmak –poweroff veya halt- için kullanılan runlevel)

·        1 - Single user mode (Sistemi kurtarmak için kullanılan ve network ayarlarının aktive edilmediği tekli kullanıcı mode’u. Bazı yerlerde S veya s olarak da adlandırılır.

·        2 – Multiuser  NFS olmadan çoklu kullanıcı mode’u (Bu runlevel 3. Runlevel ile genel olarak aynıdır. Tek fark network ayarlarını içermemesidir.)

·        3 - multiuser mode (Network ayarlarını nda aktive edildiği ve genellikle kullanılan RunLevel’dır.

·        4 – kullanılmıyor.

·        5 - X11 (Runlevel 3 e ek olarak görsel ekranın- ki biz buna X veya X11 de deriz- da başlatıldığı runlevel. Runlevel 3’den sonra en çok tercih edilen runlevel’dır.)

·        6 - reboot (Sistemin kapatılıp tekrar açıldığında kullanılan RunLevel’dır.

 

İnit süreci ön tanımlı runlevel’ı ayarladıktan sonra sistemde /etc/rc.d/init.d/ altında bulunan  ve rpm paketleri içinde gelen servis scriptlerini (bunlar bir shell scripttir!) çalıştırır. Örnek olarak eğer runlevel 3 de isek ve sshd servisi çalışacaksa bunun başlangıç scripti /etc/rc.d/init.d/sshd altında yer almakta. Bunun runlevel 3 de çalışmasını da /etc/rc.d/rc3.d/S55sshd scripti sağlamakta idi. Buradaki S harfi bunun start edilleceği, 55 ise başlangıç sırasını belirtmektedir.

 

 

# ls -la /etc/rc.d/rc3.d/S55sshd

lrwxrwxrwx 1 root root 14 Jun  6  2011 /etc/rc.d/rc3.d/S55sshd -> ../init.d/sshd

 

Systemd Tarihçesi ve init ‘e göre avantajları

 

Linux sistemlerde yaygın olarak kullanılmaya başlayan systemd  30 Mart 2010’da  Lennart Poettering  ve Kay Sievers tarafından init sisteminin alternatifi olarak yazıldı.Bu yapı yeni Linux sistemleri ile (RedHat tabanlı sistemlerde RHEL 7 ile, SLES’de SLES 12 de, Debian da Debian 8 ile) yerini systemd ye bıraktı. Her ne kadar systemd üzerinde tartışmalar devam etse ve bazıları UNIX felsefesine aykırı da bulsa systemd’nin önümüzdeki yıllarda daha fazla kabul göreceği de düşünürsek systemd’yi önyargısız olarak inceleyip,öğrenmekte fayda var.

 

Diğer dağıtımlardaki durumuna https://en.wikipedia.org/wiki/Systemd adresindeki “Adoption and reception”  kısmından da erişilebilen systemd  nin genel olarak şu avantajları mevcuttur.

 

1.     SysV init script’leri ile tam uyumludur. Init.d altındaki scriptleri de çalıştırabilir.

2.     Serivslerin parallel olarak başlatılabilmesi (dolayısıyla daha hızlı sistem açılışı ve kapanışı)

3.     Servislerin on-deman aktivasyonu. Yani bir servisi başlatırken onun ihtiyacı olan diğer servislerin de otomatik başlatılması

4.     Sistem servislerinin snapshot’ının alınabilmesi (Yani basitçe ifade ile kendi runlevel’larınızı oluşturabilme diyebiliriz buna)

5.     Servis bir şekilde ölürse bunun tesbiti ve ilgili servisin tekrar başlatılması

 

Systemd Bileşenleri

 

Systemd unit adı veridğimiz bileşen ve bunların kendi arasındaki ilişkilerinden oluşmaktadır. Systemd  binary’si /usr/lib/systemd/systemd dosyası olarak sistemde bulunmakta ve systemd rpm paketi tarafından kurulmaktadır. Systemd binary’si eski yapıdaki /sbin/init programının yerini alır. Şu an için RHEL 7 ‘de zaten /sbin/init tam manasıyla /usr/lib/systemd/systemd dosyasına bir linktir.

Systemd Önemli Dizinler

Dizin

Açıklaması

/usr/lib/systemd/system/

RPM paketleri systemd servislerinin yapılandırma dosyasını buraya kurmaktadır.

/run/systemd/system/

Runtime dediğimiz işletim sistemi çalışırken bu dizin kullanılır.  

/etc/systemd/system/

Systemd servisleri enable veya disable edildiğinde /usr/lib/systemd/system dizinindeki dosyalar buraya linklenir.

 

 

Az önce bahsettiğimiz gibi systemd bileşenleri unit yapılandırma dosyalarından oluşmaktadır. Bu yapılandırma dosyaları sadece servisler için değil runlevel’ların yerini alan target (evet artık runlevel yerine target’lar var. Yazınının ilerleyen kısımlarında bunlardan da bahsedeceğiz) lar, mount edilecek bileşenleri içeren kısımlar ve birçok bileşenden oluşabilmektedir. Bu dosyalar /usr/lib/systemd/system dizini altında şu uzantılarla yer alabilmektedir.

Unit Tipi

Dosya Uzantısı

Açıklaması

Service unit

.service

Sistem servisi

Target unit

.target

Systemd unit grubu (eski runlevel’lar)

Automount unit

.automount

Automount edilecekler

Device unit

.device

Kernel’ın tanıdığı cihaz dosyaları.

Mount unit

.mount

Mount edilecek dosya sistemleri

Path unit

.path

Dosya sistemindeki dosya veya dizinler

Scope unit

.scope

Sonradan çalıştırılan harici programlar.

Slice unit

.slice

Sistem süreçlerini yöneten belirli bir hiyerarşideki unit dosyaları.

Snapshot unit

.snapshot

Systemd’nin snapshotları (kendimizin oluşturuduğu runlevel’lar denebilir)

Socket unit

.socket

IPC için kullanılan dosyaları oluşturan unit dosyaları

Swap unit

.swap

Swap dosyası veya swapleri aktive eden unit dosysaları

Timer unit

.timer

Systemd timer

 

Yukarıda tipleri verilen unit dosyalarından en önemlileri ve günlük hayatta en çok kullandığımız bileşenler servisler ve target’lardır.  Uzantısı .service olarak bildirilenler servisleri (Ör: sshd.service), uzantısı .target olanlar ise Target’ları yani eski adı ile runlevel’ları (Ör: multi-user.target) oluşturmaktadır.

Systemd Komutları

Systemctl

Sistem servislerini yönetmek için kullanılan komutlar eskiden (RHEL 7 öncesi) chkconfig  ve service komutları idi. Chkconfig bir servisi enable/disable etmek için kullanılırken, service komutu ilgili servisi start/stop/restart işlemleri için kullanılırdi. Yani ilgili runlevel’da bir servisi açıp,kapamak için chkconfig komutu kullanılırken ayrıca bir de service komutu ile servisi start etmek gerekiyordu. Systemd ile gelen tek bir komutla yanı systemctl komutu ile artık bu iki işlev birleştirildi. Yani artık servislerin enable,disable edilmesi ve stop/start işlemleri systemctl komutu ile yapılabilir hale geldi.

Eski yapıya bir örnek vermek gerekirse önceklike bir servis enable ediliyordu chkconfig komutu ile

# chkconfig sshd on

# chkconfig --list  sshd

sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off

 

Daha sonra ilgli servis start ediliyordu:

# service sshd start

 

 

Şimdi bu işlemi sadece systemctl komutu ile yapıyoruz.

# systemctl enable sshd

# systemctl start sshd

 

Burada ek olarak şunu da yapabilirdik.

 

# systemctl enable sshd.service

# systemctl start sshd.service

 

 

Sshd servisi veya unit dosyası tek olduğu için ve o da bir servis olduğu için .service kısmını yazmamıza gerek bulunmamakta. Zaten sshd yazıp TAB tuşuna bastığınızda shell bizim için otomatikman bunu sshd.service olarak tamamlayabilmektedir.  Diğer systemctl komutları şu şekildedir. Aşağıda eski sistemlerde kullanılan service ve chkconfig komutları karışılığı da ayrıca verilmiştir.

 

service

systemctl

Açıklama

service name start

systemctl start name.service

Servisi başlatır.

service name stop

systemctl stop name.service

Servisi durdurur.

service name restart

systemctl restart name.service

Servisi restart eder.

service name condrestart

systemctl try-restart name.service

Servis eğer başlatılmışsa restart eder.

service name reload

systemctl reload name.service

Servisi reload eder (-1 sinyali)

service name status

systemctl status name.service 

 

veya

 

systemctl is-active name.service

Servis çalışıyor mu diye kontrol eder.

service --status-all

systemctl list-units --type service --all

Bütün servisleri (her bir servisin bir unit dosyası olduğunu unutmayalım) listeler.

 

chkconfig

systemctl

Açıklama

chkconfig name on

systemctl enable name.service

Servisi enable eder.

chkconfig name off

systemctl disable name.service

Servisi disable eder.

chkconfig --list name

systemctl status name.service 

 

veya

 

systemctl is-enabled name.service

Bir servis enable edilmiş mi sorgular.

chkconfig --list

systemctl list-unit-files --type service

Bütün servisleri listeler.

 

 

 

Örnek kullanım. Aşağıda sshd servisi disable edilip stop edildikten sonra (Disable edien servis stop edilmez!. Stop komutu ile ayrıca servis durdurulmalıdır. Yine aynı şekilde enable edilen servis start edilmez, start komutu ile başlatılmalıdır)

 

[root@egitim ~]# systemctl disable sshd

rm '/etc/systemd/system/multi-user.target.wants/sshd.service'

 

[root@egitim ~]# systemctl stop sshd

 

[root@egitim ~]# systemctl enable sshd

ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service'

 

[root@egitim ~]# systemctl start sshd

 

[root@egitim ~]# systemctl status sshd

sshd.service - OpenSSH server daemon

   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)

   Active: active (running) since Fri 2015-10-02 15:09:20 EEST; 8s ago

 Main PID: 2894 (sshd)

   CGroup: /system.slice/sshd.service

           └─2894 /usr/sbin/sshd -D

 

Oct 02 15:09:20 egitim.faruk.net systemd[1]: Started OpenSSH server daemon.

Oct 02 15:09:20 egitim.faruk.net sshd[2894]: Server listening on 0.0.0.0 p....

Oct 02 15:09:20 egitim.faruk.net  sshd[2894]: Server listening on :: port 22.

Hint: Some lines were ellipsized, use -l to show in full.

 

 

Target’lar (Eski adı ile Runlevel’lar)

System yapısı ile artık runlevel’lar yeni bir isim aldı. Değişik servislerin birleşmesi ile oluşan runlevel’lara artık target ismi verilmektedir. Bu runlevel’ların geriye dönük isimlendirilmeler korunsa da uzun vadede bu takma adlar (aliaslar) kaldırılacaktır. Eskiden 0-6 arası runlevel’lar varken yeni yapıdaki target’lar şu şekildedir.

 

Runlevel

Target Unit

Açıklama

0

runlevel0.target, poweroff.target

Poweroff target  

1

runlevel1.target, rescue.target

Rescue yani kurtarma target’ı

2

runlevel2.target, multi-user.target

Çoklu kullanıcı target’ı (runlevel2,runlevel 3 ve 4 aynı).

3

runlevel3.target, multi-user.target

Çoklu kullanıcı target’ı (runlevel2,runlevel 3 ve 4 aynı).

4

runlevel4.target, multi-user.target

Çoklu kullanıcı target’ı (runlevel2,runlevel 3 ve 4 aynı).

5

runlevel5.target, graphical.target

Grafik ekranın başlatıldığı target.

6

runlevel6.target, reboot.target

Reboot target.

 

Örnek kullanımlar:

Öntanımlı sistemin çalıştığı target’I sorgulamak için:

# systemctl get-default

graphical.target

 

 

Reboot sırasında sistemin sıfırdan açıldığı target değiştirmek için (aslında yapılan bir link işlemi)

# systemctl set-default multi-user.target
rm '/etc/systemd/system/default.target'
ln -s '/usr/lib/systemd/system/multi-user.target' '/etc/systemd/system/default.target'

 

 

Sistem çalışırken bir anda farklı bir target’a geçmel için ( eskiden init 3 ile yapılan işlem)

 

 # systemctl isolate multi-user.target

 

 

Ayrıca bunlara ek olarak systemctl poweroff, systemctl reboot , systemctl halt komutları da kullanılmaktadır. Zaten bu 3 komutta artık systemctl komutuna bir linktir.

 

[root@egitim ~]# ls -la /sbin/poweroff

lrwxrwxrwx. 1 root root 16 Sep 12 00:02 /sbin/poweroff -> ../bin/systemctl

 

[root@egitim ~]# ls -la /sbin/reboot

lrwxrwxrwx. 1 root root 16 Sep 12 00:02 /sbin/reboot -> ../bin/systemctl

 

[root@egitim ~]# ls -la /sbin/halt

lrwxrwxrwx. 1 root root 16 Sep 12 00:02 /sbin/halt -> ../bin/systemctl

 

 

Unit dosyaları

 

Şu ana kadar anlattığımız üzere  bütün servis ve target’lar aslında /usr/lib/system/system altında bulunan dosyalardan oluşmaktadır. Örnek olarak sshd.service dosyasının içine bakarsak:

 

/usr/lib/system/system/sshd.service

 [Unit]

Description=OpenSSH server daemon

After=network.target sshd-keygen.service

Wants=sshd-keygen.service

 

[Service]

EnvironmentFile=/etc/sysconfig/sshd

ExecStart=/usr/sbin/sshd -D $OPTIONS

ExecReload=/bin/kill -HUP $MAINPID

KillMode=process

Restart=on-failure

RestartSec=42s

 

[Install]

WantedBy=multi-user.target

 

Burada görüldüğü gibi bir unit file içinde  ini dosyalarına benzer bir format bulunmaktadır. Burada Unit, Service ve Install ana  başlıkları mevcuttur.

Unit kısmında Description,After ve Wants kısımları servisin açıklamasını, Servisin hangi servislerden sonra başlatılması gerektiğini ve servisin hangi servisin de başlatılmış olduktan sonra başlatıldığı göstermektedir.

Service kısmında servisi start stop etmek için asıl parametreler yer almaktadır. Burada RestartSec kısmı önemlidir. Mesela olursa servis bir şekilde ölürse systemctl bu servisi 42 sn sonra tekrar başlatmaktadır.

Son kısım Install kısmı ise servisin runlevel3 yani yeni adı ile multi-user.target tarafından servis kurulumu aşamasında ihtiyaç duyulduğu manasına gelmektedir.

Journalctl komutu

Systemd altyapısı loglarını journal denen formatta /run/log/journal/ dizinine atmaktadır. Aslında tıpkı systemd, init altyapısını nasıl değiştirdiyse ileride systemd-journald servisi de rsyslog altyapısını değiştirebilir. Tabiki şu an için bu sadece tartışılan bir konu ama ileride olması olası. Peki neden?  Buradaki amaç logların indexlenerek , binary bir dosyada saklanması ve istenen log satırlarının komutlarla hızlıca bulunması (normalde syslog loglarını grep veya tail –f ile incelemekteyiz). Tabiki bu olur mu bilmiyoruz ama şu an için diyebileceğimiz

1.      Systemd logları journald vasıtasıyla tutmaktadır.

2.      Bu loglar /run/log/journal dizininde bulunmakta ve her sistem reboot edilişinde tekrar oluşturulmaktadır

3.      Eğer bu log dosyalarının kalıcı olması isteniyorsa /var/log/journal dizini oluşturulup ilgili systemd-journald servisi tekrar başlatılmalıdır. (systemctl restart systemd-journald.service)

4.      Journald loglarını görmek için ve loglarda arama yapmak için journalctl komutu kullanılır.

Örnek journalctl komutu kullanımı:

Sistem boot ettikten sonraki bütün journal loglarını görmek için:

# journalctl -b

 

Sadece belirli prioritydeki logları görmek için. Mesela error seviyesindeki

# journalctl –p err

 

Tail –f komutundaki gibi yeni gelen logları takip için:

# journalctl -f

 

Belirli bir tarihten sonraki logları görmek için:

# journalctl-p warning--since="2015-9-16 23:59:59"

 

Yararlı sayfalar:

http://www.freedesktop.org/wiki/Software/systemd/

https://access.redhat.com/articles/754933

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Services.html

http://0pointer.de/blog/projects/why.html

 

 


CentOS 6.5 x64 Kurulumu

$
0
0

Bu makale serimizde sizlerler birlikte Linux üzerine incelemelerde bulunacağız. Öncelikle bilmemiz gereken Linux sürümleri 2 adettir. İ386 32bittir.  X86_64 ise 64 bittir.

Hızlı ir biçimde kurulum adımına geçelim.

clip_image002

Install or upgrade an existing system seçip ilerliyoruz.

clip_image004

Bu ekran cd test ekranıdır. Cdnizde emin değilseniz buradan test ettirebilirsiniz.Skip seçeniğini tıklayın.

clip_image006

Karşılama ekranını ilerleyin.

clip_image008

Dil ayarını seçin.

clip_image010

Klavye ayarını seçin.

clip_image012

Disk ayarları ekranıdır. Gelişmiş ayarlarıyla yapmak için alt kısımdakini seçip ilerliyoruz.

clip_image014

Diski seçip ilerleyin.

clip_image016

Yes ile diksin tamamını formatlarız.

clip_image018

Makina adını verin. Configure Network tıklayın, burada bir ayar yapacağız bu ayar önemlidir.

clip_image020

Defaultta NIC’i tanımaz bu nedenle system eth0 editlenip, connect automatically seçeneğini işaretliyoruz. Onaylayıp çıkıyoruz.

clip_image022

Time zone ayarlarında İstanbul’u seçin.

clip_image024

Root parolasını verin.

clip_image026

Burası partition bilgilerini olduğu kısımdır. Use all space seçersek sistem kendi oluşturur. Kendimiz özel partition yapacağımız için Create Custom Layout seçip ilerliyorum.

clip_image028

Sda birinci diski temsil eder. Eğer farklı bir diks daha olsaydı sdb,sdc şeklinde gidecekti. Create tıklayın.

clip_image030

Standart partiton seçip, create tıkla.

clip_image032

Root yani / partitionunu oluşturuyoruz. Windowstaki windowsa denk gelir.

clip_image034

Yeni bir parititon oluşturuyoruz. Burada file system type swap seçiyoruz. Bu windowstasi page filea denk gelir.

clip_image036

Boot partitionunu oluşturuyoruz.

clip_image038

/backup diye ayrı bir partition oluşturuyoruz. Fill to maximum allowable size seçeneği ile kalan tüm boş alanı buna veriyoruz.

clip_image040

Tüm partition ayalarını yaptık. Next ile ilerleyip Write changes to diski seçiyoruz.

clip_image042

Kurulacak paketleri seçin ilerleyin.

clip_image044

Kurulum işleminin bitmesini bekleyin. Kurulum bittikten sonra Application / System Tool / Terminal tıklayın.

clip_image046

İfconfig komutunu verin ve putty ile bağlantı sağlayın.

clip_image048

 

/bin : Temel komutları içinde barındırır.

/boot :  Konfigürasyon dosyaları burada tutulur.

/dev :  Hardware ile software bağlantıları burada tutulur.

/etc : Linux yapılandırma dosyaları buradadır. Apache server, Dns server gibi

/home:  Kullanıcı profilleri buradır.

/lib :  Kernel librarylar buradadır. Windowstaki .dll ler gibi.

/media : Cdrom, vs..

/mnt : Media gibi aynısıdır.

/opt: Opsiyonel paketler application yazılım paketleri burada tutulur.

/root :  root ana dizindir.

/sbin: Root kullanıcılarının kullanabileceği komutlara ait dosyalar.

/tmp : Herkesin kullanabileceği geçici dosyaların saklandığı dizindir.

/user : Uygulama programları dizinidir.

/var : Log dosylarıdır. Örneğin web sunucuya ait log dosyları

Faydalı olması dileğiyle.

Red Hat 7 NetworkManager ve Network Ayarları

$
0
0

Red Hat 7 ile hayatımıza gelen yeniliklerden biri de network ayarlarının yapıldığı yöntemlerin değişmesidir. Eskiden scriptlerle  düzenlenen ip ve interface ayarları RHEL 7 ile birlikte NetworkManager adlı servisle yönetilmeye başlandı. Aslında NetworkManager RHEL6 da da vardı fakat istendiğinde devre dışı bırakılabiliyordu nitekim çoğu Red Hat sistem yöneticisi de bunu tercih ediyordu.

Red Hat Enterprise 7 çıkması ile artık NetworkManager kullanmak ve öğrenmek kaçınılmaz oldu. Artık dosyaları editleyerek yapılan ayarlar da kalıcı olmamakta ve NetworkManager tarafından değiştirilmekte, üzerine yazılmaktadır. Peki RHEL7 de network ayarları için elimizde hangi komutlar var ve hangi dosyalarda neler var bunları sırasıyla görelim.

Hostname ayarlamak

Eskiden Red Hat sistemlerde hostname /etc/sysconfig/network dosyasına yazılırdı.Örnek vermek gerekirse RHEL7 öncesi

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=egitim.faruk.net

 

Şeklinde olurdu. Şimdi ise bu dosya tamamen geriye dönük uyumluluk için tutulmaktadır ve içeriği aşağıdaki gibidir.

# Created by anaconda

 

RHEL7 ile artık hostname /etc/hostname dosyasına yazılmaktadır. Yine NetworkManager ‘da olduğu gibi artık hostname’de bir servis vasıtasıyla kontrol edilmektedir. Bu servisin adı systemd-hostnamed.service servisidir ve anlaşıldığı üzere systemd yapısının bir alt servisidir. İlgili servis hakkında bilgi almak için aşağıdaki komut verilir.

# systemctl status systemd-hostnamed.service

systemd-hostnamed.service - Hostname Service

   Loaded: loaded (/usr/lib/systemd/system/systemd-hostnamed.service; static)

   Active: active (running) since Tue 2015-10-06 12:11:20 EEST; 7min ago

     Docs: man:systemd-hostnamed.service(8)

           man:hostname(5)

           man:machine-info(5)

           http://www.freedesktop.org/wiki/Software/systemd/hostnamed

 Main PID: 3048 (systemd-hostnam)

   CGroup: /system.slice/systemd-hostnamed.service

           └─3048 /usr/lib/systemd/systemd-hostnamed

 

Oct 06 12:11:20 egitim.faruk.net systemd[1]: Starting Hostname Service...

Oct 06 12:11:20 egitim.bilisim.com systemd[1]: Started Hostname Service.


hostname ‘i ayarlamak,görmek için artık yeni bir komutumuz var. Bu komut hostnamectl komutudur. Bu komutta ise en çok kullanılan iki opsiyonumuz mevcut.

Hostname’i görmek için “ hostnamectl status

# hostnamectl status

   Static hostname: egitim.faruk.net

         Icon name: computer

           Chassis: n/a

        Machine ID: 9418ed277bcb45dd886c73cfb2025299

           Boot ID: 95aeb2fe11e843c9bde455dd9dc1ebf9

    Virtualization: kvm

  Operating System: Red Hat Enterprise Linux Server 7.1 (Maipo)

       CPE OS Name: cpe:/o:redhat:enterprise_linux:7.1:GA:server

            Kernel: Linux 3.10.0-229.el7.x86_64

      Architecture: x86_64

 

Hostname’i ayarlamak için ise “ hostnamectl set-hostname <yeni_host_adi>“ kullanılır.

# hostnamectl set-hostname  egitim2.faruk.net

# hostnamectl status

   Static hostname: egitim2.faruk.net

         Icon name: computer

           Chassis: n/a

        Machine ID: 9418ed277bcb45dd886c73cfb2025299

           Boot ID: 95aeb2fe11e843c9bde455dd9dc1ebf9

    Virtualization: kvm

  Operating System: Red Hat Enterprise Linux Server 7.1 (Maipo)

       CPE OS Name: cpe:/o:redhat:enterprise_linux:7.1:GA:server

            Kernel: Linux 3.10.0-229.el7.x86_64

      Architecture: x86_64

[root@egitim ~]# cat /etc/hostname

egitim2.faruk.net

 

Üstteki komutta görüldüğü gibi /etc/hostname dosyası hostnamectl tarafından otomatik güncellenmekte ve hostname değiştirilmektedir. Burada önemli olan bir adım da sistem hostname’inin /etc/hosts dosyasından manual olarak güncellenmesi gerektiğidir zira hostnamectl /etc/hosts dosyasını güncellemez.

Interface isimleri

Eski RHEL bazlı sistemlerde ethernet kartları eth0,eth1…ethN olarak adlandırılırdı. Bu isimlendirme yapısında bir ethernet kartının sistemdeki hangi Pcı karta takıldığı veya fiziksel lokasyonunu bulmak oldukça zordu. Ayrıca ethernet kartlarının çok olduğu sistemlerde arasıra bu sıralama bozulduğu için sistemin erişilemez olduğu durumlarda olabiliyordu. Artık isimlendirme ve dolayısı ile ethernet kartlarının isimleri de değişmiş oldu. RHEL7 ile gelen udev alt sistemi ile ethernet kartlarının isimlendirmesinde firmware,topoloji ve sistemdeki yerine göre statik gib isimlendirme verilmesi sağlandı. Bu sayede ilgili kart sistemden çıkarılsa veya yeni bir kart takılsa bile isim çakışmasının önüne geçilmiş oldu. Tabi kabul etmek gerekiyor eski isimler çok daha kolaydı. Burada karşımıza yine systemd çıkıyor. Systemd  isimlendirme yaparken 5 değişik yöntem kullanmaktadır.  Red Hat bu isimlendirmeye consistent network device naming adını vermektedir. Bu isimlendirmeler 3 tip olmaktadır.

 

  1. en:  Ethernet cihazları için
  2. wl: Kablosuz cihazlar için
  3. ww: Kablosuz WAN’lar için:

bu 3 önekten birini alan network kartlarının sonlarına şu şekilde isimlendirmeler yapılabilir:

 

Format

Description

o<index>

Anakarta entegre cihaz numarası

s<slot>[f<function>][d<dev_id>]

PCI kartlara bağlı cihazlar

x<MAC>

MAC adresi

p<bus>s<slot>[f<function>][d<dev_id>]

PCI geographical lokasyon

p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>]

USB port

 

 

/etc/sysconfig/network-scripts/ifcfg-*

Bu dosyalar önceki RHEL sürümlerinde olduğu gibi yine işlevseldir fakat bu dosyalar artık tamamen NetworkManager tarafından yönetilmvalekte ve bu dosyaların el ile değiştirilmesi kesinlikle tavsiye edilmemektedir. Artık kalıcı olarak network ayarlarını değiştirmek,düzenlemek için NetworkManager rpm paketi ile gelen nmcli konsol komutu tavsiye edilmektedir.

NetworkManager ve nmcli komutu

RHEL7 de aktif olarak kullanılmaya başlanan NetworkManager servisini yönetebileceğiniz ve IP yapılandırmasını yapabileceğiniz bir komut olan nmcli komutu ile ağ yapılandırmalarını yapabilirsiniz. Bu komut’un detaylarına girmeden önce  “device” ve “connection” arası ilişkiyi detaylandırmak gerekmektedir.  

Device kullandığımız fiziksel ağ arabirimi, connection ise bu ağ arabiriminde kullandığımız profil olarak tanımlanabilir. Örnek olarak laptop bilgisayarınızı hem evde hem de işte kullandığımızı farzedelim. Evde farklı bir networkünüz mevcuttur ve genelde dhcp’den IP aldığınız bir ortam olur. İşte ise statik bir IP aldığınızı ve bu IP adresini kullanıdığınızı düşünelim. Burada iki adet profil yani “connection” mevucttur ama bu iki profil de aynı ethernet kartını  yani “device” ı kullanmaktadır. NetworkManager bir device üzerinde aynı anda bir profilin aktif olduğu ama aynı cihaz üzerinde birden fazla profilin de (connection) olabileceği mantığı üzerine çalışmaktadır.

Örnek olarak sistemdeki device’ları görmek için:

# nmcli device status

DEVICE   TYPE      STATE         CONNECTION

enp0s3   ethernet  connected     enp0s3    

enp0s10  ethernet  disconnected  --        

enp0s8   ethernet  disconnected  --        

enp0s9   ethernet  disconnected  --        

lo       loopback  unmanaged     --

 

Burada görüldüğü gibi 5 adet device mevcuttur. Bunlardan sadece enp0s3 ağa bağlıdır ve bir connection kullanır (burada connection adı da enp0s3 verilmiş yani device adı ile aynı connection adı kullanılmış). RHEL7 kurulumu sırasında ayarladığnız connectionları, device adı ile aynı yapmaktadır. Bu bir tercih meselesidir ama bir zorunluluk değildir. Burada /etc/sysconfig/netrwork-scripts/ifcfg-* dosyaların adlarının deviceı değil connection ‘u ifade ettiğinide ayrıca belirmek gerekiyor.

 

 

# ls -la /etc/sysconfig/network-scripts/ifcfg-*

-rw-r--r--. 1 root root 294 Sep 12 00:09 /etc/sysconfig/network-scripts/ifcfg-enp0s3

-rw-r--r--. 1 root root 254 Jan 15  2015 /etc/sysconfig/network-scripts/ifcfg-lo

 

Sadece bir cihazın özelliklerini detaylı görmek için:

# nmcli device show enp0s3

GENERAL.DEVICE:                         enp0s3

GENERAL.TYPE:                           ethernet

GENERAL.HWADDR:                         08:00:27:76:3D:82

GENERAL.MTU:                            1500

GENERAL.STATE:                          100 (connected)

GENERAL.CONNECTION:                     enp0s3

GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/0

WIRED-PROPERTIES.CARRIER:               on

IP4.ADDRESS[1]:                         10.0.2.15/24

IP4.GATEWAY:                            10.0.2.2

IP4.DNS[1]:                             156.154.70.22

IP4.DNS[2]:                             156.154.71.22

IP4.DNS[3]:                             8.8.8.8

IP4.DNS[4]:                             8.8.4.4

IP6.ADDRESS[1]:                         fe80::a00:27ff:fe76:3d82/64

IP6.GATEWAY:                           

 

Burada görülen ayarların detaylı açıklamaları nm-settings man sayfasında genişçe yer almaktadır.

Bir device’ı  yönetimsel olarak (administratively) down veya up edebiliriz dolayısı ile onunla ilişkili connection’larda kapatılmış olur örnek vermek gerekirse:

# nmcli device disconnect enp0s3

Device 'enp0s3' successfully disconnected.

 

# nmcli device status

DEVICE   TYPE      STATE         CONNECTION

enp0s10  ethernet  disconnected  --        

enp0s3   ethernet  disconnected  --        

enp0s8   ethernet  disconnected  --        

enp0s9   ethernet  disconnected  --        

lo       loopback  unmanaged     --        

 

# nmcli device connect enp0s3

Device 'enp0s3' successfully activated with 'f798fda3-f9ea-45bb-b45b-7fd01b5eea2f'.

 

# nmcli device status

DEVICE   TYPE      STATE         CONNECTION

enp0s3   ethernet  connected     enp0s3    

enp0s10  ethernet  disconnected  --        

enp0s8   ethernet  disconnected  --        

enp0s9   ethernet  disconnected  --        

lo       loopback  unmanaged     --

 

Bu aşamaya kadar device’larla alakalı nmcli opsiyonlarını verdik. Bundan sonra connection ‘a yoğunlaşalım.

Dhcp’den IP alacak şekilde bir connection eklemek gerekirse:

# nmcli con add con-name "dhcpdenipal" type ethernet ifname enp0s3

 

Burada nmcli komutundan sonra uzunca “connection” yazabilirdik fakat yazımı kolay olsun diye “con” parametresini de kabul etmektedir nmcli komutu. Burada görüldüğü gibi bazı parametreler kullandık. Bunlar dhcp’den ip almak için kullanmamız gerken minimum parametreledir. Sırasıyla

·        con-name : Bağlantı adını ifade etmektedir. Bağlantı adında boşluk karakteri de kullanılabilir o yüzden tırnak işaretleri kullanılır. Her ne kadar biz burada boşluk karakteri kullanmasak da gösterim için tırnak işareti kullandık. Dikkat ederseniz burada device adı (enp0s3) ile connection adı (dhcpdenipal ) farklı oldu.

·        type : Bağlantının hangi topoloji türünü kullanacağını gösterir. Genelde ethernet tipi kullanılır.

·        İfname : Connection’un bağlanacağı arabirim belirtilir.

 

Eğer statik bir IP vermek isteseydik bazı ek parametreleri de kullanmamız gerekmektedir. Örnek kullanım

 

# nmcli con add con-name "statikip" ifname enp0s3 autoconnect no type ethernet ip4 10.0.2.5/24 gw4 10.0.2.2

 

Üstteki dhcp profilne ek olarak kullandığımız yeni parametreler şunlardır.

·        autoconnect  [no|yes]:   Profiller  tanımlı olarak autoconnect yes olarak otomatik bağlanır ama unutulmamalıdır ki aynı anda sadece bir adet profil bir interface için aktif olablir.

·        ip4: Vereceğimiz ip adresi burada belirtilir. Burada unutulmaması gereken / ‘den sonra netmask bitini vermemiz gerekmektedir. Eğer verilmez ise netmask ilgili subnet için uygun değeri almak yerine direkt “/32” kullanılmaktadır.

·        gw4: Gateway IP adresi.

 

Burada dikkat edilirse dns ayarları girilmedi. DNS ayarları ne yazıkki connection yaratırken eklenemiyor. Bir sonraki aşamada yani connection modify ederken eklenebiliyor. Aşağıda bu örnek verilmektedir.

 

# nmcli con mod "statikip" connection.autoconnect no

# nmcli con mod "statikip" ipv4.dns  8.8.8.8

# nmcli con mod "statikip" +ipv4.dns 8.8.4.4

 

Connection modify edilirken dikkat edilmesi gereken şey connection add sırasında kullandığımız ip4 ifadesi yerine ipv4 ifaesi kullanıldığıdır. Ayrıca ikinci dns eklerken +ipv4.dns ifadesi kullanilmaktadir.

Bu connectionun özelliklerini görmek için aşağıdaki komutu kullanırız. Burada bir kısmı gösterilen özellikler aslında 50 satırı bulabilmektedir.

# nmcli connection show "statikip"

connection.id:                          statikip

connection.uuid:                        b0962df7-7e06-49ea-b163-0d13fa9e33a8

connection.interface-name:              enp0s3

connection.type:                        802-3-ethernet

ipv6.dhcp-send-hostname:                yes

ipv6.dhcp-hostname:                     --

 

Aşağıda ayrıca mevcut bütün bağlantıları ve sadece aktif bağlantıları görmek için:

# nmcli connection show 

NAME      UUID                                  TYPE            DEVICE

statikip  b0962df7-7e06-49ea-b163-0d13fa9e33a8  802-3-ethernet  --    

enp0s3    f798fda3-f9ea-45bb-b45b-7fd01b5eea2f  802-3-ethernet  enp0s3

# nmcli connection show  --active

NAME    UUID                                  TYPE            DEVICE

enp0s3  f798fda3-f9ea-45bb-b45b-7fd01b5eea2f  802-3-ethernet  enp0s3

 

Aktif bir bağlantıyı down edip, diğer bağlantıyı aktif yapmak için

# nmcli con reload

# nmcli connection down enp0s3

Connection 'enp0s3' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)

# nmcli connection up statikip

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)

 

 

Üstte reload parametresinin kullanılmasına gerek yok fakat olası problemleri çözümleme adına yararlı olabiliyor. Reload parametresinin asıl kullanılmasındaki amaç /etc/sysconfig/network-scripts/ifcfg-* dosylarına elle müdahele yapılması durumunda bu bilgilerin de okunmasını sağlamaktır.

Son olarak bir connection silmek için (ilgili connectionun aktif olmadığına emin olmak gerekiyor nmcli şu aşamadan ne yazıkki aktif bir bağlantının silinmesine engel olmuyor silinmesi durumunda makinaya bağlantınız kopabilir!)

 

# nmcli connection show --active

NAME      UUID                                  TYPE            DEVICE

statikip  97c7e887-09b8-4bd4-a2d4-399f19014446  802-3-ethernet  enp0s3

# nmcli connection delete statikip

# nmcli connection show --active

NAME  UUID  TYPE  DEVICE

 

Üstteki örnekte görüldüğü gibi aktif olan bir bağlantı silindi ve ilgili sistemde herhangi bir aktif bağlantı kalmadı.

nm-connection-editor

Network bağlantılarını yönetmek üzere RHEL7 ve türevi işletim sistemlerinde görsel olan bir komut olan nm-connection-editor yine aynı adlı rpm paketi tarafından kurulmaktadır. Üstte girdiğimiz komutları burada incelersek

 

clip_image002

 

clip_image004

clip_image005

 

Ayrıca bu komuta ek olarak konsolda kullanabileceğimiz nmtui adlı konsol tabanlı görsel komutta mevcuttur.

clip_image007

Faydalı bağlantılar:

·        https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Network_Config_Using_nmcli.html

·        Nmcli, nmcli-examples ve nm-settings man sayfası

·        https://wiki.gnome.org/Projects/NetworkManager

·        https://wiki.gnome.org/Projects/NetworkManager/nmcli

Samba Active Directory Domain Controller

$
0
0

Bu ilk yazımda Linux Ubuntu nun şuan ki son versiyonu olan 15.04 ün Active Directory Domain Controller mode’unda kurulumu hakkında olacak.

Ubuntu dağıtımını seçmemin sebebi kütüphanesinin çok geniş ve güncel olmasıdır. Diğer dağıtımlarda da aynı yol izlenirse sonuca ulaşmak anlamında mesafe katedilebilir diye düşünüyorum.

Linux üzerinde sambayı AD olarak ayarlıcaz ve windows AD den pekte farklı olmadığını görücez. Daha güçlü yönleri olabilir mi? Tartışılır…

Not:komutlar kırmızı renktedir. Root yetkileri ile çalıştırılmıştır. Root ile çalıştırmak istemeyenler komutların başına sudo eklemelidir.

Senaryo;

Linux Ubuntu = dc.ubuntsrv.local 192.168.0.10 (AD-DC)

Linux Ubuntu = server.ubuntsrv.local 192.168.0.5 (Bu makine sadece bizi internete çıkarmak için)

Windows client= test-pc 192.168.0.12 (dhcp)

 

clip_image002

DC isimli ubuntu server a logon olarak başlayalım..

Önce güncellemeleri alalım;

apt-get update

apt-get upgrade

dc.ubuntsrv.local adlı makinenin IP ayarlarında şu aklemeleri yapıyoruz

nano /etc/network/interfaces

clip_image004

 

Hosts dosyasına dc isimli makinenin bilgilerini giriyoruz

nano /etc/hosts

192.168.0.10    dc.ubuntsrv.local dc

Nano editörü ile yapılan değişiklikten sonra ctrl+x ile kayıt yapılır. Kaydetmeden çıkmak için ise ctrl+z

 

Yetkilendirme gibi işlemler için acl ve attr paketlerini kuruyoruz

apt-get install acl attr 

Bunlar daha sonra oluşturacağımız dosya ve klasörlerin yetkilendirmesinde işe yarayacaklar. Şimdi linux’ un dosya yapısında değişiklik yapalım. Yapacağımız share’lerin bulunduğu bölüme girip..

nano /etc/fstab

user_xattr,acl,barrier=1,

clip_image005

ekliyoruz. Kayıt edip çıktıktan sonra yeniden mount edelim

mount –a

Samba windows AD gibi LDAP ve kerberos kullanıyor bu sebeple NTP (network time protocol) kurmak zorundayız.

apt-get install ntp

Saat güncellemesi yapıyoruz..

service ntp stop

ntpdate -B 0.ubuntu.pool.ntp.org

service ntp start

Şimdi samba kurulumundan önce ihtiyazımız olan bu listedeki paketleri kuralım

apt-get install attr build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls-dev libreadline-dev python-dev libpam0g-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev

Kurulum sırasında kerberos sorularına  BÜYÜK HARFLERLE sırasıyla

UBUNTSRV.LOCAL, DC.UBUNTSRV.LOCAL, DC.UBUNTSRV.LOCAL diyerek devam..

Şimdi sambayı kuruyoruz

apt-get install samba smbclient

Sambanın conf dosyasını yedekliyoruz.

mv /etc/samba/smb.conf /etc/samba/smb.conf.ydk

smb.conf samba tool u ile yapacağımız domain provizyonu sırasında otomatik olarak oluşturacak. Bu işlemi yapmazsanız, samba tool işlemi yaparken zaten bu dosya mevcut diyerek işlemi tamamlamaz.

Samba DNS backend olduğundan network interface’inde ekleme yapıyoruz.

nano /etc/network/interfaces

dns-nameservers 192.168.0.10 192.168.0.5

Not: Bu senaryoda 192.168.0.5 numaralı IP internet bacağı olduğundan bu girişi yaptık. Örneğin internet için modem kullanan bir yapıda durum farklı olacaktır. Networkün durumuna göre dizayn edilmesi gerekir.

Ekstra bir DNS kurmaya gerek yok kurulan samba DNS forwarder gibi çalışıyor.

Serverı RESTART ediyoruz…

DNS setup ı kontrol edelim

cat /etc/resolv.conf

search ubuntsrv.local

nameserver 192.168.0.10

nameserver 192.168.0.5

görünüyorsa devam.

 

İnteraktif mode da domaini oluşturuyoruz

samba-tool domain provision --use-rfc2307 --interactive

clip_image006

Not; Bu tool u kullanmadan da samba AD kurulabilir. Ancak samba-tool otomatik kurulum için ideal olduğundan seçildi.

Şimdi smb.conf a bir bakalım

cat /etc/samba/smb.conf

clip_image008

Sıra kerberos ta. Provizyon sırasında sambaya uygun krb5.conf oluşturulduğu için mevcut dosyayı güvenli bir alana taşıyıp oluşturulan dosyaya link veriyoruz. Yetki sorunu çıkmasın istiyorsak /etc nin altında olmalı.

cat /etc/krb5.conf

mv /etc/krb5.conf /etc/krb5.conf.ydk

ln -sf /var/lib/samba/private/krb5.conf /etc/krb5.conf

Serverı RESTART ediyoruz…

Şimdi LDAP ve kerberos testlerini yapalım

host -t SRV _ldap._tcp.ubuntsrv.local

host -t SRV _kerberos._udp.ubuntsrv.local

host -t A dc.ubuntsrv.local

clip_image010

Bu sorgulara doğru cevaplar alamazsanız işlem tamamlanamamıştır. DNS ayarlarını kontrol etmek gerekir!

Şimdi de Samba DC level ı yükseltelim

samba-tool domain level raise --domain-level 2008_R2 --forest-level 2008_R2

clip_image012

Windows 7 client a RSAT kurarak aşağıda ki işlemler kontrol edilebilir.

clip_image013

Yaptığım testlerde DNS - AD Users and Computers - GPO sorunsuz çalıştı. Diğerlerine henüz bakamadım. Tamamının çalışacağı garantisini ne yazık ki veremiyorum.

clip_image015

clip_image017

 

Domaine alınan windows client

clip_image019

 

Linux Ubuntu server 15.04 artık AD domain controller olarak hayatına devam edebilir.

Red Hat Enterprise Linux 7 RHEL7 ile Gelen Firewalld Nedir?

$
0
0

RHEL7 ile gelen Firewalld Nedir?

 

9 Haziran 2014 de çıkan RHEL7 hayatımıza birçok yenilikler getirdi. .Bunlardan biri de firewall yönetimini yapan servislerin değiştirilmesi oldu. Eskiden script temelli bir sistem olan iptables servisi yerine firewalld ile firewall kuralları yönetilir hale geldi. Firewalld öncelikle script temelli değil bir servis olarak bir daemon tarafından ( /usr/sbin/firewalld ) yönetilmektedir.

 

# systemctl status firewalld

firewalld.service - firewalld - dynamic firewall daemon

   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)

   Active: active (running) since Mon 2015-10-12 22:45:03 EEST; 1min 20s ago

 Main PID: 674 (firewalld)

   CGroup: /system.slice/firewalld.service

      674 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

 

Oct 12 22:45:03 egitim.egitim.com systemd[1]: Started firewalld - dynamic firewall daemon.

 

Firewalld ile beraber zone mantığı da getirildi. Böylece network kartları bir zone’a bağlanarak yönetimi sağlandı. Ek olarak Ipv4 ve Ipv6 desteğini içeren firewalld, ek olarak Ethernet bridge’leri desteklemekte ve de çalışma esnası (runtime) ve kalıcı olarak iki yapılandırma sunmaktadır. Ayrıca kural eklerken uygulama bazında veya servis bazında da kural eklenilmesine olanak vermektedir. Eski iptables servisi ile (ki istenirse RHEL7 de firewalld disable edilip, iptables servisi yine kullanılabilir)

Aşağıdaki grafikte eski iptables servisi ile yeni firewalld servisinin arasında nasıl bir bağlantı olduğu görülebilir.

clip_image002

Eskiten görsel bir tool olarak iptables için system-config-firewall komutu kullanılmaktaydı. Bu komut iptables servisinin yapılandırma dosyası olan /etc/sysconfig/iptables dosyasına yazar ve iptables servisini değişiklikleri okuması için tekrar çağırırdı. Tabi bu yapılandırma dosyası iptables komutlarına dönüştürülerek çekirdekteki netfilter alt sistemine kural olarak eklenirdi.

Firewallld servisi ile artık iki alternatif yönetim komutumuz bulunmakta birisi görsel bir tool olan firewall-config diğeri komut satırından çalışan firewall-cmd her iki komutta aslında firewalld’nin XML tabanlı yapılandırma dosyalarını içeren /usr/lib/firewalld/ ve /etc/firewalld/ dizinlerine kuralları yazmakta ve buradan iptables komutları üretilip yine çekirdekteki netfilter alt sistemine kural olarak eklenmektedir.

Iptables, etables ve ip6tables servisi firewalld servisinin zıttıdır. Yani firewalld çalışırken bu servislerin çalışmaması gerekmektedir. Eğer çalışıyorsa

# systemctl mask  iptables.service

# systemctl mask  ip6tables.service

# systemctl mask  etables.service

 

 

Daha önceden de dediğimiz gibi firewalld servisi bütün gelen (incoming) trafikleri zone’lara ayırmaktadır. Her bir zone’da kendi kural setlerine sahiptir. Firewalld gelen trafiğin hangi zone’a uğraması gerektiğini tespiti için şu kuralları uygular (İlk match eden kazanır):

1.      Eğer paketin kaynak adresi (source address) bir zone’da özel olarak tanımlı ise bu zone kullanılır.

2.      Eğer paketin geldiği interface için bir zone tanımlaması varsa bu zone kullanılır.

3.      Eğer bunlardan hiç biri yoksa default zone olan public zone’u kullanılır.

Firewalld’de gelen ön tanımlı zone public zone’a ek olarak aşağıdaki zone’larda ön tanımlı yapılabilir.

 

drop

Bütün trafik reddedilir. Ayrıca karşı tarafa reset paketi veya icmp paketi gönderilmez.

block

Bütün trafik reddedilir.

public

ssh ve dhcpv6-client trafiği dışındaki bütün trafikleri reddeder. Öntanımlı zone’dur. Ayrıca sisteme eklenen her yeni Ethernet arabirimi bu zone’u kullanır.

external

ssh trafiği dışındaki bütün trafikleri reddeder. Dışarı çıkan trafik bu zone kuralları tarafından maskelenir. Maskeleme adresi trafiğin dışarı çıktığı interface IP adresidir.

dmz

ssh trafiği dışındaki bütün trafikleri reddeder.

work

ssh,mdns,ipp-client ve  dhcpv6-client trafiği dışındaki bütün trafikleri reddeder.

 

home

ssh,mdns,ipp-client,samba-client ve dhcpv6-client trafiği dışındaki bütün trafikleri reddeder.

internal

home zone’u ile aynıdır.

trusted

Bütün gelen network bağlantıları kabul edilir.

 

 

Firewall-cmd komutu

Firewalld paketi ile gelen firewall-cmd  komutu ile firewalld yönetilebilir. Firewall-cmd kuralları ile çalışırken kuralları sadece o esnada geçerli olmasını sağlayabiliriz. Firewalld servisi restart edildiğinde bu sonradan kalıcı şekilde olması için ayarlanmamış kurallar devreye alınmaz. Eğer kurallarda –permanent  ifadesi yer alırsa bu kural kalıcı olması için dosyalara yazılır. Bu aşamadan sonra kuralın runtime’da yani çalışma esnasında etkin olması için –reload parametresi kullanılır.Ayrıca uzaktaki sistemde kural yazarken kuralın belirli bir süre devre dışı kalması için (yazdığımız kuralların sisteme erişimi tamamen kesmemesi için) bir timeout süresi verebiliriz. –timeout=saniye  şeklinde kullanılan bu parametre süresi bittikten sonra kaldırılır. Bu da bizim kuralımızı yazarken sistemi erişilemez olması durumundan kurtarmamızı sağlar.

Bazı örnek firewall-cmd komutlarına bakmak gerekirse:

Firewalld servisinin durumunu görmek için:

# systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
   Active: active (running) since Tue 2016-10-17 11:14:49 CET; 5 days ago
   ...

veya

# firewall-cmd --state
running

 

 

Ön tanımlı kullanılan zone’u görmek için

# firewall-cmd --get-default-zone

public

 

 

Bütün sistem hakkında özet bilgi almak için:

# firewall-cmd --list-all

public (default, active)

  interfaces: enp0s3 enp0s8

  sources:

  services: dhcpv6-client ssh

  ports:

  masquerade: no

  forward-ports:

  icmp-blocks:

  rich rules:

 

Üstte görüldüğü gibi public zone kullanılmakta ve ön tanımlı olarak sadece ssh vedhcpv6-client servislerine izin verilmektedir.

Bir servise izin vermek için. Mesela sistem üzerine kurduğumuz apache’ye izin vermek için:

# firewall-cmd --add-service=http

success

 

# firewall-cmd --list-all

 

public (default, active)

  interfaces: enp0s3 enp0s8

  sources:

  services: dhcpv6-client http ssh

  ports:

  masquerade: no

  forward-ports:

  icmp-blocks:

  rich rules:

 

#  firewall-cmd --permanent 

success

 

Üstte görüldüğü gibi –add-service parametresi ile http servisine izin verilmektedir.

Herhangi bir IP veya Subnet’e izin vermek için:

# firewall-cmd --add-source=192.168.24.0/24

success

# firewall-cmd --permanent

success

# firewall-cmd --list-all

public (default, active)

  interfaces: enp0s3 enp0s8

  sources: 192.168.24.0/24

  services: dhcpv6-client ssh

  ports:

  masquerade: no

  forward-ports:

  icmp-blocks:

  rich rules:

 

Özel bir porta izin vermek için:

# firewall-cmd  --permanent  --add-port=8080/tcp

Sucess

# firewall-cmd  --reload

# firewall-cmd --list-all

public (default, active)

  interfaces: enp0s3 enp0s8

  sources:

  services: dhcpv6-client http ssh

  ports: 8080/tcp

  masquerade: no

  forward-ports:

  icmp-blocks:

  rich rules:

 

Burada öncelikle runtime’da aktif olmayan bir kalıcı (permament) kural ekledilk. 8080/tcp portuna izin verdik. Ama aynı zamanda bunun runtime’da yani sistem çalışırken de aktif olması için –reload parametresini kullandık.Şu ana kadar gördüğümüz kurallarda IP ve Port kavramını aynı satırda kullanamıyorduk. Bunun için kullanmamız gereken kural tanımları “Rich Rules” diye adlandırılan ve source/port veya protokol tanımlarından önce zone’larda ilk danışılan kural tipi olan kurallardır.

Örnek rich rule:

# firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" port port="443" protocol="tcp" accept'

Success

# firewall-cmd --list-all

public (default, active)

  interfaces: enp0s3 enp0s8

  sources:

  services: dhcpv6-client http ssh

  ports: 8080/tcp

  masquerade: no

  forward-ports:

  icmp-blocks:

  rich rules:

        rule family="ipv4" source address="10.0.0.0/8" port port="443" protocol="tcp" accept

 

Firewall-config GUI

Firewalld ‘yi yönetmek için görsel bir araç olan firewall-config komutu da kullanılabilir. Yine aynı adlı rpm paketi olan bu görsel komutu aşağıdaki gibidir.

clip_image004

Üstteki arabirimde iki konfigürasyon modu mevcut. Biri Runtime diğeri Permanent. Burada kural yazarken önce Configuration Permanent seçilip sonrasında Optionsà Reload Firewalld ile kurallar Runetime a yüklenir.

clip_image006

 

Bu ekranda service ve/veya port eklemek mümkün olmasına ragmen komut satırından da kolay eklenebildiği için asıl rich rule eklenmesi sırasında bu ekranın kullanması daha faydalı olacaktır. Öncelikle Configuration’da Permanent seçilir.

clip_image008

Üstte görüldüğü gibi Port ve Servis kurallarının yanında aynı kuralda Source adresi de tanımlanmakta istenirse bu kural’ın syslog ‘a ve Audit sistemine mesaj atması da sağlanabilmektedir.

Bazı yararlı siteler:

 

Firewalld  servisi Red Hat 7 tabanlı sistemlerde gelen iptables servisine göre oldukça kolay ve yönetilebilir bir arabirim sunmakta. Aşağıda bazı yararlı linkler verilmektedir.

1.      http://www.firewalld.org/

2.      https://fedoraproject.org/wiki/FirewallD

3.      https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html

4.      https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7

5.      http://www.certdepot.net/rhel7-get-started-firewalld/

 

 

Bind DNS ve Active Directory Entegrasyonu

$
0
0

Bu makalemizde Bind dns sunucu ile Active Directory entegrasyonunu inceliyor olacağız. Bind Linux/Unix sistemlerde oldukça yaygın olarak kullanılmaktadır.  Bind ve Dns yapısı ile ilgili daha ayrıntılı bilgi için portalımızda daha önce yayınlanmış olan https://www.cozumpark.com/blogs/linux_unix/archive/2010/08/29/bind-linux-dns-servisi.aspx adresindeki makaleden faydalanabilirsiniz.


Bind ve Active directory entegrasyonu için öncelikle Linux sunucumuza bind yazılımını kurmamız gerekiyor. Ben test ortamı olarak Centos 6.7 server , 2012 R2 sunucu ve Windows 7 client tercih ettim. Bind dns sunucu yazılımı diğer tüm linux dağıtımları üzerine sorunsuzca kurulabilmektedir.

 

clip_image002

Centos sunucumuza yetkili kullanıcı ile bağlanıp yum install bind komutu ile kurulumu başlatıyoruz.

clip_image004

Centos  paket depolarından bind yazılımını sunucuma indirip kurmak için bizden onay istiyor. Y seçeneği ile onaylayarak devam ediyoruz.

clip_image006

Complete mesajı ile işlemin başarılı bir şekilde sonuçlandığını görüyoruz.

Centos dağıtımı üzerinde iptables (firewall) servisi varsayılan olarak açık geliyor. Bu servisi ben tamamen kapatmayı seçiyorum.

clip_image008

 

Firewall servisini tamamen kapatmak istemiyorum, sadece gerekli portları açmak istiyorum derseniz

/etc/sysconfig/iptables içerisine   :INPUT ACCEPT satırının altına

-A input –p tcp –dport 53 –j ACCEPT

A input –p udp –dport 53 –j ACCEPT

Satırlarını eklemek ve iptables servisini yeniden başlatmak yeterli olacaktır.

 

clip_image010

clip_image012

Sonrasında bu işlemin kalıcı olması için chkconfig iptables off komutunu kullanabiliriz.

clip_image014

Nano text  editörü ile bind konfigürasyon dosyasını (/etc/named.conf) düzenlemeye başlayabiliriz.

clip_image016

Konfigürasyon dosyası içerisinde cozumpark.local ve _msdcs.cozumpark.local bölgeleri için gerekli tanımları yapıyoruz.

check-names ignore;     

bu satır ile _ldap veya _tcpşeklindeki kayıtları oluştururken hata vermemesini sağlıyoruz.

 

allow-update { AD-Server; };

satırı ile de DC üzerinden dns kayıtlarının oluşturulabilmesini sağlıyoruz.

 

Sonrasında /var/named/data altında cozumpark.local ve _msdcs.cozumpark.local bölge dosyalarını oluşturmamız gerekiyor.

 

Cozumpark.local dosyasının içeriği şu şekile olmalı :

 

[root@centos data]# more  cozumpark.local

$ttl 38400

cozumpark.local. IN      SOA     centos.cozumpark.local. vasvi.cozumpark.com. (

                        1444746648

                        10800

                        3600

                        604800

                        38400 )

cozumpark.local. IN      NS      centos.cozumpark.local.

centos.cozumpark.local  IN      A       10.100.5.191

 

Sonrasında Bind servisini açılışta çalışacak şekilde ayarlıyoruz ki sunucu yeniden başladığında sorun yaşamayalım.

 

clip_image018

 

 

Chkconfig named on komutu named (bind ) sunucunun açılışta çalışmasını sağlıyor.

Chkconfig |grep named komutu ile kontrol ettiğimizde 2, 3, 4, 5 level için onşeklinde olduğunu görebiliyoruz.

 

Konfigurasyonu tamamladıktan sonra named (bind) servisini yeniden başlatıyoruz ve çalışıp çalışmadığını kontrol ediyoruz.

 

Selinux eklentisini devre dışı bırakmamız gerekiyor. Bunun için /etc/sysconfig/selinux dosyası içerisine SELINUX=disabled satırını ekleyip kaydederek çıkıyoruz.

 

 

clip_image020

 

Windows 2012 sunucuma geçip ipv4 ayarlarını yapıyorum, dns olarak Linux sunucumun ip adresini giriyorum.

 

clip_image022

 

Bundan sonrası klasik Active Directory kurulumu ile neredeyse birebir aynı

Server manager içerisinden Active Directory Domain Services rolünü kuruyoruz.

 

clip_image024

 

clip_image026

 

Rol tabanlı kurulum bitince Promote this server to a domain controller seçeneği ile ile Active directory yapımızın kurulumuna başlıyoruz.

 

clip_image028

 

clip_image029

 

Klasik Active directory kurulumundan farklı olarak dns server kutucuğunu temizliyoruz.

Daha önce kurduğumuz linux sunucu üzerindeki bind dns sunucuyu kullanacağız.

Forest ve Domain Functional level olarak Window Server 2012 R2 seçiyoruz.

 

clip_image030

 

clip_image031

Bir sonraki ekranda Netbios Domain ismimizi de giriyoruz. Kurulum sonrasında sunucumuz yeniden başlıyor. Client tarafına geçip onu da domaine alıyoruz.

 

clip_image033

 

clip_image035

 

Sunucumuzda olduğu gibi client tarafında da ipv4 ayarlarında dns olarak Linux sunucumuzun ip adresi olması gerekiyor.

clip_image037

 

Welcome to cozumpark.local domain mesajı ile işlemin başarılı bir şekilde sonuçlandığını gözlemleyebiliyoruz.

 

Linux tarafında /var/log/messages dosyasına baktığımızda client için dns ismi oluşturma isteğini görebiliyoruz

clip_image039

 

Windows 2012 R2 sunucu üzerinde Active Directory Users and Computers içerisini kontrol ettiğimizde Client1 isimli makinamızı görebiliyoruz.

clip_image041

 

Faydalı olmasını dilerim.

 

BIND DNS View Uygulaması

$
0
0

Bu yazımızda Bind dns sunucu üzerinde view yapısını inceliyor olacağız.  Bu nedir dediğinizi duyar gibiyim. Bind üzerindeki view yapısı sayesinde dns sunucunuz isim sorgulama sırasında farklı networklere veya hostlara göre farklı ip adreslerini cevap olarak döndürebilir.

 

Bunun bize nasıl bir faydası olabilir diye düşünüyorsanız hemen bir örnekle açıklamaya çalışayım.

Çok şubeli bir intranet yapınız olduğunu varsayalım ve bu intranet yapısında uygulama sunucunuz veya web sunucunuz bölgelere göre farklı ip adreslerinde hizmet versin istiyorsunuz.  Bu sayede izmir bölgesindeki clientler www.cozumpark.com adresine gitmek istediğinde bind dns sunucunuz izmir bölgesi için ayırdığımız web sunucunun ip adresini, istanbul bölgesindeki clientler www.cozumpark.com adresine gitmek istediğinde ise istanbul bölgesi için ayırdığınız web sunucunun ip adresini verecektir. Bu işi load balancer gibi cihazlar ile de yapabiliyoruz fakat bu yöntem ile maliyetsiz ve daha basit bir yapılandırma ile statik olarak gerçekleştirebiliriz.

 

Veya Active Directory yapınızda kullanıcı profillerinizi clientler yerine nas cihazınızda tutmak istiyorsunuz. Şehirlerarası bağlantılar yavaş olacağı için her bölge için kendi lokalindeki nas cihazını gösterebilirsiniz. Dns tarafında fileserver tanımı her bölge için kendi lokayonundaki nas cihazını gösterecektir böylece.

 

Bu kadar ön bilgiden sonra işin yapılandırma kısmına geçelim:

Test ortamımda Suse Linux kullanıyorum. Dns sunucu kurulumunu yast içerisinden basit bir şekilde yapabilirsiniz veya rpm paketlerini bulup manuel olarak da kurulum yapabilirsiniz. Debian tabanlı sistemlerde apt-get install named , Redhat tabanlı sistemlerde ise yum install named komutları ile

Dns sunucu kurulumunu yapabiliriz.

 

Kurulum sonrasında Linux sunucu üzerinde firewall servisinin kapalı olmasına veya sunucuma gelen isteklerde 53 portunun (tcp ve udp ) açık olmasına dikkat ediyorum. Aksi halde dns sunucuma erişimde ve isim çözümleme sırasında sorunlar yaşanabilir.

 

Bind dns sunucunun yapılandırma dosyası bir çok Linux dağıtımı üzerinde olduğu gibi susede de  üzerinde /etc/named.conf şeklindedir.  Bu yapılandırma dosyası içerisinde cozumpark.local isminde bölge oluşturuyorum.

 

zone "cozumpark.local" in {

        allow-transfer { any; };

        file "master/cozumpark.local";

        type master;

};

 

Kayıt dosyaları ise /var/lib/named/master/cozumpark.local dosyası içerisinde yer alıyor.

$TTL 2d

@               IN SOA          suse.   root.suse. (

                                2015102000      ; serial

                                3h                       ; refresh

                                1h                       ; retry

                                1w                      ; expiry

                                1d )                    ; minimum

 

cozumpark.local.        IN NS           suse.cozumpark.local.

suse                               IN A            10.100.5.250

clip_image002

 

Bu dns sunucuyu kullanan bir client isim çözümlemek istediğinde hangi lokasyondan gelirse gelsin

suse.cozumpark.local için 10.100.5.250 adresini görüyor.

clip_image004

clip_image006

 

Şimdi lokasyonlarım için bind dns sunucu üzerinde acl (access list – erişim yetkisi) tanımlarını yapmam gerekiyor.

 

clip_image008

 

İstanbul lokasyonumu 10.100.17.0 /24 networku , izmir lokasyonumu da 10.100.19/24 networku olarak tanımlıyorum. Bu tanımlardan sonra dns sunucumun bu lokasyonlardan gelecek istekler için farklı ip adresleri döndürmesini sağlamam gerekiyor.

 

view "izmir" {

    match-clients { izmir; };

    zone "cozumpark.local" {

        type master;

        file "/var/lib/named/master/izmir.cozumpark.local";

        allow-transfer { slaves; };

    };

};

view "istanbul" {

    match-clients { istanbul; };

    zone "cozumpark.local" {

        type master;

        file "/var/lib/named/master/istanbul.cozumpark.local";

        allow-transfer { slaves; };

    };

};

 

Bu konfigürasyon sonrasında "/var/lib/named/master altında izmir ve İstanbul için ayrı bölge dosyalarımı oluşturmam gerekiyor.

 

 

 

 

İzmir için :

suse:/var/lib/named/master # cat izmir.cozumpark.local

$TTL 2d

@               IN SOA          suse.   root.suse. (

                                2015102000      ; serial

                                3h              ; refresh

                                1h              ; retry

                                1w              ; expiry

                                1d )            ; minimum

 

cozumpark.local.        IN NS           suse.cozumpark.local.

suse            IN A            10.100.5.250

www             IN A            10.0.0.35

 

İstanbul için:

suse:/var/lib/named/master # cat istanbul.cozumpark.local

$TTL 2d

@               IN SOA          suse.   root.suse. (

                                2015102000      ; serial

                                3h              ; refresh

                                1h              ; retry

                                1w              ; expiry

                                1d )            ; minimum

 

cozumpark.local.        IN NS           suse.cozumpark.local.

suse            IN A            10.100.5.250

www             IN A            10.0.0.34

 

bölge dosyalarımı da oluşturduktan sonra konfigürasyonu okuması için bind dns servisini

yetkili kullanıcı ile service named restart komutu ile yeniden başlatıyorum.

 

İzmir bölgesindeki bir client tarafından      ( 10.100.19.0/24 ) ve

İstanbul bölgesindeki bir client tarafından (10.100.17.0/24) testlerimizi yapıp

yaptığımız konfigürasyonun doğru bir şekilde çalışıp çalışmadığını test ediyorum.

 

İzmir bölgesindeki client :

 

 

clip_image010

 

Bu sorgu için konfigürasyon dosyasında ayarladığımız gibi 10.0.0.35 ip adresini döndürüyor.

 

İstanbul bölgesindeki client:

 

clip_image012

 

Bu sorgu için konfigürasyon dosyasında ayarladığımız gibi 10.0.0.34 ip adresini döndürüyor.

 

Böylece farklı şubelerimdeki clientler aynı isim sorgusu için farklı sunuculara erişebiliyorlar.

 

Faydalı olması dileği ile.

Red Hat Enterprise Linux RHEL 7 Tabanlı Sistemlerde root Şifresinin Kırılması

$
0
0

RHEL (Red Hat Enterprise Linux) 7 ile hayatımıza birçok yenilik geldi. Bu yeniliklerden biri de root şifresinin unutulması durumunda değiştirilmesi yöntemi de oldukça değişti. Bunun bir sebebi grub yazılımının ikinci sürümü yani grub2 nin kullanılması, başka bir sebebi de init yerine systemd kullanılmasıdır. Aşağıda sırasıyla root şifresinin kırılması adımları gösterilmektedir.

Öncelikle gelen grub ekranında sistemi boot ettiğiniz en son çekirdek (grub2 nin sunduğu ön tanımlı çekirdek) seçiliyken “e” tuşuna (tırnaklar hariç) basılır aşağıdaki gibi. Burada yapılan ilgili çekirdeğe bir parametre gönderilmesidir.

 

clip_image001

Gelen ekran aşağıdakine benzer bir ekrandır.

clip_image002

Üstteki ekranda en aşağı satırlara inip, aşağıdaki gibi linux16 olan satır bulunur. Bu satırın en sonunda LANG=en_US.UTF-8 yazan kelimenin sonuna bir boşluk karakterinden sonra rd.break ifadesi yazılır.

clip_image003

Aşağıdaki gibi rd.break eklendikten sonra

clip_image004

CTRL-x tuşuna beraber basılarak sistemin boot etmesi sağlanır. Bundan sonra aşağıdaki gibi emergency mode dediğimiz kısım açılır. Burada ön tanımlı olarak şifre sorulmadan switch_root#:/  promptu gelir. Burası bir ramdisk ortamıdır. Fakat hardiske kurulu root şifresini kırmak istediğimiz sistem /sysroot dizinine read-only olarak mount edilir.

clip_image005

Bu aşamadan sonra read-only mount edilmiş hardiske kurulu sistem read-write modunda mount edilir. Aşağıda

# mount  |grep sysroot

Komutu ile diskin read-ony mount edildiği görülür. Sonrasında

# mount –o rw,remount /sysroot

Komutu ile hardiskin rw modunda mount edilr. Daha sonra tekrar

# # mount  |grep sysroot

İfadesi ile bu sefer rw modunda mount edildiği görüldükten sonra

clip_image006

# chroot /sysroot

Komutu ile /sysroot dizini geçici olarak yeni / yaplır. Zaten bu komutu verdikten sonra Promt sh-4.2# şeklinde değişecektir.

Bundan sonra aşağıdaki gibi passwd root komutu ile root şifresi değiştirilir. Ön tanımlı olarak 8 karakterden fazla bir şifre istese bile iki defa 8 karakterden az şifre girseniz bile updated sucessfully satırı görüldükten sonra root şifresi değiştirilmiş demektir. Herhangi bir sebepten şifre başarıli bir şekilde değiştirilmemiş  ise farklı bir ifade yazacaktır.

clip_image007

Root şifresi değiştirildikten sonra eğer sistemde Selinux enabled durumda ise

# touch /.autorelabel

Komutu ile açılışta selinux ‘un bütün dosyaları tekrar selinux ‘e uygun olarak izini düzenlenmesi sağlanacaktır. Bu aşamadan sonra aşağıdaki resimdeki gibi

#exit

Komutu verilir ve switch_root promptuna geri dönülür. Bu işlemde aslında chroot ile /sysimage ‘a girdiğimiz ortamdan çıkılmış olur. Sonrasında da aşağıdaki gibi reboot komutu verilir.

# reboot

clip_image009

Sistem böyleyece reboot edilir. İlk aşamada eğer sistemde selinux var ise /.autorelabel dosyası olduğundan ötürü selinux bütün dosyaların izinlerinin doğru olduğundan emin olup, doğru değilse düzelteceğnden sistemin açılması uzun sürecektir. Bu autorelabel işlemi tamamlandıktan sonra sisteminiz bir kere daha reboot olacak ve sisteme artık yeni değiştirdiğiniz şifre ile girebileceksiniz.

Kaynaklar:

https://access.redhat.com/solutions/918283

 


Windows Server Üzerinde Bind DNS Servisi Kurulumu

$
0
0

Bu yazımızda Windows üzerinde Bind dns sunucu kurulumunu inceliyor olacağız. Bind Unix, Linux ve Windows platformlarında oldukça sorunsuz çalışabilen bir dns sunucu yazılımıdır. Windows üzerinde kurulumuna başlamak için öncelikle http://www.isc.org/downloads/ adresinden kurulum dosyasını indirmemiz gerekiyor. Bu doküman yazıldığında son sürüm olarak 9.10.3 sunulmakta idi. 

 

clip_image002

 

 

Download linkine tıkladığımızda gelen ekrandan sistemimize göre 32 bit veya 64 bit sürümü seçmemiz gerekiyor. İndirme işlemi bitiminde kuruluma başlamadan önce sunucumuzda named isminde bir servis hesabı oluşturuyoruz.

 

 

clip_image004

 

Bu servis hesabına logon as service hakkı vermemiz gerekiyor ki servisi başlatabilsin.

BIND9.10.3.x86.zip dosyasını bilgisayarımızda açıp içerisindeki  BINDInstall.exe yi çalıştırarak kuruluma başlıyoruz.

 

clip_image006

 

Bind 32 bit sistemlerde varsayılan olarak c:\windows\system32\dns klasörüne kurulum yapıyor.

Ben c:\named klasörü oluşturup buraya kurmayı tercih ediyorum.  C:\named klasörünün sahibi olarak named kullanıcısını ayarlıyorum. İnstall seçeneği ile kurulumu tamamlıyorum.

clip_image008

 

Bind installation completede succesfully mesajını OK diyerek kapatıyorum. Sonrasında bind çalıştırılabilir dosyalarının olduğu c:\named\bin klasörünü system path değişkeni içerisine ekliyorum.

 

 

clip_image010

 

Bu işlemden sonra komut satırı ekranı açıp aşağıdaki komut ile rndc.conf dosyasını oluşturuyorum.

clip_image012

 

Bu işlem sonrasında Bind dns sunucumuzun konfigürasyon dosyalarını oluşturmak kalıyor geriye

Bu dosyalar named.conf , root.hints ve zone.localhost dosyalarıdır.

 

C:\named\etc\named.conf dosyasının içeriği :

 

options {  directory "c:\windows\system32\dns\etc";

  edns-udp-size 1460;

    pid-file none;

  version "not currently available";

  listen-on { 127.0.0.1; 10.100.1.1; };

    recursion yes;

};

controls {

        inet 127.0.0.1 allow { localhost; } keys { rndc_key; };

};

key "rndc_key" {

        algorithm hmac-md5;

        secret "77W+Rt9N8uR2Kbl5gi7SHw==

};

zone "." IN {

  type hint;

  file "root.hints";

};

zone "localhost" IN {

  type master;

  file "zone.localhost";

  allow-update { none; };

};

 

 

 

 

 

C:\named\etc\root.hints dosyasının içeriği:

 

;; QUESTION SECTION:
;.                IN    NS

;; ANSWER SECTION:
.            518400    IN    NS    A.ROOT-SERVERS.NET.
.            518400    IN    NS    I.ROOT-SERVERS.NET.
.            518400    IN    NS    C.ROOT-SERVERS.NET.
.            518400    IN    NS    H.ROOT-SERVERS.NET.
.            518400    IN    NS    M.ROOT-SERVERS.NET.
.            518400    IN    NS    E.ROOT-SERVERS.NET.
.            518400    IN    NS    K.ROOT-SERVERS.NET.
.            518400    IN    NS    L.ROOT-SERVERS.NET.
.            518400    IN    NS    B.ROOT-SERVERS.NET.
.            518400    IN    NS    J.ROOT-SERVERS.NET.
.            518400    IN    NS    D.ROOT-SERVERS.NET.
.            518400    IN    NS    G.ROOT-SERVERS.NET.
.            518400    IN    NS    F.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
A.ROOT-SERVERS.NET.    3600000    IN    A    198.41.0.4
B.ROOT-SERVERS.NET.    3600000    IN    A    192.228.79.201
C.ROOT-SERVERS.NET.    3600000    IN    A    192.33.4.12
D.ROOT-SERVERS.NET.    3600000    IN    A    128.8.10.90
E.ROOT-SERVERS.NET.    3600000    IN    A    192.203.230.10
F.ROOT-SERVERS.NET.    3600000    IN    A    192.5.5.241
G.ROOT-SERVERS.NET.    3600000    IN    A    192.112.36.4
H.ROOT-SERVERS.NET.    3600000    IN    A    128.63.2.53
I.ROOT-SERVERS.NET.    3600000    IN    A    192.36.148.17
J.ROOT-SERVERS.NET.    3600000    IN    A    192.58.128.30
K.ROOT-SERVERS.NET.    3600000    IN    A    193.0.14.129
L.ROOT-SERVERS.NET.    3600000    IN    A    199.7.83.42
M.ROOT-SERVERS.NET.    3600000    IN    A    202.12.27.33

 

C:\named\etc\zone.localhost dosyasının içeriği:

 

;
; loopback/localhost zone file
;
$TTL 1D
$ORIGIN localhost.
@              IN  SOA   @  root (
                         1   ; Serial
                         8H  ; Refresh
                         15M ; Retry
                         1W  ; Expire
                         1D) ; Minimum TTL
               IN   NS   @
               IN   A    127.0.0.1

 

 

 

 

Bu dosyaları kaydettikten sonra Windows makinamda servisler içerisindeki ISC DNS servisini çalıştırıyorum.

 

clip_image014

 

 

Bu şekilde bind dns kurulumu ve ayarlarını tamamlamış oluyoruz. Bundan sonrasında

Makinamızdaki ipv4  ayarlarında dns sunucu olarak bu makinayı göstererek test edebiliriz.

 

clip_image016

 

Faydalı olmasını dilerim.

Red Hat Enterprise Linux 7 RHEL7 Sistemlerde Network Teaming

$
0
0

Red Hat tabanlı sistemlerde iki network arabirimini tek bir ağ arabirimi olarak göstermek için önceden bonding metodu kullanılmaktaydı.  RHEL 7 ile beraber her ne kadar bonding geriye uyumluluk için desteklense de artık bonding yerine teaming dediğimiz daha performanslı ve modüler dizaynından dolayı daha esnek bir yapı geldi.

RHEL7 içinde bu işlemi sağlamak için yeni bir kernel sürücüsü ve teamd adında yeni bir servis yazılımı (daemon) geldi.Çekirdekteki sürücü ilgili network paketlerini işlerken teamd mantıksal ve arabirim işleme fonksiyuonlarını icra etmektedir. Ayrıca teamd içindeki runner denilen bileşenler de active-backup, loadbalancing gibi işlemleri gerçekleştirmektedir. Teamd ile aşağıdaki runner’lar kullanılabilmektedir.

 

·        Broadcast
Her paketi bütün arabirimlere gönderen basit bir runner.

·        Roundrobin
Paketleri sırasıyla kullanılan interfaceler arasında böler.

·        Activebackup
Link kaybolmalarına karşı arabirimleri( network interface) izleyip link kopması durumunda diğer arabirimden trafiğin akmasını sağlar.

·        Loadbalance
Paketleri bir hash algoritması kullanarak etiketleyip ona göre böler.

·        Lacp

802.3ad Link Aggregation Control Protocol’ünü kullanarak paketleri işler.

 

 

Teamd Paketinin kurulması

Öncelikle teamd paketinin sisteme kurulu olduğundan emin olalım. Bunun için aşağıdaki komut verilir.

# yum install -y teamd

 

Bu şekilde paket kurulduktan sonra team interface işlemi oluşturma işlemine geçilebilir.

Nmcli komutu ile team oluşturma

 

Network arabirimi ayarları için Red Hat 7 işletim sisteminde ön tanımlı gelen Networkmanager paketindeki nmcli komutu  kullanarak team işlemi şu komutlarla oluşturulur.

 

# nmcli con add type team con-name team0 ifname team0

Connection 'team0' (7b13a35e-42f8-4fdc-91ea-385095654b6f) successfully added.

# nmcli con add type team-slave con-name team0-slave0  ifname em1 master  team0

Connection 'team0-slave0' (2bc70a66-2531-4685-9d4a-42361af1f8ac) successfully added.

# nmcli con add type team-slave con-name  team0-slave1 ifname em2 master  team0

Connection 'team0-slave1' (dd5e6013-a8bf-48fe-85db-a3d8b9b81093) successfully added.

# nmcli con up team0-slave0

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)

 

# nmcli con up team0-slave1

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)

 

Yukarıdaki ilk komut ile team0 adında bir interface eklenir. Aslında bu işleme kadar sistemde bir teamd servisi çalışmaz. Bu ilk komuttan sonra aşağıdaki gibi bir daemon başlar.

# ps axw|grep teamd

 3974 ?        S      0:00 /usr/bin/teamd -o -n -U -D -t team0

 

Daha sonra slave interface’ler eklenerek team0 interface’i oluşturulur. Oluşturulan team0 arabirimi detayları için teamdctl  team0  config dump komutu verilir. Aşağıda görüldüğü üzere Json formatında bir yapılandırması mevcuttur teamd’nin ve ön tanımlı olarak team interface’i oluştururken bir  runner belirtilmediği için roundrobin tipinde bir team arabirimi oluşturulur. Üstteki komutlarda enp0s9 ve enp0s10 arabirimi team0 a eklenmiş oldu.

 

# teamdctl  team0  config dump

{

    "device": "team0",

    "ports": {

        "enp0s10": {

            "link_watch": {

                "name": "ethtool"

            }

        },

        "enp0s9": {

            "link_watch": {

                "name": "ethtool"

            }

        }

    },

    "runner": {

        "name": "roundrobin"

    }

}

 

Üstte ayrıca config dump’ından görülebilidiği üzere link gitmesini izlemek için ethtool komutu kullanılmaktadır.

Nmcli ile detaylı yapılandırma

nmcli con add type team con-name team0 ifname team0 komutuna ek olarak istenirse  sonuna aşağıdaki gibi

nmcli con add type team con-name team0 ifname team0 config  config.json

gibi bir parametre verilerek oluşturulan  team arabiriminin nasıl davranacağı belirtilebilir. RHEL7 ile beraber

/usr/share/doc/teamd-1.9/example_configs dizininde örnek alabileceğiniz yapılandırmalalar mevcuttur veya istenirse bu yapılandırma komut satırından da verilebilir.

# nmcli con add type team con-name team0 ifname team0 config  '{"runner": {"name":  "activebackup"}}'

 

# nmcli con add type team-slave con-name team0-slave0  ifname enp0s9 master  team0

Connection 'team0-slave0' (2bc70a66-2531-4685-9d4a-42361af1f8ac) successfully added.

# nmcli con add type team-slave con-name  team0-slave1 ifname enp0s10 master  team0

Connection 'team0-slave1' (dd5e6013-a8bf-48fe-85db-a3d8b9b81093) successfully added.

# nmcli con up team0-slave0

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)

 

# nmcli con up team0-slave1

Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)

 

Yapılandırmayı tekrar görmek için

# teamdctl team0 config dump

{

    "device": "team0",

    "ports": {

        "enp0s10": {

            "link_watch": {

                "name": "ethtool"

            }

        },

        "enp0s9": {

            "link_watch": {

                "name": "ethtool"

            }

        }

    },

    "runner": {

        "name": "activebackup"

    }

}

 

Son olarak bu interface’e IP vermek için

# nmcli con mod team0  ipv4.addresses 192.168.56.100/24

# nmcli con mod team0  ipv4.method manual

# nmcli connection modify team0 connection.autoconnect   yes

# nmcli connection reload

# nmcli connection up  team0

 

 

Teamd bağlantısını kaldırmak

 

Team0 bağlantısını kaldırmak için önce slave’ler sonra team0 ‘ın kendisi kaldırılır.

# nmcli connection delete team0-slave0

# nmcli connection delete team0-slave1

# nmcli connection delete team0

 

Nm-connection-editor ile team oluşturmak

Bunun için önce  nm-connection-editor komutu çalıştırılır.

 

clip_image001

Üstte gelen ekranda önce Add tuşuna basılır ve Connection Type olarak Team seçilir ve Create tuşuna basılır. Sonra gelen ekranda aşağıdaki gibi Connection name olarak team0 yazılır ve Teamed Connections kısmında  Add tuşuna basılır.

clip_image003

Sonra aşağıda gelen ekrandan tip olarak öntanımlı tip olan Eterhnet seçili bırakılarak Create tuşuna basılır.

clip_image005

clip_image007

Üstteki gibi Ethernet sekmeninde enp0s9 seçilip, aşağıdaki gibi General tabında Autoconnect yapılırarak Save tuşuna basılır.

clip_image009

 

Aynı işlem enp0s10 interface’i içinde yapılır ve ana ekran şu hale gelir.

clip_image011

Burada Json config dosyasına istenen değişiklikler eklenir.

clip_image012

Üstteki Json Config satırında boşluk karakteri olmaması önemlidir!

 

En son olaraksa Ipv4 Settings tabından aşağıdaki gibi IP bilgisi eklenip, bağlantı Manuel yapılıp save edilir.

clip_image014

 

Umarım faydalı bir makale olmuştur. Bir sonraki makalemizde görüşem dileği ile.

 

Kaynaklar 

Nmcli-examples , teamdctl ve teamd man sayfaları

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Configure_a_Network_Team_Using-the_Command_Line.html#sec-Configure_Network_Teaming_Using_nmcli

 

 

 

SUSE Linux Enterprise Server Üzerinde SAP HANA Veri Tabanı Kurulumu

$
0
0

Sürekli gelişen evrensel veri ihtiyacının giderek büyümesiyle, bu verilerin işlenmesi ve gerekli olan analizlerin yapılabilmesi her geçen gün çok daha fazla kaynak ve donanıma ihtiyaç duymaktadır. Zamanın ve hızın referans noktası saydığımız bilişim dünyasında neredeyse en büyük çıkmaz büyük verilerin analizinde yaşanan zaman kayıpları ve ek maliyetlerdir.

 

Bilişim sistemlerinin bağlı analizin kullanıldığı tüm sektörlerde bu ihtiyaca cevap vermesi amacıyla SAP firması tarafında HANA (High-Performance Analytic Appliance) veri tabanı mimarisi geliştirilmiştir. Sunucu sistemlerinin ve donanımlarının sürekli gelişmesi ve donanım maliyetlerinin düşmesi ile HANA mimarisi daha da talep edilebilir hale gelmiştir.

 

HANA mimarisi geleneksel veri tabanı mimarisinin SAP tarafından yeniden evrimleştirilmesi ile büyük veri işlemlerini bambaşka bir boyuta taşımıştır.

 

2014 yılından beri hızlı bir şekilde büyüyen HANA mimarisi önümüzdeki yıllarda veri tabanı pazarının büyük bir bölümünü elinde tutuyor olacak ki, donanım üreticisi olan Lenovo, HP, Fujitsu, Dell, Cisco gibi büyük firmalarla açık kaynak kodlu Linux geliştiricisi SUSE ve Redhat şirketleri HANA üzerine büyük yatırımlar yapmaktadır.

 

HANA mimarisi In-Memory teknolojisini kullanmaktadır. In-Memory (bellek içi teknoloji) ile veri analizleri geleneksel veri tabanı sistemlerine oranla 350 kata kadar hızlanmıştır. Örnek vermek gerekirse 4000 şubeli bir perakende zincirinin kullanımında olan bir veri tabanın yılsonu maliyet veya karlılığının ilçelere ve ürün çeşidine oranla son bir yılı temel alacak şekilde anlık olarak hesaplandığını düşünelim. Geleneksel veri tabanı sisteminde yaşanacak sıkışıklığın, kaynak ihtiyacının veya gerekli olan zamanın ne kadar olacağı hakkında ortalama bir fikir edinmemiz çok zor gözükmektedir. Saatlerce hatta günlerce sürebilecek bu yoğun analizin yapılabilmesi size hayal gibi gelebilir ama bu HANA mimarisi ile mümkün kılınmaktadır.

 

Geleneksel veri tabanı mimarisinde ki en büyük sorunlardan biri disk üzerinde bulunan tabloların yoğun olarak gelen istekleri yapısal nedenlerden dolayı hızlı olarak işlenememesi veya çok büyük disk alanlarına ihtiyaç duymasıdır. Bu da grafikte görüldüğü birçok dezavantaja sebep olmaktadır.

 

Geleneksel veri tabanı mimarisi

 

clip_image002

 

 

 

    Yeni nesil HANA mimarisinde ise veri tabanı donanım hafızası üzerinde çok çekirdekli işlemciler üzerinden işlenmektedir. Yani işlem talebi gelen tablolar, disk üzerinden değil hafıza üzerinden okunup işlenmektedir. Bu da beraberinde büyük bir performans artışı getirmektedir. HANA hafıza üzerindeki bu tabloları işleyebilmesinin yanında sıradan sistemlere oranla veri tabanı boyutunu dörtte bir oranında sıkıştırabilmektedir.

 

Yeni nesil HANA (In-Memory) mimarisi

 

clip_image004

 

HANA In-Memory platformunun faydaları

 

-        Geleneksel sisteme oranla daha küçük veri alanı (gelişmiş sıkıştırma teknolojisi)

-        Daha yüksek verimlilik

-        Daha hızlı hesaplama ve raporlama

-        Daha düşük işlem adımı (gelişmiş tablo bağlantıları ile yüksek hızda erişim yanıtı)

-        Hafıza üzerindeki tutulan güncel ve hazır veri

-        Simultane veri erişimi

-        Çoklu HANA veri tabanı kullanımı (tek sunucu üzerinde birden fazla HANA sistemi veya veri tabanı)

-        Tüm veri tiplerinde çok hızlı işlem gücü

 

Desteklenen İşletim Sistemi ve Sunucular

 

-        Redhat Enterprise Server (versiyon 6 ve üzeri)

-        SUSE Enterprise Server for SAP (versiyon 11 ve üzeri)

-        Fujitsu PQ serisi 2XXX serisi sunucular

-        Lenovo Flex System X6, RDXX, x3XXX serisi sunucular

-        HP DL580, DL980, CS500, CS900 serisi sunucular

-        Dell PowerEdge RXX serisi sunucular

-        Cisco UCS BXX serisi sunucular

-        Hitachi CB5XX serisi sunucular

-        Huawei FusionCube E9XXX serisi sunucular

 

NOT: Marka ve sunucu modelleri sürekli gelişmekte ve yenilenmektedir. Lütfen doğru bilgi için SAP Find Certified Appliances sayfasına bakınız.

 

SAP HANA Database Yapısı

 

HANA üzerinde dört temel servisçalışmaktadır.

 

clip_image006

Name Server

Sistem üzerindeki bileşenleri kontrol edip, üzerinde tutarak onlar hakkındaki bilgileri vermektedir.

Master Index Server

Temel HANA servisidir. Anlık olarak güncel veriyi üstünde tutarak gelen veri isteklerini işleyip gelen talepleri ve ilgili yetkileri denetler.

Statistics Server

HANA sistemi hakkındaki performans verilerini toplar.

XS Server

HANA altında çalışan temel web sunucusudur. HTTP üzerinden HANA veri tabanına erişim sağlamaktadır.

SAP HANA Studio Repository

HANA içerikleri ve bileşenleri için kaynak sağlamaktadır.

SAP Host Agent

Uzaktan HANA sistemini durdurma veya başlatma gibi temel kontrolleri sağlar.

SAP HANA Database Lifecycle Manager

HANA sistemi için gerekli olabilecek güncellemeleri yönetir ve sistemin sürekliliğini sağlar.

 

 

HANA için kaynak hesaplanması

 

-        Sabit veri için gerekli olabilecek hafıza alanı

-        Sistem üzerinde oluşturulacak olan objeler ve gelebilecek yüklü veri istekleri için ana hafızanın belirlenmesi

-        Disk alanı

-        Fiziksel işlemci ihtiyacı

 

HANA sistemi için SAP tarafından belirlenmiş olan referans sistemler

 

NOT: Burada bulunan referans sistemlerin hangisinin size uygun olduğu danışmanlar tarafından belirlenmektedir. Bunun yanında SAP PAM ve SAP Quick Sizer araçlarından sistem gereksinimi için gerekli donanım ve yazılım bilgisini alabilirsiniz.

 


Birinci seviye HANA sistemi için donanım değerleri

2X10 Core CPU (2 soket Intel işlemci)

128 GB hafıza

160 GB PCI Flash veya SSD disk (Log alanı)

1 TB SAS veya SSD disk (veri alanı)

10 GB ağ kartı

 

İkinci seviye HANA sistemi için donanım değerleri

2X10 Core CPU (2 soket Intel işlemci)

256 GB hafıza

320 GB PCI Flash veya SSD disk (Log alanı)

1 TB SAS veya SSD disk (veri alanı)

10 GB ağ kartı

 

Üçüncü seviye HANA sistemi için donanım değerleri

4X10 Core CPU (4 soket Intel işlemci)

512GB hafıza

640 GB PCI Flash veya SSD disk (Log alanı)

2 TB SAS veya SSD disk (veri alanı)

10 GB ağ kartı

 

Dördüncü seviye HANA sistemi için donanım değerleri

8X10 Core CPU (8 soket Intel işlemci)

1 TB hafıza

1.2 TB PCI Flash veya SSD disk (Log alanı)

4 TB SAS veya SSD disk (veri alanı)

10 GB ağ kartı


 

 

SAP Quick Sizer

SAP tarafından geliştirilen bu araç ile gerekli olabilecek kaynak analizini kolaylıkla yapabilirsiniz.

 

clip_image008

 

 

SAP PAM

SAP tarafından geliştirilen bu araç ile platform hakkındaki teknik detaylara ulaşabilir, geliştirme, güncelleme ve uyumluluklar hakkında teknik detaylara ulaşabilirsiniz.

 

clip_image010

 

 

SUSE Enterprise Server Kurulumu

 

SUSE üzerinden HANA için derlenmiş olan SUSE Enterprise Server for SAP Applications 11 SP<X> imajını indiriyoruz.

NOT: İki DVD olarak gelmektedir. Birinci DVD sistem, ikinci DVD ise kaynak kodlarını içermektedir. Birinci DVD kurulum için yeterlidir.

 

clip_image012

İndirip hazırlamış olduğumuz bu kurulum medyası üzerinden sistemi açıyoruz ve kuruluma başlıyoruz.

 

NOT: Klasik yükleme olan Installation ile devam edebilirsiniz. (Wizard ise yeni sürümlerde gelen hazır kurulum sihirbazıdır)

 

clip_image014

 

Temiz bir kurulum yapacağımız için bu alanda New Installation seçiyoruz.

 

clip_image016

 

Fiziksel bir sunucu üzerinde kurulum yapacağımızdan buradaki kurulum senaryomuz Physical Machine olacaktır.

 

clip_image018

 

Disk bölümlendirmesi ve yazılım seçimi sistem tarafından otomatik olarak yapılmaktadır dilerseniz bu alanları özelleştirebilirsiniz.

 

NOT: Biz kurulumu test sitemi üzerinde yaptığımızdan bu alandaki donanım değerleri ve disk bölümlendirme alanları farklıdır. Sadece deneme sistemi için referans almalısınız.

 

NOT: Standart bir test sistemi kurulumu için minimum 200 GB disk alanı 4 virtual CPU ve 12 GB hafıza gerekmektedir.

Deneme kurulumunda 600 GB disk 48 GB hafıza 4 virtual CPU kullanmaktayız.

 

clip_image020

 

Kurulum işlemi başladıktan sonra yaklaşık olarak 1200 üzerinde paket sisteme kurulup tanımlanacaktır.

(Ortalama kurulum süresi 20 dakika civarındadır)

 

clip_image021

 

 

 

 

 

 

 

Kurulum tamamlandıktan sonra sistem tekrardan başlayarak kurulum sonrası adımlara geçecektir.

Sunucu adı ve alan adı tanımlarımızı yapıyoruz.

 

clip_image023

 

Statik ayarlarımızı yapıyoruz

 

clip_image024

 

clip_image026

 

Firewall ve gelişmiş ağ ayarlarını bu ekran üzerinden yapabilirsiniz.

 

clip_image028

 

Erişim yöntemi olarak Local (etc/password) seçiyoruz.

 

clip_image030

 

Root sistem kullanıcısının yanında standart bir kullanıcı hesabı da oluşturuyoruz.

NOT: Standart kullanıcı güvenlik nedeniyle sistemde kesinlikle önerilmektedir.

 

clip_image032

 

Kurulum sonrası adımlar tamamlandıktan sonra sisteme root hesabıyla giriş yapıyoruz. (yada standart kullanıcı üzerinde root haklarıyla)

 

clip_image034

 

 

SUSE Enterprise Server for SAP Applications kurulumu gerçekleşmiştir. Sonraki adımda HANA platform dosyaları Support Portal üzerinden indirip HANA kurulumu öncesi adımları gerçekleştireceğiz.

 

 

SAP Support Portal üzerinden HANA Platform Edition kurulum dosyalarını indiriyoruz.

 

clip_image036

 

clip_image038

 

NOT: Intel işlemci mimarisine ilave olarak IBM PowerPC mimarisini de desteklemektedir.

 

WinSCP ile indirmiş olduğumuz dosyaları SUSE sunucumuzun root dizini altında yeni bir klasöre aktarıyoruz.

 

clip_image040

 

Aktarmış olduğumuz bu dosyaların bulunduğu klasörün chmod değerini 755 veya 777 yapıyoruz.

 

clip_image042

 

 

HANA Platform Edition paketi içerisinde veritabanını yönetebilmek için gerekli tüm araçları bulabilirsiniz.

 

clip_image044

 

HANA Kurulum Öncesi Hazırlıkları

 

Eğer XFS dosya sistemini kullanacak iseniz mutlaka glibc kütüphanesini kurmalısınız.

 

NOT: Dosya sisteminizi görüntülemek için df -hT komutunu kullanabilirsiniz.

 

clip_image046

 

HANA diğer veri tabanı sistemlerinden farklı bir yapıda olduğundan hugepagesözelliğini

echo never > /sys/kernel/mm/transparent_hugepage/enabled komutu ile pasif hale getiriyoruz.

 

clip_image048

 

Kurulum öncesi bu klasörlerin root dizini üzerinde oluşturulması gerekmektedir.

 

/hana/data/<SYSTEMID>

/hana/log/<SYSTEMID>

/hana/shared

 

clip_image050

 

HANA Kurulum Adımları

 

HANA veri tabanı kurulum dosyalarına HDB_SERVER_LINUX_X86_64 klasörü içerisinden erişebilirsiniz.

 

clip_image052

 

NOT: Kurulumu başlatırken Access Denied uyarısı almanız durumunda chmod ayarlarınızı kontrol ediniz.

 

clip_image054

 

./hdbinst komutu ile kurulum işlemini başlatıyoruz.

 

Local Host Name varsayılan olarak bırakıyoruz.

Enter Installation Path varsayılan olarak bırakıyoruz.

SAP HANA System ID tercihe bağlı (üç karakter olarak) belirlenmelidir. (TST)

                                                                                                            

clip_image056

 

Instance Number varsayılan olarak bırakıyoruz. (00)

Database Mode olarak Single Container seçiyoruz. (1)

 

NOT: Single Container HANA sistemi için tek bir veri tabanı oluştururken Multiple Containers HANA sistemi için birden fazla veri tabanı oluşturmamıza olanak sağlamaktadır.

(SPS09 sürümü ile birlikte gelmiştir)

 

clip_image058

 

HANA sisteminin kullanım amacını belirliyoruz. (2)

NOT: Bu alandaki seçimler kurulum sırasında sisteme farklı ek parametreler tanımlamaktadır.

 

clip_image060

 

<SID>ADMşifremizi belirliyoruz.

HANA sisteminde iki temel yönetici hesabı bulunmaktadır.  <SID>ADM ve SYSTEM

 

clip_image062

 

Bu ekrandaki tüm yükleme parametrelerini varsayılan olarak bırakıyoruz.

 

clip_image064

 

Restrict maximum memory allocation parametresine N olarak seçersek sunucu üzerindeki tüm hafızayı tek bir HANA sistemine tanımlayacaktır. (Y yapmanız durumunda kullanılacak hafıza miktarını özelleştirerek sonrasında aynı sunucu üzerinde kurulabilecek olan diğer HANA sistemleri için ek kaynak ayırıyor olabileceksiniz.) 

 

NOT: Bu ayarı sonrasında HANA Studioüzerinde Configuration sekmesinden global_allocation_limit parametresi ile değiştirebilirsiniz.

 

clip_image066

 

HANA veri tabanı yöneticişifremizi belirliyoruz. Sonrasında HANA Studio ile sistemi bu hesap üzerinden yöneteceğiz.

 

clip_image068

 

İsteğe bağlı olarak sunucuyu tekrar başlatabilirsiniz. (N)

 

clip_image070

 

Kurulum parametreleri için son bir özet ekranı önümüze geliyor Y ile onay vermemiz durumunda HANA sistemi kurulmaya başlayacaktır.

 

clip_image072

 

Konsol üzerinden kurulan paketleri izleyebilirsiniz.

 

clip_image074

 

HANA veri tabanı ve HANA sistemine tanımlı olan servislerimiz oluşturuluyor.

clip_image076

 

Kurulum işlemi başarıyla tamamlandı. Dilerseniz hdbinst.logüzerinde kurulum detaylarını bulabilirsiniz.

 

clip_image078

 

<SID>ADM haklarına geçiş yaparak HDB start komutu ile HANA veritabanını başlatıyoruz.

 

NOT: Sunucuyu yeniden başlatmadan önce veritabanını HDB stop ile durdurmanız gerekmektedir.

 

clip_image080

 

HANA Studio Kurulumu

 

HANA sistemi kurulduktan sonra sırada bu sistemi yönetebilmemiz için gerekli olan HANA Studio yazılımının kurulumuna geçiyoruz.

 

clip_image082

 

HDB_STUDIO_LINUX_X86_64 dizinine giderek ./hdbinst komutu ile HANA Studio kurulumuna başlıyoruz.

 

clip_image084

 

Yükleme dizinini varsayılan olarak bırakıyoruz.

Full kurulum yapacağımızdan All seçiyoruz.

 

clip_image086

 

Kurulum öncesi bilgilendirme ekranını kontrol edip Y ile kurulumu başlatıyoruz.

 

clip_image088

HANA Studio için gerekli paketlerimiz kuruldu.

 

clip_image090

 

/usr/sap/hdbstudio dizinine giderek ./hdbstudio komutu ile HANA Studio uygulamasını çalıştırıyoruz.

 

clip_image092

 

 

Select a workspace HANA Studio ayarlarımızın tutulacağı dizindir.

 

clip_image094

 

SAP HANA Studio için gerekli kütüphaneler yüklenerek uygulama açılıyor.

 

clip_image096

 

 

Secure Storageözelliği ile HANA Studio profil ayarlarınızı şifreli bir şekilde saklayabilirsiniz.

 

clip_image098

 

Ana ekran üzerinde bulunan Open Administration Console ile yönetim sayfasına geçiyoruz.

 

clip_image100

Add Systemüzerinden HANA sistemi bağlantısı ekranına gelerek ilgili tanımları yapıyoruz.

 

clip_image102

 

Host Name olarak Linux FQDN adımızı giriyoruz.

NOT: Konsol üzerinden hostname --fqdn komutu ile öğrenebilirsiniz.

 

HANA kurulumu sırasında belirlemiş olduğumuz Instance numarasını giriyoruz. (00)

 

clip_image104

 

 

HANA kurulumu sırasında belirlemiş olduğumuz veri tabanı yönetici hesabını giriyoruz.

 

clip_image106

 

HANA Studio üzerinden HANA sistemimize başarıyla bağlanmış bulunuyoruz.

 

clip_image108

 

HANA Studio ana ekranında HANA sistemi hakkındaki tüm bilgileri bize veriyor olacaktır.

 

clip_image110

Ana ekranın devamında sistem üzerinde kullanılan kaynakları gözlemleyebilirsiniz.

 

clip_image112

 

clip_image114

 

 

Bu yazımızda HANA Sistemi için gerekli olan SUSE Enterprise Server for SAP, HANA Database ve HANA Studio yazılımlarını başarıyla kurup çalıştırmış olduk.

 

Büyük verinin geleceği olan HANA yakın zaman içerisinde veri tabanı sistemleri hakkında bilinen her şeyi değiştiriyor olacak.

 

Tekrardan Görüşmek dileği ile…

Linux Sistemleri Üzerinde Java ve SAP GUI Java Kullanımı

$
0
0

SAP GUI yazılımı Mac OS X ve Linux sistemlerinde Java tabanlı olarak gelmektedir. Bunun içinde temel bileşen olan Java’nın sistemde yüklü olması gerekmektedir. Java kurulumu Windows ve Mac OS X tabanlı sistemlerde çok kolay olmasına rağmen, Linux tabanlı sistemler de bu işlem biraz karmaşık ve yorucu olabilmektedir.

 

Kurulum adımları x86 ve x64 mimarisinde OpenSUSE ve SLES (Suse Linux Enterprise Server) olarak iki sistemde geçerli olarak kullanılabilir.

 

Anlatımda ise referans sistem olarak SLES 12 x64 sürümünü kullanacağız.

 

İlk olarak SAP Support Portal üzerinden son sürüm (7.40) SAP GUI Java’yı indiriyoruz.

 

clip_image002

 

İkinci olarak Oracle sayfası üzerinden en son Java (8u72) indiriyoruz.

 

clip_image004

 

İndirilen tüm paketleri root dizini üzerinde bir klasöre kopyalayarak kurulum işlemini başlatıyoruz.

 

clip_image006

NOT: Linux üzerinde JAVA kurulumu yaparken sistem ilgili kurulum linkini oluşturamadığından /usr/sbin dizini altında alternatives adında yeni bir dosya linki oluşturuyoruz.

 

Konsol üzerinden ln -s /usr/sbin/update-alternatives /usr/sbin/alternativeskomutu ile ilgili linki oluşturmuş bulunuyoruz.

 

clip_image008

 

 

 

 

 

NOT: Konsol üzerinden linkin oluşturulduğu dizine gelerek ll komutu ile link kontrolünü yapabilirsiniz.

 

clip_image010

 

clip_image012

 

Kurulum öncesi uname -a komutu ile Kernel sürümünü veya sistem mimariniziöğrenebilirsiniz.

 

clip_image014

 

Kurulum dizinimize tekrardan dönerek rpm -ivh --nodeps jre-8u72-linux-x64.rpm komutu ile Java kurulumuna başlıyoruz.

 

NOT: Kurulum komutunda kullanılan parametre detayları;

-i paket kurulumu (install)

-v kurulum ayrıntısı (verbose)

-h kurulum düzeyi (hash)

--nodeps paket bağımlılıklarını önemseme

 

clip_image016

 

Java kurulumumuz /usr/java altına yapılmıştır. ls komutu ile kurulum dizini adını not alıyoruz. (jre1.8.0_72)

 

clip_image018

 

/usr/sbin dizini altına gelerek alternatives --install “/usr/bin/java” “java” “/usr/java/jre1.8.0_72/bin/java” 1 komutunu giriyoruz.

 

clip_image020

 

 

 

 

 

 

 

/usr/sbin altında update-alternatives --set java /usr/java/jre1.8.0_72/bin/java komutunu giriyoruz.

 

clip_image022

 

/usr/sbin altında alternatives --install “/usr/lib64/browser-plugins/javaplugin.so” “javaplugin” “/usr/java/jre1.8.0_72/lib/amd64/libnpjp2.so” 1 komutu ile Java paketinin browser eklentisini yüklüyoruz. (sonrasında internet tarayıcılarımız üzerinde kullanılmak üzere)

 

NOT: x86 mimarisinde /usr/sbin altındaalternatives --install “/usr/lib64/browser-plugins/javaplugin.so” “javaplugin” “/usr/java/jre1.8.0_72/lib/i386/libnpjp2.so” 1 komutu girilmelidir.

 

clip_image024

 

 

/usr/sbin altında update-alternatives --set javaplugin /usr/java/jre1.8.0_72/lib/amd64/libnpjp2.so komutu ile eklenti dosyasını kullanım için aktif hale getiriyoruz.

 

NOT: x86 mimarisinde update-alternatives --set javaplugin /usr/java/jre1.8.0_72/lib/i386/libnpjp2.so komutu girilmelidir.

 

clip_image026

 

Java kurulumunu tamamlamış bulunmaktayız.

 

NOT: update-alternatives --list java komutu ile sistemde yüklü olan Java kurulumlarını görebilirsiniz.

 

clip_image028

 

NOT: update-alternatives --list javaplugin komutu ile sistemde kurulu olan Java eklentilerini listeleyebilirsiniz.

 

clip_image030

 

NOT: update-alternatives --config java komutu ile birden fazla yüklü olan Java sürümü için varsayılan değer atayabilirsiniz.

 

clip_image032

 

 

NOT: update-alternatives –config javaplugin komutu ile yine sistemde tanımlı olan birden fazla Java eklentisi için varsayılan değer atayabilirsiniz.

 

clip_image034

 

NOT: java -version komutu ile varsayılan Java paketi ile ilgili teknik detay alabilirsiniz.

 

clip_image036

 

Firefox üzerinde Java sürümünün çalıştığını doğruluyoruz.

 

clip_image038

 

Java kurulumu tamamlandıktan sonra artık SAP GUI Java kurulumuna geçebiliriz. Konsol üzerinde önceden indirdiğimiz kurulum dosyalarımızın bulunduğu dizine gidiyoruz.

 

NOT: SAP Support Portal üzerinden indirilen kurulum dosyasında Linux sistemine ilave olarak Mac OS X ve Windows içinde SAP GUI Java kurulum dosyaları gelmektedir.

 

clip_image040

 

java -jar PlatinGUI740Linux_4.jarkomutu ile kurulumu başlatıyoruz.

 

clip_image042

 

 

 

 

 

 

 

 

 

 

Kurulum komutundan sonra önümüze kurulum sihirbazı geliyor ilgili bilgilendirmeleri geçerek kuruluma başlıyoruz.

 

clip_image044

 

 

NOT: Kurulum sırasında yükleme ve log dosyasının tutulduğu dizini not almanızda fayda var.

 

clip_image046

 

Linux için SAP GUI Java kurulumu tamamlanmış bulunmakta. Kurulum sonrası masaüstünüze kısayol oluşturulmadı ise Application > Office altında uygulama kısayolunu oluşturabilirsiniz.

 

clip_image048

 

SAP GUI uygulamasını çalıştırıp New butonu ile SAP uygulama sunumuzun bağlantı bilgilerini giriyoruz.

 

clip_image050

 

 

 

 

 

 

 

 

Advanced sekmesiüzerinde Expert Mode aktif edip bağlantı parametremizi girip, ayarları kaydediyoruz.

 

NOT: Bağlantı için farklı parametreler bulunmaktadır;

 

-        Tek bir SAP uygulama sunucusu kullanıyorsak

conn=/H/SAPSERVERIP/S/INSTANCEPORT (conn=/H/10.0.20.220/S/3200)

 

-        Birbirini yedekleyen iki uygulama sunucusuna sahipseniz (bkz. Logon Group SMLG tcode)

conn=/M/SAPSERVERIP/S/MESSAGESERVERPORT (conn=/M/10.0.20.220/S/3600)

 

clip_image052

 

 

İlk bağlantı esnasında gelen güvenli bağlantı seviyesini belirliyoruz.

 

clip_image054

 

SAP GUI Java kurulumu ve bağlantı ayarlarını tamamlamış bulunuyoruz.

 

clip_image056

 

Makalemin sonuna geldik, umarım faydalı bir makale olmuştur.

 

Ubuntu 12 Üzerinde Windows Paylaşımlarının Mount İşlemi

$
0
0

 

Günümüzde, özellikle IT sektöründe çalışan personeller artık yavaş yavaş, tam anlamıyla bir göç olmasa da Linux tarafına geçmeye başladılar. Birçok kurum ve firma kullanıcılarını yönetebilmek için bu alanda kolaylık ve esneklik sağlamak için Active Directory ile çalışmakta. Doğal olarak böyle ortamlarda Linux türevi bir işletim sistemi ile çalışmak için biraz uğraşmak gerekiyor.

Tabi ki büyük yapılarda bazı alışkanlıklardan ve zorunluluklardan vazgeçmek veya onları yok saymak pek mümkün olmuyor.

Buradan hareketle linux kurup kullanmak isteyen arkadaşlara Windows sharing ya da Windows File Server ortamını Linux işletim sistemine otomatik olarak nasıl bağlayacaklarını(mount) anlattığım bu dökümanı hazırladım.

Ben işletim sistemi olarak Ubuntu 12.04 kullanıyorum. Ubuntu gibi Debian geleneğinden gelen bütün işletim sistemleri için adımlar aşağı yukarı aynıdır. Ancak paket yönetim sistemi farklı olan Red-Hat, Solaris vs.vs. için değişiklik yapmanız gerekebilir.

Kurulum sırasında vi text editörünü kullanıyor olacağım.  vi linux üzerinde kullanılan bir text editördür. Genellikle varsayılan olarak Linux işletim sistemi ile birlikte gelir. Vi yerine nano ya da piko gibi text editörler de kurup kullanabilirsiniz. Vi ile ilgili bu dokümanda yazanları yapabilmek için pratik birkaç bilgi;

  • vi ile dosya açtıktan sonra “i” harfine basıldığında insert mod'a geçilir ve dosya içinde karakterler yazılabilir.
  • Insert modundan çıkmak için Esc butonu kullanılır.
  • vi'den kaydedip çıkmak isterseniz Esc butonuna bastıktan sonra en altta aktif olan satıra wq! komutu verilerek işlemi tamamlayabilirsiniz.

clip_image002

Öncelikle Windows ile Linux arasında bir bağ kurmak için cifs protokolünü kuracağız. Aşağıdaki komut ile paketleri kuralım,

# sudo apt-get install cifs-utils

clip_image004

clip_image006

cifs utils kurulduktan sonra gerekli düzenlemeleri yapıyoruz. Linux sistemimizde File Server’da bulunan klasör için bir bağlantı noktası oluşturacağız;

# mkdir /home/Linux_Kullanıcısı/Desktop/FileServer

komutu ile Linux Kullanıcımızın masaüstünde FileServer adında bir klasör oluşturuyoruz. Bu klasör şu anda Linux sistemimize login olan reel kullanıcımızın masaüstüne gelecektir.

clip_image008

Şimdi ise aşağıdaki komut ile /etc dizininin altında cifs protokolünün kullanacağı Windows kullanıcısının hesap bilgilerini gireceğimiz bir dosya oluşturuyoruz ve aşağıdaki şekilde dosyanın içeriğini düzenliyoruz;

# sudo vi /etc/cifs_ayar

clip_image010

Yukarıdaki şeklini kendi bilgilerimize göre değiştirip bu dosyayı kaydederek çıkıyoruz. Daha sonra aşağıdaki komut ile cifs_ayar dosyasının sahipliğini geçerli Mustafa kullanıcısına ve grubuna veriyoruz.

# sudo chown mustafa.mustafa /etc/cifs_ayar

Linux işletim sistemleri varsayılan olarak /etc/fstab dosyasında yazan diskleri her açılışta mount edip kullanırlar. Bizde otomatik bir düzene bağlamak için bu dosyaya network üzerinden erişeceğimiz file server ile ilgili bilgileri gireceğiz ve disk olarak artık file server'ımızı kullanabileceğiz. Fstab dosyasınız düzenlemek için şu komutu veriyoruz

# sudo vi /etc/fstab

clip_image012

Ve en alt satıra aşağıdaki gibi ekleme yapıyoruz. Buradaki içerik sizin düzenlemeleriniz doğrultusunda değişmelidir.

//sunucu/dosya_adi  /home/user/FileServer/  cifs exec,credentials=/etc/cifs_ayar,rw,uid=mustafa        0      0

clip_image014

Bu satırı ekledikten sonra çıkıyoruz.

Artık işlemlerin problemsiz tamamlandığını control edebiliriz. Aşağıdaki komut ile hemen test edebiliriz. Eğer herhangi bir problem yoksa ekran görüntüsü aşağıdaki gibi olacaktır.

# sudo mount – a

clip_image016

Sistemi restart ettikten sonra herhangi bir uyarı almadıysanız ve masaüstünüzde network diskiniz sorunsuz bağlandı ise problem yok ve her şey yolunda demektir. Aşağıda görebilirsiniz.

clip_image018

Burada dikkat edilmesi gereken nokta; Eğer Windows üzerindeki hesabınızın şifresini değiştirirseniz,

# sudo vi /etc/cifs_ayar

Dosyası içindeki şifre kısmını yenilemeniz gerekecektir. Yenileme yapmazsanız klasör bağlantısı gerçekleşmeyecek, klasör içeriğini göremeyeceksiniz.

Yaptıklarımızı adım adım yazalım;

·        Cifs_utils’in paket kurulumunu yaptık

·        Paylaşımı bağlamak üzere bilgisayarımızda FileServer adında bir klasör oluşturduk.

·        /etc dizini altında cifs_ayar adında domain kullanıcı adı ve şifresini barındıran bir dosya oluşturup sahipliğini kullanıcımıza verdik.

·        Paylaşımın her açılışta otomatik olarak bağlanabilmesi için fstab dosyasını düzenledik.

Faydalı olması dileğiyle…

 

Centos Domain Join

$
0
0

 

Bu makalemizde, mevcut yapıda bulunan bir Windows Server 2012 Active Directory Domain yapısına Centos 6.5 işletim sisteminin dahil edilmesi işlemlerinden bahsediyor olacağız.

Windows Server 2012 işletim sistemi ile çalışan bir  Active Directory Domain yapısına, Centos işletim sistemini dahil etmemiz için, ilk önce Centos sunucumuza root kullanıcımız ile login oluyoruz.

clip_image002

clip_image004

Centos sunucumuza login işleminin ardından üst menüden Systemà PreferencesàNetwork Connections seçeneklerine tıklıyoruz.

clip_image006

Editing System eth0 ekranında, IPV4 Settings menüsü içerisinden IP ayarlarımızı static yapmak için Manual seçeneğine tıklıyoruz.

clip_image008

Addresses kısmında, Add diyerek Centos sunucumuza ait IP adresi, Netmask ve Gateway bilgilerini giriyoruz. DNS Servers kısmında ise, DNS Server sunucumuzun IP adresini giriyoruz. DNS Server servisi DC sunucum üzerinde bulunduğu için ben bu bölüme DC sunucumun IP adresini yazıyorum. Son olarak, Search domains bölümüne domain ismimizi yazıp Apply diyoruz. Tüm bu işlemlerden sonra, centos sunucumuz üzerinde terminal ekranını açıp aşağıdaki komutu çalıştırarak samba ve winbind paketlerini sunucumuza download ediyoruz.

“yum install samba-winbind –y”

clip_image010

clip_image012

 

clip_image014

Samba ve Winbind paketlerinin kurulumunun ardından üst menüden Systemà Administratironà Authentication seçeneklerine tıklıyoruz.

clip_image016

Identitiy Authentication menüsü içerisinde User Account Database kısmından Winbind seçeneğini seçiyoruz.

 

clip_image018

Winbind seçeçenğinin ardından, yine aynı ekran üzerinde ilgili kısımlara domain bilgilerimizi girdikten sonra Advanced Options tabına geçiş yapıyoruz.

clip_image020

Advanced Options tabı içerisinden Create home directories on the first login seçeneğini seçip Apply diyoruz. Apply işleminden sonra domain join işlemi için Identity Authentication kısmından Join Domain seçeneğine tıklıyoruz.

clip_image022

clip_image024

Join Domain işleimin ardından karşımıza bir uyarı ekranı çıkmakta. Bu uyarı ekranında bize, mevcut konfigurasyonda bazı değişiklikler yaptığımızı, yaptığımız bu değişikliklerin domain ‘ e alma işleminde  bazı sorunlara neden olabileceği yönünde bize uyarı verilmekte. Biz Save diyerek ayarları kaydediyoruz.

clip_image026

Joining Winbind Domain ekranında, Domain Admin ve Password bilgilerini yazıp OK diyoruz.

clip_image028

OK işleminin ardından DC sunucum üzerinde Active Directory Users and Computers yönetim konsolu içerisinde Computers tabı altında centos sunucumun gelmiş olduğunu görüyorum.

clip_image030

Centos sunucum üzerinde de domain içerisinde açmış olduğum test kullanıcısı ile login olmayı deniyorum.

clip_image032

Test kullanıcıma ait şifreyi girip Log In diyorum.

clip_image034

Yukarıdaki şekil üzerinde de görüldüğü gibi sunucumuza login işlemimiz başarılı bir şekilde gerçekleşti. Üst kısımda da test kullanıcımız ile giriş yaptığımız görünmekte.

clip_image036

Consol üzerinde pwd komutu ile control işlemi gerçekleştirdiğimizde, home klasörü altında TEST2012 domain’imizi görmekteyiz.

Evet, bu makalemizde, Windows Server 2012 Active Directory Domain yapısına Linux Centos sunucu dahil edilmesi işlemlerinden bahsettik. Bir sonraki makalemde görüşmek üzere hoşcakalın.

Red Hat Satellite 5.6 Kurulum

$
0
0

Bu yazımda Red Hat satellite ürününün son versiyonu olan 5.6 kurulumundan bahsedeceğim.

Kurulum adımlarına başlamadan önce kısaca Red Hat satellite nedir, ne iş yapar, neden bu ürünü kullanmalıyız gibi sorulara kısa kısa yanıtlar vererek kurulum adımlarına geçmek istiyorum.

1.       1.       Kısaca Red Hat Network Satellite,

Red Hat Network Satellite ürünü genel olarak bakıldığında paket yönetimi, merkezi yönetim,

update yönetimi, kickstart kurulum, snapshot, audit, life cycle management tool gibi özellikler sunmakta.

 

1.       2.       Red Hat Network Satellite 5.6 ile gelen yenilikler nelerdir?

 

RHN Satellite 5.6 da yeni neler var diye göz attığımızda ilk olarak göze çarpan değişiklikler aşağıdaki gibi.

 

-          Artan esneklik ve ölçekleme.

-          Geliştirilmiş sistem kullanılabilirliği.

-          Gelişmiş içerik kontrolü ve senkronizasyon.

-          Gelişmiş abonelik ve sistem raporlama

-          Sistem servis analizi

-          Otomatik hata raporlama aracı (ABT)

-          DB olarak Postgresql kullanılabiliyor.,(Oracle da mümkün.)

 

1.       3.       RHN Satellite için kurulumu

Satellite kurulumunu alt başlıklar şeklinde inceleceğiz, gereksinimler, ilgili paketler, kurulum gibi.

 

3.1.  RHN Satellite için yazılım gereksinimleri

Red Hat 5 veya 6 kurulabilir. (Base seçilmeli)

İşletim sistemi sanal olabilir. (RHEV, Xen, Vmware supported)

 

3.2. RHN Satellite için donanım gereksinimleri

3.2.1.        CPU

Gerekli: Intel Core processor, 2.4GHz, 512K cache or equivalent

Önerilen: Intel multi-core processor, 2.4GHz dual processor, 512K cache or equivalent

 

3.2.2.        Memory

Gerekli: 4 GB of memory

Önerilen: 8 GB of memory

 

3.2.3.        Storage

5 GB alan temel kurulum için.

40 GB alan Channel başına.

10 GB alan Cache dizini için(/var/cache/rhn)

Disk yapılandırması olarak Raid 5 tavsiye edilir.

 

3.2.4.        Database

İlk kurulum için 12 GB alan önerilir.

Client ve channel hesaplamaları ise,

250 KB alan client system başına,

500 KB alan çhannel başına, ayrıca 230 KB channel daki paket başına(5000 paketli bir channel için ortalama 1.1 GB)

 

3.2.5.        Firewall Port Erişim Gereksinimleri

Client sistemler Satellite sunucuya 80,443,4545 (Monitoring özelliği kullanılacak ise)

Push client özelliği kullanılacak ise inbound client 5222, satellite inbound 5269.

 

Aşağıdaki adreslere erişilebilir olmalı,

rhn.redhat.com

xm lrpc.rhn.redhat.com

satellite.rhn.redhat.com

content-xm lrpc.rhn.redhat.com

content-web.rhn.redhat.com

content-satellite.rhn.redhat.com

 

Note : Red Hat update sunucuları akamai networks kullandığı için 443 den dışarı daki tüm adreslere erişim verilmesi daha kesin bir çözüm olacaktır.

 

3.2.6.        Dosya izinleri

Umask değeri 022 önerilir.

 

3.2.7.        Selinux

enforcing veya permissive öneriliyor ancak ihtiyacınız yok ise disabled kullabilirsiniz. Ben disabled olarak devam edeceğim.

 

3.2.8.        Caching

/var/cache/rhn/ dizinini kullanır, bu dizin paket sync da kullanılır. Channel paketleri bu dizine indirilir.

 

3.2.9.        DMZ Proxy

Satellite sunucu önünde proxy v.b. var ise satellite-sync –http-proxy ile sync edilir.

 

3.2.10.    SYNC Time

Sync işlemi için satellite sunucunun tarih saat ayarları doğru olması gerekir. Bu nedenle ntp kullanmata fayda var.

 

3.2.11.    System dili ve locate ayarı

UTF-8 kullanmak gerekiyor.

LANG=”[language_TERRITORY].UTF-8″

 

Örneğin:

LANG=”en_US.UTF-8″

 

3.2.12.    Hostname

Satellite sunucu da hostname değeri, satellite olarak belirtilirse bu hatalı olur ve kurulum esnasında hata almanıza neden olacaktır. Bu nedenle sunucu hostname değeri satellite.endersys.com şeklinde FQDN olarak belirtilmelidir.

 

Note : Hostname değeri işletim sistemi kurulurken düzgün belirtilmezse ve RHN Satellite kurulumu sırasında oluşturulan sertifika daki hostname hatalı olur ise, sunucuların RHN Satellite sunucuya register edilmesi ve update edilmesi aşamasında sorunlar yaşanabilmekte, bu nedenle dikkat edilmelidir.

 

3.2.13.    Dns Server

Satellite sunucuya hostname olarak verdiğimiz değer dns sunucuda da A kaydı olarak olması gerekir.

 

3.2.14.    Sertifika

Satellite kurulumunda sertifikaya ihtiyacınız olacak, bu aşamada sertifikayı Red Hat dan support case açarak talep edebilir veya generate certificate sayfasından faydalanabilirsiniz.

 

3.2.15.    Sistem register ve update işlemleri

Satellite kurulumu gerçekleştirecek olduğumuz sunucunun Red Hat işletim sistemini RHN networke register ediyoruz.

Komut :

Rhn_register

 

Register işlemini tamamladıktan sonra sistemimizi update ediyoruz.

Komut :

Yum update

 

3.3. RHN Satellite Kurulumu

3.3.1.        Satellite ISO dosyasının indirilmesi

RHN satellite ürününe ait ISO dosyasını Red Hat ın sitesinden indirerek her hangi bir dizine upload edebilirsiniz.

Note : Red Hat account bilgileriniz ile giriş yaptığınızda download bölümünde Redhat Network Satellite linkini göremezseniz Red Hat’in Türkiye deki ilk Advanced Business partneri olan Endersys’den(destek@endersys.com.tr) adresi ile iletişime geçerek destek alabilirsiniz.

clip_image002

 

3.3.2.        ISO dosyasının mount edilmesi

Satellite kurulumu için hazırlamış olduğumuz sisteme Satellite kurulum ISO sunu mount ediyoruz.

Komut:

mount -o loop /satellite-5.6.0-20130927-rhel-6-x86_64.iso /mnt/

 

3.3.3.        RHN Satellite kurulumuna başlayabiriz

Komut:

Cd /mnt

./install.pl –skip-selinux-test

 

Kurulum için farklı parametreler kullanabilirsiniz, bununla ilgili detaylı bilgi için,

./install.pl –help

Parametresini kullanabilirsiniz.

Note :  –skip-selinux-test parametresini selinux disable ettiğim için kullandım, selinux disabled dışındaki bir durumda ise bu parametreyi kullanmanıza gerek yok.

 

Kurulum esnasında sizden sertifika dosyasının path bilgisini, SSL sertifikası için gerekli bilgileri isteyecektir, bu bilgileri belirterek kurulumu sonlandırabilirsiniz.

Kurulum tamamlandığında satellite sunucu ip adresine erişimi olan bir PC den browser aracılığı ile

https://satelliteserver-Hostname

şeklin de erişerek yetkili user name ve password belirtmeniz gerekir.

clip_image004

 

RHN Satellite için yetkili user oluşturduktan sonra ilgili user bilgileri ile satellite sunucunuza web access den login olabilir ve satellite kullanmaya başlayabilirsiniz.

 

Sisteminizdeki sunucu işletim sistemleri, işletim sistemleri ve versiyonlarına bağlı olarak channel sync işlemi yapmanız gerekir. Aktif channel listesini görebilmek için,

 

satellite-sync –list-channels

 

komutu kullanılır, channel name belirlendikten sonra –c parametresi ile channel download işlemini başlata biliriz.

satellite-sync -c rhel-x86_64-server-6

RHN satellite sunucuya ilk login olduğunuz daki görüntü aşağıdaki gibidir.

clip_image006

 

ilgili channellar satellite sunucuya sync edildikten sonra kullanmakta olduğumuz Red Hat sunucuları sırası ile RHN satellite sunucumuza register edebiliriz.


Linux ile Basit Network Tasarımı GW-NAT-DHCP-DNS

$
0
0

 

Bu makalemde linux sistemler ile temel anlamda Gateway, NAT, DHCP ve DNS gibi temel servislerin kurulmasını anlatacağım. Aşağıdaki resimde de bu yapılandırma için nasıl bir lab kuracağımın detaylarını görebilirsiniz.

Lab ortamında;

 

Router olarak adlandırılan server üzerinde Debian Server 32 bit

Server1 olarak adlandırılan server üzerinde Debian Server 32 bit

Client bilgisayarlarından birisi Windows XP diğeri de Centos 6.5 olarak işletim sistemleri kullanılmıştır.

 

Çizmiş olduğum taslak üzerinde de görüleceği gibi client bilgisayarlar DHCP sunucudan IP bilgilerini alacaklar. Aldıkları bu bilgiler doğrultusunda da Gateway üzerinden internete 192.168.2.0 ağına bağlanarak internete çıkacaklar.

 

 

clip_image002

 

 

Neler yapılacak?

 

router isimli sunucu üzerinde NAT işlemini yapabilmesi için gerekli konfigürasyonlar yapılacak

DHCP-DNS olarak çalışacak server1 isimli sunucu üzerine, sırasıyla DNS ve DHCP kurulumları ve gerekli konfigürasyonları yapılacak.

Client tarafında yapılan testlere göz atılacak.

 

 

1. NAT KURULUMU (router sunucusu)

 

Öncelikle kurulum ve konfigürasyon sırasında vim text editor’u kullanıldı. Uygulama esnasında favori text editorunuz(nano, pico vs…) ile çalışabilirsiniz.

 

# vim /etc/network/interfaces

 

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

 

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto eth0

iface eth0 inet dhcp

auto eth1

iface eth1 inet static

address 172.16.16.1

netmask 255.255.255.0

network 172.16.16.0

broadcast 172.16.16.255

 

 

 

“# vim /etc/network/interfaces” komutu ile interfaces dosyasının içeriği yukarıdaki hale getirilmeli.

 

Interfaces dosyası yukarıdaki hale getirildikten sonra

 

# vim /etc/sysctl.conf

net.ipv4.ip_forward=1

 

 

# vim /etc/sysctl.conf  Komutu ile sysctl.conf dosyasında bazı değişikliker yapmak üzere bu dosyayı açıyoruz. Ve “net.ipv4.ip_forward” yazan satırı bularak başındaki diyez(#) işaretini kaldırıyoruz. Yapılan bu değişiklik Linux üzerinde network servisinin yeniden başlatılmasından sonra aktif hale gelecek. Eğer hemen aktif olmasını istiyorsak;

 

# sysctl -w net.ipv4.ip_forward=1

 

Komutunu kullanabiliriz.

 

NAT işlemi için iptables modülünü transparan olarak devreye alacağız. Herhangi bir kesme yapmayacak, sadece ip nat işlemini yapmak üzere konfigure edeceğiz

“rc.local” dosyasına her açılışta iptables'a eklemesi gereken kuralları yazalım;

 

# vim /etc/rc.local

 

#!/bin/sh -e

#

# rc.local

#

# This script is executed at the end of each multiuser runlevel.

# Make sure that the script will "exit 0" on success or any other

# value on error.

#

# In order to enable or disable this script just change the execution

# bits.

#

# By default this script does nothing.

iptables -P FORWARD ACCEPT

iptables --table nat -A POSTROUTING -o eth0 -j MASQUERADE

exit 0

 

 

 

rc.local dosyasını yukarıdaki hali ile kaydedip çıkalım.

 

rc.local dosyası kabaca Linux işletim sisteminin boot sırasında hangi komutları çalıştıracağını barındıran bir dosyadır/scripttir. Dolayısı ile bu dosyaya yazdılan komutlar bir dahaki system başlangıcından sonra aktif olacaktır. Sistemi yeniden başlatmadan iptables komutlarını shell’de çalıştıralım;

 

# iptables -P FORWARD ACCEPT

# iptables --table nat -A POSTROUTING -o eth0 -j MASQUERADE

 

 

 

Eğer server1 sunucusu üzerinde 172.16.16.2 olarak static IP’yi tanımladıysanız, server1 üzerinden 192.168.2.0 ağına veya dış bir network’e ping atarak konfigürasyonu kontrol edebilirsiniz.

 

clip_image004

 

Ben de herhangi bir problem görünmediği için 2.adıma yani DNS ve DHCP sunucuların kurulumlarına geçiyorum.

 

 

2.1. Dns kurulumu (server1)

 

Standart olarak network yapılandırması ile başlayalım ve interfaces dosyası üzerinde yapmadıysak gerekli ayarları aşağıdaki adımlar doğrultusunda yapalım.

 

# vim /etc/network/interfaces

 

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

 

# The loopback network interface

auto lo

iface lo inet loopback

 

# The primary network interface

allow-hotplug eth0

iface eth0 inet static

address 172.16.16.2

netmask 255.255.255.0

gateway 172.16.16.1

 

 

 

 

Yukarıdaki gibi network ayarlarını bitirip, # ifconfig komutu ile eth0’ın 172.16.16.2 IP’sini kullandığını görebildiysek DNS kurulumuna geçelim. DNS sunucu olarak BIND server kuracağım.

 

# apt-get update

 

$ORIGIN .

$TTL 604800     ; 1 week

yilmaz.com              IN SOA  server1.yilmezy-updates Release.gpg [836 B]                            100      elease                                     604800     ; refresh (1 week)

; retry (1 day)

lease.gpg                      s)

604800     ;                                                  )

rg.tr wheezy/main i386 Packagesrver1.yilmaz.com.

eezy/main Translation-en6.16.2

$ORIGIN yilmaz.com.

server1 -updates/main Sources [4,057 B]ter          A       172.16.16.1

$es/main i386 Packages/DiffIndexek

16.16.172.in-addr.abian.org wheezy/updates Release16.16.172.in-addr.arpa. root.yilmaz.com.16s/main Translation-en/DiffIndex                         150org wheezy/updates/main Sources                  604800     ; refeezy/updates/main i386 Packages               86400      ; retry (ezy/updates/main Translation-en        2419200    ; ex215 kB/s)eks)

 

 

 

 

Depo bilgilerini güncelledikten sonra kurulum adımına geçelim.

 

# apt-get install bind9 dnsutils

 

Reading package lists... Done

Building dependency tree

Reading state information... Done

dnsutils is already the newest version.

Suggested packages:

bind9-doc resolvconf ufw

The following NEW packages will be installed:

bind9 bind9utils

0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.

Need to get 490 kB of archives.

After this operation, 1,257 kB of additional disk space will be used.

Get:1 http://ftp.linux.org.tr/debian/ wheezy/main bind9utils i386 1:9.8.4.dfsg.P1-6+nmu2+deb7u1 [121 kB]

Get:2 http://ftp.linux.org.tr/debian/ wheezy/main bind9 i386 1:9.8.4.dfsg.P1-6+nmu2+deb7u1 [370 kB]

Fetched 490 kB in 0s (706 kB/s)

Preconfiguring packages ...

Selecting previously unselected package bind9utils.

(Reading database ... 38893 files and directories currently installed.)

Unpacking bind9utils (from .../bind9utils_1%3a9.8.4.dfsg.P1-6+nmu2+deb7u1_i386.deb) ...

Selecting previously unselected package bind9.

Unpacking bind9 (from .../bind9_1%3a9.8.4.dfsg.P1-6+nmu2+deb7u1_i386.deb) ...

Processing triggers for man-db ...

Setting up bind9utils (1:9.8.4.dfsg.P1-6+nmu2+deb7u1) ...

Setting up bind9 (1:9.8.4.dfsg.P1-6+nmu2+deb7u1) ...

Adding group `bind' (GID 107) ...

Done.

Adding system user `bind' (UID 104) ...

Adding new user `bind' (UID 104) with group `bind' ...

Not creating home directory `/var/cache/bind'.

wrote key file "/etc/bind/rndc.key"

#

[ ok ] Starting domain name service...: bind9.

 

 

 

Dns sunucu caching işlemi yapacağı için cache içinde bulunmayan isimleri çözebilmesi için opendns üzerinden sorgu yapması için “/etc/bind/named.conf.options” dosyası içindeki forwarders bölümünü aşağıdaki gibi düzenleyelim;

 

# vim /etc/bind/named.conf.options

 

forwarders {

//      OpenDNS

208.67.222.222 ;

208.67.220.220 ;

};

 

 

 

“/etc/bind/named.conf.local” dosyası içinde LAN için kullanacağımız zone’ları ve PTR için kullanacağımız reverse zone’ları tanımlayalım;

 

# vim /etc/bind/named.conf.local

 

zone "yilmaz.com" {

type master;

file "/var/lib/bind/db.yilmaz.com";

};

 

zone "16.16.172.in-addr.arpa" {

type master;

file "/var/lib/bind/db.16.16.172";

};

 

 

 

Zone tanımlama işlemi sırasında farkedildiyse eğer "/var/lib/bind/” klasörü altında bu zone’ların zone’lara ait dosya yolları tanımlandı. Adresleri verilen bu dosyalar zone’lara ait kayıtların ve konfigürasyonun tutulduğu dosyalardır.

 

O dosyaları oluşturup gerekli satırları ekleyelim;

 

# vim /var/lib/bind/db.yilmaz.com

 

$ORIGIN .

$TTL 604800     ; 1 week

yilmaz.com              IN SOA  server1.yilmaz.com. root.yilmaz.com. (

100        ; serial

604800     ; refresh (1 week)

86400      ; retry (1 day)

2419200    ; expire (4 weeks)

604800     ; minimum (1 week)

)

NS      server1.yilmaz.com.

A       172.16.16.2

$ORIGIN yilmaz.com.

server1         A       172.16.16.2

router          A       172.16.16.1

 

 

Db.yilmaz.com dosyasını oluşturduysak PTR kayıtlarını tutan “/var/lib/bind/db.16.16.172” dosyasını oluşturacağız;

 

# vi /var/lib/bind/db.16.16.172

$ORIGIN .

$TTL 604800     ; 1 week

16.16.172.in-addr.arpa  IN SOA  server1.yilmaz.com.16.16.172.in-addr.arpa. root.yilmaz.com.16.16.172.in-addr.arpa. (

150        ; serial

604800     ; refresh (1 week)

86400      ; retry (1 day)

2419200    ; expire (4 weeks)

604800     ; minimum (1 week)

)

NS      server1.

2                       PTR     server1.yilmaz.com.

1                       PTR     router.yilmaz.com

~

 

 

Bahsi geçen zone dosyalarını oluşturduysak “/var/lib/bind” klasörünün grup ve kullanıcı ayarlarını muhakkak bind:bind olarak ayarlamak gerekiyor.

 

# chown bind:bind /var/lib/bind/ -R

 

 

 

Dns kurulumunu ve konfigürasyonunu tamamladık. Şimdi nslookup ile bazı kontroller yapalım.

 

# nslookup

> server 127.0.0.1

> cozumpark.com

Server:                 127.0.0.1

Address:             127.0.0.1#53

 

Non-authoritative answer:

Name:  cozumpark.com

Address: 188.132.200.15

 

 

 

Görüldüğü gibi cozumpark.com alan adını kendi sunucumuz üzerinden çözdük.

 

Yukarıdaki adımlarda herhangi bir yanlışlık yaptığınızı düşünüyorsanız veya dns sunucunuz hata veriyorsa konfigürasyonunuzu ve zone’ları kontrol etmek için şu komutları kullanabilirsiniz;

 

# named-checkconf /etc/bind/<conf_dosyası>

# named-checkzone <hostname> /var/lib/bind/<dosya_adı>

 

 

 

 

2.2. DHCP KURULUMU (server1)

 

Dhcp sunucu olarak isc-dhcp-server kurulumu yapacağız.

 

# apt-get install isc-dhcp-server

Reading package lists... Done

Building dependency tree

Reading state information... Done

Suggested packages:

isc-dhcp-server-ldap

The following NEW packages will be installed:

isc-dhcp-server

0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.

Need to get 935 kB of archives.

After this operation, 2,075 kB of additional disk space will be used.

Get:1 http://http.debian.net/debian/ wheezy/main isc-dhcp-server amd64 4.2.2.dfsg.1-5+deb70u6 [935 kB]

Fetched 935 kB in 1s (561 kB/s)

Preconfiguring packages ...

Selecting previously unselected package isc-dhcp-server.

(Reading database ... 146032 files and directories currently installed.)

Unpacking isc-dhcp-server (from .../isc-dhcp-server_4.2.2.dfsg.1-5+deb70u6_amd64.deb) ...

Processing triggers for man-db ...

Setting up isc-dhcp-server (4.2.2.dfsg.1-5+deb70u6) ...

Generating /etc/default/isc-dhcp-server...

[FAIL] Starting ISC DHCP server: dhcpd[....] check syslog for diagnostics. ... failed!

failed!

invoke-rc.d: initscript isc-dhcp-server, action "start" failed.


Yukarıda da görüldüğü gibi dhcp sunucumuz başlama anında hata verdi. Endişe edecek bir şey yok sadece konfigürasyonu toparlamamız gerekecek. “vim /etc/default/isc-dhcp-server” dosyasını açıp, INTERFACES satırını bulacağız ve karşısına Ethernet ara yüzünün adresini gireceğiz. Bu ayarda DHCP sunucu hangi Ethernet ara yüzü üzerinden DHCP sunacak ona karar veriyoruz.

#vim /etc/default/isc-dhcp-server

 

INTERFACES="eth0"

#vim /etc/default/isc-dhcp-server

 

INTERFACES="eth0"

 

Dhcp sunucusunu yapılandırmak için “/etc/dhcp/dhcpd.conf” dosyası üzerinde düzenlemeler yapıyoruz. Dosyanın içeriğini tamamen silip aşağıdaki konfigürasyon örneğinden yararlanmak konfigürasyon dosyanızı baştan oluşturabilirsiniz.

 

# vi /etc/dhcp/dhcpd.conf

 

ddns-updates on; //dns update acik

ddns-update-style interim; //dns update icin kullanilacak sema

default-lease-time 600;

max-lease-time 7200;

authoritative;

log-facility local7;

ddns-domainname "yilmaz.com";

ddns-rev-domainname "in-addr.arpa.";

option domain-name "yilmaz.com";

option domain-name-servers 172.16.16.2;

option routers 172.16.16.1;

option broadcast-address 172.16.16.255;

subnet 172.16.16.0 netmask 255.255.255.0 {

range 172.16.16.10 172.16.16.25;

zone 16.16.172.in-addr.arpa. {

primary 172.16.16.2;

}

zone yilmaz.com. {

primary 172.16.16.2;

}

}

 

Yukarıdaki dosyada dinamik dns güncellemesi için gerekli ayarları ve dhcp sunucusnun standart ayarlarını yaptık. Son olarak dhcp sunucumuzu başlatıyoruz.

 

# /etc/init.d/isc-dhcp-server start

 

Makalenin başında çizmiş olduğumuz yapıyı yukarıda yapmış olduğumuz işlemler neticesinde gerçeklemiş olduk.

 

Test aşamasına dhcp-dns sunucusu olan server1 üzerinde dhcp lease’leri kontrol ederek başlayalım;

 

# tail /var/lib/dhcp/dhcpd.leases

 

# The format of this file is documented in the dhcpd.leases(5) manual page.

# This lease file was written by isc-dhcp-4.2.2

 

lease 172.16.16.10 {

starts 1 2014/04/21 23:41:16;

ends 1 2014/04/21 23:51:16;

tstp 1 2014/04/21 23:51:16;

cltt 1 2014/04/21 23:41:16;

binding state active;

next binding state free;

rewind binding state free;

hardware ethernet 08:00:27:ef:7d:33;

uid "\001\010\000'\357}3";

client-hostname "yilmaz-xp";

}

lease 172.16.16.11 {

starts 1 2014/04/21 23:43:32;

ends 1 2014/04/21 23:53:32;

tstp 1 2014/04/21 23:53:32;

cltt 1 2014/04/21 23:43:32;

binding state active;

next binding state free;

rewind binding state free;

hardware ethernet 08:00:27:10:52:81;

client-hostname "centos.yilmaz.com";

}

 

Yukarıda görüldüğü gibi client bilgisayarlar sorunsuz IP almışlar.

 

Client tarafındaki testler;

 

Centos client isim çözebiliyor mu?

 

clip_image006

Sorunsuz çözüyor.

 

 

 

XP’nin IP ayarları;

 

clip_image008

 

Sorunsuz bir şekilde kurmuş olduğumuz sistem üzerinden IP alabiliyor.

 

İnternete bağlanalım;

 

clip_image010

 

 

Testlerimizde de sorun yoksa isteklerimizi tam anlamıyla gerçeklemişiz demektir. Linux ile basit bir network ve sistem altyapısı kurmayı hedeflediğim bu makale umarım yararlı olur.

Centos 6.5 Üzerine Apache Server Kurulumu ve Virtual Host Yapılandırması

$
0
0

Eminim ki BT sektöründeki herkesin evinde, işyerinde, ya da profesyonel yaşamında muhakkak bir Web sunucuya ihtiyacı oluyor. Ne var ki ihtiyaç yalnızca Web sunucu kurmak ile bitmiyor. Sunucuyu kurduktan sonra üzerinde birden fazla web uygulaması çalıştırmak gerekiyor. Her web uygulaması için ayrı bir sunucu mu kuracağız? Elbette hayır. Bu noktada imdadımıza bütün Web sunucuların desteklemiş olduğu Virtual Host yapılandırması koşuyor.

İşin hikaye kısmını özetlediğimize göre artık teknik tarafa geçebiliriz.

 

İşe öncelikle bir Centos 6,5 indirerek başlıyoruz. http://isoredirect.centos.org/centos/6/isos/ adresinden donanımınıza uygun işletim sistemini seçip indirebilirsiniz.

İşletim sistemini sunucuya kurup çalıştırdıktan sonra, Sunucu üzerinden ya da uzaktan bağlanma yoluyla kuruluma başlıyoruz.

 

# su

Komutu ile root olmalıyız.

 

clip_image001

 

Hazırlıklar tamamlandıktan sonra apache sunucuyu kurmak için alttaki komutu kullanıyoruz;

 

# yum -y install httpd

 

Çıktısı alttaki gibi olmalı;

 

clip_image002Apache kurulumu bu kadar. Görüldüğü gibi gayet basit ve pratik bir kurulumu var.

Senaryomuz şu şekilde olacak;

 

  1. cozumpark.com, mustafa.com, yilmaz.com olarak 3 adet web sitesini bu sunucudan sunacağız.
  2. Her web sitesi için bir dizin oluşturacağız.
  3. Her web sitesi için virtual host ayarlarını gireceğiz.

 

Önce /home klasörü altına virtual hostlarımızı barındıracağımız public_html klasörünü oluşturacağız, sonra bu klasörün altında virtual host dosyalarımızı oluşturacağız. Bu işlemler için aşağıdaki komut setini kullanıyoruz;

 

# cd /home/

# mkdir public_html

# mkdir -p public_html/cozumpark.com/{public,private,log,cgi-bin,backup}

# mkdir -p public_html/mustafa.com/{public,private,log,cgi-bin,backup}

# mkdir -p public_html/yilmaz.com/{public,private,log,cgi-bin,backup}

 

Linux/Unix sistemlerde işlemler genelde shell üzerinden yapılır. Shell kullanırken dosyalar üzerinde okuma yazma işlemi yaparken, vi ya da nano gibi text editor programları kullanılır. Ben günlük hayatta vi kullanıyorum, o nedenlede makalede vi ile çalışıyor olacağım.

 

Klasör ve dosyaları oluşturduktan sonra virtual hostları denemek amacıyla kullanacağımız birer index.html dosyası oluşturmalıyız;

 

# vi /home/public_html/cozumpark.com/public/index.html

vi editöründe eğer "i" ya da "a" tuşlarına basmazsanız yazma işlemi yapamazsınız, yani insert moda geçemezsiniz. “i” tuşuna basarak yazma moduna geçiyoruz ve alttaki html kodlarını dosyanın içine yapıştırıyoruz;

 

<html>

  <head>

    <title>cozumpark.com</title>

  </head>

  <body>

    <h1>cozumpark.com</h1>

  </body>

</html>

 

Esc tuşuna basıp yazma modundan çıkıyoruz ve “:wq” diyerek dosyayı kaydedip çıkıyoruz.

Bu işlemi diğer hostlarımız için de yapalım;

 

# vi /home/public_html/mustafa.com/public/index.html

Yine “i” tuşuna basarak yazma moduna geçiyoruz, alttaki satırları dosyanın içeriğine ekliyoruz.

 

<html>

  <head>

    <title>mustafa.com</title>

  </head>

  <body>

    <h1>mustafa.com</h1>

  </body>

</html>

Esc’ye basıp “:wq” ile kaydedip çıkıyoruz.

 

 

 

 

# vi /home/public_html/yilmaz.com/public/index.html

 

“i” tuşuna basarak aşağıdaki html kodlarını ekliyoruz;

 

<html>

  <head>

    <title>yilmaz.com</title>

  </head>

  <body>

    <h1>yilmaz.com</h1>

  </body>

</html>

 

Esc’ye basıp“:wq” ile kaydedip çıkıyoruz.

 

Yukarıda neler yaptığımızı birkaç cümle ile özetleyelim;

  • apache kurulumunu yaptık.
  • Virtual Hostlarımızın bulunacağı /home dizini altında bir public_html klasörü oluşturduk.
  • Her bir virtual host için gereken klasörleri oluşturduk.
  • Her bir virtual host’un public dizini altına gereken index.html dosyalarını oluşturduk ve kaydettik.

 

Gelelim Virtual Host ayarlarına;

Apache'nin konfigürasyon dosyasını açıp düzenlemek için vi ile açıyoruz;

 

# vi  /etc/httpd/conf/httpd.conf

 

Apache'yi konfigüre etmek için dosya içerisinde görüleceği üzere birçok parametre yer almakta. Bir sonraki makalede tamamı ile Apache konfigürasyon parametrelerini anlatıyor olacağım. Orada daha detaylı değineceğimiz dosya içerisindeki birçok parametreyi geçiyor ve direk virtual host ayarlarına geliyorum.

insert moduna geçmeden "/" tuşuna basarak vi içinde arama yapabilirsiniz. Dosya içinde "NameVirtualHost *:80" satırını aratın ve insert moda(“i”'ye basarak)

#NameVirtualHost *:80  

satırını

NameVirtualHost *:80

haline getirin.

Esc'ye basarak insert mod'dan çıkabilirsiniz.

Şimdi dosyanın sonuna ekleme yapmak için yine “i” tuşuna basıp şu satırları ekleyelim;

 

# domain: cozumpark.com

# public: /home/public_html/cozumpark.com/

 

<VirtualHost *:80>

 

  # Admin mail adresi, sunucu adi, sunucu takma adi

  ServerAdmin webmaster@cozumpark.com

  ServerName  cozumpark.com

  ServerAlias www.cozumpark.com

 

  # Index ve web sitesinin ya da uygulamasının bulunacagi public klasor

  DirectoryIndex index.html

  DirectoryIndex index.php

  DocumentRoot /home/public_html/cozumpark.com/public

 

  # Custom log file locations

  LogLevel warn

  ErrorLog  /home/public_html/cozumpark.com/log/error.log

  CustomLog /home/public_html/cozumpark.com/log/access.log common

 

</VirtualHost>

 

# domain: mustafa.com

# public: /home/public_html/mustafa.com/public

 

<VirtualHost *:80>

 

  # Admin mail adresi, sunucu adi, sunucu takma adi

  ServerAdmin webmaster@mustafa.com

  ServerName  mustafa.com

  ServerAlias www.mustafa.com

 

  # Index ve web sitesinin ya da uygulamasının bulunacagi public klasor

  DirectoryIndex index.html

  DirectoryIndex index.php

  DocumentRoot /home/public_html/mustafa.com/public

 

  # Log dosyalarina iliskin ayarlar

  LogLevel warn

  ErrorLog  /home/public_html/mustafa.com/log/error.log
  CustomLog /home/public_html/mustafa.com/log/access.log common

  </VirtualHost>

 

# domain: yilmaz.com

# public: /home/public_html/yilmaz.com/public

 

<VirtualHost *:80>

 

  # Admin mail adresi, sunucu adi, sunucu takma adi

  ServerAdmin webmaster@yilmaz.com

  ServerName  yilmaz.com

  ServerAlias www.yilmaz.com

 

  # Index ve web sitesinin ya da uygulamasının bulunacagi public klasor

  DirectoryIndex index.html

  DirectoryIndex index.php

  DocumentRoot /home/public_html/yilmaz.com/public

 

  # Log dosyalarina iliskin ayarla

  LogLevel warn

  ErrorLog  /home/public_html/yilmaz.com/log/error.log

  CustomLog /home/public_html/yilmaz.com/log/access.log common

</VirtualHost>

 

 

Vi ile insert mod'da yukarıdaki satırları httpd.conf dosyasına eklediysek, Esc ile insert mod'dan çıkıp ":wq" komutu ile dosyayı kaydedip çıkabiliriz.

 

Eğer bu işlemleri sorunsuz bir şekilde bitirdiysek

 

# setsebool httpd_disable_trans 1

 

Komutu ile apache sunucu için selinux korumasını devre dışı bırakmak gerekiyor.

Bir ayar da dosya izinleri ve sahiplikleri üzerinde yapacağız. Buraya kadar bütün işlemleri root kullanıcısı ile yaptık. Dolayısı ile dosya sahipliği root kullanıcısında olduğu için apache dosyaları çalıştıramayacak ve permission denied hatası verecektir. Bunun önüne geçmek için önce dosyaların sahipliğini değiştireceğiz ve ardından okuma yazma ayarlarını değiştireceğiz ;

 

# chown apache:apache /home/public_html -R

# chmod 755 /home/public_html -R

 

Daha sonra sunucumuz üzerine hosts dosyasını düzenleyelim;

# vi  /etc/hosts

Ile dosyayı düzenlemek üzere açıyoruz ve “i” ile insert mod geçip aşağıdaki satırları ekliyoruz;

 

127.0.0.1   cozumpark.com       mustafa.com     yilmaz.com

x.x.x.x   mustafa.com www.mustafa.com

x.x.x.x   yilmaz.com www.yilmaz.com

x.x.x.x   cozumpark.com www.cozumpark.com

 

x.x.x.x ‘lerin yerine sunucunuzun IP’sini yazıyoruz ve Esc’ye basıp “:wq” ile kaydedip çıkıyoruz.

Son olarak;

 

# service httpd restart

 

komutu ile apache sunucuyu yeniden başlatıyoruz.

 

clip_image003

 

Sunucuyu yeniden başlattıktan sonra deneme yapacağımız istemci makinesinin hosts dosyasını da değiştirmemiz gerekiyor. Bu dosyaya Linux’ta /etc/hosts, Windows sistemlerde ise C:\WINDOWS\system32\drivers\etc\hosts yolları ile erişebilirsiniz.

Dosyanın içeriğini şu şekilde değiştirmelisiniz;

 

x.x.x.x                  cozumpark.com

x.x.x.x                  mustafa.com

x.x.x.x                  yilmaz.com

(x.x.x.x yerine apache’nin bulunduğu sunucunun IP’sini yazmalıyız.)

 

Web tarayıcınız üzerinden cozumpark.com, yilmaz.com, Mustafa.com adreslerine giderek sonucu görebilirsiniz.

 

clip_image004

 

 

clip_image005

 

 

clip_image006

 

Yaptığımız bütün işlemleri adım adım yazalım;

 

  • Apache sunucu kurulumunu yaptık
  • Virtual host’lar için gereken klasörleri oluşturduk
  • Virtual host’ları denemek için birer index.html dosyası oluşturduk
  • Httpd.conf dosyasında virtual host ayarlarını yaptık
  • Selinux ayarlarını yaptık
  • Dosya izin ve sahipliklerini değiştirdik
  • Sunucu ve Client tarafındaki hosts dosyalarını düzenledik.
  • Apache’yi yeniden başlatıp sonuçları gözlemledik.

 

Bir makalenin daha sonuna geldik. Umarım faydalı bir Makale olmuştur. Bir sonraki makalemde görüşmek dileği ile esen kalın.

 

Centos Web Panel Kurulumu

$
0
0

 

Merhabalar, Linux’ un her geçen gün daha kullanışlı daha kullanıcı dostu ara yüzleri ile ilgi çekmesi devam ediyor. Bu yazımda Linux’ un Centos dağıtımı için geliştirilen Centos Web Panel (CWP)’ in kurulumunu yapacağız. Kuruluma geçmeden önce CWP hakkında biraz bilgi vereyim.

CentOs web panel, kolay ve hızlı kullanımıyla dikkat çekiyor. Bütün kontrol işlemlerini ssh bağlantısına gerek kalmadan panel üzerinden yapmanıza olanak sağlıyor. Dedicated, VPS, VDS serverleriniz için ücretsiz olarak kullanabileceğiniz bu panel sizi birçok zahmetli işten kurtaracak nitelikte.

clip_image001

CentOS web panel, kurulumu ile birçok ücretsiz servisi de beraberinde getirerek, kullanıma sunmakta. Dilerseniz panelle birlikte gelen servislerimizi sıralayalım.

Web Server
- Varnish Cache server desteği
- Apache’ yi kendine göre derler ve %15 performans sağlar.
- Apache Server durumu ve yapılandırma desteği
- Apache vHostlari ve vhost şablonlarını düzenleyebilir, ek konfigürasyon yapabilirsiniz.
- Tek tuşla biri sanal hostlari rebuild edebilirsiniz.
- suPHP & suExec ile gelişmiş güvenlik sağlar.
- Mod Security + OWASP rules tek tık kurulum ve kolayca yönetilebilir.

PHP
- PHP derlemesi yapar ve %20 performans iyileştirmesi yapar.
- PHP Sürüm destekleri (Geçiş yapabileceğiniz sürümler : 5.2, 5.3, 5.4, 5.5)
- Basit PHP Editorü
- PHP eklentilerini tek tıkla kurabilirsiniz.
- PHP.ini Editör desteği & PHP Bilgisi (phpinfo) & PHP modüllerini listeleme

Kullanıcı Yönetimi
- Ekleme, Listeleme, Düzenleme ve Kullanıcı Silme özelliği
- Kullanıcı İzleme (Açık kullanıcı dosyaları ve socket dinlemeleri.)
- Shell Erişim Yönetimi

DNS
- FreeDNS desteği
- Dns bölgeleri ekleyebilir, silebilir, düzenleyebilir ve listeleyebilirsiniz.
- Nameserver iplerini güncelleyebilirsiniz.
- DNS Şablon Yönetimi

Email
-Postfix ve dovecot desteği
- E-Posta Kutuları ve Takma Adlar oluşturabilirsiniz.
- Roundcube webmail desteği
- Postfix Mail Kuyruğu izleme

System
- Donanım Bilgileri (Cpu çekirdek ve saat bilgileri)
- Bellek Kullanım Bilgileri
- Disk Durumu ve Bilgileri
- İşletim Sistemi Bilgileri (Kernel Versiyonu, Uptime Süresi vs..)
- Servis Durumları (Servisleri kolayca restart edebilirsiniz. Apache, Mail, Ftp vs…)
- ChkConfig Yönetimi (Tek tuşla aktif servisleri durdurabilir başlangıçta çalışmasını engelleyebilirsiniz.)
- Ağ port kullanımı
- Ağ ayarları
- SSHD Ayarları

Monitoring
- Canlı Servis İzleme Desteği (Monitor services eg. top, apache stats, mysql…)
- Java SSH Konsolu ile ssh clientlara gerek duymadan ssh bağlantısı kurabilirsiniz.
- Servis Ayarları (eg. Apache, PHP, MySQL…)
- Arkaplan’ da shell komutları koşturabilirsiniz.

Security
- CSF Firewall desteği.
- SSL Sertifikaları Oluşturabilirsiniz.

SQL
- MySQL Veritabanı Yöneticisi
- Yerel MySQL kullanıcıları ve uzak mysql kullanıcı oluşturabilirsiniz.
- MySQL işlemlerini Live Monitoring ile izleyebilirsiniz.
- Veritabanları oluşturabilir, silebilirsiniz.
- Veritabanına birden fazla kullanıcı ekleyebilirsiniz.
- MySQL Sunucu Ayarları
- PhpMyAdmin (Web tabanlı phpmyadmin ile Veritabanlarınızı yönetebilirsiniz.)

Additional options
- TeamSpeak 3 Yönetimi (Voice servers) (tek tuşla kurabilirsiniz.)
- Shoutcast Yönetimi (Shoutcast Radyo Yöneticisi, birden fazla shoutcast server üretebilir ve kolayca yönetebilirsiniz.)
- Otomatik Güncelleme
- Yedekleme Yöneticisi
- Dosya Yöneticisi

ve bir çok özellik bulunmaktadır.

Kısacası CSF Firewall desteği olan, SMTP olarak Postfix, POP3 olarak dovecot, DNS server olarak Bind, FTP olarak VSFTP kullanan ve ek olarak Shoutcast, Teamspeak gibi modüllerini içinde barınan küçük ama güzel bir kontrol paneli.

Panel’ in yönetici seviyesi Maalesef sadece root seviyesidir. Yani Alan adlarınız için alt hesaplar oluşturmayı, domain seviyesinde Panel sunmayı unutun. Biraz daha bu yazılım firmalarına ve kendi web sitelerim barınacak zaten diyen arkadaşlar için kolay ve yönetilebilir bir arayüz bazı arkadaşların tercihi olabilir.

KURULUM

Kuruluma geçmeden belirtmek isterim ki eğer kaynağı sınırlı bir sunucunuz varsa işletim sistemini 32 bit seçin, kaynak sıkıntınız yoksa 64 bit çok daha iyi performans verecektir. CentOs bu paneli 6.x sürümü ile kullanmanızı önermekte.

İlk olarak sunucumuza putty ile ssh bağlantısı sağlıyor ve root olarak oturum açıyoruz.

clip_image002

Öncelikle “/usr/local/src” klasörüne geçiyoruz. Bunun için aşağıdaki komutu kullanıyoruz.

cd /usr/local/src

 clip_image003

Daha sonra bulunduğumuz dizine “wget” komutu yardımı ile “http://dl1.centos-webpanel.com/files/cwp-latest.sh” adresindeki dosyayı çekiyoruz. Bu işlem için aşağıdaki komutu kullanıyoruz.

wget http://dl1.centos-webpanel.com/files/cwp-latest.sh 

clip_image004

Ve kurulum için gerekli olan dosyamızı indirdiğimize göre artık başlayabiliriz. Kurulumu başlatmak için indirdiğimiz “cwp-latest.sh” dosyamızı çalıştırıyoruz. Çalıştırmak için aşağıdaki komutu kullanıyoruz. Komutumuzu çalıştırdığımız zaman bizden MySQL root şifresini isteyecek. Root şifresini yazarak devam ediyoruz.

sh cwp-latest.sh 

clip_image005

Kurulum tamamlandığı zaman aşağıdaki gibi bir bilgilendirme ekranı gelecek. Son olarak sunucunun yeniden başlatılması için Enter’ a basıyoruz. Kurulum adımlarımızın hepsi bu kadar. Sunucu yeniden başladığı zaman web panelimiz erişilebilir durumda olacaktır.

clip_image006

clip_image007

Kurulumun ardından dikkat edilmesi gereken 1-2 alan var. Hemen onlarıda paylaşmak istiyorum. Öncelikle sunucumuz için Name Server kayıtlarını girmemiz gerekmektedir. Bunun için CWPanel menüsünden “DNS Functions” menüsü açıp altından “Edit Nameservers IPs” menüsünü seçiyoruz. Açılacak olan sayfada gerekli alanları kendimize göre dolduruyoruz.

Daha sonra yapmamız gereken son bir ayar kalıyor. Bu ayar ise paylaşılan bir IP adresi tanımlamak. Bunun için de CWPanel menüsünden “CWP Settings” menüsünü açıp altından “Edit Settings” menüsünü seçiyoruz. Açılan sayfaya kullanacağınız paylaşılmış IP adresinizi yazıyorsunuz. Hepsi bu kadar.

Artık “User Accounts” menüsü altından yeni sitelerinizi yaratabilirsiniz.

Ayrıca Centos Web Panel sitesinde yayınlanan “Securing DNS Server BIND (open DNS resolver)” konusuna göz atmakta fayda var.

Linux Sistemlerde Systemd Nedir?

$
0
0

Systemd Öncesi init ve runlevel’lar

Bilindiği gibi Linux sistemlerde sistem açılışında runlevel dediğimiz sistemin sunacağı hizmetlere göre yapılandırıldığı çalışma seviyeleri mevcuttur. Basitce windows sistemlerde Safe mode ile girdiğimiz ve sistemlerin tekli kullanıcı moda’ta sorunları çözebileceğimz şekilde de Linux işletim sisteminde RunLevel ‘lar günlük hayatımızda karşımıza çıkar.

Linux dünyasında RunLevel’lar değişik dağıtımlarda farklı işlevlere sahip olabilmektedir. Bu yazımızda daha çok Red Hat bazlı (Centos,OEL vs) işletim sistemlerin RunLevel’ları anlatılacaktır. Bu RunLevel’lar eskiden init dediğmiz ve işletim sistemi kernel yüklemesinden sonra çalışan ve PID (Process ID) 1 olan süreçlerle yönetilmekte idi.  init süreci /etc/inittab dosyasını okuyup sistemin hangi Run Level’dan başlayacağına karar verirdi. Aşağıda /etc/inittab dosyasından bir kesit sunulmaktadır.

# Default runlevel. The runlevels used by RHS are:

#   0 - halt (Do NOT set initdefault to this)

#   1 - Single user mode

#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)

#   3 - Full multiuser mode

#   4 - unused

#   5 - X11

#   6 - reboot (Do NOT set initdefault to this)

#

id:3:initdefault:

 

Buradaki  id:3:initdefault: satırı bizim işletim sistemimizin RunLevel 3 ‘den başlayacağını göstermektedir. Red Hat sistemlerde RunLevel’lar

·        0 - halt (Sistemi kapatmak –poweroff veya halt- için kullanılan runlevel)

·        1 - Single user mode (Sistemi kurtarmak için kullanılan ve network ayarlarının aktive edilmediği tekli kullanıcı mode’u. Bazı yerlerde S veya s olarak da adlandırılır.

·        2 – Multiuser  NFS olmadan çoklu kullanıcı mode’u (Bu runlevel 3. Runlevel ile genel olarak aynıdır. Tek fark network ayarlarını içermemesidir.)

·        3 - multiuser mode (Network ayarlarını nda aktive edildiği ve genellikle kullanılan RunLevel’dır.

·        4 – kullanılmıyor.

·        5 - X11 (Runlevel 3 e ek olarak görsel ekranın- ki biz buna X veya X11 de deriz- da başlatıldığı runlevel. Runlevel 3’den sonra en çok tercih edilen runlevel’dır.)

·        6 - reboot (Sistemin kapatılıp tekrar açıldığında kullanılan RunLevel’dır.

 

İnit süreci ön tanımlı runlevel’ı ayarladıktan sonra sistemde /etc/rc.d/init.d/ altında bulunan  ve rpm paketleri içinde gelen servis scriptlerini (bunlar bir shell scripttir!) çalıştırır. Örnek olarak eğer runlevel 3 de isek ve sshd servisi çalışacaksa bunun başlangıç scripti /etc/rc.d/init.d/sshd altında yer almakta. Bunun runlevel 3 de çalışmasını da /etc/rc.d/rc3.d/S55sshd scripti sağlamakta idi. Buradaki S harfi bunun start edilleceği, 55 ise başlangıç sırasını belirtmektedir.

 

 

# ls -la /etc/rc.d/rc3.d/S55sshd

lrwxrwxrwx 1 root root 14 Jun  6  2011 /etc/rc.d/rc3.d/S55sshd -> ../init.d/sshd

 

Systemd Tarihçesi ve init ‘e göre avantajları

 

Linux sistemlerde yaygın olarak kullanılmaya başlayan systemd  30 Mart 2010’da  Lennart Poettering  ve Kay Sievers tarafından init sisteminin alternatifi olarak yazıldı.Bu yapı yeni Linux sistemleri ile (RedHat tabanlı sistemlerde RHEL 7 ile, SLES’de SLES 12 de, Debian da Debian 8 ile) yerini systemd ye bıraktı. Her ne kadar systemd üzerinde tartışmalar devam etse ve bazıları UNIX felsefesine aykırı da bulsa systemd’nin önümüzdeki yıllarda daha fazla kabul göreceği de düşünürsek systemd’yi önyargısız olarak inceleyip,öğrenmekte fayda var.

 

Diğer dağıtımlardaki durumuna https://en.wikipedia.org/wiki/Systemd adresindeki “Adoption and reception”  kısmından da erişilebilen systemd  nin genel olarak şu avantajları mevcuttur.

 

1.     SysV init script’leri ile tam uyumludur. Init.d altındaki scriptleri de çalıştırabilir.

2.     Serivslerin parallel olarak başlatılabilmesi (dolayısıyla daha hızlı sistem açılışı ve kapanışı)

3.     Servislerin on-deman aktivasyonu. Yani bir servisi başlatırken onun ihtiyacı olan diğer servislerin de otomatik başlatılması

4.     Sistem servislerinin snapshot’ının alınabilmesi (Yani basitçe ifade ile kendi runlevel’larınızı oluşturabilme diyebiliriz buna)

5.     Servis bir şekilde ölürse bunun tesbiti ve ilgili servisin tekrar başlatılması

 

Systemd Bileşenleri

 

Systemd unit adı veridğimiz bileşen ve bunların kendi arasındaki ilişkilerinden oluşmaktadır. Systemd  binary’si /usr/lib/systemd/systemd dosyası olarak sistemde bulunmakta ve systemd rpm paketi tarafından kurulmaktadır. Systemd binary’si eski yapıdaki /sbin/init programının yerini alır. Şu an için RHEL 7 ‘de zaten /sbin/init tam manasıyla /usr/lib/systemd/systemd dosyasına bir linktir.

Systemd Önemli Dizinler

Dizin

Açıklaması

/usr/lib/systemd/system/

RPM paketleri systemd servislerinin yapılandırma dosyasını buraya kurmaktadır.

/run/systemd/system/

Runtime dediğimiz işletim sistemi çalışırken bu dizin kullanılır.  

/etc/systemd/system/

Systemd servisleri enable veya disable edildiğinde /usr/lib/systemd/system dizinindeki dosyalar buraya linklenir.

 

 

Az önce bahsettiğimiz gibi systemd bileşenleri unit yapılandırma dosyalarından oluşmaktadır. Bu yapılandırma dosyaları sadece servisler için değil runlevel’ların yerini alan target (evet artık runlevel yerine target’lar var. Yazınının ilerleyen kısımlarında bunlardan da bahsedeceğiz) lar, mount edilecek bileşenleri içeren kısımlar ve birçok bileşenden oluşabilmektedir. Bu dosyalar /usr/lib/systemd/system dizini altında şu uzantılarla yer alabilmektedir.

Unit Tipi

Dosya Uzantısı

Açıklaması

Service unit

.service

Sistem servisi

Target unit

.target

Systemd unit grubu (eski runlevel’lar)

Automount unit

.automount

Automount edilecekler

Device unit

.device

Kernel’ın tanıdığı cihaz dosyaları.

Mount unit

.mount

Mount edilecek dosya sistemleri

Path unit

.path

Dosya sistemindeki dosya veya dizinler

Scope unit

.scope

Sonradan çalıştırılan harici programlar.

Slice unit

.slice

Sistem süreçlerini yöneten belirli bir hiyerarşideki unit dosyaları.

Snapshot unit

.snapshot

Systemd’nin snapshotları (kendimizin oluşturuduğu runlevel’lar denebilir)

Socket unit

.socket

IPC için kullanılan dosyaları oluşturan unit dosyaları

Swap unit

.swap

Swap dosyası veya swapleri aktive eden unit dosysaları

Timer unit

.timer

Systemd timer

 

Yukarıda tipleri verilen unit dosyalarından en önemlileri ve günlük hayatta en çok kullandığımız bileşenler servisler ve target’lardır.  Uzantısı .service olarak bildirilenler servisleri (Ör: sshd.service), uzantısı .target olanlar ise Target’ları yani eski adı ile runlevel’ları (Ör: multi-user.target) oluşturmaktadır.

Systemd Komutları

Systemctl

Sistem servislerini yönetmek için kullanılan komutlar eskiden (RHEL 7 öncesi) chkconfig  ve service komutları idi. Chkconfig bir servisi enable/disable etmek için kullanılırken, service komutu ilgili servisi start/stop/restart işlemleri için kullanılırdi. Yani ilgili runlevel’da bir servisi açıp,kapamak için chkconfig komutu kullanılırken ayrıca bir de service komutu ile servisi start etmek gerekiyordu. Systemd ile gelen tek bir komutla yanı systemctl komutu ile artık bu iki işlev birleştirildi. Yani artık servislerin enable,disable edilmesi ve stop/start işlemleri systemctl komutu ile yapılabilir hale geldi.

Eski yapıya bir örnek vermek gerekirse önceklike bir servis enable ediliyordu chkconfig komutu ile

# chkconfig sshd on

# chkconfig --list  sshd

sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off

 

Daha sonra ilgli servis start ediliyordu:

# service sshd start

 

 

Şimdi bu işlemi sadece systemctl komutu ile yapıyoruz.

# systemctl enable sshd

# systemctl start sshd

 

Burada ek olarak şunu da yapabilirdik.

 

# systemctl enable sshd.service

# systemctl start sshd.service

 

 

Sshd servisi veya unit dosyası tek olduğu için ve o da bir servis olduğu için .service kısmını yazmamıza gerek bulunmamakta. Zaten sshd yazıp TAB tuşuna bastığınızda shell bizim için otomatikman bunu sshd.service olarak tamamlayabilmektedir.  Diğer systemctl komutları şu şekildedir. Aşağıda eski sistemlerde kullanılan service ve chkconfig komutları karışılığı da ayrıca verilmiştir.

 

service

systemctl

Açıklama

service name start

systemctl start name.service

Servisi başlatır.

service name stop

systemctl stop name.service

Servisi durdurur.

service name restart

systemctl restart name.service

Servisi restart eder.

service name condrestart

systemctl try-restart name.service

Servis eğer başlatılmışsa restart eder.

service name reload

systemctl reload name.service

Servisi reload eder (-1 sinyali)

service name status

systemctl status name.service 

 

veya

 

systemctl is-active name.service

Servis çalışıyor mu diye kontrol eder.

service --status-all

systemctl list-units --type service --all

Bütün servisleri (her bir servisin bir unit dosyası olduğunu unutmayalım) listeler.

 

chkconfig

systemctl

Açıklama

chkconfig name on

systemctl enable name.service

Servisi enable eder.

chkconfig name off

systemctl disable name.service

Servisi disable eder.

chkconfig --list name

systemctl status name.service 

 

veya

 

systemctl is-enabled name.service

Bir servis enable edilmiş mi sorgular.

chkconfig --list

systemctl list-unit-files --type service

Bütün servisleri listeler.

 

 

 

Örnek kullanım. Aşağıda sshd servisi disable edilip stop edildikten sonra (Disable edien servis stop edilmez!. Stop komutu ile ayrıca servis durdurulmalıdır. Yine aynı şekilde enable edilen servis start edilmez, start komutu ile başlatılmalıdır)

 

[root@egitim ~]# systemctl disable sshd

rm '/etc/systemd/system/multi-user.target.wants/sshd.service'

 

[root@egitim ~]# systemctl stop sshd

 

[root@egitim ~]# systemctl enable sshd

ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service'

 

[root@egitim ~]# systemctl start sshd

 

[root@egitim ~]# systemctl status sshd

sshd.service - OpenSSH server daemon

   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)

   Active: active (running) since Fri 2015-10-02 15:09:20 EEST; 8s ago

 Main PID: 2894 (sshd)

   CGroup: /system.slice/sshd.service

           └─2894 /usr/sbin/sshd -D

 

Oct 02 15:09:20 egitim.faruk.net systemd[1]: Started OpenSSH server daemon.

Oct 02 15:09:20 egitim.faruk.net sshd[2894]: Server listening on 0.0.0.0 p....

Oct 02 15:09:20 egitim.faruk.net  sshd[2894]: Server listening on :: port 22.

Hint: Some lines were ellipsized, use -l to show in full.

 

 

Target’lar (Eski adı ile Runlevel’lar)

System yapısı ile artık runlevel’lar yeni bir isim aldı. Değişik servislerin birleşmesi ile oluşan runlevel’lara artık target ismi verilmektedir. Bu runlevel’ların geriye dönük isimlendirilmeler korunsa da uzun vadede bu takma adlar (aliaslar) kaldırılacaktır. Eskiden 0-6 arası runlevel’lar varken yeni yapıdaki target’lar şu şekildedir.

 

Runlevel

Target Unit

Açıklama

0

runlevel0.target, poweroff.target

Poweroff target  

1

runlevel1.target, rescue.target

Rescue yani kurtarma target’ı

2

runlevel2.target, multi-user.target

Çoklu kullanıcı target’ı (runlevel2,runlevel 3 ve 4 aynı).

3

runlevel3.target, multi-user.target

Çoklu kullanıcı target’ı (runlevel2,runlevel 3 ve 4 aynı).

4

runlevel4.target, multi-user.target

Çoklu kullanıcı target’ı (runlevel2,runlevel 3 ve 4 aynı).

5

runlevel5.target, graphical.target

Grafik ekranın başlatıldığı target.

6

runlevel6.target, reboot.target

Reboot target.

 

Örnek kullanımlar:

Öntanımlı sistemin çalıştığı target’I sorgulamak için:

# systemctl get-default

graphical.target

 

 

Reboot sırasında sistemin sıfırdan açıldığı target değiştirmek için (aslında yapılan bir link işlemi)

# systemctl set-default multi-user.target
rm '/etc/systemd/system/default.target'
ln -s '/usr/lib/systemd/system/multi-user.target' '/etc/systemd/system/default.target'

 

 

Sistem çalışırken bir anda farklı bir target’a geçmel için ( eskiden init 3 ile yapılan işlem)

 

 # systemctl isolate multi-user.target

 

 

Ayrıca bunlara ek olarak systemctl poweroff, systemctl reboot , systemctl halt komutları da kullanılmaktadır. Zaten bu 3 komutta artık systemctl komutuna bir linktir.

 

[root@egitim ~]# ls -la /sbin/poweroff

lrwxrwxrwx. 1 root root 16 Sep 12 00:02 /sbin/poweroff -> ../bin/systemctl

 

[root@egitim ~]# ls -la /sbin/reboot

lrwxrwxrwx. 1 root root 16 Sep 12 00:02 /sbin/reboot -> ../bin/systemctl

 

[root@egitim ~]# ls -la /sbin/halt

lrwxrwxrwx. 1 root root 16 Sep 12 00:02 /sbin/halt -> ../bin/systemctl

 

 

Unit dosyaları

 

Şu ana kadar anlattığımız üzere  bütün servis ve target’lar aslında /usr/lib/system/system altında bulunan dosyalardan oluşmaktadır. Örnek olarak sshd.service dosyasının içine bakarsak:

 

/usr/lib/system/system/sshd.service

 [Unit]

Description=OpenSSH server daemon

After=network.target sshd-keygen.service

Wants=sshd-keygen.service

 

[Service]

EnvironmentFile=/etc/sysconfig/sshd

ExecStart=/usr/sbin/sshd -D $OPTIONS

ExecReload=/bin/kill -HUP $MAINPID

KillMode=process

Restart=on-failure

RestartSec=42s

 

[Install]

WantedBy=multi-user.target

 

Burada görüldüğü gibi bir unit file içinde  ini dosyalarına benzer bir format bulunmaktadır. Burada Unit, Service ve Install ana  başlıkları mevcuttur.

Unit kısmında Description,After ve Wants kısımları servisin açıklamasını, Servisin hangi servislerden sonra başlatılması gerektiğini ve servisin hangi servisin de başlatılmış olduktan sonra başlatıldığı göstermektedir.

Service kısmında servisi start stop etmek için asıl parametreler yer almaktadır. Burada RestartSec kısmı önemlidir. Mesela olursa servis bir şekilde ölürse systemctl bu servisi 42 sn sonra tekrar başlatmaktadır.

Son kısım Install kısmı ise servisin runlevel3 yani yeni adı ile multi-user.target tarafından servis kurulumu aşamasında ihtiyaç duyulduğu manasına gelmektedir.

Journalctl komutu

Systemd altyapısı loglarını journal denen formatta /run/log/journal/ dizinine atmaktadır. Aslında tıpkı systemd, init altyapısını nasıl değiştirdiyse ileride systemd-journald servisi de rsyslog altyapısını değiştirebilir. Tabiki şu an için bu sadece tartışılan bir konu ama ileride olması olası. Peki neden?  Buradaki amaç logların indexlenerek , binary bir dosyada saklanması ve istenen log satırlarının komutlarla hızlıca bulunması (normalde syslog loglarını grep veya tail –f ile incelemekteyiz). Tabiki bu olur mu bilmiyoruz ama şu an için diyebileceğimiz

1.      Systemd logları journald vasıtasıyla tutmaktadır.

2.      Bu loglar /run/log/journal dizininde bulunmakta ve her sistem reboot edilişinde tekrar oluşturulmaktadır

3.      Eğer bu log dosyalarının kalıcı olması isteniyorsa /var/log/journal dizini oluşturulup ilgili systemd-journald servisi tekrar başlatılmalıdır. (systemctl restart systemd-journald.service)

4.      Journald loglarını görmek için ve loglarda arama yapmak için journalctl komutu kullanılır.

Örnek journalctl komutu kullanımı:

Sistem boot ettikten sonraki bütün journal loglarını görmek için:

# journalctl -b

 

Sadece belirli prioritydeki logları görmek için. Mesela error seviyesindeki

# journalctl –p err

 

Tail –f komutundaki gibi yeni gelen logları takip için:

# journalctl -f

 

Belirli bir tarihten sonraki logları görmek için:

# journalctl-p warning--since="2015-9-16 23:59:59"

 

Yararlı sayfalar:

http://www.freedesktop.org/wiki/Software/systemd/

https://access.redhat.com/articles/754933

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Services.html

http://0pointer.de/blog/projects/why.html

 

 

Ubuntu Server Üzerine Microsoft SQL Server V.Next Technical Preview Kurulumu

$
0
0

Microsoft Bilişim camiasında oldukça üzerinde konuşulan Linux üzerine kurulabilen SQL server technical preview sürümünü duyurdu.  Konu ile ilgili olarak ayrıntılı bilgiye aşağıdaki adresten ulaşılabilir.

https://www.microsoft.com/en-us/sql-server/sql-server-vnext-including-Linux

Bu yazımızda Ubuntu Linux 16.04 (X64)  üzerine Sql Server technical preview kurulumunu yapacağız.  Öncelikle Ubuntu sunucumuzun önceden kurulumun tamamlandığını ve ssh ile uzak erişimin ayarlandığını varsayıyoruz.

Ben 16 Gb ram ve 100 Gb. Hdd. ayırdığım Esxi 6.0  üzerinde test için kuruduğum bir sunucuyu kullanıyor olacağım.

clip_image002

 

Ssh veya telnet ile Ubuntu sunucumuza erişim sağladıktan sonra yetkili olarak işlem yapabilmek için sudo su –  komutunu kullanıyoruz. Bu komut sonrasında bizden güvenlik için parolamızı girmemizi isteyecektir. Sonrasında Microsoftun repositorylerini eklemeden hemen önce public key’ini import etmemiz gerekiyor.

curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

 

Yukarıdaki komut ile bu işlemi gerçekleştirebiliriz. Aşağıdaki gibi bir ekran çıktısı gördüğümüzde işlemin başarılı bir şekilde tamamlandığını anlayabiliriz.

clip_image004

 

Sonrasında /etc/apt/sources.list dosyamızı düzenleyerek Microsoft repositorysini ekliyoruz.

deb [arch=amd64] https://packages.microsoft.com/ubuntu/16.04/mssql-server xenial main

clip_image006

Apt-get update komutu ile yeni eklediğimiz repositoyleri taradıktan sonra

Apt-get install mssql-server komutu ile de kuruluma başlayabiliriz.

clip_image008

Mssql-server pakedinin gereksinim duyduğu paketler ile birlikte kurulumu için bizden onay isteyen ekranı da Y tuşu ile geçebiliriz.

Aşağıdaki şekilde bir ekran geldiğinde paket kurulumunu sorunsuz olarak tamamladığımızı anlayabiliriz. Kurulum bittiğinde gelen açıklama kısmında bir sonraki işlem olan sql server yapılandırması için kullanmamız gereken komutu da görebiliyoruz.

Please run /opt/mssql/bin/sqlservr-setup to complete the setup of

               Microsoft(R) SQL Server(R).                                 

clip_image010

 

clip_image012

Microsoft SQL Server Lisansını kabul edip etmediğimizi soruyor . Onaylar isek YES yazarak geçebiliriz.

Hemen arkasından bize SA (system administrator ) hesabı için kullanmak istediğimiz parolayı soruyor.

clip_image014

Parolamızı belirledikten hemen sonra da bize SQL Server servisini başlatıp başlatmak isteyip istemediğimizi ve onun sonrasında da açılışta SQL serverin otomatik çalışmasını isteyip istemediğimizi soruyor.clip_image016

clip_image018

Bu soruları cevaplayarak kurulumumuzu sonlandırıyoruz. Technical Preview sürümünün gerçek hayatta kullanmak için çok uygun olmadığını hatırlatmak isterim. Release öncesi kurulumu görmek ve denemek isteyenler bu sürümü test edebilirler.

Faydalı olmasını dilerim.

 

Viewing all 96 articles
Browse latest View live