Showing posts with label jaringan. Show all posts
Showing posts with label jaringan. Show all posts

Konfigurasi NGINX sebagai Reverse Proxy ke lebih dari satu services multi port

12:47 AM Add Comment
NGINX
Tutorial kali ini kita akan melakukan konfigurasi NGINX sebagai Reverse Proxy ke lebih dari satu server atau host aplikasi RESTful API yang berjalan di port nya masing-masing atau multi port. Contohnya anda mempunyai lebih dari satu docker container yang berjalan di mesin komputer yang sama, dan aplikasi client hanya bisa request melalui port 80 saja, atau port 443 jika request menggunakan https. Atau mungkin hanya service biasa yang tidak di bungkus dengan docker container yang langsung berjalan di localhost atau di mesin server yang lain dengan port tertentu. Contoh ilustrasinya seperti ini:
Ilustrasi NGINX services multi port

Baiklah, kita akan membuat NGINX berfungsi sebagai reverse proxy seperti gambar di atas. Server yang kita gunakan untuk menjalankan nginx menggunakan operating system Linux Ubuntu.  Ikuti langkah-langkah berikut ini: 1. Install nginx di server linux ubuntu:
$ sudo apt-get install nginx
2. Buatlah file konfigurasi baru di dalam folder sites-available:
$ sudo vi /etc/nginx/sites-available/api.example.com.conf
3. Copy paste script berikut ke dalam file /etc/nginx/sites-available/api.example.com.conf
server {
 keepalive_timeout 30;
 # SSL configuration
 listen 443 ssl default_server;
 listen [::]:443 ssl default_server;
 server_name api.example.com;
 ssl_certificate /etc/nginx/ssl/certificate.crt;
 ssl_certificate_key /etc/nginx/ssl/certificate.key;
 ssl_session_cache    shared:SSL:10m;
 ssl_session_timeout  10m;
 # application-a
 location /application-a {
  include /etc/nginx/global/include.request.conf;
  rewrite ^/application-a(/.*) $1 break;
  proxy_pass http://127.0.0.1:8881;
 }
 # application-b
 location /application-b {
  include /etc/nginx/global/include.request.conf;
  rewrite ^/application-b(/.*) $1 break;
  proxy_pass http://127.0.0.1:8882;
 }
 # application-c
 location /application-c {
  include /etc/nginx/global/include.request.conf;
  rewrite ^/application-c(/.*) $1 break;
  proxy_pass http://127.0.0.1:8883;
 }
 location / {
  try_files $uri $uri/ =404;
 }
 access_log /etc/nginx/logs/access.log;
 error_log  /etc/nginx/logs/error.log;
}

server {
 listen 80 default_server;
 listen [::]:80 default_server;
 server_name    api.example.com;
 rewrite        ^ https://$server_name$request_uri? permanent;
}
Ganti api.example.com dengan nama domain anda. Jika tidak punya nama domain, ganti dengan ip public server anda. 4. Buat file /etc/nginx/global/include.request.conf
$ sudo mkdir /etc/nginx/global
$ sudo vi /etc/nginx/global/include.request.conf
5. Copy paste script berikut ke dalam file /etc/nginx/global/include.request.conf
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
6. Buat file /etc/nginx/ssl/certificate.crt dan /etc/nginx/ssl/certificate.key sehingga bisa di akses melalui https.
$ sudo mkdir /etc/nginx/ssl
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/certificate.key -out /etc/nginx/ssl/certificate.crt
7. Aktifkan konffigurasi di atas dengan membuat softlink di folder /etc/nginx/sites-enable
$ sudo ln -s /etc/nginx/sites-available/api.example.com.conf /etc/nginx/sites-enabled/
8. Reload konfigurasi nginx
$ sudo systemctl reload nginx
Okey, sekarang aplikasi RESTful API anda yang terdiri dari beberapa aplikasi dengan port nya masing-masing atau multi port, bisa di akses melalui port 80 atau 443. Seperti contoh berikut: https://api.example.com/application-a/.... https://api.example.com/application-b/.... https://api.example.com/application-c/.... Port nya tidak perlu disertakan pada alamat url, karena secara default akan mengakses ke port 80 untuk http dan ke port 443 untuk https. Sekian tutorial kali ini, semoga tutorial ini bisa sedikit membantu anda memanfaatkan NGINX sebagai proxy untuk aplikasi backend multi port sehingga bisa diakses dari satu port saja. Jika ada pertanyaan atau bagian tutorial yang kurang jelas atau anda mengalami kesulitan saat mengikuti langkah-langkah di atas, silahkan bertanya lewat kolom komentar. Terima kasih sudah mampir di blog yang sangat sederhana ini. Semoga sukses.

Cara export keyfilename.keytool (atau dot jks) ke private key (dot pem)

