Wednesday, December 28, 2016

Error Ubuntu - Unable to correct problems, you have held broken packages

The following packages have unmet dependencies:
 apache2 : Depends: apache2-bin (= 2.4.7-1ubuntu4.13) but it is not going to be installed
           Recommends: ssl-cert but it is not installable
E: Unable to correct problems, you have held broken packages.


Solution

   sudo echo "deb http://archive.ubuntu.com/ubuntu trusty main universe restricted multiverse" > /etc/apt/sources.list

   sudo apt-get update
Share:

Forward NAT Mikrotik

Ada kalanya server yang ada di jaringan kita perlu bisa diakses dari jaringan publik. Misalnya karena ada karyawan yang bersifat mobile dan harus bisa mengakses data yang ada di server tersebut. Yang kita butuhkan adalah IP publik. Ip publik statis lebih direkomandasikan. Kita bisa saja langsung memasang ip publik ke server kita, maka server tersebut sudah bisa diakses dari internet. Masalahnya adalah bagaimana jika kita hanya memiliki satu ip publik, bagaimana dengan komputer lain yang juga harus terkoneksi dengan internet. Bagaimana juga dengan management keamanan untuk traffic yang menuju ke Server tersebut ?.
Pada mikrotik, kebutuhan tersebut bisa diatasi dengan cara port forwading menggunakan fitur NAT. Agar bandiwidth bisa di manage dan firewall filtering bisa dilakukan, kita tempatkan server dibawah router mikrotik. Artinya, server berada di jaringan lokal, contoh topologi : 
Agar Server bisa diakses dari internet, set fowarding di router mikrotik dengan fitur firewall NAT. Fowarding ini akan membalokkan traffic yang menuju ke IP publik yang terpasang di router menuju ke IP lokal server. Dengan begitu, seolah-olah client dari internet berkomunikasi dengan server meminjam IP public router mikrotik. Langkah pembuatan rule, masuk ke menu IP --> Firewall --> klik tab "NAT", tambahkan rule baru dengan menekan tombol "add" atau tanda "+" berwarna merah. 
 
Sekedar tips, jika tidak yakin dengan port dan protokol yang digunakan oleh server, bisa di kosongkan terlebih dahulu. Dengan begitu, semua traffic akan difoward ke server. Jika NAT sudah berhasil, baru kemudian kita tentukan protokol dan port yang harus di foward ke server. Dengan konfigurasi diatas, rule fowarding sudah selesai. Akan tetapi jika kita memiliki lebih dari satu ip public, kita butuh satu rule lagi. Rule yang difungsikan untuk mengarahkan traffic respon dari server ke jalur yang sama dengan traffic request. Misal request masih dari IP Public A, maka respon dari server juga harus keluar dari IP Public A. Jika ternyata traffic respon keluar dari IP Public B, maka traffic tersebut tidak dikenali oleh cilent yang mencoba mengakses server. Rule yang harus dibuat seperti berikut : 
 
Rule NAT untuk fowarding sudah selesai, jika kita memiliki lebih dari satu server sedangkan kita hanya memiliki satu IP public, kita bisa foward berdasarkan port. Misal untuk server A dapat diakses melalui port 5678, kemudian server B melalui port 8910. Dengan logika tersebut, ketika router menerima koneksi dari port 5678, maka koneksi tadi akan diteruskan ke Server A, begitu juga ketika router menerima koneksi dari port 8910, maka akan diteruskan ke server B. Sekarang coba akses server dari jaringan internet menggunakan ip public yang terpasang di mikrotik.
Hairpin NAT 
Kemudian kira - kira bisa tidak server diakses dari jaringan Lokal menggunakan ip public di mikrotik tadi ?. Jawabannya adalah tidak bisa. Kenapa ?
Pada saat diakses dari internet, misal client memiliki IP Public 2.2.2.2, aliran trafficnya akan seperti berikut : 
 
Dari aliran data diatas, ketika Server diakses dari internet data bisa dikirim dengan baik oleh router.
Tetapi lain hal, jika diakses dari jaringan Lokal, misal client memiliki IP Address 192.168.88.2, maka aliran data akan menjadi seperti berikut :
 
Yang terjadi adalah server langsung mengirim traffic respon langsung ke client tanpa melewati router, karena source address ada dan dikenali di jaringan Server (masih dalam 1 segmen IP). Traffic respon yang dikirim dari server akan ditolak oleh client, karena sebelumnya client me-request ke router mikrotik terlebih dahulu, bukan langsung ke Server. Client hanya mau menerima respon dari ip yang sebelumnya dituju, yakni 202.123.123.123. Nah solusinya adalah dengan menambahkan Rule NAT untuk traffic dari Lokal menuju Server. 
 
