Archive for April, 2016

Sejak diberlakukan larangan menggunakan dns luar oleh pihak kominfo, tidak banyak pilihan server public dns yang cukup kencang dan memiliki filtering (porno, judi dsb) yang mumpuni. Tuts kali ini adalah catatan membuat resolver/caching/proxy dns menggunakan dnscrypt dan unbound untuk mengarahkan dns agar menggunakan public dns dari pihak OpenDNS.

OS yang digunakan adalah Ubuntu 14.10 64-bit (sesuaikan command-nya bila anda menggunakan distro debian/centos), let’s start :

A. Instalasi DNSCrypt :

1. apt-get update
2. apt-get install build-essential
3. cd /usr/local/src
4. wget http://download.libsodium.org/libsodium/releases/LATEST.tar.gz -O – | tar -xz
5. cd libsodium-1.0.10/ #versi saat catatan ini dibuat
6. ./configure
7. make
8. make install
9. cd ..
10. rm -rf libsodium-1.0.10
11. wget http://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-proxy-1.6.1.tar.gz -O – | tar -xz
12. cd dnscrypt-proxy-1.6.1/ #versi saat catatan ini dibuat
13. ./configure
14. make
15. make install
16. cd ..
17. rm -rf dnscrypt-proxy-1.6.1*
18. nano /etc/rc.local
/usr/local/sbin/dnscrypt-proxy -R cisco -a 127.0.0.1:5353 –daemonize
exit 0
ctrl+x (keluar dan simpan)

Sampai langkah ini instalasi DNSCrypt selesai, lanjutkan ke instalasi Unbound.

B. Instalasi Unbound DNS Resolver :

1. apt-get install unbound
2. mv /etc/unbound/unbound.conf /etc/unbound/unbound.conf.default
3. nano /etc/unbound/unbound.conf

server:
auto-trust-anchor-file: “/var/lib/unbound/root.key”
logfile: “/var/log/unbound.log”
log-time-ascii: yes
module-config: “iterator”
do-not-query-localhost: no
#ip server-dns ini
interface: 127.0.0.1
interface: 192.168.100.250
#network yang diijinkan menggunakan dns ini
access-control: 127.0.0.1 allow
access-control: 192.168.0.0/16 allow
access-control: 10.0.0.0/24 allow
#lpse diarahkan ke ip local spse
local-data: “lpse.baritoselatankab.go.id. 10800 IN A 192.168.100.194”
forward-zone:
name: “.”
forward-addr: 127.0.0.1@5353
forward-first: no
remote-control:
control-enable: no

4. nano /etc/resolv.conf
nameserver 127.0.0.1
5. reboot

Setelah reboot, lakukan pemeriksaan ulang terhadap konfigurasi sebagai berikut :
1. netstat -tulpn | grep 53
–apakah ada port 53 (unbound) dan 5353 (dnscrypt)?
2. ping google.com
–apakah reply?
bila kedua langkah diatas sukses, ujicoba dari client dengan mengarahkan dns nya ke ip server-dns ini.

Selamat Mencoba! DWYOR…

Melanjutkan catatan PostgreSQL 8.4 Upgrade ke 9.5 (SPSE Master-Slave Streaming Replication #1), pada langkah ini kita mulai mengaktifkan fitur hot_standy dan streaming replication pada Postgresql 9.5.

Persiapan awal adalah menyiapkan 2 server yang sudah terinstall Postgresql 9.5, sudah dikonfigurasi dan berjalan dengan baik seperti petunjuk SPSE Master-Slave Streaming Replication #1.

I. Konfigurasi Master Server

Master-server adalah server utama yang diakses oleh pengguna, database dari server ini akan direplikasi dan dikirimkan secara realtime ke Slave-server

1. nano /var/lib/pgsql/9.5/data/postgresql.conf
cari dan sesuaikan menjadi baris berikut :
listen_addresses = ‘localhost,192.168.100.194’
##sesuaikan 192.168.100.194 dengan ip master-server anda
wal_level = hot_standby
max_wal_senders = 1
wal_keep_segments = 50
2. nano /var/lib/pgsql/9.5/data/pg_hba.conf
tambahkan pada akhir file baris berikut :
host replication postgres 192.168.100.195/32 trust
##sesuaikan 192.168.100.195 dengan ip slave-server anda
3. service postgresql-9.5 restart
4. persiapan data awal yang akan direplikasi dan dicopy ke slave-server :
su – postgres
psql -c “SELECT pg_start_backup(‘replbackup’);”
tar cfP /tmp/db_file_backup.tar /var/lib/pgsql/9.5/data
psql -c “SELECT pg_stop_backup();”
exit
5. scp /tmp/db_file_backup.tar root@192.168.100.195:/tmp/

Sampai pada langkah ini, persiapan replikasi di master-server sudah selesai.

II. Konfigurasi Slave Server

Slave-server adalah server cadangan dan tidak diakses langsung oleh pengguna, database dari Master-server direplikasi secara realtime ke Slave-server ini.

1. service postgresql-9.5 stop
2. mv /var/lib/pgsql/9.5/data/ /var/lib/pgsql/9.5/data.old
3. tar xvfP /tmp/db_file_backup.tar
4. rm -f /var/lib/pgsql/9.5/data/postmaster.pid
5. nano /var/lib/pgsql/9.5/data/postgresql.conf
cari dan sesuaikan menjadi baris berikut :
hot_standby = on
6. cp /usr/pgsql-9.5/share/recovery.conf.sample /var/lib/pgsql/9.5/data/recovery.conf
7. nano /var/lib/pgsql/9.5/data/recovery.conf
cari dan sesuaikan menjadi baris berikut :
standby_mode = on
primary_conninfo = ‘host=192.168.100.194 port=5432’
#sesuaikan ip 192.168.100.194 dengan ip master-server anda
8. chown postgres.postgres /var/lib/pgsql/9.5/data/recovery.conf
9. service postgresql-9.5 start

Sampai sini selesai sudah catatan Master-Slave Streaming Replication #2, periksa log untuk memastikan proses replication berjalan sukses :

tail -f /var/lib/pgsql/9.5/data/pg_log/postgresql-[hari].log
—database system is ready to accept read only connections—

pengujian replikasi sudah berjalan dengan baik (update 21/04/206) :
1. di master-server :
su – postgres
psql
CREATE TABLE rep_test (test varchar(40));
INSERT INTO rep_test VALUES (‘data satu’);
INSERT INTO rep_test VALUES (‘data dua’);
INSERT INTO rep_test VALUES (‘lalala’);
INSERT INTO rep_test VALUES (‘hello there’);
INSERT INTO rep_test VALUES (‘blahblah’);
\q
exit

2. di slave-server :
su – postgres
psql
SELECT * FROM rep_test;
#akan tampil data seperti yang diisikan ke database master-server

Database slave-server sudah siap, lanjutkan dengan melakukan instalasi SPSE di slave-server dengan mengacu pada tuts Instalasi SPSE 3.6 SP2 dan SPSE 4.0 sehingga jika diperlukan slave-server siap diaktifkan mengganti tugas master-server.

Untuk full-duplikasi SPSE, juga diperlukan folder /home/file/file_production dilakukan rsync berkala (misalnya setiap 10 menit) sehingga konsistensi antara master-server dan slave-server terjaga.

Selamat Mencoba D.W.Y.O.R…

(referensi : https://opensourcedbms.com/dbms/setup-replication-with-postgres-9-2-on-centos-6redhat-el6fedora/, https://www.digitalocean.com/community/tutorials/how-to-set-up-master-slave-replication-on-postgresql-on-an-ubuntu-12-04-vps)

Catatan ini akan dibuat secara bertahap dengan tujuan akhir ‘server SPSE yang bisa berjalan dengan sistem master-slave secara streaming’, sehingga bila server-master mengalami kegagalan perangkat dan tidak dapat difungsikan, dengan sedikit mengubah konfigurasi pada server-slave akan langsung menjalankan tugas menggantikan server-master.

Fitur streaming replication (dalam hal ini kita akan menggunakan hot_standby) hanya ada pada PostgreSQL 8.5 Alpha3 keatas, seperti dilansir oleh https://wiki.postgresql.org/wiki/Hot_Standby :
“Hot Standby is the name for the capability to run queries on a database that is currently performing archive recovery. Log Shipping replication allows you to create one or more standby nodes that are replicas of the primary node (or master node). Standby nodes can then be used for read-only query access.
Hot Standby was developed for inclusion in PostgreSQL 9.0 by Simon Riggs of 2ndQuadrant via public sponsorship.
The feature was committed in PostgreSQL 8.5 Alpha3 and is available in PostgreSQL 9.0 and above. See the Hot Standby docs for full details.
This feature augments streaming replication feature that was introduced in PostgreSQL 9.1, though it does not rely on it and has minimal interaction with it.”

Server SPSE menggunakan Centos 6 dan Postgresql 8.4, maka dilakukan upgrade database ke PostgreSQL 9.5, versi terbaru (stable) saat catatan ini ditulis. Postgresql 9.5 bisa di install berdampingan dengan Postgresql 8.4 tanpa saling mengganggu, proses instalasi ini dijalankan tanpa terlebih dahulu me-remove Postgresql 8.4 yang sedang berjalan.

1. yum update
2. yum upgrade
3. netstat -tulpn | grep postmaster
(127.0.0.1:5432 – ini adalah postgresql yang sedang berjalan/digunakan)
4. rpm -ivh https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-6-x86_64/pgdg-centos95-9.5-2.noarch.rpm
5. yum install postgresql95 postgresql95-server postgresql95-devel postgresql95-contrib
6. service postgresql-9.5 initdb
7. lakukan proses backup database dari Postgresql 8.4 :
su – postgres
psql -l (misal databasenya = epns-prod)
pg_dump -U postgres epns-prod -f epns-prod.sql (akan terbentuk file /var/lib/pgsql/epns-prod.sql)
8. nano /var/lib/pgsql/9.5/data/pg_hba.conf
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
9. service postgresql stop
service postgresql-9.5 start
10. chkconfig postgresql off
chkconfig postgresql-9.5 on
11. su – postgres
psql
CREATE USER epns password ‘epns’;
\q
createdb -U postgres -O epns epns-prod;
psql -U postgres -d epns-prod -f epns-prod.sql
exit
12. service postgresql-9.5 restart

Sampai sini proses upgrade dan pemindahan database ke Postgresql 9.5 sudah selesai, silakan melakukan check dan re-check kembali terhadap server SPSE anda, apakah sudah bisa berjalan dengan normal? Bila tidak ada masalah , lanjutkan dengan uninstall Postgresql 8.4 :

13. yum remove postgresql postgresql-server

Siap untuk melanjutkan ke SPSE Master-Slave Streaming Replication #2?…tunggu tanggal main nya!

Pengaturan beda bandwith untuk mikrotik, contoh nya seperti dibawah ini (sesuaikan dengan kondisi jaringan anda) :

1. Persiapan NICE.RSC

/system scheduler
add comment=update-nice interval=1w name=update-nice-rsc on-event=”:if ([:len \
[/file find name=nice.rsc]] > 0) do={ /file remove nice.rsc }; /tool fetch\
\_address=ixp.mikrotik.co.id src-path=/download/nice.rsc mode=http; /impor\
t nice.rsc” policy=\
ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=\
jan/01/1970 start-time=06:00:00

2. Persiapan Mangle

/ip firewall mangle
add action=mark-connection chain=forward dst-address-list=nice \
new-connection-mark=conn-IIX-04 src-address=192.168.12.0/24
add action=mark-connection chain=forward dst-address-list=!nice \
new-connection-mark=conn-INT-04 src-address=192.168.12.0/24
add action=mark-packet chain=forward connection-mark=conn-IIX-04 \
new-packet-mark=IIX-04
add action=mark-packet chain=forward connection-mark=conn-INT-04 \
new-packet-mark=INT-04

3. Persiapan Queue

/queue tree
add burst-limit=21M burst-threshold=1M burst-time=1m30s comment=”Main BW” \
max-limit=14M name=Total-Download parent=bridge1_dmz queue=default
add burst-limit=21M burst-threshold=1M burst-time=1m30s max-limit=14M name=\
Download-IIX parent=Total-Download queue=default
add burst-limit=21M burst-threshold=1M burst-time=1m30s max-limit=14M name=\
Download-INT parent=Total-Download queue=default

add name=lokal-041 \
packet-mark=IIX-04 parent=Download-IIX queue=default
add burst-limit=4M burst-threshold=512k burst-time=20s \
max-limit=2M name=lokal-042 \
packet-mark=INT-04 parent=Download-INT queue=default