12:45 AM Add Comment
Cara export keyfilename.keytool (atau dot jks) ke private key (dot pem)

 

Kasusnya adalah anda hanya punya file dot keytool atau file dot jks, kemudian dari file tersebut anda ingin membuat file certificate dan file private key atau dot pem. Ikuti langkah-langkah berikut:
  1. Salin dari format JKS ke format PKCS12:

    keytool -importkeystore -srckeystore mykeystore.jks -destkeystore mykeystore.p12 -deststoretype PKCS12
    openssl pkcs12 -in mykeystore.p12 -nokeys -out cert.crt



  2. Export certificate dari format PKCS12. Hasilnya adalah file cert.crt:

    openssl pkcs12 -in mykeystore.p12 -nokeys -out cert.crt


  3. Export unencrypted private key dari file dot p12 atau format PKCS12. Hasilnya adalah file privatekey.pem:
    $ openssl pkcs12 -in mykeystore.p12  -nodes -nocerts -out privatekey.pem
Selain dengan cara di atas, yaitu cara menggunakan openssl, bisa juga menggunakan software keytool. Untuk melihat public key dari file privatekey.pem:
$ openssl x509 -in privatekey.pem -text -noout

Setting SSH Tunneling dari Mac atau Linux

12:36 AM Add Comment
Setting SSH Tunneling dari Mac atau Linux


Kita menggunakan koneksi ssh tunnel ke suatu mesin jika mesin tersebut hanya boleh menerima paket data dari ip dan port tertentu saja.

Contoh case nya, kita akan mengirimkan paket data ke mesin A (192.168.10.254:1521) dan mesin C (192.168.10.253:1521) melalui mesin B (192.168.20.254), dimana user dan password untuk mesin B adalah b_user dan b_password. Mesin A dan C adalah server database oracle, jadi biasanya menggunakan port 1521.

Berikut ini adalah cara konfigurasi ssh tunnel dari kasus di atas dari operating sistem mac atau linux.

1. buka terminal, ketik sudo vi .ssh/config
2. copy paste script berikut:

Host mesindevelopmentku
   User b_user
   HostName 192.168.20.254
   ForwardX11 yes
   # host database pertama. mesin A
   LocalForward 9002 192.168.10.254:1521
   # host database kedua. mesin C
   LocalForward 9001 192.168.10.253:1521

3. save script di atas dengan command, :wq!
4. ketik ssh mesindevelopmentku lalu tekan enter.
5. Masukkan password mesin B tadi: b_password
6. Anda telah berhasil masuk di mesin B. Terminal yang anda gunakan untuk masuk ke mesin B, jangan ditutup. ketik top lalu tekan enter.
7. Sekarang anda sudah bisa melakukan koneksi ke mesin A dan C melalui port 9002 untuk mesin A dan melalui port 9001 untuk mesin C.


Jika anda akan masuk ke mesin A dan C yang mana mesin ini adalah server database oracle, hostname nya menggunakan localhost dan port nya 9001 atau 9002

Sekian.

Terima kash sudah membaca tutorial ini.

SSH via internet ke private network yang terlindung proxy

12:32 AM Add Comment
Case nya adalah anda ingin melihat log aplikasi di private server yang koneksi nya harus lewat proxy.
Teman anda yang ada di kantor client diberi akses lewat wifi internal dan harus konek pakai proxy yang telah ditentukan.
Anda berada di kantor HQ ingin melihat log tadi langsung dari server client. Berikut ini adalah gambar ilustrasi network arsitektur nya.

SSH via internet ke private network yang terlindung proxy

Dari gambar di atas, berikut adalah cara yang saya pakai untuk masuk ke server tadi melalui jalur internet.


1. dari MACBOOK A, ketik command: "sudo route -n add -net CLOUD_IP MODEM_IP" kalau pakai linux: "sudo route add CLOUD_IP gw MODEM_IP" gunanya adalah untuk mengarahkan paket data dari ip local ke ip tujuan (CLOUD_IP) melalui ip internet gateway modem (MODEM_IP)
2. dari MACBOOK A, ketik command: "ssh -R 19999:localhost:22 clouduser@CLOUD_IP" gunannya adalah membuat koneksi ssh tunneling dari macbook A ke cloud server. Jangan di close terminal sehingga koneksi tetap terjalin.
3. dari MACBOOK B, ketik command: "ssh clouduser@CLOUD_IP"
4. sekarang MACBOOK B dan cloud server telah terhubung. selanjutnya dari dalam cloud server, lakukan ssh ke macbook A. ketik: "ssh macbook_a_user@localhost -p 19999"
5. sekarang MACBOOK B telah terhubung ke MACBOOK A. selanjutnya anda sudah bisa masuk ke private server client anda melalui proxy.

Jika anda ingin melihat table route ketik command: netstat -nr

Sekian tutorial kali ini. semoga bermanfaat.

