Mengaktifkan FTP Server Di Ubuntu Linux

Kemarin ada seorang rekan bertanya caranya mengakses server Linuxnya melalui FTP. Katanya dia sudah coba akses FTP ke servernya (servernya menggunakan Ubuntu kalau tidak salah) tapi mendapat error "Connection refused". Tentu saja langkah pertama yang saya sarankan adalah memeriksa apakah FTP servernya sudah aktif. Apakah port 21 (default port FTP) sudah listen di servernya. Ternyata belum ada FTP server yang aktif.

Secara default Ubuntu tidak menyertakan FTP server dalam paket instalasinya. Wajar bila kita coba FTP ke Ubuntu server akan mendapat gagal dengan pesan "Connection refused" :

ttirtawi@macbook-air:~$ ftp 192.168.10.10
ftp: connect: Connection refused
ftp> bye
ttirtawi@macbook-air:~$ 

Untuk dapat mengakses FTP di Ubuntu, kita perlu menginstal paket FTP server terlebih dulu. Saya biasanya memilih vsftpd untuk keperluan ini.

ttirtawi@gbt733:~$ sudo apt-get install vsftpd
[sudo] password for ttirtawi: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  vsftpd
0 upgraded, 1 newly installed, 0 to remove and 256 not upgraded.
Need to get 0 B/132 kB of archives.
After this operation, 364 kB of additional disk space will be used.
Preconfiguring packages ...
Selecting previously unselected package vsftpd.
(Reading database ... 190272 files and directories currently installed.)
Unpacking vsftpd (from .../vsftpd_2.3.5-3ubuntu1_i386.deb) ...
Processing triggers for man-db ...
Processing triggers for ureadahead ...
Setting up vsftpd (2.3.5-3ubuntu1) ...
vsftpd start/running, process 7570
Processing triggers for ureadahead ...
ttirtawi@gbt733:~$ 

Setelah paket vsftpd terinstal, aplikasi vsftpd akan otomatis bekerja dan menunggu di port 21 :

ttirtawi@gbt733:~$ netstat -ano | grep :21
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      off (0.00/0/0)
ttirtawi@gbt733:~$ 

Setelah itu kita bisa akses servernya via FTP :

ttirtawi@macbook-air:~$ ftp 192.168.10.10
Connected to 192.168.10.10.
220 (vsFTPd 2.3.5)
530 Please login with USER and PASS.
Name (192.168.10.10:ttirtawi): ttirtawi
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

Tapi kita belum bisa login ke FTP server sebagai user root :

ttirtawi@macbook-air:~$ ftp 192.168.10.10
Connected to 192.168.10.10.
220 (vsFTPd 2.3.5)
530 Please login with USER and PASS.
Name (192.168.10.10:ttirtawi): root
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp> 

Meskipun kita sudah login & memasukkan password root yang benar, kita tetap tidak bisa otomatis login sebagai root. Akan selalu muncul pesan error Login incorrect seperti contoh di atas. Secara default, root tidak diperkenankan mengakses FTP server. File /etc/ftpusers mengatur daftar user yang tidak boleh login ke FTP server, termasuk root.

ttirtawi@gbt733:~$ cat /etc/ftpusers 
# /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5).

# root ###### Hapus baris ini atau beri tanda # di awal baris
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
nobody
ttirtawi@gbt733:~$ 

Dengan menghapus user root dari dalam file /etc/ftpusers atau cukup menambahkan tanda # di depan user root, maka root bisa mengakses FTP server.

ttirtawi@macbook-air:~$ ftp 192.168.10.10
Connected to 192.168.10.10.
220 (vsFTPd 2.3.5)
530 Please login with USER and PASS.
Name (192.168.10.10:ttirtawi): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

Lokasi Parkir

20130305-085029.jpg

Pengelola mal Kota Kasablanca rupanya peduli pada kebiasaan pengunjung yang sering lupa di memarkirkan mobilnya. Di depan lift basement parkir mobil, ada pesan untuk mengingatkan orang untuk mengingat-ingat lokasi parkir mobilnya. Saya yakin pasti banyak juga orang yang kembali menoleh melihat kembali lokasi parkirnya setelah membaca tulisan itu.

Saya pernah lihat juga di tempat lain, orang sengaja memotret nomor lokasi parkir. Jaman ponsel berkamera sekarang, makin gampang orang mengingat-ingat suatu lokasi. Asal jangan ponsel kehabisan batere saat kebingungan mencari mobilnya di parkiran 🙂 .

Router & Bandwidth Control Dengan Raspberry Pi

Akhirnya saya berhasil memanfaatkan RaspberryPi menjadi router dengan kemampuan mengatur kuota bandwidth internet. Saya ikuti beberapa petunjuk dari sumber-sumber berikut ini :

