Archive

Archive for March, 2014

Mengaktifkan IPv6 pada salah satu Virtual Host CPanel


Tujuan dari note ini adalah  bagaimana caranya agar IPv6 Cpanel yang terinstall pada Centos dapat berjalan, selanjutnya agar Virtual Host yang dikelola oleh Cpanel juga dapat diakses webnya melalui jaringan IPv6.

  • Syarat utama anda sudah memiliki alokasi IPv6 baik dedicated/dualstack , tunneling.
  • Pastikan bahwa record AAAA sudah ditambahkan pada DNS Server anda.
  • eth0 Link encap:Ethernet HWaddr F2:CB:A6:DF:86:6C
     inet addr:103.3.46.5 Bcast:103.3.46.255 Mask:255.255.255.0
     inet6 addr: 2001:df0:230:9::/128 Scope:Global
     inet6 addr: fe80::f0cb:a6ff:fedf:866c/64 Scope:Link
     inet6 addr: 2001:df0:230:9::7/64 Scope:Global
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
     RX packets:17230026 errors:0 dropped:0 overruns:0 frame:0
     TX packets:18842347 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000
     RX bytes:4065688152 (3.7 GiB) TX bytes:18337777713 (17.0 GiB)
  • root@hosting [~]# traceroute6 www.kame.net
    traceroute to www.kame.net (2001:200:dff:fff1:216:3eff:feb1:44d7), 30 hops max, 80 byte packets
     1 GERBANG-6-KELUAR-AS56237-NOC-Cyber-MK670-AP.unila.ac.id (2001:df0:230:9::1) 12.857 ms 12.787 ms 11.406 ms
     2 2400:4a00:a000:300::1 (2400:4a00:a000:300::1) 37.287 ms 37.303 ms 37.309 ms
     3 2400:4a00:1d00::1:25 (2400:4a00:1d00::1:25) 50.989 ms 52.375 ms 52.669 ms
     4 snge-b1-link.telia.net (2001:2000:3080:961::1) 86.042 ms 86.058 ms 85.853 ms
     5 las-bb1-v6.telia.net (2001:2000:3018:2f::1) 259.833 ms 256.579 ms 256.592 ms
     6 ntt-ic-143926-las-bb1.c.telia.net (2001:2000:3080:362::2) 247.189 ms 245.040 ms ntt-ic-151170-las-bb1.c.telia.net (2001:2000:3080:3a2::2) 244.950 ms
     7 ae-8.r20.lsanca03.us.bb.gin.ntt.net (2001:418:0:2000::22d) 247.316 ms ae-6.r21.lsanca03.us.bb.gin.ntt.net (2001:418:0:2000::10d) 244.766 ms *
     8 ae-7.r20.tokyjp05.jp.bb.gin.ntt.net (2001:218:0:2000::2ce) 300.563 ms * 254.249 ms
     9 ae-19.r25.tokyjp05.jp.bb.gin.ntt.net (2001:218:0:2000::29d) 241.705 ms * ae-19.r24.tokyjp05.jp.bb.gin.ntt.net (2001:218:0:2000::299) 235.300 ms
    10 ae-1.r01.tokyjp01.jp.bb.gin.ntt.net (2001:218:0:2000::202) 246.640 ms 246.853 ms 237.426 ms
    11 ge-0-7-0-18.r01.tokyjp01.jp.ce.gin.ntt.net (2001:218:2000:5000::82) 410.375 ms 410.374 ms 410.116 ms
    12 ve44.foundry6.otemachi.wide.ad.jp (2001:200:0:10::141) 369.848 ms 354.840 ms 345.964 ms
    13 2001:200:dff:fff1:216:3eff:feb1:44d7 (2001:200:dff:fff1:216:3eff:feb1:44d7) 345.331 ms 358.349 ms 340.738 ms
    root@hosting [~]#
  • Contoh ditempat saya resolv DNS yang sudah aktif
  • C:\Users\GigihFN>nslookup www.unila.ac.id
    
    Name: www.unila.ac.id
    Addresses: 2001:df0:230:9::7
               103.3.46.5
    
    C:\Users\GigihFN>nslookup 2001:df0:230:9::7
    Name: www.unila.ac.id
    Address: 2001:df0:230:9::7
  • Edit file master config Apache Cpanel  /etc/httpd/conf/httpd.conf , lalu tambahkan listen [::]:80 dibawah Listen IPv4 milik  anda