Apa itu Subnet Mask dan bagaimana cara menghitungnya

11:46 PM Add Comment

Apa itu IPv4 ?

IP versi 4(IPv4) adalah sebuah jenis pengalamatan jaringan yang digunakan di dalam protokol jaringan TCP/IP dengan protokol IP versi 4. Panjang totalnya adalah 32-bit, dan secara teoritis dapat mengalamati hingga 4 miliar host komputer di seluruh dunia. Contoh alamat IP versi 4 adalah 192.168.0.3. Namun IPv4 ini sudah mulai habis pemakaiannya sehingga tercipta IP versi 6 namun belum begitu dipakai karena IPv4 sendiri belum habis di pakai.


Fungsi IP

  • Sebagai identitas perangkat yang mengakses jaringan
  • Mengidentifikasi skala jaringan yang digunakan
  • Dapat digunakan untuk melacak keberadaan perangkat mengakses jaringan
  • Sebagai jejak pengguna internet

Kelas - kelas IPv4

Class - class dalam IPv4


Subnetting

Analogi subnetting

Subnetting adalah proses memecah suatu IP jaringan ke sub jaringan yang lebih kecil yang disebut "subnet." Subnetting digunakan untuk memudahkan pengelola jaringan komputer (system Administrator, Network Administrator, maupun pengguna biasa) dalam mengelola jaringan, melakukan alokasi IP Address untuk setiap ruangan dan gedung sesuai dengan kebutuhan. Proses subnetting sendiri dilakukan dengan menggunakan nilai CIDR seperti yang disebutkan sebelumnya.

Manfaat Subnetting

  • Mempermudah pengelolaan jaringan komputer
  • Untuk optimalisasi dan efisiensi kerja jaringan, karena jalur lalu lintas tidak terpusat dari network besar, tapi terbagi ke beberapa ruas – ruas subnet

Apa itu CIDR (Classless Inter Domain Routing) ?

CIDR atau Classless Inter Domain Routing merupakan sebuah proses sebagai solusi untuk mengefisiensi dalam pengalamatan alokasi IP Address yang dilakukan pada pengkelasan IP Address yang ada. CIDR juga dapat memungkinkan IP Address pada suatu kelas dapat menampung jumlah seperti kelas lainnya apabila dalam implementasinya terdapat penyesuaian atau penambahan host yang tidak terduga sebelumnya. Berikut adalah table CIDR untuk keperluan Subnetting :

table CIDR


Cara menghitung Subnetting

Subnetting IP Address kelas C merupakan kelas subnetting yang paling mudah, karena IP Address kelas C hanya memiliki Host ID (Alamat Host) pada bagian terakhir IP Addressnya. Contoh IP Address 192.168.2.1 maka angka 1 pada digit terakhir adalah yang dimaksud dengan Host ID, sedangkan 3 blok angka sebelumnya adalah Net ID atau Network ID (Alamat Jaringan).

Langsung ke tahap perhitungannya, sebagai contoh, kita menganalisa IP Address 192.168.1.0/26 atau dapat ditulis dengan 192.168.1.0 netmask 255.255.255.192 yang berarti IP Address tersebut memakai prefix length /26 pada tabel CIDR. Langkah pertama adalah merubah angka prefix tersebut menjadi 32 bit bilangan biner (IPv4 berjumlah 32 bit), maka akan menjadi 11111111.11111111.11111111.11000000 (tulis angka 1 sebanyak 26 kali dengan pemisahan 8 digit, kemudian setelah mencapai 26, untuk memenuhi 32 bit maka isi angka 0). Setelah itu rubah 32 bit bilangan biner tersebut kedalam bentuk decimal, maka akan diperoleh angka 255.255.255.192 . Subnetting sendiri akan terfokus kedalam 4 hal, diantaranya :

  1. Jumlah Subnet = 2x , dimana x adalah banyaknya binari 1 pada oktet terakhir subnet mask (2 oktet terakhir untuk kelas B, dan 3 oktet terakhir untuk kelas A). Jadi Jumlah Subnet adalah 22 = 4 subnet.
  2. Jumlah Host Per Subnet = 2y – 2, dimana y adalah adalah kebalikan dari x yaitu banyaknya binari 0 pada oktet terakhir subnet. Jadi jumlah host per subnet adalah 26 – 2 = 62 host.
  3. Blok Subnet = 256 – 192 (nilai oktet terakhir subnet mask) = 64. Subnet berikutnya adalah 64 + 64 = 128, dan 128+64=192. Jadi subnet lengkapnya adalah 0, 64, 128, 192
  4. Keterangan Untuk Tiap subnetnya, data atau alokasi tiap subnet akan disajikan dalam bentuk tabel :
Hasil Subnetting

Itulah pengetian dari subnet mask dan cara mengghitugnya, semoga bermanfaat dan sampai jumpa lagi.