Susunan jaringannya menjadi seperti ini :

20130303-215947.jpg

  • Port Ethernet bawaan RaspberryPi (eth0) menjadi port WAN yang terhubung langsung dengan modem internet.
  • Adapter USB Ethernet (eth1) menjadi port LAN yang terhubung ke switch.
  • WiFi TP-Link tidak lagi dipakai sebagai DHCP server. Port WANnya pun tidak dipakai. Hanya difungsikan sebagai access-point. Client mendapat IP address dari Raspberry. Karena Wi-Fi ini menggunakan DD-WRT sebagai sistem operasinya, saya harus mematikan DHCP server & memilih untuk menggunakan DHCP Forwarder.

Ini adalah konfigurasi IP di RaspberryPi.

root@raspberrypi:~# cat /etc/network/interfaces 
auto lo

iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
    address 192.168.10.1
    netmask 255.255.255.0
    network 192.168.10.0
    broadcast 192.168.10.255
    dns-nameservers 192.168.10.1
root@raspberrypi:~#

Port eth0 diset menggunakan IP dinamis, IPnya didapat dari modem FirstMedia. Sementara port eth1 adalah port LAN sehingga menggunakan IP statis.

Untuk menjadikan Raspberry sebagai DHCP server di jaringan lokal saya perlu paket dnsmasq.

root@raspberrypi:~# apt-get install dnsmasq

Konfigurasi dnsmasq sangat simpel seperti berikut ini :

root@raspberrypi:~# cat /etc/dnsmasq.conf 
interface=eth1
dhcp-range=192.168.10.50,192.168.10.150,255.255.255.0,12h
root@raspberrypi:~# 

Saya hanya perlu mencantumkan di interface mana DHCP server akan beroperasi, tentu ini interface yang terhubung ke LAN. Dan satu lagi opsi yang dhcp-range, opsi ini mendefinisikan alamat IP mana saja yang disediakan oleh DHCP server. Sebenarnya masih banyak opsi yang bisa dipakai oleh dnsmasq, tapi untuk keperluan test ini hanya itu yang saya perlukan.

Proses routing dijalankan oleh perintah iptables. Di website Debian Administrator sudah ada contoh script yang memanfaatkan iptables sebagai router & juga sebagai firewall.

root@raspberrypi:~# cat /etc/network/if-up.d/router 
#!/bin/sh

PATH=/usr/sbin:/sbin:/bin:/usr/bin

# Notes : eth0 = WAN port / internet
#         eth1 = LAN port
#
# delete all existing rules.
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

# Always accept loopback traffic
iptables -A INPUT -i lo -j ACCEPT

# Allow established connections, and those not coming from the outside
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW ! -i eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow outgoing connections from the LAN side.
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

# Masquerade.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Don't forward from the outside to the inside.
iptables -A FORWARD -i eth0 -o eth0 -j REJECT

# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward
root@raspberrypi:~#

Sementara untuk mengatur alokasi bandwidth aplikasi yang dipakai adalah tc. Konsep yang diterapkan untuk mengatur alokasi bandwidth ini adalah HTB (Hierarchical Token Bucket). Pengaturan bandwidth dilakukan dalam sistem hirarki. Saya contoh apa yang dijelaskan di web ini. Ada beberapa modifikasi yang saya tambahkan. Di web tadi hanya kecepatan download yang dibatasi. Ternyata untuk membatasi kecepatan upload, saya perlu tambahkan rule lain di port WANnya (dalam contoh kasus saya di port eth0).

root@raspberrypi:~# cat /etc/network/if-up.d/tcscript 
#!/bin/bash

# DOWNLOAD LIMIT
tc qdisc add dev eth1 root handle 1:0 htb default 10
tc class add dev eth1 parent 1:0 classid 1:10 htb rate 256kbit ceil 256kbit prio 0
tc class add dev eth1 parent 1:1 classid 1:5 htb rate 4864kbit ceil 4864kbit prio 1
tc filter add dev eth1 parent 1:0 prio 1 handle 5 fw flowid 1:5

# UPLOAD LIMIT
tc qdisc add dev eth0 root handle 1:0 htb default 10
tc class add dev eth0 parent 1:0 classid 1:10 htb rate 128kbit ceil 128kbit prio 0
tc class add dev eth0 parent 1:1 classid 1:5 htb rate 4864kbit ceil 4864kbit prio 1
tc filter add dev eth0 parent 1:0 prio 1 handle 5 fw flowid 1:5

iptables -t mangle -N shaper-out
iptables -t mangle -N shaper-in

