JBOSS EAP üzerinde çoklu örnek(instance) kurulumu …

JBOSS EAP’ı çoklu örnek olarak çalıştırmanız gereken durumlar muhakkak olmuştur. Bu yazıda, Linux(CentOS 6) üzerinde kendi kullandığım yöntemi anlatıyor olacağım…

Çoklu kurulumda, aşağıdakileri sağlamayı amaçladım.

  1. Kolay yönetilebilir olmalı
  2. Bakımı kolay olmalı
  3. Gereksiz yer kaplamamalı… Aşağıda da göreceğiniz üzere, tüm JBOSS klasörünün değil sadece içindeki “standalone” isimli klasörün kopyasını kullanarak farklı örnekler oluşturdum.
  4. Farklı ihtiyaçlara(farklı JDK v.b) cevap verebilmeli…

Bunu sağlayabilmek için aşağıdaki yolu izledim.

/opt/java klasörü içerisine Oracle JAVA 6, JAVA 7 ve JAVA 8 JDK’larının hem 32 hem 64 bitlik versiyonlarını yükledim. Ayrıca CentOS 6 depolarından OpenJDK’nın 1.6, 1.7 ve 1.8 versiyonlarını indirdim ve /opt/java klasörü içerisine sembolik link olarak ekledim. OpenJDK ismine rağmen JDK olarak kullanılabilmek için hem düz hem de geliştirme(devel) paketine ihtiyaç duyuyor.

#yum install java-1.7.0-openjdk-devel java-1.8.0-openjdk-devel java-1.6.0-openjdk-devel java-1.7.0-openjdk java-1.8.0-openjdk java-1.6.0-openjdk

Oracle JDK’larını ise RPM olarak indirmedim, çünkü sistem ayarlarına gereksiz müdahalelerde bulunmalarını istemedim. JBOSS’un çalışması için gerekli olan JAVA_HOME değişkenini, çalıştırma betiklerinin içinde tanımladım. Böylesi, kodun farklı JAVA versiyonlarında nasıl davranacağını görmek açısından daha elverişli oldu.

Yukarıdaki işlemleri yaptıktan sonra, /opt/java klasörünün içeriği aşağıdaki gibi oldu.

[root@c6xm java]# ls -l
total 32
lrwxrwxrwx  1 root root   47 Sep 30 22:45 java-1.6.0-openjdk-1.6.0.36.x86_64 -> /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.36.x86_64
lrwxrwxrwx  1 root root   47 Sep 30 22:45 java-1.7.0-openjdk-1.7.0.85.x86_64 -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.85.x86_64
lrwxrwxrwx  1 root root   59 Sep 30 22:46 java-1.8.0-openjdk-1.8.0.51-3.b16.el6_7.x86_64 -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.51-3.b16.el6_7.x86_64
drwxr-xr-x  8 root root 4096 Mar 27  2013 jdk1.6.0_45.i586
drwxr-xr-x  8 root root 4096 Mar 27  2013 jdk1.6.0_45.x64
drwxr-xr-x  8 root root 4096 Apr 10 22:15 jdk1.7.0_79.i586
drwxr-xr-x  8 root root 4096 Apr 10 21:53 jdk1.7.0_79.x64
drwxr-xr-x  8 uucp  143 4096 Aug  4 21:01 jdk1.8.0_60.i586
drwxr-xr-x  8 uucp  143 4096 Aug  4 22:32 jdk1.8.0_60.x64

Daha sonra /opt/jboss klasörü içinde, JBOSS sunucusunu çalıştırmak için kullanacağım özel bir jboss kullanıcısı oluşturdum.

useradd -d /opt/jboss jboss

EAP 6.4’ü bu klasöün içine açıp, bu klasörü default isimli bir sembolik link olarak kopyaladım, bu sayede gerekirse, farklı JBOSS versiyonları ile de çalışmak daha kolay olacaktır. Bu hali ile /opt/jboss klasörünün içeriği aşağıdaki gibi oldu

[root@c6xm jboss]# ls -l
total 20
lrwxrwxrwx 1 jboss jboss 13 Sep 30 23:01 default -> jboss-eap-6.4
drwxrwxr-x 17 jboss jboss 4096 Oct 1 01:43 jboss-eap-6.4

JBOSS modeli olarak domain değil standalone modelini kullanmaya karar verdim. Bu sebeple, JBOSS örnekleri için standalone klasörünün 4 tane kopyasını oluşturdum.

[root@c6xm /]# cd /opt/jboss/default/
[root@c6xm default]# cp -r standalone standalone01
[root@c6xm default]# cp -r standalone standalone02
[root@c6xm default]# cp -r standalone standalone03
[root@c6xm default]# cp -r standalone standalone04
[root@c6xm default]# chown -R jboss.jboss /opt/jboss
[root@c6xm default]# ls -l
total 480
drwxrwxr-x 3 jboss jboss   4096 Mar 27  2015 appclient
drwxrwxr-x 4 jboss jboss   4096 Mar 27  2015 bin
drwxrwxr-x 3 jboss jboss   4096 Mar 27  2015 bundles
drwxrwxr-x 5 jboss jboss   4096 Mar 27  2015 docs
drwxrwxr-x 5 jboss jboss   4096 Mar 27  2015 domain
-rw-rw-r-- 1 jboss jboss    419 Mar 27  2015 JBossEULA.txt
-rw-rw-r-- 1 jboss jboss 363815 Mar 27  2015 jboss-modules.jar
-rw-rw-r-- 1 jboss jboss  26530 Mar 27  2015 LICENSE.txt
drwxrwxr-x 3 jboss jboss   4096 Mar 27  2015 modules
drwxrwxr-x 8 jboss jboss   4096 Oct  1 02:14 standalone
drwxrwxr-x 8 jboss jboss   4096 Oct  1 01:17 standalone01
drwxrwxr-x 8 jboss jboss   4096 Oct  1 01:19 standalone02
drwxr-xr-x 8 jboss jboss   4096 Oct  1 22:49 standalone03
drwxr-xr-x 8 jboss jboss   4096 Oct  1 22:49 standalone04
-rw-rw-r-- 1 jboss jboss     66 Mar 27  2015 version.txt
drwxrwxr-x 4 jboss jboss   4096 Mar 27  2015 welcome-content

Ve içeriği aşağıdaki gibi olan 4 tane shell betiği hazırladım.

#!/bin/bash

export JAVA_HOME="/opt/java/jdk1.7.0_79.x64"
export PATH=$PATH:$JAVA_HOME/bin

export JBOSS_HOME=/opt/jboss/default
export PATH=$PATH:$JBOSS_HOME/bin

$JBOSS_HOME/bin/standalone.sh -Djboss.server.base.dir=$JBOSS_HOME/standalone01 -Djboss.bind.address=0.0.0.0 -Djboss.socket.binding.port-offset=10000

Betiklerin birbirinden tek farkları “-Djboss.server.base.dir=$JBOSS_HOME/standalone01” yerine standalone02, standalone03 ve standalone04 klasörlerini işaret etmeleri ve “-Djboss.socket.binding.port-offset=10000” ile 10000 olarak belirtilen port ofset değeri yerine 20000, 30000 ve 40000 değerlerini kullanmaları oldu. Port ofset değerlerini unutmamak gerekiyor yoksa port çakışması nedeni ile JBOSS örnekleri ayağa kalkmayacaktır.

Betiklerde tam yol belirttiğim için betiklerin nerede bulunduğunun bir önemi olmayacaktır ama anlaşılırlık ve konfor açısından, standalone01.sh, standalone02.sh, standalone03.sh ve standalone04.sh isimlerini kullanarak /opt/jboss klasörü içinde oluşturmak gayet mantıklı olacaktır.

jboss kullanıcısı olarak “screen” uygulaması içinde çalıştırılacak bu betikler devamlı açık kalabilir ve “screen” oturumlarına düzgün mantıklı isimler vererek bu oturumlara daha sonra kolayca erişebilirsiniz de …

[jboss@c6xm ~]$ screen -S standalone01

Aşağıda OpenJDK 8 kullanılarak çalıştırılmış olan JBOSS örneğinin ekranı gözükmektedir, port ofset değeri 10000 verildiği için 18080 portundan çalışmaktadır.

[jboss@c6xm ~]$ bash /opt/jboss/standalone01.sh
=========================================================================

JBoss Bootstrap Environment

JBOSS_HOME: /opt/jboss/default

JAVA: /opt/java/java-1.8.0-openjdk-1.8.0.51-3.b16.el6_7.x86_64/bin/java

JAVA_OPTS: -server -XX:+UseCompressedOops -verbose:gc -Xloggc:"/opt/jboss/jboss-eap-6.4/standalone01/log/gc.log" -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=3M -XX:-TraceClassUnloading -Xms1303m -Xmx1303m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Djboss.modules.policy-permissions=true

=========================================================================

OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
23:13:13,626 INFO [org.jboss.modules] (main) JBoss Modules version 1.3.6.Final-redhat-1
23:13:14,017 INFO [org.jboss.msc] (main) JBoss MSC version 1.1.5.Final-redhat-1
23:13:14,246 INFO [org.jboss.as] (MSC service thread 1-3) JBAS015899: JBoss EAP 6.4.0.GA (AS 7.5.0.Final-redhat-21) starting
23:13:16,584 INFO [org.xnio] (MSC service thread 1-3) XNIO Version 3.0.13.GA-redhat-1
23:13:16,599 INFO [org.xnio.nio] (MSC service thread 1-3) XNIO NIO Implementation Version 3.0.13.GA-redhat-1
23:13:16,603 INFO [org.jboss.as.server] (Controller Boot Thread) JBAS015888: Creating http management service using socket-binding (management-http)
23:13:16,647 INFO [org.jboss.remoting] (MSC service thread 1-3) JBoss Remoting version 3.3.4.Final-redhat-1
23:13:16,708 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 31) JBAS010280: Activating Infinispan subsystem.
23:13:16,783 INFO [org.jboss.as.jsf] (ServerService Thread Pool -- 37) JBAS012615: Activated the following JSF Implementations: [main, 1.2]
23:13:16,829 INFO [org.jboss.as.naming] (ServerService Thread Pool -- 39) JBAS011800: Activating Naming Subsystem
23:13:16,837 INFO [org.jboss.as.security] (ServerService Thread Pool -- 44) JBAS013371: Activating Security Subsystem
23:13:16,857 INFO [org.jboss.as.connector.logging] (MSC service thread 1-4) JBAS010408: Starting JCA Subsystem (IronJacamar 1.0.31.Final-redhat-1)
23:13:16,876 INFO [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 27) JBAS010403: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3)
23:13:16,892 WARN [org.jboss.as.txn] (ServerService Thread Pool -- 46) JBAS010153: Node identifier property is set to the default value. Please make sure it is unique.
23:13:16,903 INFO [org.jboss.as.webservices] (ServerService Thread Pool -- 48) JBAS015537: Activating WebServices Extension
23:13:16,940 INFO [org.jboss.as.security] (MSC service thread 1-3) JBAS013370: Current PicketBox version=4.1.1.Final-redhat-1
23:13:17,030 INFO [org.jboss.as.mail.extension] (MSC service thread 1-2) JBAS015400: Bound mail session [java:jboss/mail/Default]
23:13:17,038 INFO [org.jboss.as.naming] (MSC service thread 1-1) JBAS011802: Starting Naming Service
23:13:17,869 INFO [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-3) JBWEB003001: Coyote HTTP/1.1 initializing on : http-/0.0.0.0:18080
23:13:17,915 INFO [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-3) JBWEB003000: Coyote HTTP/1.1 starting on: http-/0.0.0.0:18080
23:13:18,033 INFO [org.jboss.as.remoting] (MSC service thread 1-2) JBAS017100: Listening on 127.0.0.1:19999
23:13:18,091 INFO [org.jboss.as.server.deployment.scanner] (MSC service thread 1-2) JBAS015012: Started FileSystemDeploymentService for directory /opt/jboss/default/standalone01/deployments
23:13:18,092 INFO [org.jboss.as.remoting] (MSC service thread 1-2) JBAS017100: Listening on 0.0.0.0:14447
23:13:18,150 INFO [org.jboss.ws.common.management] (MSC service thread 1-4) JBWS022052: Starting JBoss Web Services - Stack CXF Server 4.3.4.Final-redhat-1
23:13:18,270 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-3) JBAS010400: Bound data source [java:jboss/datasources/ExampleDS]
23:13:18,349 INFO [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on http://127.0.0.1:19990/management
23:13:18,350 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:19990
23:13:18,350 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss EAP 6.4.0.GA (AS 7.5.0.Final-redhat-21) started in 5489ms - Started 154 of 192 services (58 services are lazy, passive or on-demand)

jboss kullanıcı ile toplamda 4 farklı screen oturumu kullanarak ve de tabii ki farklı port ofset değerleri vererek 4 örneği ya da RAM durumunuz yeterli ise çok daha fazla örneği aynı anda çalıştırabilirsiniz. Hatta JBOSS klasörünün içinde bulunan bin/init.d klasöründeki jboss-as.conf ve jboss-as-standalone.sh dosyalarını uygun bir şekilde düzenleyerek, aynı anda birçok JBOSS örneğini servis olarak da çalıştırabilirsiniz…

Centos 6 ve Centos 5 üzerine OpenVPN kurulumu ve yapılandırması

Bu yazımızda Centos 6 64 bitlik sürüm üzerine, özellikle anonim internet bağlantısı sağlayan bir VPN sunucu olarak kullanılabilecek, OpenVPN kurulumunu anlatıyor olacağız. Centos 5 versiyonunda kurulum yapacaklar içinde bir iki ufak fark dışında kurulum rutini aynıdır. Bunlarıda yazımızda belirteceğiz.

1 – OpenVPN Nedir ?
2 – Kurulum
3 – EasyRSA ile sertifikaların oluşturulması
4 – Güvenlik Duvarı ve Ağ yapılandırması
5 – Sunucu konfigürasyon dosyaları
6 – İstemci Yapılandırması

1 – OpenVPN Nedir ?

Öncelikle OpenVPN’in ne olduğuna kısaca bir göz atalım.

OpenVPN, SSL sertifikaları vasıtası ile güvenli veri iletişimi sağlayan bir VPN türüdür. Diğer VPN türlerine kıyasla daha basit yapısı sayasinde daha hızlı kurulum yapılıp, bir çok farklı ortamda sıkıntısız bir şekilde kullanılabilir. PPTP ya da IPSec’den farklı olarak bağlantı için tek bir porta ihtiyaç duyması, network yöneticileri ve kullanıcılar için ayarları gayet basit hale getirmektedir. Windows, Linux, MacOS, iOS, Android gibi popüler tüm işletim sistemlerinde OpenVPN istemcileri varolduğundan dolayı her platformda kullanılabilir.

2 – Kurulum

OpenVPN’in açık kaynak kodlu sürümüne ait kaynak dosyalarına aşağıdaki adresten ulaşılabilir.

http://openvpn.net/index.php/open-source/downloads.html

RPMforge depolarından OpenVPN’in derlenmiş hali indirilebilir ama bu yazımızda en güncel sürümünü kullanabilmek amacı ile kaynaktan kurulumu analatacağız. Bu yazının yazıldığı sıradaki en güncel sürümü olan OpenVPN 2.3.2 sürümünün kurulumunu yapacağız.

GEREKLİ PAKETLER

OpenVPN :
http://swupdate.openvpn.org/community/releases/openvpn-2.3.2.tar.gz

pkcs11-helper, pkcs11-helper-devel :
Bu paketler derlenmiş halde RPMForge depolarında bulunuyor. Paketler, RPMForge depolarından kurulacaktır.

lzo, lzo-devel, openssl, openssl-devel, pam, pam-devel, gcc, libtool, rpm-build :
Varsayılan depolardan kurulacak olan paketler. Centos 5 için varsayılan depolarda bulunmayan lzo ve lzo-devel paketleri RPMForge depolarından temin edilir.

unzip :OpenVPN sertifika yapılandırması için kullanılan EasyRSA paketini diske açmak için gerekmektedir.

RPMForge depolarını etkinleştirebilmek için ilk önce Centos 6 64 bit için olan rpmforge-release paketini kurmak gerekmektedir. Aşağıdaki komutla bu kurulum yapılır.

# rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

Fakat bu kurulum, RPMForge deposunu aktif hale getirdiği için Centos depolarından kurulacak paketlerle çakışma yaşanması ya da üzerine yazılması ihtimaline karşı pasif hale getirmek, depoyu sadece gerçekten kullanılması gerektiği zaman aktifleştirmek en mantıklı yoldur.

Pasif hale getirmek için “/etc/yum.repos.d/rpmforge.repo” dosyası içindeki tüm “enabled = 1” yazan satırları “enabled = 0” haline getirmek gerekmektedir. Kullanılması gerektiği zaman RPMForge depolarını aktifleştirmek için yum’un “–enablerepo=rpmforge” anahtarını kullanmak yeterli olacaktır.

“pkcs11-helper, pkcs11-helper-devel” paketlerinin kurulumu aşağıdaki şekilde yapılır.

# yum install pkcs11-helper pkcs11-helper-devel --enablerepo=rpmforge

“lzo, lzo-devel, openssl, openssl-devel, pam, pam-devel, gcc, libtool, rpm-build” paketlerinin kurulumu da aşağıdaki şekilde yapılır.

# yum install lzo lzo-devel openssl openssl-devel pam pam-devel gcc libtool rpm-build unzip

OpenVPN kaynak dosyası “/tmp” klasörüne indirilir.

# cd /tmp
# wget http://swupdate.openvpn.org/community/releases/openvpn-2.3.2.tar.gz

Ve rpmbuild komutu kullanılarak OpenVPN derlenir.

# rpmbuild -tb openvpn-2.3.2.tar.gz

Derlenen paket “/root/rpmbuild/RPMS/x86_64/” klasöründe bulunmaktadır. Centos 5 versiyonunda derlenen paketler için “/usr/src/redhat/RPMS/x86_64/” klasörüne bakmak gerekmektedir. OpenVPN paketinin kurulumu aşağıdaki şekilde yapılır.

# rpm -ivh /root/rpmbuild/RPMS/x86_64/openvpn-2.3.2-1.x86_64.rpm

OpenVPN tarafından kurulmuş olan çeşitli örnek dosyalar da “/etc/openvpn” altına kopyalanır. Zorunlu değildir ama çalışma açısından kolaylık sağlar.

# cp -Rv /usr/share/doc/openvpn-2.3.2/sample /etc/openvpn/

3 – EasyRSA ile sertifikaların oluşturulması

OpenVPN için sertifika oluşturmakta kullanılan EasyRSA paketi OpenVPN 2.3.0 ve sonraki versiyonlarda kaynak kod paketinin içinden çıkarılmıştır. Ayrıca indirmek gerekmektedir. OpenVPN 2.x sürümleri için EasyRSA’nin 2.0 sürümü kullanılmaktadır.

# wget -O easy-rsa.zip https://github.com/OpenVPN/easy-rsa/archive/master.zip
# unzip easy-rsa.zip
# mv -v easy-rsa-master/easy-rsa/2.0 /etc/openvpn/easy-rsa

EasyRSA yapılandırması için öncelikle “/etc/openvpn/easy-rsa” içindeki “vars” dosyası düzenlenir. Önemli satırlar aşağıda gösterilmiştir.

-------------------------------
export EASY_RSA="`pwd`"
export KEY_DIR="$EASY_RSA/keys"
export KEY_SIZE=2048
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="TR"
export KEY_PROVINCE="Istanbul"
export KEY_CITY="Istanbul"
export KEY_ORG="Milidia Blog"
export KEY_EMAIL="openvpn@milidia.com"
export KEY_OU="BilgiIslem"
export KEY_NAME="openvpn"
-------------------------------

Daha sonra “/etc/openvpn/easy-rsa” içindeki “vars” ve “clean-all” dosyaları sırayla çalıştırılır. “clean-all” dosyası sadece ilk kurulum için gereklidir. Sertifika dosyalarının tutulacağı klasörü temizledikten sonra “index” ve “serial” dosyalarının oluşturulması işlemini gerçekleştirir. “clean-all” dosyası, ilk kurulumdan sonraki sertifika oluşturma işlemlerinde kullanılmamalıdır, yoksa tüm oluşturulmuş sertifikaları siler. Fakat “vars” dosyası, her sertifika oluşturma işleminden önce çalıştırılmalıdır.

# cd /etc/openvpn/easy-rsa
# . ./vars
# ./clean-all

Daha sonra “Certificate Authority” sertifikaları oluşturulur.

# ./build-ca

DIFFIE-HELLMAN anahtarı oluşturulur. Bu anahtar sunucu tarafındaki SSL/TLS bağlantısı için gereklidir.

# ./build-dh

Sunucu sertifika çifti oluşturulur.

# ./build-key-server myopenvpnserver

Çok zorunlu olmasa da OpenVPN geliştiricileri tarafından “Man-in-the-middle” ataklarını önlemek için TLS doğrulaması tavsiye edilmektedir. Bunun için sertifikaların oluşturulduğu klasör içerisinde TLS anahtarı oluşturulur. Yukarıdaki örnek “vars” dosyasının içinde anahtar dosyalarının tutulduğu klasör, easy-rsa klasörünün altında bulunan “keys” isimli bir klasör olarak tanımlanmış olduğundan TLS anahtarını bu klasör altında oluşturacağız.

# openvpn --genkey --secret keys/ta.key

Ve kullanıcı sertifikası oluşturma işlemi yapılır.

# ./build-key myfirstopenvpnuser

Yukarıda da belittiğimiz üzere, daha sonra kullanıcı oluşturmak gerekiyorsa önce “vars” dosyası çalıştırılmalıdır.

4 – Güvenlik Duvarı ve Ağ yapılandırması

OpenVPN iki farklı tür sanal ağ arayüzünü kullanabilmektedir. TUN ağ arayüzü Layer 3(IP) olarak çalışırken TAP ağ arayüzü Layer 2(Ethernet) olarak çalışmaktadır. Uygulamadaki farkları ise özet olarak aşağıdaki gibidir.

TUN ağ arayüzü ile güvenlik duvarı ve ağ ayarları daha kolay yapılabilir. Eğer makina bir ağ geçidi olarak kullanılmak isteniyorsa(mesela internette anonim sörf yapmaya olanak sağlayan kişisel VPN servis sağlayıcıları v.b.) TUN arayüzü tercih edilmelidir. Dezavantajı ise broadcast paketlerin TUN arayüzünden geçmemesidir. Yani Netbios, WINS gibi servislerin paketleri TUN ağ arayüzünden geçmez.TAP ağ arayüzü ise, tamamen aynı ağda bulunuyormuş gibi çalışılmasına izin verir. Bir uzak ofis ağına bağlanılmak için daha uygun bir tercihtir. Fakat bu uzak ofis ağının arkasında başka ağlarda bulunuyorsa, onlara erişmek için gerekli yapılandırmayı yapmak pek kolay olmayabilir.

Bu yazımızda her türlü senaryoya adapte edilmesi daha kolay olan TUN ağ arayüzü üzerinden ilerliyor olacağız.

Sunucunun ağ geçidi olarak çalışabilmesi için “/proc/sys/net/ipv4/ip_forward” dosyasındaki “0” değeri “1” yapılmaldır. Aşağıdaki komut ile sunucunun routing yapabilmesi anında aktifleştirilir.

# echo "1">/proc/sys/net/ipv4/ip_forward

Bu değişikliğin kalıcı olması için “/etc/sysctl.conf” dosyasında, “net.ipv4.ip_forward = 1” olacak şekilde değişiklik yapılır.

IPTABLES güvenlik duvarı ayarlarında ise, işlem kolaylığı açısından “in-fwd-chain” isimli ek bir “CHAIN” kullanıp tüm kuralları oraya tanımlayacağız. Daha sonra “INPUT” ve “FORWARD” içinde “in-fwd-chain”ini ilk kural olarak atayacağız.

# iptables -N in-fwd-chain
# iptables -A in-fwd-chain -i lo -j ACCEPT
# iptables -A in-fwd-chain -i tun+ -j ACCEPT
# iptables -A in-fwd-chain -m state --state RELATED,ESTABLISHED -j ACCEPT
... (www, ftp, ssh v.b. hizmetler için gerekli ek kurallar bu araya eklenebilir)
# iptables -A in-fwd-chain -j DROP
# iptables -I INPUT 1 -j in-fwd-chain
# iptables -I FORWARD 1 -j in-fwd-chain

Daha sonra IPTABLES’in nat tablosunda, MASQUERADE hedefini kullanarak paketleri “nat”lamak gerekli ayarları yapacağız. OpenVPN sunucu konfigürasyon dosyasında, sunucunun TUN ağ arayüzleri için kullanacağı IP adres blokları tanımlanır. Varsayılan ağ adres bloğu “10.8.0.0/255.255.255.0” bloğudur. İstenirse bu değer OpenVPN sunucu konfigürasyon dosyasından değiştirilebilir. Tabii ki güvenlik duvarı konfigürasyonu da buna uygun olarak değiştirilmelidir.

# iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE

OpenVZ ya da Virtuozzo gibi bazı sanallaştırma çözümlerinde IPTABLES’in MASQUERADE modülü etkin olmayabilir. IPTABLES’in MASQUERADE modülünün etkin olmadığı sunucularda aşağıdaki alternatif kural kullanılabilir. Fakat aynı anda hem yukarıdaki hem de aşağıdaki kural kullanılmamalıdır.

# iptables -t nat -A POSTROUTING -j SNAT --to-source 5.5.5.5

Yukarıdaki komuttaki “5.5.5.5” IP adresi örnek olarak verilmiştir. Bu IP adresi, OpenVPN kurulumu yapılan sunucunun IP adresi olarak değiştirilmelidir.

Son olarak tüm güvenlik duvarı yapılandırmalarının kalıcı olmasını sağlamak amacı ile kurallar kaydedilir.

# iptables-save > /etc/sysconfig/iptables

5 – Sunucu konfigürasyon dosyaları

Daha önce oluşturup kurmuş olduğumuz openvpn RPM paketi, kurulumu ile beraber, “/etc/rc.d/init.d/” klasörü altında “openvpn” isimli bir servis scripti oluşturmaktadır. Bu “openvpn” servis scriptinin görevi “/etc/openvpn” klasörü altındaki tüm “.conf” uzantılı dosyaların otomatik olarak çalıştırılmasını sağlamaktır. Sunucu konfigürasyon dosyası “/etc/openvpn” klasörü altına koyulup, “openvpn” servisini aktif hale getirildiği zaman, sunucunun başlangıcı sonrasında openvpn otomatik olarak çalışmaya başlıyor olacaktır.

Farklı amaçlar için, “/etc/openvpn” klasörü altına, birden fazla sunucu konfigürasyon dosyası yapılandırılabilir. Ve bu dosyaların hepsi de openvpn servisi tarafından okunup çalıştırılacaktır.

Sunucu konfigürasyon dosyasını oluşturmak üzere daha önce “/etc/openvpn/sample” klasörüne kopyalanan dosyaları temel olarak kullanmak uygun olacaktır. “/etc/openvpn/sample/sample/sample-config-files/” klasörü içindeki “server.conf” dosyası iyi bir başlangıç noktasıdır. Bu dosyayı “/etc/openvpn/” klasörü altına “.conf” uzantısı ile kopyalanır.

# cp -v /etc/openvpn/sample/sample/sample-config-files/server.conf /etc/openvpn/myfirstopenvpnsvc.conf

Çeşitli log doyalarının tutulması için RedHat işletim sisteminin geleneğine bağlı kalarak “/var/log” klasörü içerisinde “openvpn” isimli bir log klasörü oluşturulması faydalı olacaktır. Konfigürasyonda anlaşılırlık sağlayabilmek amacı ile bu log klasörü, “/etc/openvpn” klasörü içine sembolik link ile bağlanacaktır. Bu adım tabii ki zorunlu değildir ama özellikle birden fazla sunucu konfigürasyonu oluşturulması ve bunların loglarının takip edilebilmesi açısından faydalı bir adımdır.

# mkdir -v /var/log/openvpn
# ln -s /var/log/openvpn /etc/openvpn/logs

Temel olarak kullanılan “server.conf” içinde tüm konfigürasyon parametrelerinin açıklaması bulunmaktadır. Ama bu örnekte aşağıdaki parametrele kullanılacağından, açıklamaların üzerinden geçmek faydalı olacaktır.

---------------------------------------------------
port 1194
proto udp
dev tun
ca easy-rsa/keys/ca.crt
cert easy-rsa/keys/myopenvpnserver.crt
key easy-rsa/keys/myopenvpnserver.key
dh easy-rsa/keys/dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist logs/ipp-myopenvpnserver.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
tls-auth easy-rsa/keys/ta.key 0
comp-lzo
persist-key
persist-tun
status logs/openvpn-status-myopenvpnserver.log
log-append logs/openvpn-myopenvpnserver.log
verb 3
---------------------------------------------------

“port 1194” ve “proto udp” satırları, sunucunun UDP 1194 portundan istekleri dinleyeceğini ifade etmektedir. OpenVPN varsayılan olarak bunu kullanmaktadır. Ama ofislerde, halka açık bir çok internet erişim noktasındaki firewallara uyumluluğu arttırmak açısından HTTPS portu olan 443. TCP portu da tercih edilebilir.

“dev tun” satırı, kullanılacak olan sanal ağ arayüzünü belirtmektedir. Alternatifi olan TAP sanal ağ arayüzü, “dev tap” satırı ile tanımlanmaktadır.

“ca easy-rsa/keys/ca.crt” satırı, daha önce oluşturulmuş olan “Certificate Authority” anahtarına işaret etmektedir. “easy-rsa/keys” olarak belirtilen klasörün, “/etc/openvpn” altında bulunan bir klasör olduğuna dikkat edilmelidir.

“cert easy-rsa/keys/myopenvpnserver.crt” ve “key easy-rsa/keys/myopenvpnserver.key” satırları sunucu için oluşturulmu olan sertifika çiftine işaret etmektedir. “myopenvpnserver.key” dosyası, iyi bir şekilde korunmalıdır.

“dh easy-rsa/keys/dh2048.pem” satırı, DIFFIE-HELLMAN anahtarına işaret etmektedir.

“server 10.8.0.0 255.255.255.0” satırı vasıtası ile sunucunun hangi IP adres bloğunu kullanacağı belirtilmektedir. Bu konfigürasyonda sunucu 10.8.0.1 IP adresini kendisi almaktadır. OpenVPN varsayılan olarak “net30” isimli bir network topolojisi kullanmakta ve her istemci için 30 bitlik bir adres bloğu kullanmaktadır. İlk 30 bitlik blok(10.8.0.0 – 10.8.0.3) kendisi tarafından kullanıldığı için ve son 30 bitlik blok(10.8.0.252 – 10.8.0.255) içerisinde, bu IP bloğuna ait broadcast adresi bulunduğundan dolayı, geriye kullanılabilir 62 adet 30 bitlik IP bloğu kalmaktadır. Yani 24bitlik bir IP adres bloğu kullanıldığında, sadece 62 adet istemciyi konuşlandırabilecek şekilde IP adresi kalmaktadır. 23 bitlik bir IP bloğu kullanılması durumunda ise 126 adet istemci için IP adresi rezerve edilmiş olur.

“net30” topolojisi için, kaç tane istemci konuşlandırılabileceği, aşağıdaki gibi bir formülizasyonla da ifade edilebilir. “U” maksimum istemci sayısını ve “n” openvpn konfigürasyonundaki IP adresi bloğunun kaç bitlik olduğunu göstermek üzere :

U = 2(30-n) – 2

“p2p” ya da “subnet” isimli topolojiler de bulunmaktadır ama bunların yapılandırılması bu yazının amacı dışında kaldığından burada bahsedilmeyecektir.

“ifconfig-pool-persist logs/ipp-myopenvpnserver.txt” satırı ise daha önce bağlanmış olan istemcilerin IP adreslerinin herhangi bir yeniden bağlanma durumunda değişmemesi için gerekli olan kayıtları tutar. Buradaki “logs” klasörünün “/var/log/openvpn” klasörüne sembolik link ile bağlı olan “/etc/openvpn/logs” klasörüne işaret ettiğine dikkat edilmelidir. Ayrıca farklı sunucu konfigürasyon dosyalarının kullanılması durumunda karışıklık olmasını engellemek amacı ile sunucu konfigürasyon dosyasını ismi, bu log dosyasında son ek olarak kullanılmıştır.

“push “redirect-gateway def1 bypass-dhcp”” satırı vasıtası ile, istemcinin tüm trafiğinin openvpn sunucusu üzerinden akması sağlanır. Eğer tüm trafiğin değilde sadece belli bir IP ağı aralığına erişimin openvpn sunucusu üzerinden akması isteniyorsa, “push “redirect-gateway def1 bypass-dhcp”” satırı yerine, “push “route 5.5.5.0 255.255.255.0″” şeklindeki ifade kullanılmadıdır. Buradaki “5.5.5.0 255.255.255.0” tanımı tabii ki erişilmesi planlanan ağa ait olan IP aralığı değeri ile değiştirilmelidir.

“push “dhcp-option DNS 208.67.222.222″” ve “push “dhcp-option DNS 208.67.220.220″” satırları vasıtası ile istemci tarafındaki sanal “tun” ağ arayüzünün DNS sunucusu olarak “208.67.222.222” ve “208.67.220.220” IP adresli sunucuları görmesi sağlanmaktadır. Bu örnekte OpenDNS sunucularının IP adresleri olarak tanımlı bu sunucuların, ihtiyaca göre değiştirlmesi gerekebilir. Ama anonim sörf için bir openvpn sunucusu yapılandırılıyorsa, OpenDNS sunucularının IP adreslerinin kalmasında bir sakınca yoktur.

Alternatif olarak openvpn sunucusu üzerinde bir DNS sunucu yapılandırılıp (bind v.b.) istemcilerin burayı görmesi sağlanabilir. Fakat güvenlik duvarı ve NAT yapılandırması nedeni ile sunucunun “tun” sanal ağ arayüzü adresi olan “10.8.0.1” IP adresinin, DNS adresi olarak tanımlanması, çeşitli bağlantı problemlerini önleyecektir.

“keepalive 10 120” satırı vasıtası ile istemcinin sunucuya 10 saniyede bir PING paketleri göndermesi sağlanır ve 120 saniyelik hareketsizlik sonrası bağlantı kapatılır.

“tls-auth easy-rsa/keys/ta.key 0” bu satır vasıtası ile sunucu üzerindeki TLS doğrulama mekanizması etkinleştirilir. Sunucu tarafında “0” olarak girilen parametre, istemci tarafında “1” olarak girilmelidir.

“comp-lzo” satırı vasıtası ile veri akışının lzo sıkıştırmasından geçirilerek iletilmesi sağlanır. Aynı konfigürasyon istemci tarafında da olmalıdır.

“persist-key” ve “persist-tun” satırları vasıtası ile tünelin restart olması gibi durumlarda, kaynakların tekrar aktive edilmesi yerine açık kalması sağlanır. “persist-tun” satırı, “tun” ağ arayüzünün yeninden başlatılması yerine açık durumda kalmasını sağlar. “persist-key” satırı ise sertifika dosyalarının yeninden okunması durumunu ortadan kaldırır. Bu iki satırda çeşitli durumlarda tetiklenen restart ya da reset istekleri sırasında, özellikle farklı kullanıcı hakları ile openvpn servisi çalıştırılıyorsa, işletim sistemi tarafındaki olası okuma ve yazma hatalarının önüne geçer.

“status logs/openvpn-status-myopenvpnserver.log” satırı, aktif bağlı kullanıcılarının durumlarının tutulduğu log dosyasına işaret etmektedir. Farklı sunucu konfigürasyon dosyalarının kullanılması durumunda karışıklık olmasını engellemek amacı ile sunucu konfigürasyon dosyasını ismi, bu log dosyasında son ek olarak kullanılmıştır.

“log-append logs/openvpn-myopenvpnserver.log” ve “verb 3” satırları openvpn sunucusuna ait genel log dosyası ve bu log dosyasının ne kadar ayrıntıl olacağına dair yapılandırmaya aittir. “log-append” yerine “log” direktifi kullanılırsa, openvpn sunucusunun her yeniden başlatılışında tanımlı log doyası baştan oluşturulur. Bu sebeple geçmişe dönük tüm kayıtları tutabilmek açısından “”log-append” direktifi kullanılmadır. “log-append” ya da “log” direktiflerinin kullanılmaması durumunda openvpn durum kayıtları doğrudan syslog dosyasına yazılacaktır. Kayıtların takip edilmesi daha zor olacağından bu şekilde bir yapılandırma önerilmez.

“verb 3” satırı genel kullanım için gayet yeterlidir. Ayrıntı miktarı “0” en düşük ve “6” en yüksek olmak üzere 0 ve 6 arasındaki değerlerle kontrol edilebilir.

6 – İstemci Yapılandırması

İstemci yapılandırmasına temel oluşturması açısından, “/etc/openvpn/sample/” klasörü içindeki örnek konfigürasyon dosyalarını kullanmak yerinde olacaktır. “/etc/openvpn/sample/sample/sample-config-files/client.conf” dosyasını “/etc/openvpn/easy-rsa/keys” klasörü altına koyalayarak çalışmak daha kolay olacaktır. Eğer bu konfigürasyon dosyası windows istemcilerde kullanılacaksa, dosya uzantısını “.ovpn” yapmak gerekmektedir. Çünkü Windows işletim sisteminde openvpn uygulaması, dosya türü olarak “.ovpn” dosya uzantısını kendi adına kayıt ettirmektedir.

Fakat bu yazıda özellike Centos için gerekli olan istemci yapılandırmasından bahsedilecektir. Windows tarafındaki istemci yapılandırmasından başka bir yazımızda bahsedeceğiz.

Burada yapılacak işlemler sonrasında “myfirstopenvpnuser.conf”, “ca.crt”, “myfirstopenvpnuser.crt”, “myfirstopenvpnuser.key” ve “ta.key” dosyaları, istemci makinadaki “/etc/openvpn” klasörüne kopyalanmalıdır.

# cp -v /etc/openvpn/sample/sample/sample-config-files/client.conf /etc/openvpn/easy-rsa/keys/myfirstopenvpnuser.conf

---------------------------------------------------
client
dev tun
proto udp
remote 5.5.5.5 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert myfirstopenvpnuser.crt
key myfirstopenvpnuser.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
verb 3
---------------------------------------------------

“client” satırı vasıtası ile bu konfigürasyonun istemci tarafına ait olduğu belirtilir. OpenVPN, sunucu ve sitemci için ayrı binary dosyalar kullanmadığından dolayı bu ayrım konfigürasyon tarafında yapılmaktadır.

“dev tun” satırı, kullanılacak olan sanal ağ arayüzünü belirtmektedir. Alternatifi olan TAP sanal ağ arayüzü, “dev tap” satırı ile tanımlanmaktadır.

“remote 5.5.5.5 1194″ ve “proto udp” satırları, istemcinin, karşıdaki 5.5.5.5 IP adresli sunucunun UDP 1194 portuna bağlanacağını ifade etmektedir.

“resolv-retry infinite” satırı vasıtası ile DNS çözümlemesinin kesintisiz olaqrak yapılmaya çalışılacağı ifade edilmektedir.

“nobind” satırı ile, istemci tarafında belirli bir port reserve edilmeyeceği belirtilmektedir.

“persist-key” ve “persist-tun” satırları vasıtası ile tünelin restart olması gibi durumlarda, kaynakların tekrar aktive edilmesi yerine açık kalması sağlanır. “persist-tun” satırı, “tun” ağ arayüzünün yeninden başlatılması yerine açık durumda kalmasını sağlar. “persist-key” satırı ise sertifika dosyalarının yeninden okunması durumunu ortadan kaldırır. Bu iki satırda çeşitli durumlarda tetiklenen restart ya da reset istekleri sırasında, özellikle farklı kullanıcı hakları ile openvpn servisi çalıştırılıyorsa, işletim sistemi tarafındaki olası okuma ve yazma hatalarının önüne geçer.

“ca ca.crt” satırı ile, daha önce oluşturulmuş olan “Certificate Authority” anahtarı istemci tarafında da tanıtılmaktadır.

“cert myfirstopenvpnuser.crt” ve “key myfirstopenvpnuser.key” satırları ile istemci tarafına özel olarak oluşturulmuş olan sertifika çifti belirtilmektedir.

“ns-cert-type server” satırı, sunucu tarafından istemciye sunulacak olan sertifikanın “Server” özelliği ile imzalandığının kontrolü için vardır. EasyRSA kullanılarak “./build-key-server myopenvpnserver” komutu ile bu satır oluşturulmuşsa, sunucu tarafındaki sertifikaya bu özellik otomatik olarak eklenir. Bu korumanın amacı, aynı CA tarafından imzalanmış olmasa bile “Server” olarak tanımlı bir sertifikiya sahip olmayan bağlantıları engellemektir.

“tls-auth ta.key 1” satırı vasıtası ile, bağlantının TLS doğrulamasından geçmesi sağlanır. İstemci tarafındaki rakamsal parametrenin “1” olduğuna dikkat edilmelidir.

“comp-lzo” satırı vasıtası ile veri akışının lzo sıkıştırmasından geçirilerek iletilmesi sağlanır. Aynı konfigürasyon sunucu tarafında yoksa bu konfigürasyon satırı etkinleştirilmemelidir.

“verb 3″ satırı genel kullanım için gayet yeterlidir. Ayrıntı miktarı “0″ en düşük ve “6″ en yüksek olmak üzere 0 ve 6 arasındaki değerlerle kontrol edilebilir. Fakat istemci tarafındaki konfigürasyonda “log” ya da log-append” satırları olmadığından dolayı, bağlantı ile ilgili logların “/var/log/messages” satırına yazılacağı dikkate alınmalıdır. Gerekli görülüyorsa, “log” ya da log-append” satırları vasıtası ile ayrı bir log dosyası tutulabilir.

Centos 6 kurulumu

Bu yazıda temel Centos 6 kurulumunu anlatıyor olacağım. Bu kurulumda “minimal” kurulum imajını kullandım ama kurulum DVD’sini kullansanız bile aradaki tek fark, yükleyeceğiniz paketleri seçme ekranı, başka bir fark bulunmuyor.

Kurulum için gerekli olan imajı ftp://ftp.linux.org.tr/centos/6/isos/ adresinden indirilebilir. Genellikle sunucu sitemler için 64 bit’lik versiyonu kullanmak en uygun seçenek olacaktır.

İndirilen CD imajı, boş bir medyaya yazdırıldıktan sonra, makina bununla başlatılır ve açılışta aşağıdaki ekran gelir. Yeni kurulumlar için üstteki seçenek seçilir.

COS64-install-01

Sonraki adımda, kurulum meyasının düzgün yazıldığını kontrol etmek için onay isteyen bir ekran gelimektedir. Eğer kurulum medyasının doğruluğundan emin olunmak isteniyorsa onay verilip doğrulaması istenebilir.

COS64-install-02

Bu aşamadan sonra grafiksel kurulum arayüzü açılır. “Next” butonuna tıklayıp ilerlenir.

COS64-install-03

Daha sonra kurulum için kullanılacak arayüz dili için seçim ekranı gelmektedir. Ben genel bir alışkanlık olarak İngilizce arayüzünü tercih ediyorum ama Türkçe arayüzü de gayet başarılı.

COS64-install-04

Sonraki ekranda, klavye tipini seçmemiz gerekiyor ve burada Türkçe klavye tipi seçilir.

COS64-install-05

Eğer makinanın üzerinde bulunan sabit diske kurulum yapılacaksa “Basic Storage Devices” seçeneği seçilir. Fakat ayrı bir Storage cihazı varsa ve bu storage cihazında ayrılan disklere kurulum yapılmak isteniyorsa “Specialized Storage Devices” seçeneği seçilir. Normal şartlarda kurulumlar makinaların üzerinde bulunan disklere yapıldığından birinci seçenek uygun olan olacaktır. Ben de kuruluma bu seçenek ile devam ettim.

COS64-install-06

Boş diskler, genellikle aşağıdaki şekilde bir uyarı ekranına sebep olmaktadır. Benim yanıltıcı bulduğum bu uyarı, yeni kurulum yapılacak diskler için es geçilebilir. Ama tabii ki dolu bir dike kurulum yapılacaksa, gerekli yedekleri almış olmakta ve kurulum yapılacak bölümün doğruluğundan emin olmakta fayda var.

COS64-install-07

Aşağıdaki ekranda sunucuya isim verilir. FQDN formatında olmasında fayda var. Ama FQDN formatında olması zorunlu değil.

COS64-install-08

“Configure Network” butonuna tıklayarak ağ ayarlarının yapılandırılacağı ekran açılır. Eğer makinada tek bir tane ethernet kartı varsa “eth0” olarak gözükecektir. Wireles kart varsa “wlan0” olarak gözükecektir. “eth0″ı seçip “Edit” butonuna tıklanır.

COS64-install-09

Açılan ekranda “Connect Automatically” seçenğinin işaretli olduğuna emin olunması gerekiyor.

COS64-install-10

Bir sunucu sistemi yapılandırılacaksa, en uygun seçenek, elle sabit bir IP adresi girilmesidir. “Manual” seçeneği seçilir ve IP adresi elle girilir.

COS64-install-11

Sonraki ekranda sunucunun hangi zaman bölgesinde olduğu seçilir. Sunucu zamanının doğru olarak gösterilebilmesi için “Europe/Istanbul” seçeneği seçilmelidir. NTP kullanılacaksa, bu ayar sayesinde daima güncel ve doğru zaman bilgisi gösterilir.

COS64-install-12

Parola oluşturma ekranında, en yetkili yönetici hesabı olan “root” için parola oluşturulur. Eğer çok basit bir parola oluşturulmaya çalışılırsa, parolanın güvenli olmadığı hakkında bir uyarı gösterilecektir ama onaylandığı takdirde güvensiz parola da geçerli olarak kabul edilir. Güvenli bir parola için, küçük harf, büyük harf ve rakamlardan oluşan en az 8 haneli bir parola girilmelidir.

COS64-install-13

Sıradaki ekranda, sabit diskin nasıl bölümlendirileceği ile ilgili ön tanımlı bazı seçenekler bulunmaktadır. Eğer boş bir disk kullanılıyorsa ve özel ihtiyaçlar bulunmuyırsa (belirli büyüklükteyi /home dizini ya da /var/log dizini gibi) her şey varsayılan ayarlarda bırakılıp ilerlenebilir. Bu ekranda, “Review and modify partitioning layout” seçeneğini seçerek, bölümlendirmenin nasıl yapılandırıldığı bir sonraki ekranda görülebilir.

COS64-install-14

Centos, bir çok linux sürümü gibi “/boot” “/” ve “SWAP” bölümlerine ihtiyaç duyar ve bir önceki ekrandaki seçime bağlı olarak otomatik oluşturabilir. Buradaki disk tipleri ve açıklamaları, tamamen başlıbaşına bir konu olduğunda ve açıklaması çok uzun süreceğinden burada belirtilmeyecektir. Ama varsayılan seçenekler kurulum için gayet yeterli olacaktır.

COS64-install-15

“next” butonuna tıklandığı zaman diskin formatlanacağına ve içinde varolan tüm bilginin silineceğine dair bir uyarı gösterilir. Boş bir diske kurulum yapılıyorsa doğrudan devam edilir. Ama dolu bir diskin sadece bir parçasına kurulum yapılıyorsa, disk bölümlemesinin doğru yapılmış olduğunu bir defa daha gözden geçirmek faydalı olacaktır.

COS64-install-16

Sonraki ekranda da tüm değişikliklerin diske yazılacağına ve geri dönüşü olmayacağına dair bir uyarı gösterilmektedir.

COS64-install-17

Bir diskin içindeki işletim sisteminin boot edebilmesi için, diskin ilk sektörüne boot bilgisinin yazılması gereklidir. Eğer harici bir boot yöneticisi kullanılmıyorsa ve bu işlem yapılmazsa, işletim sistemi kurulsa bile,işletim sistemi açılmayacaktır. Aşağıda görülen ekranda, öntanımlı olarak diske boot bilgisinin yazılmasını sağlayan seçenek seçili durumdadır. Bu seçenek seçili durumda kalmalıdır.

COS64-install-18

Bazı özel durumlarda, örneğin işletim sisteminin flaş diskten yüklenmesi gibi durumlarda, boot bilgisi, işetim sisteminin kurulduğu sabit diske değilde, flash diske yazılmaktadır. Tabiidirki flash disk çıkarıldığı zaman işletim sistemi boot etmeyecektir. “Change Device” butonuna tıklanarak, boot bilgisinin doğru diske yazıldığından emin olunmalıdır.

COS64-install-19

“Minimal” kurulum CD’si ile kurul yapılınıyorsa, sanraki adımda doğrudan kuruluma geçilmektedir. Normal kurulum DVD’si ile kurulumda ise paket seçme ekranı gelmektedir. Fakat “Minimal” kurulum CD’si ile kurulum yapmak, gereksiz hiç bir paketin yüklenmemiş oduğu en temiz temel sunucu sisteminin kurulmasını sağladığından, Normal DVD’ye göre daha avantajlı bir kurulum yöntemidir.

COS64-install-20

Kurulum tamamlanınca aşağıdaki ekran gelmektedir. “Reboot” tuşuna tıklanınca, CD otomatik olarak çıkartılıp, sistem yeniden başlatılacaktır.

COS64-install-21

Sistem yeniden başlatıldıktan sonra Bash komut istemi ekranı açılmaktadır. Tabii ki burada önce root kullanıcı adı ve parolası ile giriş yapılmalıdır. Daha sonra gerekli paketler yum paket yöneticisi yardımı ile yüklenmeye başlanabilir.

COS64-install-22