Rule NAT diatas akan mengubah source ip address yang sebelumnya adalah ip komputer client, digantikan dengan ip router Mikrotik ketika data diteruskan dari router Mikrotik ke server. Maka server akan mengirimkan data respon ke router Mikrotik, bukan langsung ke komputer clinet. Dengan rule nat baru tersebut, maka aliran data akan menjadi seperti berikut : 
 
Dengan begitu, client dari jaringan lokal bisa mengakses ke Server dengan IP Public yang terpasang di router Mikrotik. Konfigurasi diatas disebut dengan Hairpin NAT.

Link : http://mikrotik.co.id/artikel_lihat.php?id=75
Share:

Virtual Host Ubuntu

Membuat Virtual Host di Ubuntu

Virtual server
Description Web Hosting
Virtual
Apache mendukung virtual hosting dengan basis IP dan nama domain. Sehingga memungkinkan 1 server memiliki banyak domain.
Berikut langkah untuk konfigurasi virtual host di ubuntu:
  • Install apache
1$sudo apt-get install apache2
Secara default, document root apache terletak di /var/www, dan konfigurasi file terletak di/etc/apache2/apache2.conf. Konfigurasi tambahan terletak di /etc/apache2, seperti /etc/apache2/mods-enabled (untuk module apache), /etc/apache2/sites-enabled (untuk virtual hosts), dan/etc/apache2/conf.d.
  • Kita nonaktifkan dulu default virtual host apachenya
1$sudo a2dissite default
kemudian restart apache
1$sudo /etc/init.d/apache restart

Contoh pembuatan Virtual Host baru

Dalam kasus ini, seluruh isi web saya letakkan di /home/satu.com/html. Direktori ini bisa anda sesuaikan dengan kebutuhan. Tidak harus di /home
  • kemudian membuat direktori yang saya butuhkan:
1$sudo mkdir -p /home/satu.com/html
2$sudo mkdir /home/satu.com/logs
3$sudo mkdir -p /home/dua.com/html
4$sudo mkdir /home/dua.com/logs
Setiap konfigurasi virtual host tersimpan dalam sebuah file yang diberi nama domain dan terletak pada direktori /etc/apache2/sites-available/. Dalam contoh ini, saya akan membuat file dengan basis nama domain satu.com dan dua.com
  • pertama, saya buat dulu file satu.com di /etc/apache2/sites-available
1$sudo nano /etc/apache2/sites-available/satu.com
dan masukkan konfigurasi berikut:
1
2
3
4
5
6
7
8
<VirtualHost *:80>
ServerAdmin admin@satu.com
ServerName satu.com
ServerAlias http://www.satu.com
DocumentRoot /home/satu.com/html/
ErrorLog /home/satu.com/logs/error.log
CustomLog /home/satu.com/logs/access.log combined
</VirtualHost>
  • Selanjutnya membuat file konfigurasi dua.com
1$sudo nano /etc/apache2/sites-available/dua.com
dan isikan konfigurasi berikut:
1<VirtualHost *:80>
2ServerAdmin admin@dua.com
3ServerName dua.com
4ServerAlias http://www.dua.com
5DocumentRoot /home/dua.com/html/
6ErrorLog /home/dua.com/logs/error.log
7CustomLog /home/dua.com/logs/access.log combined
8</VirtualHost>
  • Selanjutnya mengaktifkan situs:
1$sudo a2ensite satu.com
2$sudo a2ensite dua.com
Sekarang, restart apache untuk mengetahui hasil perubahan:
1$sudo /etc/init.d/apache2 restart
Lakukan reload konfigurasi setelah anda melakukan editing file virtual host
1$sudo /etc/init.d/apache2 reload
Terakhir, masukkan konten web yang berbeda pada /home/satu.com/html dan /home/dua.com/html. Kemudian Buka browser anda, lakukan akses ke satu.com dan dua.com untuk mencobanya.
)*NB
Untuk implementasi secara lokal, anda bisa memanfaatkan bind9 sebagai DNS Server, sehingga dapat  membuat domain yang anda inginkan.
Share:

Tuesday, December 27, 2016

Downgrade PHP 7 to PHP 5.6 on Ubuntu 16.04 Xenial

How to install PHP 5.6 on Ubuntu 16.04 Xenial and replace php 7. Let’s assume you have a fresh Ubuntu 16.04 server.

Install add-apt-repository:
# sudo apt-get install python-software-properties

Add repository for PHP 5.6:
# sudo add-apt-repository -y ppa:ondrej/php

Update package lists:
sudo apt-get update


Install php5-fpm:
# sudo apt-get install php5.6-fpm
Check the result:
# php -v
PHP 7.0.4-7ubuntu2.1 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies


Run the following:
# sudo mv /usr/bin/php /usr/bin/php7
# sudo mv /usr/bin/php5.6 /usr/bin/php
Check again
# php -v
PHP 5.6.23-2+deb.sury.org~xenial+1 (cli) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
Restart Apache
# service apache2 restart
Share: