Cara membuat Certificate Authority (CA) pada CentOS 7

Certificate Autority atau CA merupakan sertifikat yang berfungsi untuk menandatangani sertifikat digital yang biasanya diguanakan untuk keperluan SSL web site, mail server, vpn, dll. Untuk membuat sebuah CA kita dapat menggunakan software OpenSSL.

OpenSSL biasanya sudah terinstall dalam sistem operasi linux, kali ini saya akan mencoba membuat CA pada sistem operasi CentOS. Dengan membuat CA kita dapat membuat sertifikat yang bisa digunakan untuk web server HTTPS, mail server dengan TLS, dll. Tugas dari CA adalah menandatangani sertifikat tersebut.

Berikut ini adalah topologi/ilustrasinya :

Terdapat satu server yang memiliki CA, server yang memiliki CA tersebut akan mengeluarkan dan menandatangani sertifikat digital yang kemudian digunakan oleh server lainnya untuk kebutuhan tertentu seperti Web Server (HTTPS), File Server (FTP over TLS), Mail Server, dll.

CA Server

Sekarang kita akan mulai membuat CA pada server ini.

  1. Install OpenSSL pada server ini, atau biasanya CentOS sudah termasuk aplikasi OpenSSL didalamnya.
  2. [root@m1-dz ~]# yum -y install openssl
  3. Masuk dalam direktori tempat disimpannya CA beserta sertifikatnya, lalu buat file dibawah ini.
  4. [root@m1-dz ~]# cd /etc/pki/CA
    [root@m1-dz CA]# touch index.txt
    [root@m1-dz CA]# echo '1000' > serial
  5. Kita buat private key CA, dan membuat CA.
  6. [root@m1-dz CA]# openssl genrsa -out private/cakey.pem 2048 #membuat private key CA
    Generating RSA private key, 2048 bit long modulus
    ................................+++
    ...................................................................+++
    e is 65537 (0x10001)
    [root@m1-dz CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [XX]:ID #Kode negara
    State or Province Name (full name) []:JABAR #provinsi
    Locality Name (eg, city) [Default City]:BEKASI #kota
    Organization Name (eg, company) [Default Company Ltd]:IT #bebas
    Organizational Unit Name (eg, section) []:TKJ #bebas
    Common Name (eg, your name or your server's hostname) []:m1-dz.network.dz #hostname server
    Email Address []:admin@network.dz #email
  7. Setelah CA sudah selesai dibuat, kita sekarang dapat membuat sertifikat digital untuk web server, file server, dll.
  8. #WEB SERVER
    [root@m1-dz CA]# openssl genrsa -out private/web-key.key 2048 #Membuat private key
    [root@m1-dz CA]# openssl req -new -key private/web-key.key -out newcerts/web-key.csr #Membuatrequest
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [XX]:ID
    State or Province Name (full name) []:JABAR
    Locality Name (eg, city) [Default City]:BEKASI
    Organization Name (eg, company) [Default Company Ltd]:IT
    Organizational Unit Name (eg, section) []:TKJ
    Common Name (eg, your name or your server's hostname) []:www.network.dz #sesuai dengan domain web server
    Email Address []:admin@network.dz

    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:

    [root@m1-dz CA]# openssl ca -in newcerts/web-key.csr -out newcerts/web-cert.crt #Menandatangani sertifikat dengan CA
    Using configuration from /etc/pki/tls/openssl.cnf
    Check that the request matches the signature
    Signature ok
    Certificate Details:
    Serial Number: 4096 (0x1000)
    Validity
    Not Before: Jun 24 06:45:53 2018 GMT
    Not After : Jun 24 06:45:53 2019 GMT
    Subject:
    countryName = ID
    stateOrProvinceName = JABAR
    organizationName = IT
    organizationalUnitName = TKJ
    commonName = www.network.dz
    emailAddress = admin@network.dz
    X509v3 extensions:
    X509v3 Basic Constraints:
    CA:FALSE
    Netscape Comment:
    OpenSSL Generated Certificate
    X509v3 Subject Key Identifier:
    6B:D5:B7:6A:F3:6C:48:5B:F9:3D:8A:8D:D3:D4:03:02:56:A1:13:CF
    X509v3 Authority Key Identifier:
    keyid:D0:87:23:7E:32:39:51:35:9F:01:C7:4F:02:65:2D:4E:57:AF:77:40

    Certificate is to be certified until Jun 24 06:45:53 2019 GMT (365 days)
    Sign the certificate? [y/n]:y


    1 out of 1 certificate requests certified, commit? [y/n]y
    Write out database with 1 new entries
    Data Base Updated
  9. File-file sertifikat yang telah dibuat harus disalin kedalam server yang membutuhkan sertifikat tersebut, misalnya menggunakan SCP atau copy paste.
  10. [root@m1-dz CA]# scp newcerts/web-cert.crt root@192.168.100.11:/etc/pki/tls/certs/
    The authenticity of host '192.168.100.11 (192.168.100.11)' can't be established.
    ECDSA key fingerprint is SHA256:nYvo3n6q0dAFdLFikwFkRoEfOZU74rT0by5ojaiZZ80.
    ECDSA key fingerprint is MD5:d4:18:13:27:d3:26:06:3a:9a:40:11:80:35:0a:07:2c.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.100.11' (ECDSA) to the list of known hosts.
    root@192.168.100.11's password:
    web-cert.crt 100% 4592 1.4MB/s 00:00
    [root@m1-dz CA]# scp private/web-key.key root@192.168.100.11:/etc/pki/tls/private/
    root@192.168.100.11's password:
    web-key.key 100% 1679 55.0KB/s 00:00

    #tulisan bewarna merah merupakan IP Address server yang dituju beserta direktori untuk menyimpan cert/key nya.
  11. Lakukan hal yang sama untuk file server, mail server dari langkah ke 4, yang berbeda hanya pada common name, sesuaikan common name dengan hostname + domain dari server yang akan menggunakan sertifikat tersebut.

Import ke Client

Kita import CA kedalam client agar client mempercayai setiap sertifikat yang ditandatangani oleh CA kita.

  1. Export file cacert.pem kedalam komputer client dengan mengcopy paste nya atau menggunakan SCP.
  2. [root@m1-dz CA]# cat cacert.pem 
    -----BEGIN CERTIFICATE-----
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    -----END CERTIFICATE-----
    #copy paste menggunakan notepad kemudian simpan dalam file .crt
  3. Kali ini untuk web site, buka salah satu web browser, kali ini saya menggunakan firefox.
  4. Klik Menu > Preferences > Privacy & Security > Certificates > View Certificates, klik Import.
  5. Pilih file CA nya kemudian klik OK.
  6. Centang keduanya lalu klik OK.
  7. Setelah itu maka tidak akan muncul error lagi ketika membuka situs web https.

Sekian Terima kasih, cukup sampai disini postingan saya kali ini.

Referensi

  • NetworkLessons.com
  • Cara membuat Certificate Authority (CA) pada CentOS 7

    Certificate Autority atau CA merupakan sertifikat yang berfungsi untuk menandatangani sertifikat digital yang biasanya diguanakan untuk keperluan SSL web site, mail server, vpn, dll. Untuk membuat sebuah CA kita dapat menggunakan software OpenSSL.

    OpenSSL biasanya sudah terinstall dalam sistem operasi linux, kali ini saya akan mencoba membuat CA pada sistem operasi CentOS. Dengan membuat CA kita dapat membuat sertifikat yang bisa digunakan untuk web server HTTPS, mail server dengan TLS, dll. Tugas dari CA adalah menandatangani sertifikat tersebut.

    Berikut ini adalah topologi/ilustrasinya :

    Terdapat satu server yang memiliki CA, server yang memiliki CA tersebut akan mengeluarkan dan menandatangani sertifikat digital yang kemudian digunakan oleh server lainnya untuk kebutuhan tertentu seperti Web Server (HTTPS), File Server (FTP over TLS), Mail Server, dll.

    CA Server

    Sekarang kita akan mulai membuat CA pada server ini.

    1. Install OpenSSL pada server ini, atau biasanya CentOS sudah termasuk aplikasi OpenSSL didalamnya.
    2. [root@m1-dz ~]# yum -y install openssl
    3. Masuk dalam direktori tempat disimpannya CA beserta sertifikatnya, lalu buat file dibawah ini.
    4. [root@m1-dz ~]# cd /etc/pki/CA
      [root@m1-dz CA]# touch index.txt
      [root@m1-dz CA]# echo '1000' > serial
    5. Kita buat private key CA, dan membuat CA.
    6. [root@m1-dz CA]# openssl genrsa -out private/cakey.pem 2048 #membuat private key CA
      Generating RSA private key, 2048 bit long modulus
      ................................+++
      ...................................................................+++
      e is 65537 (0x10001)
      [root@m1-dz CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
      You are about to be asked to enter information that will be incorporated
      into your certificate request.
      What you are about to enter is what is called a Distinguished Name or a DN.
      There are quite a few fields but you can leave some blank
      For some fields there will be a default value,
      If you enter '.', the field will be left blank.
      -----
      Country Name (2 letter code) [XX]:ID #Kode negara
      State or Province Name (full name) []:JABAR #provinsi
      Locality Name (eg, city) [Default City]:BEKASI #kota
      Organization Name (eg, company) [Default Company Ltd]:IT #bebas
      Organizational Unit Name (eg, section) []:TKJ #bebas
      Common Name (eg, your name or your server's hostname) []:m1-dz.network.dz #hostname server
      Email Address []:admin@network.dz #email
    7. Setelah CA sudah selesai dibuat, kita sekarang dapat membuat sertifikat digital untuk web server, file server, dll.
    8. #WEB SERVER
      [root@m1-dz CA]# openssl genrsa -out private/web-key.key 2048 #Membuat private key
      [root@m1-dz CA]# openssl req -new -key private/web-key.key -out newcerts/web-key.csr #Membuatrequest
      You are about to be asked to enter information that will be incorporated
      into your certificate request.
      What you are about to enter is what is called a Distinguished Name or a DN.
      There are quite a few fields but you can leave some blank
      For some fields there will be a default value,
      If you enter '.', the field will be left blank.
      -----
      Country Name (2 letter code) [XX]:ID
      State or Province Name (full name) []:JABAR
      Locality Name (eg, city) [Default City]:BEKASI
      Organization Name (eg, company) [Default Company Ltd]:IT
      Organizational Unit Name (eg, section) []:TKJ
      Common Name (eg, your name or your server's hostname) []:www.network.dz #sesuai dengan domain web server
      Email Address []:admin@network.dz

      Please enter the following 'extra' attributes
      to be sent with your certificate request
      A challenge password []:
      An optional company name []:

      [root@m1-dz CA]# openssl ca -in newcerts/web-key.csr -out newcerts/web-cert.crt #Menandatangani sertifikat dengan CA
      Using configuration from /etc/pki/tls/openssl.cnf
      Check that the request matches the signature
      Signature ok
      Certificate Details:
      Serial Number: 4096 (0x1000)
      Validity
      Not Before: Jun 24 06:45:53 2018 GMT
      Not After : Jun 24 06:45:53 2019 GMT
      Subject:
      countryName = ID
      stateOrProvinceName = JABAR
      organizationName = IT
      organizationalUnitName = TKJ
      commonName = www.network.dz
      emailAddress = admin@network.dz
      X509v3 extensions:
      X509v3 Basic Constraints:
      CA:FALSE
      Netscape Comment:
      OpenSSL Generated Certificate
      X509v3 Subject Key Identifier:
      6B:D5:B7:6A:F3:6C:48:5B:F9:3D:8A:8D:D3:D4:03:02:56:A1:13:CF
      X509v3 Authority Key Identifier:
      keyid:D0:87:23:7E:32:39:51:35:9F:01:C7:4F:02:65:2D:4E:57:AF:77:40

      Certificate is to be certified until Jun 24 06:45:53 2019 GMT (365 days)
      Sign the certificate? [y/n]:y


      1 out of 1 certificate requests certified, commit? [y/n]y
      Write out database with 1 new entries
      Data Base Updated
    9. File-file sertifikat yang telah dibuat harus disalin kedalam server yang membutuhkan sertifikat tersebut, misalnya menggunakan SCP atau copy paste.
    10. [root@m1-dz CA]# scp newcerts/web-cert.crt root@192.168.100.11:/etc/pki/tls/certs/
      The authenticity of host '192.168.100.11 (192.168.100.11)' can't be established.
      ECDSA key fingerprint is SHA256:nYvo3n6q0dAFdLFikwFkRoEfOZU74rT0by5ojaiZZ80.
      ECDSA key fingerprint is MD5:d4:18:13:27:d3:26:06:3a:9a:40:11:80:35:0a:07:2c.
      Are you sure you want to continue connecting (yes/no)? yes
      Warning: Permanently added '192.168.100.11' (ECDSA) to the list of known hosts.
      root@192.168.100.11's password:
      web-cert.crt 100% 4592 1.4MB/s 00:00
      [root@m1-dz CA]# scp private/web-key.key root@192.168.100.11:/etc/pki/tls/private/
      root@192.168.100.11's password:
      web-key.key 100% 1679 55.0KB/s 00:00

      #tulisan bewarna merah merupakan IP Address server yang dituju beserta direktori untuk menyimpan cert/key nya.
    11. Lakukan hal yang sama untuk file server, mail server dari langkah ke 4, yang berbeda hanya pada common name, sesuaikan common name dengan hostname + domain dari server yang akan menggunakan sertifikat tersebut.

    Import ke Client

    Kita import CA kedalam client agar client mempercayai setiap sertifikat yang ditandatangani oleh CA kita.

    1. Export file cacert.pem kedalam komputer client dengan mengcopy paste nya atau menggunakan SCP.
    2. [root@m1-dz CA]# cat cacert.pem 
      -----BEGIN CERTIFICATE-----
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
      -----END CERTIFICATE-----
      #copy paste menggunakan notepad kemudian simpan dalam file .crt
    3. Kali ini untuk web site, buka salah satu web browser, kali ini saya menggunakan firefox.
    4. Klik Menu > Preferences > Privacy & Security > Certificates > View Certificates, klik Import.
    5. Pilih file CA nya kemudian klik OK.
    6. Centang keduanya lalu klik OK.
    7. Setelah itu maka tidak akan muncul error lagi ketika membuka situs web https.

    Sekian Terima kasih, cukup sampai disini postingan saya kali ini.

    Referensi

  • NetworkLessons.com
  • Cara membuat web server dengan Nginx pada CentOS 7

    Web Server adalah sebuah server pada jaringan komputer yang dapat melayani permintaan data berupa konten web site yang tersimpan dalam web server tersebut. Secara default web server menggunakan protokol HTTP (Hypertext Transfer Protocol) untuk berkomunikasi dengan web client, dan protokol transport TCP pada port 80.

    Untuk membuat sebuah web server kita harus menginstall aplikasi yang dapat menerima dan merespon protokol HTTP yang masuk kedalam server. Kali ini aplikasi yang akan saya bahas adalah Nginx, aplikasi ini bersifat open source dan didapatkan secara gratis.

    Topologi

    Web Server

    1. Lakukan konfigurasi IP Address sesuai dengan jaringan dimana server berada atau seperti pada topologi. Cara konfigurasi IP Address lihat disini.
    2. Masuk dalam shell server lewat ssh atau monitor, Kemudian kita install paket aplikasi nginx menggunakan yum.
    3. #Nginx berada di repo EPEL, jadi install repo EPEL terlebih dahulu
      [root@m1-dz ~]# yum -y install epel-release

      #setelah terinstall, baru kita dapat menginstall NGINX
      [root@m1-dz ~]# yum --enablerepo=epel -y install nginx
    4. Edit file konfigurasi nginx yang ada pada /etc/nginx/nginx.conf
    5. [root@m1-dz ~]# vi /etc/nginx/nginx.conf
      server {
      listen 80 default_server;
      listen [::]:80 default_server;
      server_name www.network.dz; #Ganti menjadi domain milik server.
      root /usr/share/nginx/html; #lokasi file html
    6. Buat file index.html yang menjadi isi dari web server ini.
    7. [root@m1-dz ~]# cd /usr/share/nginx/html/
      [root@m1-dz html]# rm -f index.html #hapus file default
      [root@m1-dz html]# vi index.html #buat file baru
      <h1>
      Nginx test</h1>
      <h2>
      www.network.dz</h2>
    8. Test sintaks file konfigurasi, pastikan tidak ada yang error.
    9. [root@m1-dz html]# nginx -t
      nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
      nginx: configuration file /etc/nginx/nginx.conf test is successful
    10. Buka firewall, kemudian jalankan service nginx.
    11. [root@m1-dz html]# firewall-cmd --add-service=http --permanent
      success
      [root@m1-dz html]# firewall-cmd --reload
      success
      [root@m1-dz html]# systemctl start nginx
      [root@m1-dz html]# systemctl enable nginx
      Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
    12. Testing lewat PC Client
    13. Untuk melihat error, dan orang yang mengakses dapat dilakukan dengan perintah dibawah ini.
    14. [root@m1-dz html]# tail -f /var/log/nginx/error.log 
      2018/06/24 10:02:00 [error] 1606#0: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.100.1, server: www.network.dz, request: "GET /favicon.ico HTTP/1.1", host: "www.network.dz", referrer: "http://www.network.dz/"

      [root@m1-dz html]# tail -f /var/log/nginx/access.log
      192.168.100.1 - - [24/Jun/2018:10:02:00 +0700] "GET / HTTP/1.1" 200 44 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" "-"
      192.168.100.1 - - [24/Jun/2018:10:02:00 +0700] "GET /favicon.ico HTTP/1.1" 404 3650 "http://www.network.dz/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" "-"
      192.168.100.1 - - [24/Jun/2018:10:02:07 +0700] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" "-"
      192.168.100.1 - - [24/Jun/2018:10:02:08 +0700] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" "-"
      192.168.100.1 - - [24/Jun/2018:10:02:08 +0700] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" "-"
      192.168.100.1 - - [24/Jun/2018:10:02:08 +0700] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" "-"

    Jika sampai disini tidak ada masalah, maka konfigurasi sudah selesai dan web server sudah dapat digunkan.

    Sekian terima kasih

    Referensi

    Cara membuat web server dengan Nginx pada CentOS 7

    Web Server adalah sebuah server pada jaringan komputer yang dapat melayani permintaan data berupa konten web site yang tersimpan dalam web server tersebut. Secara default web server menggunakan protokol HTTP (Hypertext Transfer Protocol) untuk berkomunikasi dengan web client, dan protokol transport TCP pada port 80.

    Untuk membuat sebuah web server kita harus menginstall aplikasi yang dapat menerima dan merespon protokol HTTP yang masuk kedalam server. Kali ini aplikasi yang akan saya bahas adalah Nginx, aplikasi ini bersifat open source dan didapatkan secara gratis.

    Topologi

    Web Server

    1. Lakukan konfigurasi IP Address sesuai dengan jaringan dimana server berada atau seperti pada topologi. Cara konfigurasi IP Address lihat disini.
    2. Masuk dalam shell server lewat ssh atau monitor, Kemudian kita install paket aplikasi nginx menggunakan yum.
    3. #Nginx berada di repo EPEL, jadi install repo EPEL terlebih dahulu
      [root@m1-dz ~]# yum -y install epel-release

      #setelah terinstall, baru kita dapat menginstall NGINX
      [root@m1-dz ~]# yum --enablerepo=epel -y install nginx
    4. Edit file konfigurasi nginx yang ada pada /etc/nginx/nginx.conf
    5. [root@m1-dz ~]# vi /etc/nginx/nginx.conf
      server {
      listen 80 default_server;
      listen [::]:80 default_server;
      server_name www.network.dz; #Ganti menjadi domain milik server.
      root /usr/share/nginx/html; #lokasi file html
    6. Buat file index.html yang menjadi isi dari web server ini.
    7. [root@m1-dz ~]# cd /usr/share/nginx/html/
      [root@m1-dz html]# rm -f index.html #hapus file default
      [root@m1-dz html]# vi index.html #buat file baru
      <h1>
      Nginx test</h1>
      <h2>
      www.network.dz</h2>
    8. Test sintaks file konfigurasi, pastikan tidak ada yang error.
    9. [root@m1-dz html]# nginx -t
      nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
      nginx: configuration file /etc/nginx/nginx.conf test is successful
    10. Buka firewall, kemudian jalankan service nginx.
    11. [root@m1-dz html]# firewall-cmd --add-service=http --permanent
      success
      [root@m1-dz html]# firewall-cmd --reload
      success
      [root@m1-dz html]# systemctl start nginx
      [root@m1-dz html]# systemctl enable nginx
      Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
    12. Testing lewat PC Client
    13. Untuk melihat error, dan orang yang mengakses dapat dilakukan dengan perintah dibawah ini.
    14. [root@m1-dz html]# tail -f /var/log/nginx/error.log 
      2018/06/24 10:02:00 [error] 1606#0: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.100.1, server: www.network.dz, request: "GET /favicon.ico HTTP/1.1", host: "www.network.dz", referrer: "http://www.network.dz/"

      [root@m1-dz html]# tail -f /var/log/nginx/access.log
      192.168.100.1 - - [24/Jun/2018:10:02:00 +0700] "GET / HTTP/1.1" 200 44 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" "-"
      192.168.100.1 - - [24/Jun/2018:10:02:00 +0700] "GET /favicon.ico HTTP/1.1" 404 3650 "http://www.network.dz/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" "-"
      192.168.100.1 - - [24/Jun/2018:10:02:07 +0700] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" "-"
      192.168.100.1 - - [24/Jun/2018:10:02:08 +0700] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" "-"
      192.168.100.1 - - [24/Jun/2018:10:02:08 +0700] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" "-"
      192.168.100.1 - - [24/Jun/2018:10:02:08 +0700] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" "-"

    Jika sampai disini tidak ada masalah, maka konfigurasi sudah selesai dan web server sudah dapat digunkan.

    Sekian terima kasih

    Referensi

    Cara membuat DNS Server pada CentOS 7

    DNS kepanjangan dari Domain Name System adalah sebuah sistem penamaan pada jaringan komputer, yang berfungsi memberikan nama pada setiap Host atau Komputer dan domain (daerah) yang ada di jaringan, dengan ini kita dengan mudah mengingat komputer menggunakan nama yang dikenali manusia, tidak seperti IP Address yang merupakan angka dan mungkin sulit diingat.

    Sedangkan DNS Server adalah server yang menyediakan layanan DNS, server ini yang menyimpan database nama domain ataupun komputer, dan akan menerjemahkan dari nama domain menjadi IP Address jika ada yang meminta. Beberapa poin penting dari DNS Server :

    • DNS dapat memberi nama sebuah domain atau daerah (bisa disebut zone atau zona) yang terdiri dari banyak komputer didalamnya.
    • Dari satu nama domain dapat dibuat sub-domain yang bisa digunakan untuk menamai suatu komputer/server (seperti www,web,blog,dll).
    • Menggunakan protokol UDP#53 dalam pengiriman pesan DNS nya, jika ukuran pesannya besar bisa saja menggunakan TCP#53.
    • Dalam satu database zone/domain terdiri dari beberapa jenis record yang memiliki perannya masing-masing. Record DNS paling umum :
      • A atau AAAA berfungsi untuk menerjemahkan Domain/Sub-domain > IP Address.
      • PTR kebalikan dari A.
      • NS berisi informasi server dns yang memiliki zone tersebut.
      • MX untuk mengarahkan ke mail server yang ada didomain ini.
      • CNAME alias atau nama lain dari sebuah nama.
    Pada Sistem Operasi Linux CentOS 7 aplikasi yang menjalankan service DNS adalah BIND, Berkeley Internet Name Domain, aplikasi yang dapat membangun sebuah DNS server pada hampir semua distro linux termasuk CentOS.
    Sekarang kita akan mencoba mengkonfigurasi DNS Server berdasarkan topologi dibawah ini :

    Dari topologi diatas kita dapat melihat bahwa jaringan server dibagi menjadi dua domain, yaitu root domain network.dz dan server.dz, masing-masing domain tersebut akan memiliki sub-domain, tiap sub-domain akan mengarah pada salah satu server atau service/layanan tertentu pada server.

    Untuk reverse terdapat dua domain, karena dalam topologi terdapat dua network yang berbeda atau dua broadcast domain yang berbeda, yaitu 192.168.100.0 dan 192.168.101.0

    Server m1-dz (DNS Server)

    Server ini akan menjadi server DNS untuk domain network.dz dan server.dz.

    1. Pertama lakukan konfigurasi IP Address berdasarkan topologi, bisa dilihat disini.
    2. Install paket aplikasi dns server yaitu BIND.
    3. [root@m1-dz ~]# yum -y install bind bind-utils
    4. Edit file /etc/named.conf untuk mengatur konfigurasi bind dan menambahkan zone domain baru.
    5. [root@m1-dz ~]# vi /etc/named.conf
      options {
      listen-on port 53 { any; }; #Agar dapat diakses siapapun
      listen-on-v6 port 53 { none; }; #IPv6 tidak digunakan
      directory "/var/named";
      dump-file "/var/named/data/cache_dump.db";
      statistics-file "/var/named/data/named_stats.txt";
      memstatistics-file "/var/named/data/named_mem_stats.txt";
      allow-query { any; }; #Siapapun dapat membaca database DNS
      forwarders {
      192.168.100.1;
      #DNS Server untuk ke internet
      };

      recursion yes;

      /////// Dipotong //////////////

      };

      /////// Dipotong //////////////

      zone "." IN {
      type hint;
      file "named.ca";
      };

      #Buat zone domain network.dz (forward)

      zone "network.dz" IN {
      type master;
      file "/var/named/db.network";
      #lokasi file database
      };

      zone "server.dz" IN {
      type master;
      file "/var/named/db.server";
      };


      #zone reverse IP Network dibalik

      zone "100.168.192.in-addr.arpa" IN {
      type master;
      file "/var/named/db.100";
      #lokasi file database
      };

      zone "101.168.192.in-addr.arpa" IN {
      type master;
      file "/var/named/db.101";
      };

      include "/etc/named.rfc1912.zones";
      include "/etc/named.root.key";
    6. Cek konfigurasi pastikan tidak ada yang error dengan perintah.
    7. [root@m1-dz ~]# named-checkconf -z
      zone network.dz/IN: loading from master file /var/named/db.network failed: file not found
      zone network.dz/IN: not loaded due to errors.
      _default/network.dz/IN: file not found
      zone 100.168.192.in-addr.arpa/IN: loading from master file /var/named/db.100 failed: file not found
      zone 100.168.192.in-addr.arpa/IN: not loaded due to errors.
      _default/100.168.192.in-addr.arpa/IN: file not found

      zone localhost.localdomain/IN: loaded serial 0
      zone localhost/IN: loaded serial 0
      zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
      zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
      zone 0.in-addr.arpa/IN: loaded serial 0

      Jika error file not found itu wajar karena kita belum membuat file database dari zone tersebut.

    8. Setelah konfigurasi utama selesai sekarang kita buat file database untuk masing-masing zone.
    9. #Salin saja file contoh database yang sudah ada
      [root@m1-dz named]# cp named.empty db.network
      [root@m1-dz named]# cp named.empty db.server
      [root@m1-dz named]# chown named:named db.network #mengatur permission agar dapat dibaca oleh BIND
      [root@m1-dz named]# chown named:named db.server
      [root@m1-dz named]# cp named.empty db.100
      [root@m1-dz named]# cp named.empty db.101
      [root@m1-dz named]# chown named:named db.100
      [root@m1-dz named]# chown named:named db.101

      #edit file zone forward

      [root@m1-dz named]# vi db.network
      $TTL 3H
      @ IN SOA network.dz. root.network.dz. (
      0 ; serial
      1D ; refresh
      1H ; retry
      1W ; expire
      3H ) ; minimum
      @ IN NS m1-dz.network.dz.
      @ IN A 192.168.100.10 #root domain akan diarahkan ke server ini
      m1-dz IN A 192.168.100.10 #server ini
      node01 IN A 192.168.100.11 #server node01
      node02 IN A 192.168.100.12 #server node02
      www IN CNAME m1-dz.network.dz. #CNAME www dialihkan ke m1-dz
      admin IN CNAME m1-dz.network.dz. #phpmyadmin
      webmail IN CNAME m1-dz.network.dz. #webmail
      mail IN CNAME node01.network.dz. #mail-server
      db1 IN CNAME node01.network.dz.
      db2 IN CNAME node02.network.dz.
      @ IN MX 0 node01.network.dz. #untuk mail server pada domain ini

      #untuk zone forward server.dz
      [root@m1-dz named]# vi db.server
      $TTL 3H
      @ IN SOA network.dz. root.network.dz. (
      0 ; serial
      1D ; refresh
      1H ; retry
      1W ; expire
      3H ) ; minimum
      @ IN NS m1-dz.network.dz.
      @ IN A 192.168.101.10
      m2-dz IN A 192.168.101.10
      node01 IN A 192.168.101.11
      www IN CNAME m2-dz.server.dz.
      admin IN CNAME m2-dz.server.dz.
      webmail IN CNAME m2-dz.server.dz.
      mail IN CNAME node01.server.dz.
      db1 IN CNAME m2-dz.server.dz.
      db2 IN CNAME node01.server.dz.
      @ IN MX 0 node01.server.dz.

      #edit file zone reverse yang merupakan kebalikannya

      [root@m1-dz named]# vi db.100
      $TTL 3H
      @ IN SOA network.dz. root.network.dz. (
      0 ; serial
      1D ; refresh
      1H ; retry
      1W ; expire
      3H ) ; minimum
      @ IN NS m1-dz.network.dz.
      10 IN PTR network.dz. #Host ID atau oktet terakhir IP Address
      10 IN PTR m1-dz.network.dz.
      11 IN PTR node01.network.dz.
      12 IN PTR node02.network.dz.

      #untuk 192.168.101.0

      [root@m1-dz named]# vi db.101
      $TTL 3H
      @ IN SOA network.dz. root.network.dz. (
      0 ; serial
      1D ; refresh
      1H ; retry
      1W ; expire
      3H ) ; minimum
      @ IN NS m1-dz.network.dz.
      10 IN PTR server.dz.
      10 IN PTR m2-dz.server.dz.
      11 IN PTR node01.server.dz.
    10. Cek kembali hasil konfigurasi dan pastikan sama sekali tidak ada error
    11. [root@m1-dz named]# named-checkconf -z
      zone network.dz/IN: loaded serial 0
      zone server.dz/IN: loaded serial 0
      zone 100.168.192.in-addr.arpa/IN: loaded serial 0
      zone 101.168.192.in-addr.arpa/IN: loaded serial 0
      zone localhost.localdomain/IN: loaded serial 0
      zone localhost/IN: loaded serial 0
      zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
      zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
      zone 0.in-addr.arpa/IN: loaded serial 0
    12. Buka firewall untuk dns, dan aktifkan service dns named.
    13. #membuka firewall untuk dns
      [root@m1-dz named]# firewall-cmd --add-service=dns --permanent
      success
      [root@m1-dz named]# firewall-cmd --reload
      success
      #menjalankan service dns
      [root@m1-dz named]# systemctl start named
      [root@m1-dz named]# systemctl enable named
      Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
    14. Kita tes dns server dari server itu sendiri dan dari komputer lain
    15. #atur terlebih dahulu dns server yang digunakan
      [root@m1-dz named]# nmcli c modify eth0 ipv4.dns 192.168.100.10
      [root@m1-dz named]# nmcli c down eth0; nmcli c up eth0

      #kemudian testing menggunakan nslookup atau dig
      [root@m1-dz named]# nslookup node01.network.dz
      Server: 192.168.100.10
      Address: 192.168.100.10#53

      Name: node01.network.dz
      Address: 192.168.100.11

      [root@m1-dz named]# nslookup www.network.dz
      Server: 192.168.100.10
      Address: 192.168.100.10#53

      www.network.dz canonical name = m1-dz.network.dz.
      Name: m1-dz.network.dz
      Address: 192.168.100.10

      [root@m1-dz named]# nslookup 192.168.100.10
      Server: 192.168.100.10
      Address: 192.168.100.10#53

      10.100.168.192.in-addr.arpa name = network.dz.
      10.100.168.192.in-addr.arpa name = m1-dz.network.dz.

      [root@m1-dz named]# dig network.dz mx #MX Record

      ; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> network.dz mx
      ;; global options: +cmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24869
      ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 3

      ;; OPT PSEUDOSECTION:
      ; EDNS: version: 0, flags:; udp: 4096
      ;; QUESTION SECTION:
      ;network.dz. IN MX

      ;; ANSWER SECTION:
      network.dz. 10800 IN MX 0 node01.network.dz.

      ;; AUTHORITY SECTION:
      network.dz. 10800 IN NS m1-dz.network.dz.

      ;; ADDITIONAL SECTION:
      node01.network.dz. 10800 IN A 192.168.100.11
      m1-dz.network.dz. 10800 IN A 192.168.100.10

      ;; Query time: 12 msec
      ;; SERVER: 192.168.100.10#53(192.168.100.10)
      ;; WHEN: Sat Jun 23 14:31:28 WIB 2018
      ;; MSG SIZE rcvd: 114

    Server Node01 & Node02

    Server ini nantinya akan berisi service lainnya seperti web server, database, mail server, dll.

    1. Konfigurasi Hostname, Networking
    2. #Server NODE01
      [root@localhost ~]# hostnamectl set-hostname node01.network.dz
      [root@localhost ~]# nmcli c modify eth0 ipv4.addresses 192.168.100.11/24
      [root@localhost ~]# nmcli c modify eth0 ipv4.gateway 192.168.100.1
      [root@localhost ~]# nmcli c modify eth0 ipv4.dns 192.168.100.10
      [root@localhost ~]# nmcli c modify eth0 ipv4.method manual
      [root@localhost ~]# init 6

      #Server NODE02
      [root@localhost ~]# hostnamectl set-hostname node02.network.dz
      [root@localhost ~]# nmcli c modify eth0 ipv4.addresses 192.168.100.12/24
      [root@localhost ~]# nmcli c modify eth0 ipv4.gateway 192.168.100.1
      [root@localhost ~]# nmcli c modify eth0 ipv4.dns 192.168.100.10
      [root@localhost ~]# nmcli c modify eth0 ipv4.method manual
      [root@localhost ~]# init 6
    3. Lalu kita testing query dns dari server tersebut.
    4. [root@node01 ~]# ping m1-dz.network.dz
      PING m1-dz.network.dz (192.168.100.10) 56(84) bytes of data.
      64 bytes from m1-dz.network.dz (192.168.100.10): icmp_seq=1 ttl=64 time=0.390 ms
      64 bytes from m1-dz.network.dz (192.168.100.10): icmp_seq=2 ttl=64 time=0.413 ms

      --- m1-dz.network.dz ping statistics ---
      2 packets transmitted, 2 received, 0% packet loss, time 1001ms
      rtt min/avg/max/mdev = 0.390/0.401/0.413/0.023 ms
      [root@node01 ~]# ping www.network.dz
      PING m1-dz.network.dz (192.168.100.10) 56(84) bytes of data.
      64 bytes from network.dz (192.168.100.10): icmp_seq=1 ttl=64 time=0.367 ms
      64 bytes from network.dz (192.168.100.10): icmp_seq=2 ttl=64 time=0.412 ms

      --- m1-dz.network.dz ping statistics ---
      2 packets transmitted, 2 received, 0% packet loss, time 1001ms
      rtt min/avg/max/mdev = 0.367/0.389/0.412/0.029 ms
      [root@node01 ~]# ping db2.network.dz
      PING node02.network.dz (192.168.100.12) 56(84) bytes of data.
      64 bytes from node02.network.dz (192.168.100.12): icmp_seq=1 ttl=64 time=0.592 ms
      64 bytes from node02.network.dz (192.168.100.12): icmp_seq=2 ttl=64 time=0.450 ms

      --- node02.network.dz ping statistics ---
      2 packets transmitted, 2 received, 0% packet loss, time 1001ms
      rtt min/avg/max/mdev = 0.450/0.521/0.592/0.071 ms

      [root@node02 ~]# ping mail.network.dz
      PING m1-dz.network.dz (192.168.100.10) 56(84) bytes of data.
      64 bytes from m1-dz.network.dz (192.168.100.10): icmp_seq=1 ttl=64 time=0.406 ms
      64 bytes from m1-dz.network.dz (192.168.100.10): icmp_seq=2 ttl=64 time=0.502 ms
      64 bytes from m1-dz.network.dz (192.168.100.10): icmp_seq=3 ttl=64 time=0.521 ms

      --- m1-dz.network.dz ping statistics ---
      3 packets transmitted, 3 received, 0% packet loss, time 2003ms
      rtt min/avg/max/mdev = 0.406/0.476/0.521/0.053 ms
      #Ping domain yang berada di internet (opsional)
      [root@node02 ~]# ping google.com
      PING google.com (74.125.24.101) 56(84) bytes of data.
      64 bytes from 74.125.24.101 (74.125.24.101): icmp_seq=1 ttl=40 time=54.5 ms
      64 bytes from 74.125.24.101 (74.125.24.101): icmp_seq=2 ttl=40 time=44.0 ms
      64 bytes from 74.125.24.101 (74.125.24.101): icmp_seq=3 ttl=40 time=47.9 ms
      64 bytes from 74.125.24.101 (74.125.24.101): icmp_seq=4 ttl=40 time=45.0 ms
      64 bytes from 74.125.24.101 (74.125.24.101): icmp_seq=5 ttl=40 time=39.1 ms

      --- google.com ping statistics ---
      5 packets transmitted, 5 received, 0% packet loss, time 8072ms
      rtt min/avg/max/mdev = 39.146/46.163/54.566/5.081 ms

    5. Jika sudah berhasil maka konfigurasi sampai disini sudah selesai. Untuk melakukan troubleshooting kita dapat melihat log atau laporan yang dibuat oleh sistem dengan perintah dibawah ini pada DNS Server.
    6. [root@m1-dz ~]# tail -f /var/log/messages | grep named
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 193.0.14.129#53
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 192.58.128.30#53
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 192.36.148.17#53
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 198.97.190.53#53
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 202.12.27.33#53
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 192.5.5.241#53
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 192.228.79.201#53
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 192.203.230.10#53
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 199.7.91.13#53
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 192.33.4.12#53

    Referensi

    Cara membuat DNS Server pada CentOS 7

    DNS kepanjangan dari Domain Name System adalah sebuah sistem penamaan pada jaringan komputer, yang berfungsi memberikan nama pada setiap Host atau Komputer dan domain (daerah) yang ada di jaringan, dengan ini kita dengan mudah mengingat komputer menggunakan nama yang dikenali manusia, tidak seperti IP Address yang merupakan angka dan mungkin sulit diingat.

    Sedangkan DNS Server adalah server yang menyediakan layanan DNS, server ini yang menyimpan database nama domain ataupun komputer, dan akan menerjemahkan dari nama domain menjadi IP Address jika ada yang meminta. Beberapa poin penting dari DNS Server :

    • DNS dapat memberi nama sebuah domain atau daerah (bisa disebut zone atau zona) yang terdiri dari banyak komputer didalamnya.
    • Dari satu nama domain dapat dibuat sub-domain yang bisa digunakan untuk menamai suatu komputer/server (seperti www,web,blog,dll).
    • Menggunakan protokol UDP#53 dalam pengiriman pesan DNS nya, jika ukuran pesannya besar bisa saja menggunakan TCP#53.
    • Dalam satu database zone/domain terdiri dari beberapa jenis record yang memiliki perannya masing-masing. Record DNS paling umum :
      • A atau AAAA berfungsi untuk menerjemahkan Domain/Sub-domain > IP Address.
      • PTR kebalikan dari A.
      • NS berisi informasi server dns yang memiliki zone tersebut.
      • MX untuk mengarahkan ke mail server yang ada didomain ini.
      • CNAME alias atau nama lain dari sebuah nama.
    Pada Sistem Operasi Linux CentOS 7 aplikasi yang menjalankan service DNS adalah BIND, Berkeley Internet Name Domain, aplikasi yang dapat membangun sebuah DNS server pada hampir semua distro linux termasuk CentOS.
    Sekarang kita akan mencoba mengkonfigurasi DNS Server berdasarkan topologi dibawah ini :

    Dari topologi diatas kita dapat melihat bahwa jaringan server dibagi menjadi dua domain, yaitu root domain network.dz dan server.dz, masing-masing domain tersebut akan memiliki sub-domain, tiap sub-domain akan mengarah pada salah satu server atau service/layanan tertentu pada server.

    Untuk reverse terdapat dua domain, karena dalam topologi terdapat dua network yang berbeda atau dua broadcast domain yang berbeda, yaitu 192.168.100.0 dan 192.168.101.0

    Server m1-dz (DNS Server)

    Server ini akan menjadi server DNS untuk domain network.dz dan server.dz.

    1. Pertama lakukan konfigurasi IP Address berdasarkan topologi, bisa dilihat disini.
    2. Install paket aplikasi dns server yaitu BIND.
    3. [root@m1-dz ~]# yum -y install bind bind-utils
    4. Edit file /etc/named.conf untuk mengatur konfigurasi bind dan menambahkan zone domain baru.
    5. [root@m1-dz ~]# vi /etc/named.conf
      options {
      listen-on port 53 { any; }; #Agar dapat diakses siapapun
      listen-on-v6 port 53 { none; }; #IPv6 tidak digunakan
      directory "/var/named";
      dump-file "/var/named/data/cache_dump.db";
      statistics-file "/var/named/data/named_stats.txt";
      memstatistics-file "/var/named/data/named_mem_stats.txt";
      allow-query { any; }; #Siapapun dapat membaca database DNS
      forwarders {
      192.168.100.1;
      #DNS Server untuk ke internet
      };

      recursion yes;

      /////// Dipotong //////////////

      };

      /////// Dipotong //////////////

      zone "." IN {
      type hint;
      file "named.ca";
      };

      #Buat zone domain network.dz (forward)

      zone "network.dz" IN {
      type master;
      file "/var/named/db.network";
      #lokasi file database
      };

      zone "server.dz" IN {
      type master;
      file "/var/named/db.server";
      };


      #zone reverse IP Network dibalik

      zone "100.168.192.in-addr.arpa" IN {
      type master;
      file "/var/named/db.100";
      #lokasi file database
      };

      zone "101.168.192.in-addr.arpa" IN {
      type master;
      file "/var/named/db.101";
      };

      include "/etc/named.rfc1912.zones";
      include "/etc/named.root.key";
    6. Cek konfigurasi pastikan tidak ada yang error dengan perintah.
    7. [root@m1-dz ~]# named-checkconf -z
      zone network.dz/IN: loading from master file /var/named/db.network failed: file not found
      zone network.dz/IN: not loaded due to errors.
      _default/network.dz/IN: file not found
      zone 100.168.192.in-addr.arpa/IN: loading from master file /var/named/db.100 failed: file not found
      zone 100.168.192.in-addr.arpa/IN: not loaded due to errors.
      _default/100.168.192.in-addr.arpa/IN: file not found

      zone localhost.localdomain/IN: loaded serial 0
      zone localhost/IN: loaded serial 0
      zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
      zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
      zone 0.in-addr.arpa/IN: loaded serial 0

      Jika error file not found itu wajar karena kita belum membuat file database dari zone tersebut.

    8. Setelah konfigurasi utama selesai sekarang kita buat file database untuk masing-masing zone.
    9. #Salin saja file contoh database yang sudah ada
      [root@m1-dz named]# cp named.empty db.network
      [root@m1-dz named]# cp named.empty db.server
      [root@m1-dz named]# chown named:named db.network #mengatur permission agar dapat dibaca oleh BIND
      [root@m1-dz named]# chown named:named db.server
      [root@m1-dz named]# cp named.empty db.100
      [root@m1-dz named]# cp named.empty db.101
      [root@m1-dz named]# chown named:named db.100
      [root@m1-dz named]# chown named:named db.101

      #edit file zone forward

      [root@m1-dz named]# vi db.network
      $TTL 3H
      @ IN SOA network.dz. root.network.dz. (
      0 ; serial
      1D ; refresh
      1H ; retry
      1W ; expire
      3H ) ; minimum
      @ IN NS m1-dz.network.dz.
      @ IN A 192.168.100.10 #root domain akan diarahkan ke server ini
      m1-dz IN A 192.168.100.10 #server ini
      node01 IN A 192.168.100.11 #server node01
      node02 IN A 192.168.100.12 #server node02
      www IN CNAME m1-dz.network.dz. #CNAME www dialihkan ke m1-dz
      admin IN CNAME m1-dz.network.dz. #phpmyadmin
      webmail IN CNAME m1-dz.network.dz. #webmail
      mail IN CNAME node01.network.dz. #mail-server
      db1 IN CNAME node01.network.dz.
      db2 IN CNAME node02.network.dz.
      @ IN MX 0 node01.network.dz. #untuk mail server pada domain ini

      #untuk zone forward server.dz
      [root@m1-dz named]# vi db.server
      $TTL 3H
      @ IN SOA network.dz. root.network.dz. (
      0 ; serial
      1D ; refresh
      1H ; retry
      1W ; expire
      3H ) ; minimum
      @ IN NS m1-dz.network.dz.
      @ IN A 192.168.101.10
      m2-dz IN A 192.168.101.10
      node01 IN A 192.168.101.11
      www IN CNAME m2-dz.server.dz.
      admin IN CNAME m2-dz.server.dz.
      webmail IN CNAME m2-dz.server.dz.
      mail IN CNAME node01.server.dz.
      db1 IN CNAME m2-dz.server.dz.
      db2 IN CNAME node01.server.dz.
      @ IN MX 0 node01.server.dz.

      #edit file zone reverse yang merupakan kebalikannya

      [root@m1-dz named]# vi db.100
      $TTL 3H
      @ IN SOA network.dz. root.network.dz. (
      0 ; serial
      1D ; refresh
      1H ; retry
      1W ; expire
      3H ) ; minimum
      @ IN NS m1-dz.network.dz.
      10 IN PTR network.dz. #Host ID atau oktet terakhir IP Address
      10 IN PTR m1-dz.network.dz.
      11 IN PTR node01.network.dz.
      12 IN PTR node02.network.dz.

      #untuk 192.168.101.0

      [root@m1-dz named]# vi db.101
      $TTL 3H
      @ IN SOA network.dz. root.network.dz. (
      0 ; serial
      1D ; refresh
      1H ; retry
      1W ; expire
      3H ) ; minimum
      @ IN NS m1-dz.network.dz.
      10 IN PTR server.dz.
      10 IN PTR m2-dz.server.dz.
      11 IN PTR node01.server.dz.
    10. Cek kembali hasil konfigurasi dan pastikan sama sekali tidak ada error
    11. [root@m1-dz named]# named-checkconf -z
      zone network.dz/IN: loaded serial 0
      zone server.dz/IN: loaded serial 0
      zone 100.168.192.in-addr.arpa/IN: loaded serial 0
      zone 101.168.192.in-addr.arpa/IN: loaded serial 0
      zone localhost.localdomain/IN: loaded serial 0
      zone localhost/IN: loaded serial 0
      zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
      zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
      zone 0.in-addr.arpa/IN: loaded serial 0
    12. Buka firewall untuk dns, dan aktifkan service dns named.
    13. #membuka firewall untuk dns
      [root@m1-dz named]# firewall-cmd --add-service=dns --permanent
      success
      [root@m1-dz named]# firewall-cmd --reload
      success
      #menjalankan service dns
      [root@m1-dz named]# systemctl start named
      [root@m1-dz named]# systemctl enable named
      Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
    14. Kita tes dns server dari server itu sendiri dan dari komputer lain
    15. #atur terlebih dahulu dns server yang digunakan
      [root@m1-dz named]# nmcli c modify eth0 ipv4.dns 192.168.100.10
      [root@m1-dz named]# nmcli c down eth0; nmcli c up eth0

      #kemudian testing menggunakan nslookup atau dig
      [root@m1-dz named]# nslookup node01.network.dz
      Server: 192.168.100.10
      Address: 192.168.100.10#53

      Name: node01.network.dz
      Address: 192.168.100.11

      [root@m1-dz named]# nslookup www.network.dz
      Server: 192.168.100.10
      Address: 192.168.100.10#53

      www.network.dz canonical name = m1-dz.network.dz.
      Name: m1-dz.network.dz
      Address: 192.168.100.10

      [root@m1-dz named]# nslookup 192.168.100.10
      Server: 192.168.100.10
      Address: 192.168.100.10#53

      10.100.168.192.in-addr.arpa name = network.dz.
      10.100.168.192.in-addr.arpa name = m1-dz.network.dz.

      [root@m1-dz named]# dig network.dz mx #MX Record

      ; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> network.dz mx
      ;; global options: +cmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24869
      ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 3

      ;; OPT PSEUDOSECTION:
      ; EDNS: version: 0, flags:; udp: 4096
      ;; QUESTION SECTION:
      ;network.dz. IN MX

      ;; ANSWER SECTION:
      network.dz. 10800 IN MX 0 node01.network.dz.

      ;; AUTHORITY SECTION:
      network.dz. 10800 IN NS m1-dz.network.dz.

      ;; ADDITIONAL SECTION:
      node01.network.dz. 10800 IN A 192.168.100.11
      m1-dz.network.dz. 10800 IN A 192.168.100.10

      ;; Query time: 12 msec
      ;; SERVER: 192.168.100.10#53(192.168.100.10)
      ;; WHEN: Sat Jun 23 14:31:28 WIB 2018
      ;; MSG SIZE rcvd: 114

    Server Node01 & Node02

    Server ini nantinya akan berisi service lainnya seperti web server, database, mail server, dll.

    1. Konfigurasi Hostname, Networking
    2. #Server NODE01
      [root@localhost ~]# hostnamectl set-hostname node01.network.dz
      [root@localhost ~]# nmcli c modify eth0 ipv4.addresses 192.168.100.11/24
      [root@localhost ~]# nmcli c modify eth0 ipv4.gateway 192.168.100.1
      [root@localhost ~]# nmcli c modify eth0 ipv4.dns 192.168.100.10
      [root@localhost ~]# nmcli c modify eth0 ipv4.method manual
      [root@localhost ~]# init 6

      #Server NODE02
      [root@localhost ~]# hostnamectl set-hostname node02.network.dz
      [root@localhost ~]# nmcli c modify eth0 ipv4.addresses 192.168.100.12/24
      [root@localhost ~]# nmcli c modify eth0 ipv4.gateway 192.168.100.1
      [root@localhost ~]# nmcli c modify eth0 ipv4.dns 192.168.100.10
      [root@localhost ~]# nmcli c modify eth0 ipv4.method manual
      [root@localhost ~]# init 6
    3. Lalu kita testing query dns dari server tersebut.
    4. [root@node01 ~]# ping m1-dz.network.dz
      PING m1-dz.network.dz (192.168.100.10) 56(84) bytes of data.
      64 bytes from m1-dz.network.dz (192.168.100.10): icmp_seq=1 ttl=64 time=0.390 ms
      64 bytes from m1-dz.network.dz (192.168.100.10): icmp_seq=2 ttl=64 time=0.413 ms

      --- m1-dz.network.dz ping statistics ---
      2 packets transmitted, 2 received, 0% packet loss, time 1001ms
      rtt min/avg/max/mdev = 0.390/0.401/0.413/0.023 ms
      [root@node01 ~]# ping www.network.dz
      PING m1-dz.network.dz (192.168.100.10) 56(84) bytes of data.
      64 bytes from network.dz (192.168.100.10): icmp_seq=1 ttl=64 time=0.367 ms
      64 bytes from network.dz (192.168.100.10): icmp_seq=2 ttl=64 time=0.412 ms

      --- m1-dz.network.dz ping statistics ---
      2 packets transmitted, 2 received, 0% packet loss, time 1001ms
      rtt min/avg/max/mdev = 0.367/0.389/0.412/0.029 ms
      [root@node01 ~]# ping db2.network.dz
      PING node02.network.dz (192.168.100.12) 56(84) bytes of data.
      64 bytes from node02.network.dz (192.168.100.12): icmp_seq=1 ttl=64 time=0.592 ms
      64 bytes from node02.network.dz (192.168.100.12): icmp_seq=2 ttl=64 time=0.450 ms

      --- node02.network.dz ping statistics ---
      2 packets transmitted, 2 received, 0% packet loss, time 1001ms
      rtt min/avg/max/mdev = 0.450/0.521/0.592/0.071 ms

      [root@node02 ~]# ping mail.network.dz
      PING m1-dz.network.dz (192.168.100.10) 56(84) bytes of data.
      64 bytes from m1-dz.network.dz (192.168.100.10): icmp_seq=1 ttl=64 time=0.406 ms
      64 bytes from m1-dz.network.dz (192.168.100.10): icmp_seq=2 ttl=64 time=0.502 ms
      64 bytes from m1-dz.network.dz (192.168.100.10): icmp_seq=3 ttl=64 time=0.521 ms

      --- m1-dz.network.dz ping statistics ---
      3 packets transmitted, 3 received, 0% packet loss, time 2003ms
      rtt min/avg/max/mdev = 0.406/0.476/0.521/0.053 ms
      #Ping domain yang berada di internet (opsional)
      [root@node02 ~]# ping google.com
      PING google.com (74.125.24.101) 56(84) bytes of data.
      64 bytes from 74.125.24.101 (74.125.24.101): icmp_seq=1 ttl=40 time=54.5 ms
      64 bytes from 74.125.24.101 (74.125.24.101): icmp_seq=2 ttl=40 time=44.0 ms
      64 bytes from 74.125.24.101 (74.125.24.101): icmp_seq=3 ttl=40 time=47.9 ms
      64 bytes from 74.125.24.101 (74.125.24.101): icmp_seq=4 ttl=40 time=45.0 ms
      64 bytes from 74.125.24.101 (74.125.24.101): icmp_seq=5 ttl=40 time=39.1 ms

      --- google.com ping statistics ---
      5 packets transmitted, 5 received, 0% packet loss, time 8072ms
      rtt min/avg/max/mdev = 39.146/46.163/54.566/5.081 ms

    5. Jika sudah berhasil maka konfigurasi sampai disini sudah selesai. Untuk melakukan troubleshooting kita dapat melihat log atau laporan yang dibuat oleh sistem dengan perintah dibawah ini pada DNS Server.
    6. [root@m1-dz ~]# tail -f /var/log/messages | grep named
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 193.0.14.129#53
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 192.58.128.30#53
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 192.36.148.17#53
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 198.97.190.53#53
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 202.12.27.33#53
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 192.5.5.241#53
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 192.228.79.201#53
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 192.203.230.10#53
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 199.7.91.13#53
      Jun 23 14:49:39 m1-dz named[1261]: error (no valid RRSIG) resolving 'arpa/DS/IN': 192.33.4.12#53

    Referensi

    Cara Mengganti Nama Interface Network ke eth0 Pada Ubuntu 16.04 (Xenial Xerus)

    Assalamualaikum gaes, udah lama nih ga update tulisan di web aku ini hehe. Nah kali ini saya akan memberikan informasi bagaimana cara melakukan penggantian nama interface network pada Ubuntu 16.04.

    Seperti yang sudah kita ketahui bersama bahwa Ubuntu telah merilis Ubuntu 16.04 (Xenial Xerus) sebagai versi baru dari varian LTS (Long Term Support). Dan disini ada hal yang menarik jika kita pertama kali mencoba Ubuntu 16.04. Apabila kita mencoba melakukan instalasi pada VMware Workstation atau VirtualBox kita akan mendapati bahwa nama interface network kita adalah ens33. Kemudian kita pasti akan bertanya tanya, kok namanya berubah jadi ens33 yaa? Biasanya kan eth0 kek gitu ada apa nih? Trus gimana nih cara ngerubahnya?.

    Oke, tenang-tenang. Sebenarnya itu adalah format default network interface yang baru dari Ubuntu. Tapi mungkin kita ini sudah terbiasa dengan format eth0. Nah, untuk mengubahnya berikut caranya :

    1. Silahkan login dan pakai akses root.
    2. Kemudian cek interface dengan perintah “ip a”.
      # ip a
      
      1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
          link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
          inet 127.0.0.1/8 scope host lo
             valid_lft forever preferred_lft forever
          inet6 ::1/128 scope host 
             valid_lft forever preferred_lft forever
      2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
          link/ether 00:0c:29:1f:ee:72 brd ff:ff:ff:ff:ff:ff
          inet 100.100.100.10/24 brd 100.100.100.255 scope global eth0
             valid_lft forever preferred_lft forever
          inet6 fe80::20c:29ff:fe1f:ee72/64 scope link 
             valid_lft forever preferred_lft forever
      
    3. Kita juga bisa mengecek nama interface yang dibuat system pada saat reboot dengan perintah “dmesg | grep eth”.
      # dmesg | grep eth
      
      [    3.050064] e1000 0000:02:01.0 eth0: (PCI:66MHz:32-bit) 00:0c:29:1f:ee:72
      [    3.050074] e1000 0000:02:01.0 eth0: Intel(R) PRO/1000 Network Connection
      [    3.057410] e1000 0000:02:01.0 ens33: renamed from eth0
      
    4. Berikutnya silahkan edit grub file agar interface kita berubah ke eth0. Buka dulu grub file dengan perintah ini :
      # sudo nano /etc/default/grub

      Dan rubahlah pada bagian “GRUB_CMDLINE_LINUX” yang awalnya seperti ini :

      GRUB_CMDLINE_LINUX=""

      Menjadi seperti ini :

      GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
    5. Setelah itu generate baru grub file nya :
      # sudo grub-mkconfig -o /boot/grub/grub.cfg
      
      Generating grub configuration file ...
      Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.
      Found linux image: /boot/vmlinuz-4.4.0-15-generic
      Found initrd image: /boot/initrd.img-4.4.0-15-generic
      Found memtest86+ image: /memtest86+.elf
      Found memtest86+ image: /memtest86+.bin
      done
      
    6. Ubahlah pada “/etc/network/interfaces” dan ganti nama interface menjadi eth0 :
      # nano /etc/network/interfaces
      
      auto lo
      iface lo inet loopback
      
      auto eth0
      iface eth0 inet static
              address 100.100.100.10
              netmask 255.255.255.0
              gateway 100.100.100.2
              dns-nameserver 8.8.8.8
    7. Terakhir reboot, dan cek kembali dengan perintah “ip a” atau “ifconfig”. Maka hasilnya nama interface telah kembali menjadi eth0.
      # ifconfig 
      eth0      Link encap:Ethernet  HWaddr 00:0c:29:1f:ee:72  
                inet addr:100.100.100.10  Bcast:100.100.100.255  Mask:255.255.255.0
                inet6 addr: fe80::20c:29ff:fe1f:ee72/64 Scope:Link
                UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                RX packets:7 errors:0 dropped:0 overruns:0 frame:0
                TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:1000 
                RX bytes:676 (676.0 B)  TX bytes:1184 (1.1 KB)
      
      lo        Link encap:Local Loopback  
                inet addr:127.0.0.1  Mask:255.0.0.0
                inet6 addr: ::1/128 Scope:Host
                UP LOOPBACK RUNNING  MTU:65536  Metric:1
                RX packets:160 errors:0 dropped:0 overruns:0 frame:0
                TX packets:160 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:1 
                RX bytes:11840 (11.8 KB)  TX bytes:11840 (11.8 KB)
      # ip a
      1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
          link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
          inet 127.0.0.1/8 scope host lo
             valid_lft forever preferred_lft forever
          inet6 ::1/128 scope host 
             valid_lft forever preferred_lft forever
      2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
          link/ether 00:0c:29:1f:ee:72 brd ff:ff:ff:ff:ff:ff
          inet 100.100.100.10/24 brd 100.100.100.255 scope global eth0
             valid_lft forever preferred_lft forever
          inet6 fe80::20c:29ff:fe1f:ee72/64 scope link 
             valid_lft forever preferred_lft forever
      

      Nah, konfigurasi telah selesai. Dan kini kita telah mempunyai nama dengan style yang lama hehe. Emang terkadang beberapa hal itu Old but Gold haha.

      Okay mungkin itu dulu yang bisa saya sampaikan. Jumpa lagi di lain tulisan yaa.
      Wassalamualaikum gaes

    [Lab 8.10] Reserve Proxy load balance pada CentOS 7

    Sebelumnya saya sudah membahas konfigurasi reserve proxy, yaitu sebuah modules pada apache yang memungkinkan sebuah server menjadi proxy untuk meneruskan permintaan web dari client menuju web server yang ada di belakang server proxy tersebut, tapi pada konfigurasi sebelumnya hanya terdapat satu server saja, kita dapat melakukan load balance pada Web server yang lebih dari satu.

    Server controller atau proxy akan mengirimkan secara merata pada setiap Web Server yang ada, misalnya permintaan pertama dialihkan ke node1 dan permintaan kedua akan dialihkan ke node2.

    Controller

    Kita konfigurasi server ini untuk mengaktifkan mod_proxy agar dapat meneruskan permintaan dari Client menuju Web Server.

    • Pertama konfigurasi IP Address pada Interface server menjadi static agar IP Address server permanen dan tidak berubah ubah.
    • [root@dz-httpd-controller ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
      TYPE=Ethernet
      BOOTPROTO=static
      DEFROUTE=yes
      PEERDNS=yes
      PEERROUTES=yes
      IPV4_FAILURE_FATAL=no
      IPV6INIT=yes
      IPV6_AUTOCONF=yes
      IPV6_DEFROUTE=yes
      IPV6_PEERDNS=yes
      IPV6_PEERROUTES=yes
      IPV6_FAILURE_FATAL=no
      NAME=enp0s3
      UUID=2bc33e21-067b-4a2f-a8b3-b90db29177eb
      DEVICE=enp0s3
      ONBOOT=yes
      IPADDR=192.168.56.40
      NETMASK=255.255.255.0
      GATEWAY=192.168.56.1
      DNS1=192.168.56.40
      DNS2=8.8.8.8

    • Sekarang kita install paket HTTPD yang berisi apache untuk menjalankan layanan Web Server pada CentOS 7.
    • yum install httpd
    • Aktifkan layanan httpd dan jalankan lewat systemctl.
    • systemctl enable httpd
      systemctl start httpd
    • Kemudian buka firewall untuk layanan HTTP Port 80 dan juga HTTPS Port 443 dengan firewall-cmd.
    • firewall-cmd --perma --add-port=80/tcp
      firewall-cmd --perma --add-port=443/tcp
      firewall-cmd --reload
    • Cek apakah modules sudah aktif, secara default sudah aktif.
    • [root@dz-httpd-controller ~]# grep "mod_proxy" /etc/httpd/conf.modules.d/00-proxy.conf 
      LoadModule proxy_module modules/mod_proxy.so
      LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
      LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
      LoadModule proxy_connect_module modules/mod_proxy_connect.so
      LoadModule proxy_express_module modules/mod_proxy_express.so
      LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
      LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so
      LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
      LoadModule proxy_http_module modules/mod_proxy_http.so
      LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
      LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
    • Buat file konfigurasi untuk mod_proxy pada Server ini. dan juga isi daftar domain Web Server yang akan diload balance.
    • [root@dz-httpd-controller ~]# vi /etc/httpd/conf.d/r_proxy.conf 
      <IfModule mod_proxy.c>
      ProxyRequests Off
      <Proxy *>
      Require all granted
      </Proxy>
      # backend server and forwarded path
      ProxyPass / balancer://cluster lbmethod=byrequests
      <proxy balancer://cluster>
      BalancerMember http://node1.centos.dz/ loadfactor=1
      BalancerMember http://node2.centos.dz/ loadfactor=1

      </proxy>
      </IfModule>

    • Restart layanan httpd untuk memperbarui semua konfigurasi.
    • systemctl restart httpd

    Node1

    Server ini adalah web server sebenarnya, pastikan sudah memiliki domain untuk server ini.

    • Pertama konfigurasi IP Address pada Interface server menjadi static agar IP Address server permanen dan tidak berubah ubah.
    • [root@dz-httpd ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
      TYPE=Ethernet
      BOOTPROTO=static
      DEFROUTE=yes
      PEERDNS=yes
      PEERROUTES=yes
      IPV4_FAILURE_FATAL=no
      IPV6INIT=yes
      IPV6_AUTOCONF=yes
      IPV6_DEFROUTE=yes
      IPV6_PEERDNS=yes
      IPV6_PEERROUTES=yes
      IPV6_FAILURE_FATAL=no
      NAME=enp0s3
      UUID=2bc33e21-067b-4a2f-a8b3-b90db29177eb
      DEVICE=enp0s3
      ONBOOT=yes
      IPADDR=192.168.56.41
      NETMASK=255.255.255.0
      GATEWAY=192.168.56.1
      DNS1=192.168.56.40
      DNS2=8.8.8.8

    • Sekarang kita install paket HTTPD yang berisi apache untuk menjalankan layanan Web Server pada CentOS 7.
    • yum install httpd
    • Aktifkan layanan httpd dan jalankan lewat systemctl.
    • systemctl enable httpd
      systemctl start httpd
    • Kemudian buka firewall untuk layanan HTTP Port 80 dan juga HTTPS Port 443 dengan firewall-cmd.
    • firewall-cmd --perma --add-port=80/tcp
      firewall-cmd --perma --add-port=443/tcp
      firewall-cmd --reload
    • Kita buat konten HTML pada server ini yang nantinya akan diakses.
    • [root@dz-httpd-node1 ~]# vi /var/www/html/index.html 
      <H1>WEBSITE HTTPD TESTING 123</H1>
      <h3>NODE1 WEB SERVER</h3>

    Node2

    Server ini adalah web server sebenarnya, pastikan sudah memiliki domain untuk server ini.

    • Pertama konfigurasi IP Address pada Interface server menjadi static agar IP Address server permanen dan tidak berubah ubah.
    • [root@dz-httpd ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
      TYPE=Ethernet
      BOOTPROTO=static
      DEFROUTE=yes
      PEERDNS=yes
      PEERROUTES=yes
      IPV4_FAILURE_FATAL=no
      IPV6INIT=yes
      IPV6_AUTOCONF=yes
      IPV6_DEFROUTE=yes
      IPV6_PEERDNS=yes
      IPV6_PEERROUTES=yes
      IPV6_FAILURE_FATAL=no
      NAME=enp0s3
      UUID=2bc33e21-067b-4a2f-a8b3-b90db29177eb
      DEVICE=enp0s3
      ONBOOT=yes
      IPADDR=192.168.56.42
      NETMASK=255.255.255.0
      GATEWAY=192.168.56.1
      DNS1=192.168.56.40
      DNS2=8.8.8.8

    • Sekarang kita install paket HTTPD yang berisi apache untuk menjalankan layanan Web Server pada CentOS 7.
    • yum install httpd
    • Aktifkan layanan httpd dan jalankan lewat systemctl.
    • systemctl enable httpd
      systemctl start httpd
    • Kemudian buka firewall untuk layanan HTTP Port 80 dan juga HTTPS Port 443 dengan firewall-cmd.
    • firewall-cmd --perma --add-port=80/tcp
      firewall-cmd --perma --add-port=443/tcp
      firewall-cmd --reload
    • Kita buat konten HTML pada server ini yang nantinya akan diakses.
    • [root@dz-httpd-node1 ~]# vi /var/www/html/index.html 
      <H1>WEBSITE HTTPD TESTING 123</H1>
      <h3>NODE2 WEB SERVER</h3>

    Kemudian testing pada client dengan mengakses server proxy lewat web browser.

    Dan kemudian kita lakukan refresh dan yang muncul adalah tampilan pada web server yang satunya lagi.

    [Lab 8.10] Reserve Proxy load balance pada CentOS 7

    Sebelumnya saya sudah membahas konfigurasi reserve proxy, yaitu sebuah modules pada apache yang memungkinkan sebuah server menjadi proxy untuk meneruskan permintaan web dari client menuju web server yang ada di belakang server proxy tersebut, tapi pada konfigurasi sebelumnya hanya terdapat satu server saja, kita dapat melakukan load balance pada Web server yang lebih dari satu.

    Server controller atau proxy akan mengirimkan secara merata pada setiap Web Server yang ada, misalnya permintaan pertama dialihkan ke node1 dan permintaan kedua akan dialihkan ke node2.

    Controller

    Kita konfigurasi server ini untuk mengaktifkan mod_proxy agar dapat meneruskan permintaan dari Client menuju Web Server.

    • Pertama konfigurasi IP Address pada Interface server menjadi static agar IP Address server permanen dan tidak berubah ubah.
    • [root@dz-httpd-controller ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
      TYPE=Ethernet
      BOOTPROTO=static
      DEFROUTE=yes
      PEERDNS=yes
      PEERROUTES=yes
      IPV4_FAILURE_FATAL=no
      IPV6INIT=yes
      IPV6_AUTOCONF=yes
      IPV6_DEFROUTE=yes
      IPV6_PEERDNS=yes
      IPV6_PEERROUTES=yes
      IPV6_FAILURE_FATAL=no
      NAME=enp0s3
      UUID=2bc33e21-067b-4a2f-a8b3-b90db29177eb
      DEVICE=enp0s3
      ONBOOT=yes
      IPADDR=192.168.56.40
      NETMASK=255.255.255.0
      GATEWAY=192.168.56.1
      DNS1=192.168.56.40
      DNS2=8.8.8.8

    • Sekarang kita install paket HTTPD yang berisi apache untuk menjalankan layanan Web Server pada CentOS 7.
    • yum install httpd
    • Aktifkan layanan httpd dan jalankan lewat systemctl.
    • systemctl enable httpd
      systemctl start httpd
    • Kemudian buka firewall untuk layanan HTTP Port 80 dan juga HTTPS Port 443 dengan firewall-cmd.
    • firewall-cmd --perma --add-port=80/tcp
      firewall-cmd --perma --add-port=443/tcp
      firewall-cmd --reload
    • Cek apakah modules sudah aktif, secara default sudah aktif.
    • [root@dz-httpd-controller ~]# grep "mod_proxy" /etc/httpd/conf.modules.d/00-proxy.conf 
      LoadModule proxy_module modules/mod_proxy.so
      LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
      LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
      LoadModule proxy_connect_module modules/mod_proxy_connect.so
      LoadModule proxy_express_module modules/mod_proxy_express.so
      LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
      LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so
      LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
      LoadModule proxy_http_module modules/mod_proxy_http.so
      LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
      LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
    • Buat file konfigurasi untuk mod_proxy pada Server ini. dan juga isi daftar domain Web Server yang akan diload balance.
    • [root@dz-httpd-controller ~]# vi /etc/httpd/conf.d/r_proxy.conf 
      <IfModule mod_proxy.c>
      ProxyRequests Off
      <Proxy *>
      Require all granted
      </Proxy>
      # backend server and forwarded path
      ProxyPass / balancer://cluster lbmethod=byrequests
      <proxy balancer://cluster>
      BalancerMember http://node1.centos.dz/ loadfactor=1
      BalancerMember http://node2.centos.dz/ loadfactor=1

      </proxy>
      </IfModule>

    • Restart layanan httpd untuk memperbarui semua konfigurasi.
    • systemctl restart httpd

    Node1

    Server ini adalah web server sebenarnya, pastikan sudah memiliki domain untuk server ini.

    • Pertama konfigurasi IP Address pada Interface server menjadi static agar IP Address server permanen dan tidak berubah ubah.
    • [root@dz-httpd ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
      TYPE=Ethernet
      BOOTPROTO=static
      DEFROUTE=yes
      PEERDNS=yes
      PEERROUTES=yes
      IPV4_FAILURE_FATAL=no
      IPV6INIT=yes
      IPV6_AUTOCONF=yes
      IPV6_DEFROUTE=yes
      IPV6_PEERDNS=yes
      IPV6_PEERROUTES=yes
      IPV6_FAILURE_FATAL=no
      NAME=enp0s3
      UUID=2bc33e21-067b-4a2f-a8b3-b90db29177eb
      DEVICE=enp0s3
      ONBOOT=yes
      IPADDR=192.168.56.41
      NETMASK=255.255.255.0
      GATEWAY=192.168.56.1
      DNS1=192.168.56.40
      DNS2=8.8.8.8

    • Sekarang kita install paket HTTPD yang berisi apache untuk menjalankan layanan Web Server pada CentOS 7.
    • yum install httpd
    • Aktifkan layanan httpd dan jalankan lewat systemctl.
    • systemctl enable httpd
      systemctl start httpd
    • Kemudian buka firewall untuk layanan HTTP Port 80 dan juga HTTPS Port 443 dengan firewall-cmd.
    • firewall-cmd --perma --add-port=80/tcp
      firewall-cmd --perma --add-port=443/tcp
      firewall-cmd --reload
    • Kita buat konten HTML pada server ini yang nantinya akan diakses.
    • [root@dz-httpd-node1 ~]# vi /var/www/html/index.html 
      <H1>WEBSITE HTTPD TESTING 123</H1>
      <h3>NODE1 WEB SERVER</h3>

    Node2

    Server ini adalah web server sebenarnya, pastikan sudah memiliki domain untuk server ini.

    • Pertama konfigurasi IP Address pada Interface server menjadi static agar IP Address server permanen dan tidak berubah ubah.
    • [root@dz-httpd ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
      TYPE=Ethernet
      BOOTPROTO=static
      DEFROUTE=yes
      PEERDNS=yes
      PEERROUTES=yes
      IPV4_FAILURE_FATAL=no
      IPV6INIT=yes
      IPV6_AUTOCONF=yes
      IPV6_DEFROUTE=yes
      IPV6_PEERDNS=yes
      IPV6_PEERROUTES=yes
      IPV6_FAILURE_FATAL=no
      NAME=enp0s3
      UUID=2bc33e21-067b-4a2f-a8b3-b90db29177eb
      DEVICE=enp0s3
      ONBOOT=yes
      IPADDR=192.168.56.42
      NETMASK=255.255.255.0
      GATEWAY=192.168.56.1
      DNS1=192.168.56.40
      DNS2=8.8.8.8

    • Sekarang kita install paket HTTPD yang berisi apache untuk menjalankan layanan Web Server pada CentOS 7.
    • yum install httpd
    • Aktifkan layanan httpd dan jalankan lewat systemctl.
    • systemctl enable httpd
      systemctl start httpd
    • Kemudian buka firewall untuk layanan HTTP Port 80 dan juga HTTPS Port 443 dengan firewall-cmd.
    • firewall-cmd --perma --add-port=80/tcp
      firewall-cmd --perma --add-port=443/tcp
      firewall-cmd --reload
    • Kita buat konten HTML pada server ini yang nantinya akan diakses.
    • [root@dz-httpd-node1 ~]# vi /var/www/html/index.html 
      <H1>WEBSITE HTTPD TESTING 123</H1>
      <h3>NODE2 WEB SERVER</h3>

    Kemudian testing pada client dengan mengakses server proxy lewat web browser.

    Dan kemudian kita lakukan refresh dan yang muncul adalah tampilan pada web server yang satunya lagi.

    [Lab 8.8] Melihat statistik Web Site dengan AWStats pada CentOS 7

    Ketika kita membuat sebuah web server publik yang dapat diakses, pasti terdapat pengujung pengujung web server kita, jika kita ingin mengetahui statistik pengunjung web server kita maka harus menginstall aplikasi Analyzer pada Web Server tersebut.

    Aplikasi statistik yang saya praktekan kali ini adalah AWStats yang ada di OS CentOS 7, aplikasi ini tidak ada di repo lokal tetapi harus menggunakan repo EPEL terlebih dahulu, berikut ini adalah sedikit informasi server yang akan saya konfigurasi :

      Sistem Operasi : Linux CentOS 7
      IP Address : 192.168.56.40 (enp0s3)
      Domain Name : centos.dz

    Repo EPEL

    Kita aktifkan repo EPEL terlebih dahulu agar dapat menginstall AWStats.

    • Pertama konfigurasi IP Address pada Interface server menjadi static agar IP Address server permanen dan tidak berubah ubah.
    • [root@dz-httpd ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
      TYPE=Ethernet
      BOOTPROTO=static
      DEFROUTE=yes
      PEERDNS=yes
      PEERROUTES=yes
      IPV4_FAILURE_FATAL=no
      IPV6INIT=yes
      IPV6_AUTOCONF=yes
      IPV6_DEFROUTE=yes
      IPV6_PEERDNS=yes
      IPV6_PEERROUTES=yes
      IPV6_FAILURE_FATAL=no
      NAME=enp0s3
      UUID=2bc33e21-067b-4a2f-a8b3-b90db29177eb
      DEVICE=enp0s3
      ONBOOT=yes
      IPADDR=192.168.56.40
      NETMASK=255.255.255.0
      GATEWAY=192.168.56.1
      DNS1=192.168.56.40
      DNS2=8.8.8.8

    • Install wget, aplikasi untuk mendownload sesuatu.
    • yum install wget
    • Kemudian jalankan perintah ini
    • wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
      rpm -ivh epel-release-7-9.noarch.rpm

    Web Server

    Kita buat sebuah Web Server dengan Apache.

    • Sekarang kita install paket HTTPD yang berisi apache untuk menjalankan layanan Web Server pada CentOS 7.
    • yum install httpd
    • Aktifkan layanan httpd dan jalankan lewat systemctl.
    • systemctl enable httpd
      systemctl start httpd
    • Kemudian buka firewall untuk layanan HTTP Port 80 dan juga HTTPS Port 443 dengan firewall-cmd.
    • firewall-cmd --perma --add-port=80/tcp
      firewall-cmd --perma --add-port=443/tcp
      firewall-cmd --reload
    • Kita lakukan testing pada Client apakah Server sudah dapat melayani permintaan Web.
    • Untuk menghilangkan konten default diatas kita harus melakukan beberapa hal, pertama hapus file konfigurasi welcome.conf
    • rm /etc/httpd/conf.d/welcome.conf
    • Lalu buat file HTML pada direktori /var/www/html dengan nama index.html
    • [root@dz-httpd ~]# vi /var/www/html/index.html
      <h1>WEBSITE HTTPD TESTING 123</h1>
    • Kemudian restart layanan httpd untuk memperbarui konfigurasi Web Server.
    • systemctl restart httpd
    • Kembali kita lihat hasilnya pada Client.

    AWStats

    Kemudian kita lanjut pada konfigurasi AWStats.

    • Install AWStats dari repository EPEL.
    • yum --enablerepo=epel -y install awstats
    • Kemudian rename konfigurasi yang telah otomatis terbuat dengan hostname menjadi alamat URL Web server.
    • mv /etc/awstats/awstats.dz-httpd.conf /etc/awstats/awstats.www.centos.dz.conf
    • Lalu edit file konfigurasi tersebut.
    • [root@dz-httpd ~]# vi /etc/awstats/awstats.www.centos.dz.conf 

      SiteDomain="www.centos.dz"
      HostAliases="localhost 127.0.0.1 REGEX[^.*centos\.dz$] REGEX[^192\.168\.56\.]"

    • Konfigurasi web AWStats, untuk mengizinkan IP Address client agar dapat mengakses AWStats.
    • [root@dz-httpd ~]# vi /etc/httpd/conf.d/awstats.conf

      # Apache 2.4
      Require ip 192.168.56.0/24

    • Restart layanan httpd untuk memperbarui semua konfigurasi.
    • systemctl restart httpd
    • Kemudian kita lakukan update konfigurasi pada AWStats.
    • [root@dz-httpd ~]# /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=www.centos.dz -update
      Create/Update database for config "/etc/awstats/awstats.www.centos.dz.conf" by AWStats version 7.4 (build 20150714)
      From data in log file "/var/log/httpd/access_log"...
      Phase 1 : First bypass old records, searching new record...
      Searching new records from beginning of log file...
      Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
      Jumped lines in file: 0
      Parsed lines in file: 32
      Found 0 dropped records,
      Found 0 comments,
      Found 0 blank records,
      Found 0 corrupted records,
      Found 0 old records,
      Found 32 new qualified records.
    • Pada client kita buka http://[url]/awstats/awstats.pl untuk melihat statistik.