Ubuntu 10.04 LTS
Kali ini saya akan menceritakan pengalaman saya menginstall aplikasi-aplikasi yang sudah saya sebutkan diatas di Ubuntu 10.04 LTS Server edition. Syarat minimal hardware yang harus dimiliki adalah sebuah PC dengan 2 buah kartu jaringan (LAN Card). selain itu, berdasar pengalaman mysql daemon akan sedikit membebani memory untuk itu minimal RAM yang direkomendasikan dalah 512MB meski kemungkinan besar juga bisa berjalan dengan RAM 256MB jika anda menggunakan OS tanpa GUI. Saya sendiri menginstallnya di sebuah CPU merk HP dengan spesifikasi Core 2 Duo E8600 3,33Ghz, RAM 2 Gb, 2 Ethernet card ( 1 LAN card on-board, 1 lagi PCI merk D-Link) dan 2 buah HDD total 1,14TB (160 Gb dan 1Tb). Sangat berlebihan sebenarnya untuk ukuran server hotspot namun server ini sekalian saya gunakan sebagai data server yang menyimpan file-file multimedia koleksi pribadi saya.
freeRadius
Saya mengasumsikan Anda semua sudah memiliki sebuah PC yang sudah terinstall Ubuntu 10.04 LTS, begitu juga dengan LAMP server (Apache,mysql dan php). Jika anda baru akan memulai menginstall Ubuntu, ada baiknya anda secara langsung memilih paket LAMP server dan SSH server saat proses penginstalan berlangsung. Namun jika anda sudah terlanjur menginstall ubuntu tanpa LAMP server anda bisa menginstallnya
melalui perintah apt-get maupun dari tasksel. Saya yakin anda bisa melakukannya hingga tahap ini.
Coovachilli
Selanjutnya yang perlu anda persiapkan adalah 2 buah kartu jaringan, cek apakah keduanya sudah bekerja dengan baik, dan pastikan keduanya memiliki nama eth0 dan eth1. Yang perlu anda lakukan disini adalah menghubungkan eth0 dengan modem/router anda dan eth1 dengan akses point/switch. Awalnya saya sangat dibuat bingung dengan konfigurasi yang mesti mengganti nama interface yang terbolak-balik, belakangan saya menemukan cara dimana lebih baik menukar kabel daripada mesti mengganti nama interfacenya. Setting eth0 sesuai setting jaringan dari router anda, apakah mau diset secara otomatis menggunakan dhcp maupun statik. (saya lebih menganjurkan statik demi kemudahan remote server dari jaringan). Anda bisa melakukan konfigurasi dengan merubah file /etc/network/interfaces. Disini saya hanya melakukan setting pada loopback (auto) dan eth0 dengan memberinya ip 192.168.1.253, subnet 255.255.255.0, gateway/DNS 192.168.1.254 (ip modem/router). Selebihnya untuk eth1 saya biarkan saja karena nantinya akan diatur secara otomatis oleh chilli. Sekali lagi perhatikan bahwa tidak boleh ada DHCP server yang berjalan baik di mesin yang sedang anda kerjakan maupun di akses point yang tersambung dengan eth1.
Tahap selanjutnya yang saya lakukan adalah menginstall paket-paket yang kemungkinan besar akan saya gunakan termasuk menginstall freeradius (anda bisa menambahkan atau mengurangi sesuai kebutuhan)
$apt-get -y install iptraf iftop whois sysstat snmp snmpd rrdtool dbconfig-common libphp-adodb php5-cli php5-gd php5-gmp php-pear php5-snmp php5-adodb make rpm alien subversion nmap libnet-netmask-perl curl freeradius freeradius-mysql php5-mcrypt perl openssl libnet-ssleay-perl libauthen-pam-perl libpam-runtime libio-pty-perl unzip git-core
Untuk mempermudah pekerjaan administrasi (mengingat saya juga msih newbie
), saya menginstall webmin, beberapa paket yang dibutuhkan untuk webmin sudah terinstall dengan perintah diatas. Tinggal install paket
libmd5-perl secara manual karena sudah tidak tersedia di repo Ubuntu Lucid, untuk itu kita perlu mendownload paketnya.
$dpkg -i libmd5-perl_2.03-1_all.deb
$dpkg -i webmin_1.510-2_all.deb
Ok,sampai disini anda sudah memiliki webmin dan juga freeradius yang sudah terinstall di LAMP server Ubuntu Linix 10.04 anda.
Selanjutnya anda perlu untuk mengcopy easyhotspot web only dari git server, dan menaruhnya di folder pada server and a (semisal /opt/). Saya melakukan tahap ini terlebih dahulu untuk mendapatkan contoh schema mysql yang digunakan oleh easyhotspot nantinya. untuk itu lakukan perintah dibawah, atau anda bisa mendownload langsung
disini
$git clone git://easyhotspot.git.sourceforge.net/gitroot/easyhotspot/easyhotspot
Langkah selanjutnya dalah memastikan anda memiliki hak akses MySql dan saya sarankan anda merubah password root di MySql anda (password root mysql berbeda dengan root system) karena secara default, root tidak memiliki password.
$mysqladmin -u root password xxxyyyzzz
“xxxyyyzzz” adalah contoh password mysql saya,anda bisa merubahnya sesuai dengan keinginan anda
Kemudian buat sebuah database yang akan digunakan oleh freeradius dan easyhotspot untuk authentikasi dan menejemen account dan biliing saya menggunakan nama database “hotspot” anda bisa menggunakan nama lain.
$mysql -u root -pxxxyyyzzz create hotspot
Masukkan skema database yang dibutuhkan kedlam database yang sudah dibuat diatas, disini saya menggunakan skema yang ada di folder easyhotspot yang sudah didownload dengan perintah git clone diatas.
$cd /opt/easyhotspot/install
$mysql -u root -pxxxyyyzzz hotspot <database_with_sample.sql
Kemudian buat sebuah user mysql dengan nama
easyhotspot dan password sesuai dengan keinginan anda (dalam contoh saya menggunakan password ‘xxyyzz’
yang memiliki akses ALL GRAND terhadap database hotspot yang sudah dibuat tadi (disni anda bisa memanfaatkan webmin untuk mempermudah). sebenarnya anda bisa menggunakan account root anda untuk digunakan oleh easyhotspot dan freeradius, namun saya sarankan anda membuat account baru saja untuk tutorial mysql anda bisa membacanya di
http://www.pantz.org/software/mysql/mysqlcommands.html
Setelah anda membuat account baru tersebut, anda harus menyesuaikan settingnya dengan setting database freeradius dan easyhotspot, untuk itu anda perlu merubah file /etc/freeradius/sql.conf dan/opt/easyhotspot/htdocs/system/application/config/database.php
Pada file /etc/freeradius/sql.conf ubah setting server, login, password dan radius_db menjadi :
sql {
#
# Set the database to one of:
#
# mysql, mssql, oracle, postgresql
#
database = “mysql”
#
# Which FreeRADIUS driver to use.
#
driver = “rlm_sql_${database}”
# Connection info:
server = “localhost”
#port = 3306
login = “easyhotspot”
password = “xxyyzz”
# Database table configuration for everything except Oracle
radius_db = “hotspot”
Sedangkan pada /opt/easyhotspot/htdocs/system/application/config/database.php ubah setting database, username dan password sehingga menjadi :
$db['default']['hostname'] = “localhost”;
$db['default']['username'] = “easyhotspot”;
$db['default']['password'] = “xxyyzz”;
$db['default']['database'] = “hotspot”;
$db['default']['dbdriver'] = “mysql”;
Langkah selanjutnya adalah membuat chilli sebagai client dari freeradius, untuk itu kita harus merubah file /etc/freeradius/clients.conf dan pastikan anda memiliki baris setting seperti dibawah :
ipaddr = 127.0.0.1
secret = easyhotspot //anda bisa merubah dan sesuaikan dengan setting di chilli
nastype = other
Berikutnya yang juga penting adalah memberitahu freeradius untuk menggunakan MySql dalam authentikasi user. ubah file /etc/freeradius/radiusd.conf. dibagian modules (sekitar baris 648) dan uncommen :
$INCLUDE sql.conf
begitu juga bebrapa baris berikutnya, uncomment pada :
$INCLUDE sql/mysql/counter.conf
Kemudian cari di bagian instantiate (sekitar baris 715) dan tambahkan didalamnya :
max_all_mb
noresetcounter
kemudian save file tersebut dan buka file /etc/freeradius/sites-enabled/default. Pada bagianauthorise perhatikan baris yang berisi sql yang mungkin di”comment” anda harus meng-”uncomment” baris tersebut dan menambahkan baris sehingga menjadi seperti dibawah :
sql
max_all_mb
noresetcounter
Anda juga harus meng-”uncomment” baris sql pada file yang sama di bagian accounting, session danpost-auth, kemudian save.
Tahap selanjutnya adalah merubah file /etc/freeradius/sql/mysql/counter.conf, buka file tersebut dan lihat pada bagian akhir file, terdapat parameter
sqlcounter noresetcounter {
bla…bla…bla…
Hapus semua baris diatas hingga tanda } dan gantikan dengan :
sqlcounter noresetcounter {
counter-name = Session-Timeout
check-name = Session-Timeout
reply-name = Session-Timeout
sqlmod-inst = sql
key = User-Name
reset = never
query = “SELECT SUM(Acctsessiontime) FROM radacct WHERE UserName=’%{%k}’”
}
sqlcounter max_all_mb {
counter-name = Max-All-MB
check-name = Max-All-MB
reply-name = ChilliSpot-Max-Total-Octets
sqlmod-inst = sql
key = User-Name
reset = never
query = “SELECT SUM(AcctInputOctets)/(1024*1024) + SUM(AcctOutputOctets)/(1024*1024) FROM radacct WHERE UserName=’%{%k}’”
}
Sampai dini, seharusnya freeradius sudah bekerja. Anda bisa memastikan dengan manjalankan freeradius dengan mode debug.
$/etc/init.d/freeradius stop
$/usr/sbin/freeradius -X
Anda bisa melihat jika freeradius error makan akan di tampilkan letak kesalahannya yang membuat freeradius tidak berjalan, namun jika freeradius sudah bekerja dengan benar akan muncul pemberitahun freeradius menunggu request selanjutnya. Jika telah berjalan dengan benar anda bisa mematikan mode debug dan menjalankan dalam modus normal dengan menekan tombol ctrl+c dan menjalankan perintah
$/usr/sbin/freeradius
Pekerjaan selanjutnya adalah menginstall Coova Chilli. Sebelumnya anda mesti mendownload paket coova baru kemudian menginstalnya.
$dpkg -i coova-chilli_1.2.2_i386.deb
Secara default, coova chilli di set dalam keadaan tidak aktif, anda harus mengaktifkan dengan cara merubah isi file /etc/default/chilli dan cari
START_CHILLI=0 ubah menjadi START_CHILLI=1
selanjutnya adalah download dan install Haserl
$tar -zxvf haserl-0.8.0.tar.gz
$cd haserl-0.8.0;./configure;make;sudo make install
Kemudian Edit file /etc/chilli/wwwsh
cari :
haserl=$(which haserl 2>/dev/null)
ubah menjadi :
haserl=/usr/local/bin/haserl
kemudian tambahkan baris berikut pada file /etc/chilli/up.sh
# may not have been populated the first time; run again
[ -e "/var/run/chilli.iptables" ] && sh /var/run/chilli.iptables 2>/dev/null
# force-add the final rule necessary to fix routing tables
iptables -I POSTROUTING -t nat -o $HS_WANIF -j MASQUERADE
Kemudian buka file /etc/chilli/default dan sesuaikan parameter sesuai setting-setting diatas, berikut adalah setting /etc/chilli/default saya :
# -*- mode: shell-script; -*-
#
# Coova-Chilli Default Configurations.
# To customize, copy this file to /etc/chilli/config
# and edit to your liking. This is included in shell scripts
# that configure chilli and related programs before file ‘config’.
###
# Local Network Configurations
#
# HS_WANIF=eth0 # WAN Interface toward the Internet
HS_LANIF=eth1 # Subscriber Interface for client devices
HS_NETWORK=10.1.0.0 # HotSpot Network (must include HS_UAMLISTEN)
HS_NETMASK=255.255.255.0 # HotSpot Network Netmask
HS_UAMLISTEN=10.1.0.1 # HotSpot IP Address (on subscriber network)
HS_UAMPORT=3990 # HotSpot UAM Port (on subscriber network)
HS_UAMUIPORT=4990 # HotSpot UAM “UI” Port (on subscriber network, for embedded portal)
# HS_DYNIP=
# HS_DYNIP_MASK=255.255.255.0
# HS_STATIP=
# HS_STATIP_MASK=255.255.255.0
# HS_DNS_DOMAIN=
# DNS Servers
HS_DNS1=192.168.1.254
###
# HotSpot settings for simple Captive Portal
#
HS_NASID=nas01
HS_RADIUS=localhost
HS_RADIUS2=localhost
HS_UAMALLOW=10.1.0.1,192.168.1.254,lestari-net.co.cc
HS_RADSECRET=easyhotspot # Set to be your RADIUS shared secret//sesuai yang kita isikan di /etc/freeradius/clients.conf
HS_UAMSECRET=easyhotspot # Set to be your UAM secret
HS_UAMALIASNAME=chilli
# Configure RADIUS proxy support (for 802.1x + captive portal support)
# HS_RADPROXY=on
# HS_RADPROXY_LISTEN=127.0.0.1
# HS_RADPROXY_CLIENT=127.0.0.1
# HS_RADPROXY_PORT=1645
# HS_RADPROXY_SECRET=$HS_RADSECRET
# Example OpenWrt /etc/config/wireless entry for hostapd
# option encryption wpa2
# option server $HS_RADPROXY_LISTEN
# option port $HS_RADPROXY_PORT
# option key $HS_RADPROXY_SECRET
# To alternatively use a HTTP URL for AAA instead of RADIUS:
# HS_UAMAAAURL=http://my-site/script.php
# Put entire domains in the walled-garden with DNS inspection
# HS_UAMDOMAINS=”.paypal.com,.paypalobjects.com”
# Optional initial redirect and RADIUS settings
# HS_SSID=<ssid> # To send to the captive portal
# HS_NASMAC=<mac address> # To explicitly set Called-Station-Id
# HS_NASIP=<ip address> # To explicitly set NAS-IP-Address
# The server to be used in combination with HS_UAMFORMAT to
# create the final chilli ‘uamserver’ url configuration.
HS_UAMSERVER=$HS_UAMLISTEN
# Use HS_UAMFORMAT to define the actual captive portal url.
# Shell variable replacement takes place when evaluated, so here
# HS_UAMSERVER is escaped and later replaced by the pre-defined
# HS_UAMSERVER to form the actual “–uamserver” option in chilli.
HS_UAMFORMAT=http://\$HS_UAMLISTEN:\$HS_UAMUIPORT/www/login.chi
# Same principal goes for HS_UAMHOMEPAGE.
HS_UAMHOMEPAGE=http://\$HS_UAMLISTEN:\$HS_UAMPORT/www/coova.html
# This option will be configured to be the WISPr LoginURL as well
# as provide “uamService” to the ChilliController. The UAM Service is
#
# HS_UAMSERVICE=
###
# Features not activated per-default (default to off)
#
# HS_RADCONF=off # Get some configurations from RADIUS or a URL (‘on’ and ‘url’ respectively)
#
# HS_ANYIP=on # Allow any IP address on subscriber LAN
#
# HS_MACAUTH=on # To turn on MAC Authentication
#
# HS_MACAUTHDENY=on # Put client in ‘drop’ state on MAC Auth Access-Reject
#
# HS_MACAUTHMODE=local # To allow MAC Authentication based on macallowed, not RADIUS
#
# HS_MACALLOW=”…” # List of MAC addresses to authenticate (comma seperated)
#
# HS_USELOCALUSERS=on # To use the /etc/chilli/localusers file
#
# HS_OPENIDAUTH=on # To inform the RADIUS server to allow OpenID Auth
#
# HS_WPAGUESTS=on # To inform the RADIUS server to allow WPA Guests
#
# HS_DNSPARANOIA=on # To drop DNS packets containing something other
# # than A, CNAME, SOA, or MX records
#
# HS_OPENIDAUTH=on # To inform the RADIUS server to allow OpenID Auth
# # Will also configure the embedded login forms for OpenID
#
# HS_USE_MAP=on # Short hand for allowing the required google
# # sites to use Google maps (adds many google sites!)
#
###
# Other feature settings and their defaults
#
# HS_DEFSESSIONTIMEOUT=0 # Default session-timeout if not defined by RADIUS (0 for unlimited)
#
# HS_DEFIDLETIMEOUT=0 # Default idle-timeout if not defined by RADIUS (0 for unlimited)
#
# HS_DEFBANDWIDTHMAXDOWN=0 # Default WISPr-Bandwidth-Max-Down if not defined by RADIUS (0 for unlimited)
#
# HS_DEFBANDWIDTHMAXUP=0 # Default WISPr-Bandwidth-Max-Up if not defined by RADIUS (0 for unlimited)
###
# Centralized configuration options examples
#
# HS_RADCONF=url # requires curl
# HS_RADCONF_URL=https://coova.org/app/ap/config
# HS_RADCONF=on # gather the ChilliSpot-Config attributes in
# # Administrative-User login
# HS_RADCONF_SERVER=rad01.coova.org # RADIUS Server
# HS_RADCONF_SECRET=coova-anonymous # RADIUS Shared Secret
# HS_RADCONF_AUTHPORT=1812 # Auth port
# HS_RADCONF_USER=chillispot # Username
# HS_RADCONF_PWD=chillispot # Password
###
# Firewall issues
#
# Uncomment the following to add ports to the allowed local ports list
# The up.sh script will allow these local ports to be used, while the default
# is to block all unwanted traffic to the tun/tap.
#
HS_TCP_PORTS=”22 80 443 10000″
###
# Standard configurations
#
HS_MODE=hotspot
HS_TYPE=chillispot
# HS_RADAUTH=1812
# HS_RADACCT=1813
# HS_ADMUSR=chillispot
# HS_ADMPWD=chillispot
###
# Post-Auth proxy settings
#
# HS_POSTAUTH_PROXY=<host or ip>
# HS_POSTAUTH_PROXYPORT=<port>
# Directory specifying where internal web pages can be served
# by chilli with url /www/<file name>. Only extentions like .html
# .jpg, .gif, .png, .js are allowed. See below for using .chi as a
# CGI extension.
HS_WWWDIR=/etc/chilli/www
# Using this option assumes ‘haserl’ is installed per-default
# but, and CGI type program can ran from wwwsh to process requests
# to chilli with url /www/filename.chi
HS_WWWBIN=/etc/chilli/wwwsh
# Some configurations used in certain user interfaces
#
HS_PROVIDER=Silfa-Link
HS_PROVIDER_LINK=http://silfalink.com/
###
# WISPr RADIUS Attribute support
#
HS_LOC_NAME=”Silfa Link HotSpot” # WISPr Location Name and used in portal
# WISPr settings (to form a proper WISPr-Location-Id)
# HS_LOC_NETWORK=”My Network” # Network name
# HS_LOC_AC=408 # Phone area code
# HS_LOC_CC=1 # Phone country code
# HS_LOC_ISOCC=US # ISO Country code
Setelah di save, jalankan chilli dengan perintah :
$/etc/init.d/chilli start
Seharusnya saat ini server biilling hotspot anda sudah berjalan dengan baik, begitu juga dengan easyhotspotnya. lakukan pengecekan dengan perintah :
$ifconfig
Jika dalam reslut ifconfig telah muncul
eth1 dan
tun0 dimana Tun0 memiliki ip 10.1.0.1 maka server anda sudah bisa digunakan. Hubungkan sebuah PC dengan kabel LAn ke eth1, dan pastikan PC tersebut menggunakan setting IP otomatis. dan lihat jika PC sudah mendapatkan IP DHCP dari coova chilli dengan ip 10.1.0.x maka coova chilli sudah bekerja dengan baik. Anda tinggal membuka browser dan buka alamat sembarang, disini harusnya anda diredirect ke halaman login, jika tidak anda bisa mengetikkan alamat
http://10.1.0.1:3990/ (dalalam beberapa kali ujicoba sering kali coova merespon lambat sehingga user tidak di redirect kehalaman login).
Terakhir, yang harus anda lakukan adalah membuat symlink untuk easyhotspot agar bisa dibuka di browser, lakukan perintah di bawah :
$ln -s /opt/easyhotspot/htdocs /var/www/easyhotspot
Setelah itu silahkan buka http://ip-server-anda/easyhotspot untuk memulai menejemen hotspot anda. Oya, sebelumnya anda harus memastikan tiga file config easyhotspot sudah terisi dengan benar yaitu/opt/easyhotspot/htdocs/system/application/config/config.php,/opt/easyhotspot/htdocs/system/application/config/database.php dan /opt/easyhotspot/htdocs/system/application/config/easyhotspot.php
Sumber : ndra.gmib26