iptables -t mangle -I POSTROUTING -o eth1 -j shaper-in
iptables -t mangle -I PREROUTING -i eth1 -j shaper-out
iptables -t mangle -I PREROUTING -i eth0 -j shaper-in
iptables -t mangle -I POSTROUTING -o eth0 -j shaper-out

iptables -t mangle -A shaper-out -s 192.168.10.0/24 -j MARK --set-mark 1
iptables -t mangle -A shaper-in -d 192.168.10.0/24 -j MARK --set-mark 1

iptables -t mangle -A shaper-out -s 192.168.10.129 -j MARK --set-mark 5
iptables -t mangle -A shaper-in -d 192.168.10.129 -j MARK --set-mark 5
root@raspberrypi:~#

Di contoh script di atas, saya buat skenario sederhana yaitu hanya IP 192.168.10.129 (IP Macbook) yang diberi akses untuk menggunakan bandwidth sampai maksimum (4-5MB).

20130303-234031.jpg

Sementara semua client lain dalam jaringan 192.168.10.0/24 hanya bisa mendapat kecepatan download 256Kbps & kecepatan upload 128Kbps. Ternyata berhasil, dan ini contohnya hasil testing dengan iPhone :

20130303-233616.jpg

Kira-kira begitu pemanfaatan Raspberry Pi untuk mengontrol pemakaian bandwidth dalam jaringan. Masih banyak yang bisa dibahas dari topik ini. Mungkin nanti saya tuliskan lagi di tulisan-tulisan berikutnya.

Rangkaian Kereta Dorong

20130302-212636.jpg

Apa yang terlintas di benak Anda bila melihat deretan kereta belanja seperti foto di atas? Tiap kali melihat deretan kereta dorong (troli) yang tersusun seperti itu, yang terlintas dalam benak saya adalah film The Terminal.

Di film tersebut Tom Hank berperan sebagai seorang turis yang terjebak di bandara JFK New York. Tokohnya bernama Viktor Navorski. Negaranya dilanda kudeta sehingga paspornya tidak diterima oleh imigrasi Amerika. Untuk kembali ke negaranya pun tidak mungkin karena negaranya sedang dalam kondisi perang.

Nah karena kebingungan berada di terminal bandara dan tidak punya uang untuk bertahan hidup, muncul idenya untuk mengumpulkan kereta dorong di bandara. Di bandara sana rupanya tiap kali seorang penumpang pesawat ingin menggunakan kereta dorong mereka harus memasukkan uang koin sebagai deposit. Uang tersebut bisa diambil kembali bila mereka mengembalikan kereta tersebut ke tempatnya setelah selesai digunakan. Ada mesin koin di tempat pengembalian kereta.

Viktor secara jenius menangkap peluang untuk mengumpulkan uang. Dia kembalikan kereta-kereta dorong yang ditinggalkan begitu saja oleh para penumpang. Lalu dia kembalikan ke mesin deposit. Sen demi sen dikumpulkan dari setiap kereta yang dikembalikannya. Sampai akhirnya dia bisa mengumpulkan banyak sekali kereta, disusun banyak sekali dalam 1 rangkaian lalu didorongnya sampai ke tempat pengembalian kereta. Makin banyak kereta yang dikembalikan, makin banyak koin yang keluar dari mesinnya.

Ya memang kereta dorong di film The Terminal berbeda dengan kereta belanja di Carrefour tadi. Tapi entahlah itu yang terpikir di benak saya bila melihat rangkaian kereta dorong yang disusun berangkai seperti itu.

Sir Edmund Hillary

20130302-203633.jpg

Tak sengaja saya menemukan selembar uang 5 dolar New Zealand saat membereskan laci meja. Rupanya masih ada sisa uang dolar yang belum saya tukar.

Di lembar 5 dolar New Zealand ini ada foto Sir Edmund Hillary. Saya pikir ini adalah tokoh pahlawan nasional New Zealand atau mantan perdana mentrinya. Saya penasaran siapakah Sir Edmund Hillary ini. Di Wikipedia disebutkan bahwa Sir Edmund Hillary ini adalah salah satu orang pertama yang berhasil naik ke puncak Gunung Everest. Dia dan timnya berhasil naik ke puncak Everest tanggal 29 Mei 1953.

Tidak hanya itu, Sir Edmund Hillary juga pernah bertugas di angkatan udara New Zealand sebagai navigator selama perang dunia kedua. Beliau dianugrahi banyak gelar kebangsawanan Kerajaan Inggris. Tidak heran bila fotonya diabadikan dalam mata uang negara New Zealand.

Selengkapnya tentang Sir Edmund Hillary bisa dibaca di Wikipedia.