sebelum diubah /etc/httpd/conf/httpd.conf

PidFile logs/httpd.pid
LockFile logs/accept.lock
# Defined in /var/cpanel/cpanel.config: apache_port
Listen 0.0.0.0:80
User nobody
Group nobody
ubah menjadi
PidFile logs/httpd.pid
LockFile logs/accept.lock
# Defined in /var/cpanel/cpanel.config: apache_port
Listen 0.0.0.0:80
Listen [::]:80
User nobody
Group nobody
  • Selanjutnya rubah konfigurasu sub domain/domain yang ingin ditambahkan IPv6 (contoh http://www.unila.ac.id  dengan IPv6 2001:df0:230:9::7 dengan IPv4 103.3.46.1  ), buka file httpd.conf, ubah bagian :
NameVirtualHost [2001:df0:230:9::7]:80
<VirtualHost 103.3.46.5:80 [2001:df0:230:9::7]:80>
 ServerName unila.ac.id
 ServerAlias ipv6.unila.ac.id www.unila.ac.id
 DocumentRoot /xxx/yyy/www/
 ServerAdmin webmaster@unila.ac.id
 UseCanonicalName Off
 CustomLog /xxx/yyy/unila.ac.id combined
 CustomLog /xxx/yyy/unila.ac.id-bytes_log "%{%s}t %I .\n%{%s}t %O ."
Advertisements
Categories: Blogosphere

WIFI@Unila Statistik

March 13, 2014 1 comment

Setelah infrastruktur Wireless baru di tuning (naikin power transmit, rubah algoritma di wireless controller), terlihat ada peningkatan user cukup signifikan ke WIFI@Unila. Dengan sistem yang baru enak liat laporannya, dari total current 500 client terotentikasi via SSO, android tetap merajai dengan statistik, Android : 20,6 % , Window7 17,2 % , iOS 3,8%, window8 3,8 %, , Blackberry 2%, , XP 1,5 %, tinggal buat paper nya hehe 

Setelah infrastruktur Wireless baru di tuning (naikin power transmit, rubah algoritma di wireless controller), terlihat ada peningkatan user cukup signifikan ke WIFI@Unila. Dengan sistem yang baru enak liat laporannya, dari total current 500 client terotentikasi via SSO, android tetap merajai dengan statistik, Android : 20,6 % , Window7 17,2 % , iOS 3,8%, window8 3,8 %, , Blackberry 2%, , XP 1,5 %,  tinggal buat paper nya hehe :-D
dari total 1800-an device yang tersambung, authenticate via cable total 600-an, dan ke WiFI 300-an.
Gigih Forda Nama's photo.

Aruba Wireless Controller OIDs


Just make a note  Aruba wireless controller OIDs.

Orion Internal Name OID Name OID Value
Role wlsxSwitchRole 1.3.6.1.4.1.14823.2.2.1.1.1.4
HostName wlsxSysExtHostname 1.3.6.1.4.1.14823.2.2.1.2.1.2
ModelName wlsxSysExtModelName 1.3.6.1.4.1.14823.2.2.1.2.1.3
Client_Name staUserName 1.3.6.1.4.1.14823.2.2.1.1.2.2.1.3
Client_Role staUserRole 1.3.6.1.4.1.14823.2.2.1.1.2.2.1.4
Client_AssociationID staAssociationID 1.3.6.1.4.1.14823.2.2.1.1.2.2.1.5
Client_ESSID staAccessPointESSID 1.3.6.1.4.1.14823.2.2.1.1.2.2.1.6
Client_SNR staSignalToNoiseRatio 1.3.6.1.4.1.14823.2.2.1.1.2.2.1.7
Client_TxRate staTransmitRate 1.3.6.1.4.1.14823.2.2.1.1.2.2.1.8
Client_RxRate staReceiveRate 1.3.6.1.4.1.14823.2.2.1.1.2.2.1.9
Client_TotalPacketsTx staTxPackets 1.3.6.1.4.1.14823.2.2.1.1.2.3.1.1
Client_TotalBytesTx staTxBytes 1.3.6.1.4.1.14823.2.2.1.1.2.3.1.2
Client_TotalPacketsRx staRxPackets 1.3.6.1.4.1.14823.2.2.1.1.2.3.1.3
Client_TotalBytesRx staRxBytes 1.3.6.1.4.1.14823.2.2.1.1.2.3.1.4
SSID apESSID 1.3.6.1.4.1.14823.2.2.1.1.3.3.1.2
IPAddress apIpAddress 1.3.6.1.4.1.14823.2.2.1.1.3.3.1.5
RadioType apPhyType 1.3.6.1.4.1.14823.2.2.1.1.3.3.1.6
Type apType 1.3.6.1.4.1.14823.2.2.1.1.3.3.1.7
CurrentChannel apCurrentChannel 1.3.6.1.4.1.14823.2.2.1.1.3.3.1.8
TotalTime apTotalTime 1.3.6.1.4.1.14823.2.2.1.1.3.3.1.10
InactiveTime apInactiveTime 1.3.6.1.4.1.14823.2.2.1.1.3.3.1.11
Noise apChannelNoise 1.3.6.1.4.1.14823.2.2.1.1.3.3.1.13
SNR apSignalToNoiseRatio 1.3.6.1.4.1.14823.2.2.1.1.3.3.1.14
TxRate apTransmitRate 1.3.6.1.4.1.14823.2.2.1.1.3.3.1.15
RxRate apReceiveRate 1.3.6.1.4.1.14823.2.2.1.1.3.3.1.16
TotalPacketsTx apBSSTxPackets 1.3.6.1.4.1.14823.2.2.1.1.3.5.1.8
TotalBytesTx apBSSTxBytes 1.3.6.1.4.1.14823.2.2.1.1.3.5.1.9
TotalPacketsRx apBSSRxPackets 1.3.6.1.4.1.14823.2.2.1.1.3.5.1.10
TotalBytesRx apBSSRxBytes 1.3.6.1.4.1.14823.2.2.1.1.3.5.1.11
Client_IPAddress nUserExtVPNAddress 1.3.6.1.4.1.14823.2.2.1.4.1.2.1.9
Clients wlanAPBssidNumAssociatedStations 1.3.6.1.4.1.14823.2.2.1.5.2.1.7.1.12
Rogue_PhyType monAPInfoPhyType 1.3.6.1.4.1.14823.2.2.1.6.7.1.1.1.1
Rogue_CurrentChannel monAPInfoCurrentChannel 1.3.6.1.4.1.14823.2.2.1.6.7.1.1.1.2
Rogue_Classification monAPInfoClassification 1.3.6.1.4.1.14823.2.2.1.6.7.1.1.1.3
Rogue_SSID monAPInfoESSID 1.3.6.1.4.1.14823.2.2.1.6.7.1.1.1.4
Rogue_SignalStrength monAPInfoRSSI 1.3.6.1.4.1.14823.2.2.1.6.7.1.1.1.5
Rogue_Status monAPInfoStatus 1.3.6.1.4.1.14823.2.2.1.6.7.1.1.1.10

Membaca MIB id SNMP menggunakan Python


SNMP (Simple Network Management Protocol)  adalah protokol populer untuk menjalankan fungsi network manajemen. SNMP digunakan untuk mengumpulkan informasi dan mengkonfigurasi  peralatan jaringan, seperti router, server, printer, hub, switch, wireless controller pada jaringan berbasis Internet Protocol (IP). SNMP dapat mengumpulkan informasi kondisi CPU, temperatur, memory, traffic, chasis, etc.  Salah satu bagian penting dari SNMP adalah MIB (Management Information Base), merupakan satu set koleksi informasi yang diorganisasi dalam bentuk hirarki. Sebuah file MIB adalah sebuah teks file dalam format ASN.1 yang merepresentasikan struktur hirarki dari informasi yang dapat diperoleh dari sebuah aplikasi atau sistem.

Managed object atau MIB object adalah sebuah atau beberapa karakteristik pada suatu managed device misalnya beban CPU, besar memory yang digunakan. MIB pada dasarnya merupakan hirarki dari managed object. Object identifier atau Object ID (OID) digunakan sebagai indentifikasi yang unik untuk setiap managed object yang ada dalam hirarki MIB. OID dapat direprensentasikan dalam sebuah nama misalnya .iso.org.dod.internet.mgmt.mib-2.interfaces.ifnumber atau nomor yang disebut sebagai object descriptor, misalnya .1.3.6.1.2.1.2.1

Sebuah managed object sebagai contoh ifnumber (number of interface) adalah sebuah ide abstrak, sedangkan representasi real dari informasi itu disebut dengan “instance” yang memiliki nilai dari object tersebut. Misalnya instance dari ifnumber adalah ifnumber.0 yang memiliki nilai 3 yang berarti sistem memiliki 3 network interface. Untuk mendapatkan nilai instance tersebut, NMS harus meminta informasi dengan mendefinisikan OID yaitu .1.3.6.1.2.1.2.1.0 (OID dari object ifnumber dengan ditambahkan .0 dibelakangnya). http://ejlp.blogspot.com/2008/10/snmp-bagian-3.html

Python sebagai salah satu bahasa pemrograman yang handal telah menyediakan library untuk membaca nilai MIB dari suatu manage device, kita akan coba bereksperimen bagaimana python membaca nilai OID dari suatu interface device kemudian menyimpan data traffik interface tadi kedalam database lalu memunculkannya dalam bentuk grafis.

Langkah pertama pastikan library snmp sudah terinstall dengan baik pada server monitoring

root@radius:/home/gigih# apt-get install snmp*
Reading package lists... Done
Building dependency tree
Reading state information... Done
libsnmp-python is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 26 not upgraded.
root@radius:/home/gigih#

Langkah kedua identifikasi hirarki MIB yang ada pada sebuah device menggunakan query snmpwalk

root@radius:/home/gigih# /usr/bin/snmpwalk -v2c -c CommunityString 103.3.xxx.xxx | more
iso.3.6.1.2.1.1.1.0 = STRING: "XXX"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.14988.1
iso.3.6.1.2.1.1.3.0 = Timeticks: (19494100) 2 days, 6:09:01.00
iso.3.6.1.2.1.1.4.0 = STRING: "noc@unila.ac.id"
iso.3.6.1.2.1.1.5.0 = STRING: "ASXXX"
iso.3.6.1.2.1.1.6.0 = STRING: "BBS Unilanet"
iso.3.6.1.2.1.1.7.0 = INTEGER: 78
iso.3.6.1.2.1.2.1.0 = INTEGER: 4
iso.3.6.1.2.1.2.2.1.1.13 = INTEGER: 13
iso.3.6.1.2.1.2.2.1.1.14 = INTEGER: 14
iso.3.6.1.2.1.2.2.1.1.15 = INTEGER: 15
iso.3.6.1.2.1.2.2.1.1.16 = INTEGER: 16
iso.3.6.1.2.1.2.2.1.2.13 = STRING: "ether2"
iso.3.6.1.2.1.2.2.1.2.14 = STRING: "ASBR-254"
iso.3.6.1.2.1.2.2.1.2.15 = STRING: "p2p-Internasional"
iso.3.6.1.2.1.2.2.1.2.16 = STRING: "p2p-Domestik"
iso.3.6.1.2.1.2.2.1.4.13 = INTEGER: 1500

Setelah hierarki MIB dapat terbaca sempurna, sekarang coba ambil nilai ID dari Interface lalu baca nilai Inoctet yang akan kita monitor life traffik nya

root@radius:/home/gigih# /usr/bin/snmpwalk -v2c -c  CommunityString  103.3.xxx.xxx IF-MIB::ifInOctets.15
IF-MIB::ifInOctets.15 = Counter32: 1167579839
root@radius:/home/gigih#

Nilai InOctet yang didapat harus dikonversi untuk mendapatkan nilai utilisasi dalam bentuk bit, saya ambil referensi kalkulasi nilai snmp dari url berikut http://www.cisco.com/c/en/us/support/docs/ip/simple-network-management-protocol-snmp/8141-calculate-bandwidth-snmp.html

How you calculate use depends on how data is presented for what you want to measure. Interface use is the primary measure used for network use. Use this formulas, based on whether the connection you measure is half-duplex or full-duplex. Shared LAN connections tend to be half-duplex, mainly because contention detection requires that a device listen before it transmits. WAN connections are full-duplex because the connection is point-to-point; both devices can transmit and receive at the same time because they know there is only one other device that shares the connection. Because MIB-II variables are stored as counters, you must take two poll cycles and figure the difference between the two (hence, the delta used in the equation).

This explains the variables used in the formulas:

calculate_bandwidth_snmp.gif

Note: ifSpeed does not accurately reflect the speed of a WAN interface.

For half-duplex media, use this formula for interface use:

calculate_bandwidth_snmp1.gif

Langkah terakhir adalah membuat script python  untuk mendapatkan nilai InOctet dan OutOctet lalu mengkonversi ke dalam bit dan menyimpannya kedalam database.

#Script by Gigih Forda Nama, dibuat malam selasa tanggal 10-03-2014 pukul 23:50 WIB
import time
import datetime
now = datetime.datetime.now()
jam= now.strftime("%Y-%m-%d %H:%M")
import MySQLdb
import os
in1 = os.popen("/usr/bin/snmpget -Ov -OQ -v2c -c Community 103.3.xxx.xxx IF-MIB::ifInOctets.15").read()
out1 = os.popen("/usr/bin/snmpget -Ov -OQ -v2c -c Community 103.3.xxx.xxx IF-MIB::ifOutOctets.15").read()
hin=abs(int(in1))
hout = abs(int(out1))
time.sleep (1)
in2 = os.popen("/usr/bin/snmpget -Ov -OQ -v2c -c Community 103.3.xxx.xxx IF-MIB::ifInOctets.15").read()
out2 = os.popen("/usr/bin/snmpget -Ov -OQ -v2c -c Community 103.3.xxx.xxx IF-MIB::ifOutOctets.15").read()
hin2=int(in2) 
hout2=int(out2)
deltain = abs(hin2-hin) #Diset balikan nilai absolute, karena terkadang ada balikan nilai minus
deltaout = abs(hout2-hout) #Diset balikan nilai absolute, karena terkadang ada balikan nilai minus
bitout = deltaout * 8
mbout = bitout/1000000
bitin = deltain * 8
mbin = bitin/1000000
if mbout < 220:
     hmbout = mbout
if mbin < 220:
     hmbin = mbin
print hmbin, hmbout
conn = MySQLdb.connect(host= "localhost",
     user="root",
     passwd="SukaSukaSaja",
     db="snmp")
x = conn.cursor()
try:
x.execute("""INSERT INTO user_bwintl VALUES (%s,%s,%s)""",(now,hmbin,hmbout))
conn.commit()
except:
conn.rollback()
conn.close()

Setelah data berhasil direkam dan masuk database selanjutnya membuat script program plotting gambar dari database;

##By-Gigih-F
import matplotlib
matplotlib.use('Agg')
import Image
import MySQLdb as mdb
import sys
import matplotlib.pyplot as plt
import datetime
now = datetime.datetime.now()
print now
#Inisialisasi ke Database
conn = mdb.connect('localhost', 'root', 'SukaSukaSaja', 'snmp');
with conn: #Query ke Database MySQL
 cursor = conn.cursor ()
 cursor.execute ("SELECT user_bwintl.waktu, user_bwintl.in, user_bwintl.out FROM user_bwintl WHERE DATE (waktu) = DATE(NOW()) ")
 row = cursor.fetchall()
 print "RESULT:", row[0]
 waktu, ain, aout=zip(*row) #Fetching setiap row
fig = matplotlib.pyplot.gcf()
fig.set_size_inches(18.5,10.5)
ax = plt.subplot(111)
plt.plot(waktu, ain,marker='+',linestyle='-',color='c',label='Total Traffick In',lw=1) #Plotting Traf In
plt.plot(waktu, aout,marker='+',linestyle='-',color='g',label='Total Trafick Out',lw=1)#Plotting Traf Out
plt.fill_between(waktu, ain,color='c',alpha=.3)#Isi warna grafik
plt.fill_between(waktu, aout,color='y',alpha=.7)#Isi warna grafik
plt.legend(loc=10)
plt.ylabel('Total Bandwidth Usage Link Internasional dalam Mbps') #Label pada sumbu Y
plt.xlabel('Waktu') #Label pada sumbu X
plt.grid()
plt.title(' Bandwidth Usage Link Internasional tgl : [%s] (Credit to RaspberryPi+Python+MySQL)'%(now)) #Judul Grafik
plt.savefig('/home/gigih/python/belajar/bwintl.png', dpi=100) #Simpan file dengan judul xxx.png
Image.open('/home/gigih/python/belajar/bwintl.png').save('/home/gigih/python/belajar/bwintl.jpg','JPEG')

Dan hasilnya adalah sebagai berikut

bwintl

lebih lengkapnya dapat dilihat di url berikut, untuk pelaporan live http://noc.unila.ac.id/?page_id=2

Note:

Great Thanks to Bunda Rasya atas inspirasi pemilihan warna grafik

Great Thanks to my beloved son Ahmad Rasya Algifarda yang udah pinjemin meja mainannya 😀

Gelar All England 2014


Meskipun saya tidak nonton secara langsung perhelatan Allengland pasangan Tontowi/Liliyana vs Hiroyuki Endo/Kenichi Hayakawa   dan Hendra Setiawan/Mohammad Ahsan vs Zhao Yunlei/Zhang,  sebagai warga Indonesia sangat bangga atas torehan gelar juara yg sudah mereka raih, semoga dapat diikuti oleh cabang cabang olahraga lainnya.

Mrogram Part-4 Python-Mikrotik BGP IPv4 Count


Part 4  saya membahas bagaimana python membaca nilai prefix   count BGP IPv4 yang diadvertise, lalu menyimpan ke database dan memunculkan data statistik dalam bentuk grafik, hasilnya seperti dibawah

bgp

1. Buat File di Mikrotik:  
/file print file=bgp

2. Buat Script dan Scheduler di Mikrotik:
:local first [/ip route print count-only terse];
/file set bgp.txt contents= \ "$first"

Buat Scheduler

;;; ipv6 COUNT
name="bgp" start-date=jan/02/1970 start-time=05:00:00 
interval=1m4s on-event=bgp owner=mahmudsaja 
policy=reboot,read,write,policy,test,password,sniff,sensitive 
run-count=12353 next-run=10:36:00 

 Read more...

Mrogram Part-3 Python Mikrotik IPv4 connection


Part 3  saya membahas bagaimana python membaca nilai IPv4 Firewall Connection  count lalu menyimpan ke database dan memunculkan data statistik dalam bentuk grafik, hasilnya seperti dibawah

ipfirewall

1. Buat File di Mikrotik:  
/file print file=ipfirewall

2. Buat Script dan Scheduler di Mikrotik:
:local first [/ip ipfirewall connection print count-only brief];
/file set ipfirewall.txt contents= \ "  $first "

Buat Scheduler

;;; ipfirewall COUNT
name="ipfirewall" start-date=jan/02/1970 start-time=05:00:00 
interval=1m4s on-event=ipfirewall owner=mahmudsaja 
policy=reboot,read,write,policy,test,password,sniff,sensitive 
run-count=12353 next-run=10:36:00 

3. Buat Database
mysql> show tables;
+--------------------+
| Tables_in_mikrotik |
+--------------------+
| user_host          |
| user_sso
| user_dnscache      |
+--------------------+
2 rows in set (0.00 sec)

mysql> CREATE TABLE `user_ipfirewall` ( `waktu` datetime DEFAULT NULL,  `ipfirewall` int(40) DEFAULT NULL);                    Query OK, 0 rows 

affected (0.13 sec)
 Read more...
%d bloggers like this: