Bahasa Afrika di Shell Linux

Pernah nemuin respon shell di Linux (kebetulan saya pakai Centos 7 di server) menggunakan bahasa selain bahasa Inggris seperti berikut ini?

root# kopet
bash: kopet: bevel nie gevind nie

Setelah saya check di translate.google.com ternyata ini bahasa Afrika.

Ternyata memang default bahasa di Centos 7 menggunakan bahasa Afrika seperti yang tertera di output berikut:

root# locale
LANG=af_ZA.UTF-8
LC_CTYPE="af_ZA.UTF-8"
LC_NUMERIC="af_ZA.UTF-8"
LC_TIME="af_ZA.UTF-8"
LC_COLLATE="af_ZA.UTF-8"
LC_MONETARY="af_ZA.UTF-8"
LC_MESSAGES="af_ZA.UTF-8"
LC_PAPER="af_ZA.UTF-8"
LC_NAME="af_ZA.UTF-8"
LC_ADDRESS="af_ZA.UTF-8"
LC_TELEPHONE="af_ZA.UTF-8"
LC_MEASUREMENT="af_ZA.UTF-8"
LC_IDENTIFICATION="af_ZA.UTF-8"
LC_ALL=

Penasaran setting ini ada di mana saya menjalankan perintah berikut:

root# fgrep -R "LANG=af_ZA.UTF-8" *
grub2.cfg:      linux16 /vmlinuz-3.10.0-957.27.2.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=af_ZA.UTF-8
grub2.cfg:      linux16 /vmlinuz-3.10.0-957.21.3.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=af_ZA.UTF-8
grub2.cfg:      linux16 /vmlinuz-3.10.0-957.12.2.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=af_ZA.UTF-8
grub2.cfg:      linux16 /vmlinuz-3.10.0-957.12.1.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=af_ZA.UTF-8
grub2.cfg:      linux16 /vmlinuz-3.10.0-957.10.1.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=af_ZA.UTF-8

Ternyata dari grub2.cfg, sehingga pas booting diset sebagai bahasa Afrika. Oleh karena itu saya coba override dari /etc/environment dengan menambahkan baris:

export LANG=en_US.utf8

Lalu jalankan perintah:

root# source /etc/environment

Lalu test dengan perintah salah:

root# kopet
bash: kopet: command not found

Done.

[tips][self reminder] tmux untuk bantu sesi ssh yang sering putus

Minggu-minggu terakhir ini sedang menjalankan sebuah proses clone database nosql di datacenter yang saya sendiri tidak memiliki akses console vm nya. Walhasil satu-satunya cara mengakses hanya via ssh. Tapi sialnya ssh baik di rumah maupun di kantor sering banget putus setelah sekian jam tersambung. Eh temen kantor ngajarin menggunakan tmux. Ini catatan buat saya sendiri, sukur-sukur kalo ternyata kepake juga buat teman yang lain. Kalau dari cheatsheet nya sih daftar shortcut/perintah nya cukup banyak, tapi yang di bawah ini list sangat pendek shortcut yang paling saya butuhkan.

Membuat sesi baru di tmux:

# whereis tmux
tmux: /usr/bin/tmux /usr/share/man/man1/tmux.1.gz

# tmux new -s backupDB

[backupDB] 0:root@db003:/home/godril*                                                       "db003.localhost.localdomain" 20:33 27-Jun-19

perintah di atas mencari apakah tmux sudah ada. Jika belum bisa diinstall dengan package manager atau langsung dari sourcenya di https://github.com/tmux/tmux/wiki.

perintah ke-dua membuat sesi tmux baru dengan nama  backupDB dan secara otomatis langsung masuk ke terminal backupDB tersebut (nama sesi akan muncul di kiri bawah). Di dalam terminal ini, saya menjalankan perintah untuk clone database. Lalu console saya tinggal dengan menjalankan perintah ctrl + B, D. 

Untuk melihat terminal yang aktif, bisa dilihat dengan perintah:

# tmux ls
backupDB: 1 windows (created Thu Jun 27 20:33:54 2019) [131x34]
mengalir: 1 windows (created Thu Jun 27 20:12:24 2019) [131x34]

