Captive Portal dengan Coova Chilli, Yfi, FreeRadius.



Assalamu’alaikum Wr. Wb.

Bagaimana kabarnya kawan-kawan? Kebetulan nih saya baru coba setting Coova Chilli jadi daripada kedepannya lupa lebih baik saya dokumentasikan saja.

Topologi :

Sebelum praktek ada beberapa yang harus dipersiapkan:

a.PC yang sudah terinstall ubuntu server. Disini saya menggunakan Ubuntu Server 8.04.

b.Putty untuk meremote server.

c. WinSCP untuk mengirim paket yang di download ke server.

 

Step by step:

Setting IP address pada mesin CP (captive portal). Eth0 untuk Inet dan Eth1 untuk LAN.

sudo vi /etc/network/interfaces

auto lo
iface lo inet loopback

iface eth0 inet static
           address 10.67.192.4
           netmask 255.255.255.0
           network 10.67.192.0
           broadcast 10.67.192.255
           gateway 10.67.192.1
           dns-nameservers 192.168.56.14 192.168.54.14
           iface eth1 inet static
           address 10.88.88.1
           netmask 255.255.255.0
           network 10.88.88.0
           broadcast 10.88.88.255

Restart service dari networking untuk menjalankan settingan baru.

#/etc/init.d/networking restart

Pastikan /etc/resolv.conf disetting DNS yang benar.

Edit file /etc/sysctl.conf, Uncomment bagian ini agar dapat forwarding packet

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

Dapat juga dengan OSPF. Dapat dilihat di https://disconnected32.wordpress.com/2010/06/24/setting-ospf-dengan-quagga/

Install LAMP dan OpenSSH-Server :

sudo tasksel

Tandai LAMP dan OpenSSH Server maka semua package akan otomatis terinstall.

Jika sudah OpenSSH Server terinstall, remote mesin dengan putty.

Instalasi :

1. CakePHP
2. YFi CakePHP Application
3. YFi View Component
4. FreeRADIUS
5. Coova Chilli

 

1. Install CakePHP
Install  PHP dan imagemagick :

sudo apt-get install php5-cli imagemagick

Mulai versi Beta-3, Yfi Manager Hotspot sudah support multi bahasa

sudo apt-get install language-pack-id  --- bahasa Indonesia
sudo apt-get install language-pack-af
sudo apt-get install language-pack-fr
sudo apt-get install language-pack-ms
sudo apt-get install language-pack-nl
sudo apt-get install language-pack-es

Download versi terbaru CakePHP di http://cakephp.org.

Tapi saya menggunakan yang versi 1.2.6. Paket-paket yang akan digunakan saat praktek captive portal ini dapat di download di Paket Captive Portal atau Paket CP

Jika sudah paket di download, masukan paket ke server dengan WinSCP.


 

Pilih direktori yang akan menerima paket di /home/user contoh /home/ryan .

Copy, extract di direktori apache. Default ubuntu di /var/www

sudo cp /home/ryan/cakephp-cakephp-1.2.6-0-gbe7ddfb.tar.gz /var/www
cd /var/www
sudo tar -xzvf cakephp-cakephp-1.2.6-0-gbe7ddfb.tar.gz

Untuk memudahkan rename direktori hasil ekstrak (misal:cake_1.2.6)
Kemudian buat symbolic link antara direktori cake_1.2.6 dengan c2

cd /var/www
sudo mv cakephp-cakephp-ef18ab2/ cake_1.2.6
sudo ln -s ./cake_1.2.6 ./c2

Enable beberapa modul apache: rewrite, deflate untuk kompresi, dan headers untuk memodifikasi http header. Modul tersebut diperlukan untuk meningkatkan performa dan kecepatan web aplikasi.

sudo a2enmod rewrite
sudo a2enmod deflate
sudo a2enmod headers
sudo /etc/init.d/apache2 reload

Kemudian edit file /etc/php5/apache2/php.ini

Ubah baris

output_buffering = Off

menjadi

output_buffering = 4096

 

Ubah file /etc/apache2/apache2.conf
Masukkan script di bawah ini :

<Directory  /var/www/c2>
    AllowOverride All
</Directory>
#-------COMPRESS CONTENT-----------
# place filter 'DEFLATE' on all outgoing content
SetOutputFilter DEFLATE
# exclude uncompressible content via file type
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|jpg|png|pdf|zip|bz2|sit|rar)$ no-gzip
#dont-vary
# Keep a log of compression ratio on each request
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
CustomLog /var/log/apache2/deflate.log deflate
# Properly handle old browsers that do not support compression
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
#----------------------------------

#------ADD EXPIRY DATE-------------
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
    Header set Expires "Thu, 15 Apr 2012 20:00:00 GMT"
</FilesMatch>
#----------------------------------

#--------Remove ETags --------------------
FileETag none
#-----------------------------------------

Reload konfigurasi apache

sudo /etc/init.d/apache2 reload

 

2. Install YFi CakePHP Application
Download versi terbaru YFi Cake, disini memakai versi yfi_cake-Beta-4.tar.gz
extract di direktori “/var/www/c2″.

sudo cp /home/ryan/yfi_cake-Beta-4.tar.gz /var/www/c2
cd /var/www/c2
sudo tar -xzvf yfi_cake-Beta-4.tar.gz
sudo chown -R www-data. /var/www/c2/yfi_cake/tmp
sudo chown -R www-data. /var/www/c2/yfi_cake/webroot/img/graphics

 

Setting Database

Buat database ‘yfi’ dengan username dan password default ‘yfi’ (default).
Untuk settingan default gunakan perintah ini :

mysql -u root -p
create database yfi;
GRANT ALL PRIVILEGES ON yfi.* to 'yfi'@'127.0.0.1' IDENTIFIED BY 'yfi';
GRANT ALL PRIVILEGES ON yfi.* to 'yfi'@'localhost' IDENTIFIED BY 'yfi';
exit;

Masukkan database :

mysql -u root -p yfi < /var/www/c2/yfi_cake/setup/db/yfi.sql

 

Tes YFi CakePHP dengan mengetik alamat server di browser:
http://127.0.0.1/c2/yfi_cake/users/
Jika kita meremote server, maka ketik di browser ip address server:
http://10.67.192.4/c2/yfi_cake/users/

Kalau muncul halaman login, berarti setting sudah berhasil

 

3. Install YFi Viewer Component

Download viewer component disini saya gunakan versi yfi-Beta-4.tar.gz
extract di directory default apache2 “/var/www ”

sudo cp /home/ryan/yfi-Beta-4.tar.gz /var/www
cd /var/www
sudo tar -xzvf yfi-Beta-4.tar.gz

 

Tes Viewer Component
Masukkan alamat berikut di browser : http://127.0.0.1/yfi atau http://10.67.192.4/yfi jika dari Komputer client.
Jika berhasil, akan keluar splash page dan kemudian halaman login.

Coba log in dengan salah satu user default berikut:

Role               Username         Password
Administrator        root             admin
Access Provider      ap               ap
Permanent User     dvdwalt@ri       dvdwalt@ri

 

4. Install FreeRADIUS Server
YFi Hotspot Manager merupakan front-end dari mysql database yang digunakan oleh FreeRADIUS. Yang dipakai adalah versi 2.1.8.

Installkan paket-paket berikut :

sudo apt-get install build-essential libmysqlclient15-dev libperl-dev libxml-simple-perl libmail-sendmail-perl

Kemudian compile FreeRadius.

Jika belum mempunyai paket FreeRADIUS dapat di download di http://freeradius.org/download.html

cd /home/ryan
tar -xzvf freeradius-server-2.1.8.tar.gz
cd freeradius-server-2.1.8
./configure | tee config_out.txt
make
sudo make install
sudo ldconfig

Tes FreeRadius dengan debug mode:

sudo /usr/local/sbin/radiusd –X

Ctrl+c untuk keluar.

Buat FreeRADIUS otomatis berjalan saat boot.

sudo cp /usr/local/sbin/rc.radiusd /etc/init.d/radiusd
sudo update-rc.d radiusd start 80 2 3 4 5 . stop 20 0 1 6 .

Setting FreeRADIUS agar bisa diakses oleh YFi, ganti raddb freeradius dgn raddb YFI.

sudo mv /usr/local/etc/raddb /usr/local/etc/raddb.asli
sudo cp /var/www/c2/yfi_cake/setup/radius/raddb.tar.gz /usr/local/etc/
cd /usr/local/etc/
sudo tar -xzvf raddb.tar.gz
sudo chown root.www-data /usr/local/etc/raddb/proxy.conf
sudo chmod 664 /usr/local/etc/raddb/proxy.conf
sudo chmod 644 /usr/local/etc/raddb/dictionary
sudo ldconfig

 

Aktifkan dan ubah dictionary chillispot
Pada Freeradius versi terbaru sudah ada dictionary chillispot, jadi kita tinggal tambahkan baris berikut di file /usr/local/share/freeradius/dictionary.chillispot untuk memasukkan attribute YFi khusus untuk voucher.

Cari baris berikut:

ATTRIBUTE       ChilliSpot-Version                      8       string
ATTRIBUTE       ChilliSpot-OriginalURL                  9       string

Kemudian tambahkan data berikut dibawahnya

##YFi Specific Attributes
ATTRIBUTE       Yfi-Voucher                        40     string
ATTRIBUTE       Yfi-MAC-Reset                      41     string
ATTRIBUTE        Yfi-Data                    42     string
ATTRIBUTE        Yfi-Time                43     string

#YFi Various Counters
ATTRIBUTE       Max-Daily-Session               50      integer
ATTRIBUTE       Max-Monthly-Session             51      integer
ATTRIBUTE       Max-Weekly-Session              52      integer
ATTRIBUTE       Max-All-Session                 53      integer

ATTRIBUTE       ChilliSpot-Max-Daily-Octets               60      integer
ATTRIBUTE       ChilliSpot-Max-Monthly-Octets             61      integer
ATTRIBUTE       ChilliSpot-Max-Weekly-Octets              62      integer
ATTRIBUTE       ChilliSpot-Max-All-Octets                 63      integer

 

Cek file /usr/local/etc/raddb/sql.conf dan /usr/local/etc/raddb/rlm_perl_modules/conf/settings.conf

Username dan password database harus sama dengan waktu kita buat database di atas.

Karena sebelumnya membuat database dengan nama ‘yfi‘ maka isi username dan password harus ‘yfi
Jalankan FreeRadius dengan debug mode untuk memastikan tidak ada error.

sudo /usr/local/sbin/radiusd -X

Kalau tidak ada error, jalankan FreeRADIUS melalui startup script.

sudo /etc/init.d/radiusd start

YFi menggunakan beberapa script yang harus dijalankan secara periodik. Copy-kan Cron Script berikut ke cron system.

sudo cp /var/www/c2/yfi_cake/setup/cron/yfi /etc/cron.d/

 

5. Install CoovaChilli
Download terlebih dahulu CoovaChilli di http://www.coova.org/Download jika belum ada.
Disini saya menggunakan CoovaChilli-1.0.14.

Install-kan coova chilli :

cd /home/ryan
sudo dpkg -i coova-chilli_1.0.14-1_i386.deb

 

Konfigurasi CoovaChilli

Copy-kan file ” /etc/chilli/defaults ” ke “/etc/chilli/config

sudo cp /etc/chilli/defaults /etc/chilli/config

Ubah settingan file /etc/chilli/config

####   Local Network Configurations#
# HS_WANIF=eth0            # WAN Interface toward the Internet
HS_LANIF=eth1              # Isi interface untuk LAN
HS_NETWORK=10.88.88.0      # Network IP Address server
HS_NETMASK=255.255.255.0   # Netmask IP Address server yang arah client
HS_UAMLISTEN=10.88.88.1    # IP Address Server
HS_UAMPORT=3990            # HotSpot Port (default)

####   HotSpot settings for simple Captive Portal#
HS_NASID=nas01
HS_UAMSECRET=greatsecret #default
HS_RADIUS=127.0.0.1 #IP Address localhost karena coova dan radius dalam satu mesin
HS_RADIUS2=127.0.0.1 #IP Address localhost karena coova dan radius dalam satu mesin
HS_RADSECRET=testing123 #default
HS_UAMALLOW=coova.org #jika kita membuka web ini kita tidak perlu authentikasi terlebih dahulu
HS_NASIP=127.0.0.1    
HS_UAMFORMAT=http://10.88.88.1/coova_json/hs_land.php #jangan lupa IP Address diganti dengan IP Address Server
HS_UAMHOMEPAGE=http://10.88.88.1/coova_json/splash.php
HS_MODE=hotspot
HS_TYPE=chillispot
HS_WWWDIR=/etc/chilli/www
HS_WWWBIN=/etc/chilli/wwwsh
HS_PROVIDER=Coova
HS_PROVIDER_LINK=http://www.coova.org
HS_LOC_NAME="My Captive Portal"    # WISPr Location Name and used in portal

Edit file ” /etc/default/chilli ” ubah nilai ke 1

START_CHILLI=1

Start-up coova chilli

sudo /etc/init.d/chilli start

 

Firewall Setting
Tambahkan baris berikut di bagian akhir 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 tambahkan coa port pada file /etc/init.d/chilli, cari pada bagian ini :

OPTS="--pidfile /usr/local/var/run/$NAME.pid

Tambahkan –coaport 3799 untuk keperluan “Kick User Off

OPTS="--pidfile /usr/local/var/run/$NAME.pid --coaport 3799" ## Tambahkan coa port

 

Halaman Login
Untuk halaman login dapat  menggunakan login page coova_json
Copy folder coova_json ke direktori apache /var/www

sudo cp -R /var/www/c2/yfi_cake/setup/coova_json /var/www

Cek di file  /var/www/coova_json/login.php :
1. $uamsecret harus sama dengan di file /etc/chilli/config , begitu juga di file /var/www/coova_json/uam.php . Defaultnya adalah greatsecret.
2. $server_ip dan $port di /var/www/coova_json/login.php , ganti server ip dengan ip server untuk ke local kita dan jika  3660 harus diganti dengan 3990.

$server_ip      = '10.88.88.1';

$port           = '3990';

 

Silakan restart server captive portal.

Jangan lupa berdoa semoga lancar.

 

Pengujian :

a.YFI dan Radius

1. Di browser kita buka http://127.0.0.1/yfi atau http://10.67.192.4/yfi kemudian login dengan username root dan password admin.

2. Kita pilih Permanent Users > User Management. Setelah itu pilih add (+) untuk menambah username.


Isi Username, Password, Language, Realm, Profile dan Cap Type. Kemudian Save.

Setelah berhasil membuat username baru, tes apakah sudah ada di radius dengan memilih username yang akan dites, kemudian klik Test Radius.

Jika tampilan seperti dibawah ini berarti YFI dan Radius sudah terkoneksi dengan baik.

 

b.Captive Portal

1.Tes dengan menggunakan komputer client. Setting network interface client ke dhcp, jika client mendapat IP Address 10.88.88.2 – dst berarti dhcp dari coova sudah berfungsi.

2.Coba browsing contoh buka www.google.com. Akan keluar halaman login. Kemudian diarahkan ke halaman login: hs_land.php.

 

3.  Login dengan user dvdwalt@ri dan password dvdwalt@ri, tapi jika sudah membuat username sebelumnya, bisa dicoba username tersebut.

contoh : ryan@ri password bismillah.

4.Jika gagal akan muncul tampilan.

 

5. Jika akses diterima, akan muncul www.google.com. Maka konfigurasi Captive Portal ini berhasil.

 

Alhamdulillah akhirnya materi ini sudah selesai. Banyak ilmu yang bisa saya dapatkan dari praktek Captive Portal ini.

Tulisan ini niatnya hanya untuk mengingatkan saya jika lupa kedepannya tapi jika yang ingin share-kan tulisan ini, silakan.

Saya harap ada kritik atau saran dari para pembaca. Semoga bermanfaat.

Terima Kasih atas perhatiannya.

Wassalamu’alaikum Wr. Wb.

 

Referensi dari http://opensource.telkomspeedy.com/forum/viewtopic.php?id=8439

 

32 thoughts on “Captive Portal dengan Coova Chilli, Yfi, FreeRadius.

  1. hahahaha , thank’s buat ilmunya . berguna banget buat laporan saya .

    kalo boleh tanya ini COPAS dmn ? asa pernah baca , tapi boleh lah ini mah lebih kumplit wkwkw

  2. haha terima kasih ya atas komentarnya dan semoga laporan anda bisa lancar…

    Copas?? mungkin bisa disebut iya tapi bisa juga tidak soalnya saya praktek memang membaca dari artikel lain tapi saya posting materi ini setelah saya berhasil praktek dan isi dari materi ini diambil dari hasil praktek saya..
    Dan saya hanya menambahkan bagian-bagian yang kurang jelas dari materi yang saya baca..

    Begitulah sekiranya..

  3. Pingback: Membuat hotspot dengan Captive Portal (Coova-chillli) - Mari Belajar Bersama

  4. hello I was luck to discover your blog in google
    your subject is excellent
    I obtain a lot in your website really thank your very much
    btw the theme of you website is really marvelous
    where can find it

  5. sekalian nanya lagi nih…
    untuk isi interfacesnya kan beda antara punya anda dengan saya, nha tu ngisinya gmana ?
    address, netmask, network, broadcast, dst.. untuk eth0 dan eth1…
    mohon bantuannya…

  6. Sama-sama kang fajar
    Untuk mengganti interface dan ip address dari mesin di ubuntu bisa dilihat di materi yaitu dengan cara vi /etc/network/interfaces

    kemudian tambahkan :

    iface (nama ethernet) inet static
    address (IP Address server)
    netmask (netmask untuk server)
    network (network untuk server)
    broadcast (broadcast untuk server)
    gateway (gateway untuk server)
    dns-nameservers (dns untuk server)

    iface (nama ethernet) inet static
    address (IP adress server)
    netmask (netmask untuk server)
    network (network untuk server)
    broadcast (broadcast untuk server)

    Untuk contohnya bisa dilihat di materi ini. Disini saya menggunakan eth0 untuk ke backbone internet dan eth1 untuk ke client.

    Terima Kasih atas kunjungannya ke Blog saya !

  7. Makasi share ilmunya…
    mau nanya, saya masi mau coba2 sama captive portal buatan sendiri.
    Saya udah beli TP-Link TL-WR841ND WiFi Router dan sudah saya ganti firmwarenya sama DD-WRT.
    Bisakah saya implement YFi + FreeRadius dan Coova Chilli seperti di atas?

  8. Sama2 maaf baru bisa menjawab sekarang.

    Kalau disini saya tidak melihat dari sisi hotspot jenisnya gimana tapi dari sisi server untuk captive portal.

    Jika Hotspot tersebut tersambung ke server CP, lebih baik wifi di setting sbg bridge agar dhcp dapat langsung dari server CP agar hop lebih sedikit.

  9. mas mau tax….
    download paket
    coova-chilli_1.0.14-1_i386.deb dan yfi-signup.tar.gz
    di mna,kok g ada ya mas….
    mohon pencerahanx

  10. mas, mau tanya, saya kan sudah sudah selesai semua tahapan instalasinya, bahkan halaman login pun sudah mau muncul. tapi pada user management, data user nya ga mau muncul dan ga bisa meng aksesnya, tapi tabel yang lainnya bisa. saya sudah coba ganti yfi-cake ke versi yang lama, juga sama saja. mohon bantuannya. terima kasih sebelumnya.

  11. assalamualaikum…..
    mas mau tanya,saya sudah kelar menggunakan sampai di /etc/chilli/config
    trus stelah di beri perintah untuk Start-up coova chilli,networknya langsung error…..
    dan tidak bisa lagi masuk di linux ubuntux…..
    apanya yang salah ya mas……
    tolong bantuannya mas….
    sebelumnya makasih…..

  12. ada error gan , mohon penceahannya :

    Syntax error on line 8 of /etc/apache2/apache2.conf:
    Invalid command SetEnvIfNoCase’, perhaps misspelled or defined by a module not included in the server configuration

    di script : apache2.conf

    tks

  13. Hi,

    Can u please tell a bit detail about Firewall Setting as i cannot read your language.
    I have installed on ubuntu server 10.10 and it’s not works yet, client computer cannot get IP by dhcp server.

    Thanks for your help!

  14. gan kok tidak bisa masuk ke folder /var/www/c2?
    tapi yfi_cake-Beta sudah dicopy
    kenapa yah…..
    bash: cd: c2: Not a directory

  15. gan kalo di yfi hotspot manager gk muncul icon add user gimana gan?
    ada keterangan Sorry, an error occurred di tabelnya…

    mohon petunjuknya

  16. mohon pencerahan nya mas
    ni kok pas test cake phpnya malah muncul ini ya

    Warning: include(cake/bootstrap.php) [function.include]: failed to open stream: No such file or directory in /var/www/cakephp2.2/yfi_cake/webroot/index.php on line 81

    Warning: include() [function.include]: Failed opening ‘cake/bootstrap.php’ for inclusion (include_path=’/var/www/cakephp2.2:/var/www/cakephp2.2/yfi_cake/:.:/usr/share/php:/usr/share/pear’) in /var/www/cakephp2.2/yfi_cake/webroot/index.php on line 81

    Fatal error: CakePHP core could not be found. Check the value of CAKE_CORE_INCLUDE_PATH in APP/webroot/index.php. It should point to the directory containing your /cake core directory and your /vendors root directory. in /var/www/cakephp2.2/yfi_cake/webroot/index.php on line 82

  17. saya mau minta bantuan nya mas…
    saya udah coba buat tutorial di atas.. trus ada error gnie…

    CakePHP core could not be found. Check the value of CAKE_CORE_INCLUDE_PATH in APP/webroot/index.php. It should point to the directory containing your /cake core directory and your /vendors root directory. in /var/www/cake_1.2.6/yfi_cake/webroot/index.php on line 82

    tolong bantuan nya ta mas.

  18. Pingback: Membuat hotspot dengan Captive Portal (Coova-chillli) | Mari Belajar Bersama

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s