tampak ada dua sesi tmux yang aktif. Untuk masuk ke sesi backupDB dengan cara:

# tmux attach -t backupDB

Dan untuk menghapus sesi tmux:

# tmux kill-session -t backupDB

# tmux ls
mengalir: 1 windows (created Thu Jun 27 20:12:24 2019) [131x34]

tampak backupDB sudah hilang dari list sesi tmux.

[tips] Failed package update di Debian Jessie

Nemu notifikasi failed seperti di bawah ketika update Debian Jessie.

W: Failed to fetch http://ftp.us.debian.org/debian/dists/jessie-updates/InRelease  Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)

Ternyata sejak tanggal 20 Maret 2019 untuk distro Wheezy dan Jessie dijadikan satu di server archive.debian.org. Sehingga perlu edit file /etc/apt/sources.list dan mengganti server (dalam contoh di atas server mengarah ke ftp.us.debian.org) menjadi archive.debian.org.

Ulang kembali proses update dan upgrade. Kemungkinan akan ada masalah minor dengan notifikasi seperti:

W: Failed to fetch http://archive.debian.org/debian/dists/jessie-updates/main/source/Sources  404  Not Found [IP: 193.62.202.28 80]

W: Failed to fetch http://archive.debian.org/debian/dists/jessie-updates/main/binary-amd64/Packages  404  Not Found [IP: 193.62.202.28 80]

E: Some index files failed to download. They have been ignored, or old ones used instead.

tapi abaikan saja karena memang distro ini sudah seharusnya ditinggalkan dan mulai memasang versi Debian paling baru.

Menambah Shortcut Program di Desktop Ubuntu 18.04

Ini catatan buat diri sendiri sih.. selalu lupa gimana caranya menambah shortcut program di desktop Ubuntu setelah install program/app baru.

  • Masuk ke direktori /usr/share/applications 
  • Drag & drop icon applications yang hendak ditambahkan.
  • Pertama kali muncul di desktop, icon program belum seperti bawaan aslinya:

cukup klik untuk menjalankan program lalu pilih Trusn and Launch

setelah itu icon akan muncul:

Yealink T19 E2 dengan OPUS

Yay!! Hari ini dapet kiriman Yalink T19 E2 untuk dicoba dengan codec OPUS dan berjalan baik sejauh ini. Belum tau bagaimana nanti jika sudah dipasang di lapangan. Ada keperluan panggilan melalui jalur data satelit yang sudah tentu latensinya tinggi. G729 tidak dapat mengakomodir komunikasi dengan baik, hingga akhirnya dicoba dengan OPUS dan diterima cukup baik.

Beberapa waktu yang lalu sudah mencoba mengontak beberapa produsen IP phone, rata-rata codec OPUS hanya didukung di perangat hi-end, maklum, butuh prosesor agak kenceng. Entah bagaimana Yealink bisa membuat firmware codec OPUS di perangkat low end seperti kelas T19 ini. Love it!

[Tips] Problem Mengaktifkan Kamailio TLS Dengan LetsEncrypt

Jadi barusan nyoba mengaktifkan TLS di SIP server Kamailio saya dengan LetsEncrypt. Pada intinya instalasi sertifikat dengan certbot-auto cukup mudah. Kali ini tinggal menambahkan konfigurasi di tls.cfg di dalam direktori konfigurasi Kamailio:

[server:default]
method = TLSv1
verify_certificate = no
require_certificate = no
certificate = /etc/letsencrypt/live/domain.tld/fullchain.pem
private_key = /etc/letsencrypt/live/domain.tld/privkey.pem

Lalu di file kamailio.cfg SIP server (ip address 192.168.0.123) edit/tambahkan baris berikut:

enable_tls = yes
listen=192.168.0.123:5061

####### TLS Parameters #########
loadmodule "tls.so"
modparam("tls", "config", "/etc/kamailio/tls.cfg")
modparam("tls", "low_mem_threshold1", 0)

Ketika mencoba reload Kamailio, saya mendapati error seperti berikut:

kamailio[18322]: ERROR: tls [tls_domain.c:529]: load_cert(): TLSs: Unable to load certificate file '/etc/letsencrypt/live/domain.tld/fullchain.pem'
kamailio[18322]: ERROR: tls [tls_util.h:42]: tls_err_ret(): load_cert:error:0200100D:system library:fopen:Permission denied
kamailio[18322]: ERROR: tls [tls_util.h:42]: tls_err_ret(): load_cert:error:20074002:BIO routines:FILE_CTRL:system lib
kamailio[18322]: ERROR: tls [tls_util.h:42]: tls_err_ret(): load_cert:error:140DC002:SSL routines:SSL_CTX_use_certificate_chain_file:system lib
kamailio[18322]: ERROR:  [core/sr_module.c:923]: init_mod_child(): Error while initializing module tls (/usr/lib64/kamailio/modules/tls.so)

f
Karena ada indikasi error yang disebabkan kepemilikan file cert, perlu diubah hak akses file dengan langkah berikut:

root# chmod go+x /etc/letsencrypt/archive
root# chmod go+x /etc/letsencrypt/live

catatan: gunakan sudo juga bukan login sebagai root.

Setelah itu dicoba kembali reload Kamailio dan masalah sudah tidak muncul lagi. Untuk check ,apakah port sudah listen ke TLS, jalankan:

root# ss -ln | egrep "5061"

Links:

Mencoba ‘firewalld’ Sebagai Pengganti ‘iptables’

Dari awal dulu kenal ipchains trus ganti jadi iptables. Belum sempet mainan sampe ngeh banget, eh sekarang sudah ada firewalld. Karena kebanyakan berkutat dengan distro Centos 7 yang defaultnya menggunakan firewalld, akhirnya mau ndak mau ya harus ngeh juga walaupun sedikit-sedikit. Sebelumnya saya pernah posting soal iptables untuk Asterisk di sini. Jadi saya coba ndak jauh-jauh mengingat perintah berikut ini untuk server-server VoIP saya. Yang biasanya saya lakukan sebagai berikut:

Mengaktifkan firewalld agar secara default up setelah reboot atau start.

# systemctl enable firewalld
# systemctl start firewalld

Mengganti port ssh dari 22 ke 8022 (soalnya kalo ndak begitu, selalu diprobe dari mana-mana):

# firewall-cmd --permanent --zone=public --add-port=8022/tcp
# firewall-cmd --permanent --zone=public --remove-service=ssh

Lalu menambahkan port-port penting untuk produksi:

# firewall-cmd --permanent --zone=public --add-service={http,https}
# firewall-cmd --permanent --zone=public --add-port={5060,5061,7000,7001,8000,8443,11000}/tcp
# firewall-cmd --permanent --zone=public --add-port={5060,5061,7000,7001,8000,8443,11000}/udp
# firewall-cmd --permanent --zone=public --add-port=16384-32784/udp

Lalu menambahkan blok ip address yang diperbolehkan untuk mengakses service ke server:

# firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="1.2.3.4" accept'
# firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="6.7.8.0/24" accept'

Optional, kita bisa menambahkan blocking ICMP. Pertama, kita bisa lihat list tipe ICMP:

# firewall-cmd --get-icmptypes
address-unreachable bad-header communication-prohibited destination-unreachable echo-reply echo-request fragmentation-needed host-precedence-violation host-prohibited host-redirect host-unknown host-unreachable ip-header-bad neighbour-advertisement neighbour-solicitation network-prohibited network-redirect network-unknown network-unreachable no-route packet-too-big parameter-problem port-unreachable precedence-cutoff protocol-unreachable redirect required-option-missing router-advertisement router-solicitation source-quench source-route-failed time-exceeded timestamp-reply timestamp-request tos-host-redirect tos-host-unreachable tos-network-redirect tos-network-unreachable ttl-zero-during-reassembly ttl-zero-during-transit unknown-header-type unknown-option

dari list di atas misal kita akan melakukan block echo-reply:

# firewall-cmd --permanent --zone=public --add-icmp-block=echo-reply

Jika dirasa sudah cukup, reload rule di atas dengan perintah:

# firewall-cmd --reload

Dari contoh di atas, sudah keliatan polanya kan? Jika masih belum juga, url berikut ini bisa membantu menjelaskan cara kerja firewalld dengan lebih jelas.

Selamat mencoba!