Tampilkan postingan dengan label Warnet. Tampilkan semua postingan
Tampilkan postingan dengan label Warnet. Tampilkan semua postingan

17 Oktober 2017

Resize Partition di FreeBSD

Kita cek partisi yang ada di OS kita.
root:~# gpart show ada0
=>       34  312581741  ada0  GPT  (149G)
         34        128     1  freebsd-boot  (64K)
        162  304086912     2  freebsd-ufs  (145G)
  304087074    8388608     3  freebsd-swap  (4.0G)
  312475682     106093        - free -  (52M)
Kita akan menghapus free-space dan meresize ada0p2/ada0p3. deaktifkan dahulu swap-nya.
root:~# swapoff /dev/ada0p3
Matikan dahulu GEOM Safety variable lewat sysctl(8).
root:~# sysctl kern.geom.debugflags=16
Hapus partisi freebsd-swap (/dev/ada0p3) dahulu. Partisi ini hanya penyimpanan sementara saja, jd aman untuk dihapus.
root:~# gpart delete -i 3 ada0
Sekarang kita lakukan resize untuk partisi freebsd-ufs (/dev/ada0p2) dari 145G ke 147G. Untuk swap dikurangi 2G.
root:~# gpart resize -i 2 -a 4k -s 147G ada0
Bikin kembali swap-nya & aktifkan kembali partisinya.
root:~# gpart add -t freebsd-swap ada0
root:~# swapon /dev/ada0p3
Cek ulang partisi akhirnya & aktifkan kembali GEOM Safety variable.
root:~# gpart show ada0
=>       34  312581741  ada0  GPT  (149G)
         34        128     1  freebsd-boot  (64K)
        162  308281342     2  freebsd-ufs  (147G)
  308281504    4300271     3  freebsd-swap  (2.0G)

root:~# sysctl kern.geom.debugflags=0
kern.geom.debugflags: 16 -> 0
Agar size baru (/dev/ada0p2 - freebsd-ufs) dapat digunakan sesuai dengan size yang baru dibikin.
root:~# growfs /dev/ada0p2
Device is mounted read-write; resizing will result in temporary write suspension for /.
It's strongly recommended to make a backup before growing the file system.
OK to grow filesystem on /dev/ada0p2, mounted on /, from 145GB to 147GB? [Yes/No] yes
super-block backups (for fsck_ffs -b #) at:
 305234240, 306516736, 307799232

11 Oktober 2017

Recovery Bad-Sector Hardisk di FreeBSD

Terlebih dahulu backup data penting!
Cek bad sector hardisk.
root:~# smartctl -t long /dev/ada0
root:~# smartctl -l selftest /dev/ada0 | awk 'NR==7'
# 1  Extended offline    Completed: read failure       90%     36067         27292160
                                                                             ^^^^^^^^ (L)
Cek UFS file system.
root:~# dumpfs /dev/ada0p2 | egrep '^bsize'
bsize   32768   shift   15      mask    0xffff8000
        ^^^^^ (B)
Cari sector pertama partisi yg digunakan dalam hardisk.
root:~# fdisk -s /dev/ada0
/dev/ada0: 310101 cyl 16 hd 63 sec
Part        Start        Size Type Flags
   1:           1   312581807 0xee 0x00
                ^ (S)
Cari sector-size hardisk.
root:~# gpart list ada0 | tail -n 5
1. Name: ada0
   Mediasize: 160041885696 (149G)
   Sectorsize: 512
               ^^^ (M) 
   Mode: r2w2e3
Gunakan formula dibawah ini.
b = ((L - S) * M) / B)
L = 27292160
S = 1
M = 512
B = 32768

b = ((27292160 - 1) * 512) / 32768
b = 426439.984375 ~ 426439 (int)
Rubah permission agar bisa mode write.
root:~# sysctl kern.geom.debugflags=0x10
Untuk sector 426439 (bad sector) tidak akan digunakan oleh sistem untuk menyimpan data.
root:~# dd if=/dev/zero of=/dev/ada0 bs=32768 count=1 seek=426439
Untuk diagnosa isi sector 426439 (bad sector) bisa diredirect outputnya ke file.
root:~# dd if=/dev/ada0 of=hasil.txt bs=32768 count=1 skip=426439
Kembalikan permission ke semula.
root:~# sysctl kern.geom.debugflags=0
Cek kembali bad sector.
root:~# smartctl -t long /dev/ada0
Pastikan hasilnya -. Ini sample outputnya:
root:~# smartctl -l selftest /dev/ada0 | awk 'NR==7'
# 1  Extended offline    Completed without error       00%     36073         -
                                                                             ^
Jangan lupa setelah yakin tidak ada bad sector, recovery semua file lewat make world & restore file backup.

15 Juli 2017

FreeBSD: make buildworld failure in libllvmsupport

Saya mendapat error yg cukup mengesalkan ketika Rebuild FreeBSD dari source , cukup lama googling mencari referensi error yang terjadi, ternyata solusinya cukup simple meskipun dengan nebak2 library clang(1) yg digunakan. Seperti kita ketahui bahwa FreeBSD 10.0-RELEASE sudah merubah untuk default compilernya dari GCC ke clang(1). Berikut saya post error yang terjadi:
c++  -O2 -pipe -I/usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/include -I/usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/tools/clang/include -I/usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/lib/Support -I. -I/usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/../../lib/clang/include -DLLVM_ON_UNIX -DLLVM_ON_FREEBSD -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DNDEBUG -fno-strict-aliasing -DLLVM_DEFAULT_TARGET_TRIPLE=\"i386-unknown-freebsd10.3\" -DLLVM_HOST_TRIPLE=\"i386-unknown-freebsd10.3\" -DDEFAULT_SYSROOT=\"\" -ffunction-sections -fdata-sections -I/usr/obj/usr/src/tmp/legacy/usr/include  -fno-exceptions -fno-rtti  -c /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/lib/Support/APFloat.cpp -o APFloat.o
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/lib/Support/APFloat.cpp:15:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/include/llvm/ADT/APFloat.h:20:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/include/llvm/ADT/APInt.h:19:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/include/llvm/ADT/ArrayRef.h:14:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/include/llvm/ADT/SmallVector.h:17:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/include/llvm/Support/AlignOf.h:19:
In file included from /usr/include/c++/v1/cstddef:38:
In file included from /usr/include/c++/v1/stddef.h:51:
/usr/include/c++/v1/__nullptr:24:29: error: variable has incomplete type 'struct _LIBCPP_TEMPLATE_VIS'
struct _LIBCPP_TEMPLATE_VIS nullptr_t
                            ^
/usr/include/c++/v1/__nullptr:24:8: note: forward declaration of 'std::__1::_LIBCPP_TEMPLATE_VIS'
struct _LIBCPP_TEMPLATE_VIS nullptr_t
       ^
/usr/include/c++/v1/__nullptr:24:38: error: expected ';' after top level declarator
struct _LIBCPP_TEMPLATE_VIS nullptr_t
                                     ^
/usr/include/c++/v1/__nullptr:47:48: error: unknown type name 'nullptr_t'
inline _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR nullptr_t __get_nullptr_t() {return nullptr_t(0);}
                                               ^
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/lib/Support/APFloat.cpp:15:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/include/llvm/ADT/APFloat.h:20:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/include/llvm/ADT/APInt.h:19:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/include/llvm/ADT/ArrayRef.h:14:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/include/llvm/ADT/SmallVector.h:19:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/include/llvm/Support/MathExtras.h:18:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/include/llvm/Support/SwapByteOrder.h:18:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/../../lib/clang/include/llvm/Support/DataTypes.h:36:
In file included from /usr/include/c++/v1/cmath:301:
In file included from /usr/include/c++/v1/math.h:309:
/usr/include/c++/v1/type_traits:472:114: error: expected class name
    : public integral_constant(nullptr)) == 1> {};
                                                                                                                 ^
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/lib/Support/APFloat.cpp:15:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/include/llvm/ADT/APFloat.h:20:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/include/llvm/ADT/APInt.h:19:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/include/llvm/ADT/ArrayRef.h:14:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/include/llvm/ADT/SmallVector.h:19:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/include/llvm/Support/MathExtras.h:18:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/include/llvm/Support/SwapByteOrder.h:18:
In file included from /usr/src/lib/clang/libllvmsupport/../../../contrib/llvm/../../lib/clang/include/llvm/Support/DataTypes.h:36:
/usr/include/c++/v1/cmath:679:46: error: declaration conflicts with target of using declaration already in scope
inline _LIBCPP_INLINE_VISIBILITY float       acos(float __lcpp_x) _NOEXCEPT       {return acosf(__lcpp_x);}
                                             ^
/usr/include/c++/v1/math.h:654:46: note: target of using declaration
inline _LIBCPP_INLINE_VISIBILITY float       acos(float __lcpp_x) _NOEXCEPT       {return acosf(__lcpp_x);}
                                             ^
/usr/include/c++/v1/cmath:675:9: note: using declaration
using ::acos;
        ^
/usr/include/c++/v1/cmath:680:46: error: declaration conflicts with target of using declaration already in scope
inline _LIBCPP_INLINE_VISIBILITY long double acos(long double __lcpp_x) _NOEXCEPT {return acosl(__lcpp_x);}
                                             ^
/usr/include/c++/v1/math.h:655:46: note: target of using declaration
inline _LIBCPP_INLINE_VISIBILITY long double acos(long double __lcpp_x) _NOEXCEPT {return acosl(__lcpp_x);}
                                             ^
/usr/include/c++/v1/cmath:675:9: note: using declaration
using ::acos;
        ^
/usr/include/c++/v1/cmath:686:1: error: declaration conflicts with target of using declaration already in scope
acos(_A1 __lcpp_x) _NOEXCEPT {return acos((double)__lcpp_x);}
^
/usr/include/c++/v1/math.h:661:1: note: target of using declaration
acos(_A1 __lcpp_x) _NOEXCEPT {return acos((double)__lcpp_x);}
^
/usr/include/c++/v1/cmath:675:9: note: using declaration
using ::acos;
        ^
/usr/include/c++/v1/cmath:694:46: error: declaration conflicts with target of using declaration already in scope
inline _LIBCPP_INLINE_VISIBILITY float       asin(float __lcpp_x) _NOEXCEPT       {return asinf(__lcpp_x);}
                                             ^
/usr/include/c++/v1/math.h:666:46: note: target of using declaration
inline _LIBCPP_INLINE_VISIBILITY float       asin(float __lcpp_x) _NOEXCEPT       {return asinf(__lcpp_x);}
                                             ^
/usr/include/c++/v1/cmath:690:9: note: using declaration
using ::asin;
        ^
/usr/include/c++/v1/cmath:695:46: error: declaration conflicts with target of using declaration already in scope
inline _LIBCPP_INLINE_VISIBILITY long double asin(long double __lcpp_x) _NOEXCEPT {return asinl(__lcpp_x);}
                                             ^
/usr/include/c++/v1/math.h:667:46: note: target of using declaration
inline _LIBCPP_INLINE_VISIBILITY long double asin(long double __lcpp_x) _NOEXCEPT {return asinl(__lcpp_x);}
                                             ^
/usr/include/c++/v1/cmath:690:9: note: using declaration
using ::asin;
        ^
/usr/include/c++/v1/cmath:701:1: error: declaration conflicts with target of using declaration already in scope
asin(_A1 __lcpp_x) _NOEXCEPT {return asin((double)__lcpp_x);}
^
/usr/include/c++/v1/math.h:673:1: note: target of using declaration
asin(_A1 __lcpp_x) _NOEXCEPT {return asin((double)__lcpp_x);}
^
/usr/include/c++/v1/cmath:690:9: note: using declaration
using ::asin;
        ^
/usr/include/c++/v1/cmath:709:46: error: declaration conflicts with target of using declaration already in scope
inline _LIBCPP_INLINE_VISIBILITY float       atan(float __lcpp_x) _NOEXCEPT       {return atanf(__lcpp_x);}
                                             ^
/usr/include/c++/v1/math.h:678:46: note: target of using declaration
inline _LIBCPP_INLINE_VISIBILITY float       atan(float __lcpp_x) _NOEXCEPT       {return atanf(__lcpp_x);}
                                             ^
/usr/include/c++/v1/cmath:705:9: note: using declaration
using ::atan;
        ^
/usr/include/c++/v1/cmath:710:46: error: declaration conflicts with target of using declaration already in scope
inline _LIBCPP_INLINE_VISIBILITY long double atan(long double __lcpp_x) _NOEXCEPT {return atanl(__lcpp_x);}
                                             ^
/usr/include/c++/v1/math.h:679:46: note: target of using declaration
inline _LIBCPP_INLINE_VISIBILITY long double atan(long double __lcpp_x) _NOEXCEPT {return atanl(__lcpp_x);}
                                             ^
/usr/include/c++/v1/cmath:705:9: note: using declaration
using ::atan;
        ^
/usr/include/c++/v1/cmath:716:1: error: declaration conflicts with target of using declaration already in scope
atan(_A1 __lcpp_x) _NOEXCEPT {return atan((double)__lcpp_x);}
^
/usr/include/c++/v1/math.h:685:1: note: target of using declaration
atan(_A1 __lcpp_x) _NOEXCEPT {return atan((double)__lcpp_x);}
^
/usr/include/c++/v1/cmath:705:9: note: using declaration
using ::atan;
        ^
/usr/include/c++/v1/cmath:724:46: error: declaration conflicts with target of using declaration already in scope
inline _LIBCPP_INLINE_VISIBILITY float       atan2(float __lcpp_y, float __lcpp_x) _NOEXCEPT             {return atan2f(__lcpp_y, __lcpp_x);}
                                             ^
/usr/include/c++/v1/math.h:690:46: note: target of using declaration
inline _LIBCPP_INLINE_VISIBILITY float       atan2(float __lcpp_y, float __lcpp_x) _NOEXCEPT             {return atan2f(__lcpp_y, __lcpp_x);}
                                             ^
/usr/include/c++/v1/cmath:720:9: note: using declaration
using ::atan2;
        ^
/usr/include/c++/v1/cmath:725:46: error: declaration conflicts with target of using declaration already in scope
inline _LIBCPP_INLINE_VISIBILITY long double atan2(long double __lcpp_y, long double __lcpp_x) _NOEXCEPT {return atan2l(__lcpp_y, __lcpp_x);}
                                             ^
/usr/include/c++/v1/math.h:691:46: note: target of using declaration
inline _LIBCPP_INLINE_VISIBILITY long double atan2(long double __lcpp_y, long double __lcpp_x) _NOEXCEPT {return atan2l(__lcpp_y, __lcpp_x);}
                                             ^
/usr/include/c++/v1/cmath:720:9: note: using declaration
using ::atan2;
        ^
/usr/include/c++/v1/cmath:736:1: error: declaration conflicts with target of using declaration already in scope
atan2(_A1 __lcpp_y, _A2 __lcpp_x) _NOEXCEPT
^
/usr/include/c++/v1/math.h:702:1: note: target of using declaration
atan2(_A1 __lcpp_y, _A2 __lcpp_x) _NOEXCEPT
^
/usr/include/c++/v1/cmath:720:9: note: using declaration
using ::atan2;
        ^
/usr/include/c++/v1/cmath:750:46: error: declaration conflicts with target of using declaration already in scope
inline _LIBCPP_INLINE_VISIBILITY float       ceil(float __lcpp_x) _NOEXCEPT       {return ceilf(__lcpp_x);}
                                             ^
/usr/include/c++/v1/math.h:713:46: note: target of using declaration
inline _LIBCPP_INLINE_VISIBILITY float       ceil(float __lcpp_x) _NOEXCEPT       {return ceilf(__lcpp_x);}
                                             ^
/usr/include/c++/v1/cmath:746:9: note: using declaration
using ::ceil;
        ^
/usr/include/c++/v1/cmath:751:46: error: declaration conflicts with target of using declaration already in scope
inline _LIBCPP_INLINE_VISIBILITY long double ceil(long double __lcpp_x) _NOEXCEPT {return ceill(__lcpp_x);}
                                             ^
/usr/include/c++/v1/math.h:714:46: note: target of using declaration
inline _LIBCPP_INLINE_VISIBILITY long double ceil(long double __lcpp_x) _NOEXCEPT {return ceill(__lcpp_x);}
                                             ^
/usr/include/c++/v1/cmath:746:9: note: using declaration
using ::ceil;
        ^
/usr/include/c++/v1/cmath:757:1: error: declaration conflicts with target of using declaration already in scope
ceil(_A1 __lcpp_x) _NOEXCEPT {return ceil((double)__lcpp_x);}
^
/usr/include/c++/v1/math.h:720:1: note: target of using declaration
ceil(_A1 __lcpp_x) _NOEXCEPT {return ceil((double)__lcpp_x);}
^
/usr/include/c++/v1/cmath:746:9: note: using declaration
using ::ceil;
        ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
*** Error code 1

Stop.
make[3]: stopped in /usr/src/lib/clang/libllvmsupport
*** Error code 1

Stop.
make[2]: stopped in /usr/src
*** Error code 1

Stop.
make[1]: stopped in /usr/src
*** Error code 1

Stop.
make: stopped in /usr/src
Solusi yang saya lakukan adalah sbb:
Keyword ada di /usr/include/c++/v1/cmath:746, error itu kurang lebih seputar header declaration konflik dengan header yang sudah terinstall sebelomnya. Tipe data long double sepertinya tidak dapat didefinisikan di scope ketika proses build object file. Temukan file cmath di /usr dengan perintah:
root:/usr# find . -type f -name "cmath"
./src/contrib/libstdc++/include/tr1/cmath
./src/contrib/libc++/include/cmath (cmath dari source SVN)
./include/c++/v1/cmath (cmath yang bermasalah)
./local/lib/gcc5/include/c++/ext/cmath
./local/lib/gcc5/include/c++/tr1/cmath
./local/lib/gcc5/include/c++/cmath
OK, kita liat susunan direktori & filenya banyak kemiripan antara /usr/include/c++/v1/ dengan /usr/src/contrib/libc++/include/. Kita tinggal copykan saja tapi sebelomnya kita backup terlebih dahulu.
root:~# cd /usr/include/c++
root:/usr/include/c++# mv v1 v1.old
root:/usr/include/c++# cp -rp /usr/src/contrib/libc++/include .
root:/usr/include/c++# mv include v1
Silahkan dicoba kembali proses make buildworld, saya mengalami kekurangan dua file header yg dibutuhkan yaitu cxxabi.h dan unwind.h, silahkan kita cari lagi kedua file ini di /usr/src dan kopikan saja:
root:/usr/include/c++/v1# find /usr/src -type f -name "cxxabi.h"
/usr/src/contrib/libstdc++/libsupc++/cxxabi.h
/usr/src/contrib/libcxxrt/cxxabi.h (Kita ambil yang ini)
root:/usr/include/c++/v1# cp /usr/src/contrib/libcxxrt/cxxabi.h .
root:/usr/include/c++/v1# find /usr/src -type f -name "unwind.h"
/usr/src/sys/ia64/include/unwind.h
/usr/src/contrib/libcxxrt/unwind.h
/usr/src/contrib/llvm/tools/clang/lib/Headers/unwind.h (Kita ambil yang ini)
/usr/src/contrib/libexecinfo/unwind.h
/usr/src/include/unwind.h
root:/usr/include/c++/v1# cp /usr/src/contrib/llvm/tools/clang/lib/Headers/unwind.h .
Silahkan make buildworld kembali, jika ada error coba teliti stderr di consolenya. Dan silahkan tebak2 lagi seperti contoh langkah diatas :-).

20 Maret 2017

Links download program yang sering digunakan

05 Juni 2015

Transparent Proxy Squid SSL/HTTPS Support

Setelah mentok gara² certificate error akhirnya bisa sukses juga menggunakan transparent proxy untuk protocol HTTPS. Saya coba jelaskan secara garis besar dan singkat yah :-).

1. Update koleksi ports di FreeBSD untuk mendapatkan versi terbaru dan terupdate:
# portsnap fetch
# portsnap extract
# portsnap update
atau via SVN
# svn checkout svn://svn.freebsd.org/ports/head /usr/ports
2. Install squid seri versi 3.x yang sudah medukung SSLBump:
# cd /usr/ports/www/squid
# make menu
Pastikan opsi untuk SSL dan ssl_crtd support dicentang!
# make install clean
3. Konfigurasi post-install untuk direktori, permission etc:
# mkdir /usr/local/squid/ssl_db (Untuk penyimpanan cert-cache)
# chown -R squid:squid /usr/local/squid/ssl_db
# mkdir /usr/local/etc/squid/certs (Untuk penyimpanan cert self-signing)
# chown -R squid:squid /usr/local/etc/squid/certs
4. Pembuatan ceritificate self-signing yang akan digunakan oleh squid:
# cd /usr/local/etc/squid/certs
# openssl req -new -newkey rsa:1024 -days 1365 -nodes -x509 -keyout squid.pem -out squid.pem
# openssl x509 -in squid.pem -outform DER -out squid.der (DER Format)
# openssl x509 -in squid.pem -outform DER -out squid.crt (CRT Format)
5. Konfigurasi squid.conf:
# grep ssl /usr/local/etc/squid/squid.conf        
https_port yyy.yyy.yyy.yyy:xxxx transparent ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/usr/local/etc/squid/certs/squid.pem 
ssl_bump splice localhost        
ssl_bump server-first all        
ssl_bump bump all        
sslproxy_cert_error deny all        
sslproxy_flags DONT_VERIFY_PEER        
sslcrtd_program /usr/local/libexec/squid/ssl_crtd -s /usr/local/squid/ssl_db -M 4MB    
sslcrtd_children 32 startup=5 idle=1     

# /usr/local/libexec/squid/ssl_crtd -c -s /usr/local/etc/squid/certs/ssl_db  (Initialized SSLdb)     
# /usr/local/etc/rc.d/squid start
6. Redirect semua traffic port HTTP/HTTPS ke port squid:
# vim /etc/rc.firewall
${fwcmd} add 10 fwd ${ipproxy},${porthttpsproxy} tcp from ${ipclient} to any dst-port ${porthttps} in via ${ifint0}
ipproxy="ip_proxy_server"
porthttpsproxy="port_squid_for_https"   // See squid.conf.manual for detail
ipclient="ip_client"                    // For example: 192.168.0.0/24
porthttps="443"                         // HTTPS port default
ifint0="LAN_eth"                        // Ethernet connected to LAN directly
Atau jika menggunakan packet filter OpenBSD:
# vim /etc/pf.conf
rdr pass on $ifint0 proto tcp from $ipclient to any port 443 -> $ipproxy port $porthttpsproxy
7. Import sertifikat squid.der (Windows aja) atau squid.crt (untuk format Android/Windows):
C:\> certmgr.msc (Simpan di bagian CA certificate, klik2 aja deh sendiri...)
8. DONE!

08 Juli 2013

ipfw_WF2Q+

1. Jika anda ingin menimplementasikan WF2Q+ dengan ipfw di mesin dengan tujuan:
- Sharing bandwidth antar client misalnya untuk ratio 1:4.
- Sharing bandwidth evenly/rata diantara client tersebut (Tapi bukan garansi/CIR).
- Adanya bandwidth peak/burst diantara client jika client yg lain idle.
2. Untuk sharing bandwidth dengan ratio 1:4 bisa anda kelompokan client anda dalam satu group misalnya:
- Host A, B, C, D diberi bandwidth rebutan/sharing sebesar 128 Kbit/s, dengan IP Address:
* Host A : 192.168.0.1/32
* Host B : 192.168.0.2/32
* Host C : 192.168.0.3/32
* Host D : 192.168.0.4/32
Asumsi subnet yg anda pilih /24 atau 255.255.255.0, jika anda ingin menggunakan subnetting juga itu lebih bagus.

3. Bikin rule di /etc/rc.firewall dan letakan sebelom rule permit/deny:
ipcl_grup01="192.168.0.0/24{1,2,3,4}"
bw_share01="128Kbit/s"
bw_down_share01="128Kbit/s"
bw_up_share01="64Kbit/s"
ifint="inside_interface"

# Sample format 1 - Limiting downstream saja.
${fwcmd} add 1 queue 1 ip from any to ${ipcl_group01} out via ${ifint} // Downstream
${fwcmd} queue 1 config weight 50 queue 4 pipe 1 mask dst-ip 0xffffffff
${fwcmd} pipe 1 config queue 4 bw ${bw_down_share01}

# Sampel format 2 - Limiting upstream saja.
${fwcmd} add 1 queue 1 ip from ${ipcl_group01} to any in  via ${ifint} // Upstream
${fwcmd} queue 1 config weight 50 queue 4 pipe 1 mask src-ip 0xffffffff
${fwcmd} pipe 1 config queue 4 bw ${bw_up_share01}

# Sample format 3 - Limiting downstream/upstream menjadi satu flow.
${fwcmd} add 1 queue 1 ip from any to ${ipcl_group01} out via ${ifint} // Downstream
${fwcmd} add 2 queue 1 ip from ${ipcl_group01} to any in  via ${ifint} // Upstream
${fwcmd} queue 1 config weight 50 queue 4 pipe 1 mask all
${fwcmd} pipe 1 config queue 4 bw ${bw_share01}

# Sample format 4 - Limiting upstream/downstream dengan masing2 flow terpisah.
${fwcmd} add 1 queue 1 ip from any to ${ipcl_group01} out via ${ifint} // Downstream
${fwcmd} add 2 queue 2 ip from ${ipcl_group01} to any in  via ${ifint} // Upstream
${fwcmd} queue 1 config weight 50 queue 4 pipe 1 mask dst-ip 0xffffffff
${fwcmd} queue 2 config weight 50 queue 4 pipe 2 mask src-ip 0xffffffff
${fwcmd} pipe 1 config queue 4 bw ${bw_down_share01}
${fwcmd} pipe 2 config queue 4 bw ${bw_up_share01}
WF2Q+ merupakan varian dari sistem quering policy, dan jangan lupa setelah di assign via queue mesti terhubung ke pipe.
Keterangan:
- queue [Dibagian rule : ${fwcmd} add 1 queue...] : Assign untuk rule WF2Q+.
- weight                                          : Nilei pembanding flow quering (Bukan priority).
                                                    Default 1, allow [1 s/d 100].
- queue [Dibagian rule : ${fwcmd} queue 1 config weight 50 queue...] : Ukuran/jumlah dari "queue/slot" sbg pembanding terhadap jumlah bandwidth. Default 50.
- queue [Dibagian rule : ${fwcmd} pipe 1 config queue...] : Ukuran/jumlah dari "queue/slot" sbg pembanding terhadap jumlah bandwidth. Default 50
- pipe : Assign rule untuk ukuran bandwidth yg terkoneksi.
- mask dst-ip/src-ip : Digunakan untuk masking IP Address/subneting dan port. "dst-ip" digunakan untuk "downstream", "src-ip" digunakan untuk "upstream" dari sample rule diatas (Tergantung dari posisi IP client/port). 0xffffffff adalah value subnet, sama dengan "0.0.0.0/0" (Match all IP Address). Untuk port default "0x0000" artinya tidak menspesifikan/pembatasan port.
4. Perhitungan:
bw_perclient = (w_client / w_jumlah_) * bw_total
Sample diatas perclient mempunyai weight masing2 50, total bw 128 Kbit/s. Katakanlah untuk host A bisa dikalkulasikan sbb:
bw_host_A = (50 / (50*4)) * 128 Kbit/s
          = (50 / 200) * 128 Kbit/s
          = 32 Kbit/s
Jika semua host aktif maka dummynet akan berusaha membagi rata sejumlah 32 Kbit/s per hostnya. Nah contoh diatas mempunyai weight yg sama besarnya, gimana kalo contohnya begini:
w_host_A = 30
w_host_B = 50
w_host_C = 50
w_host_D = 50
Maka bisa kita kalkulasikan bw yg didapat oleh host A dan host B sbb:
bw_host_A = (30 / (30+50+50+50)) * 128 Kbit/s
          = (30 / 180) * 128 Kbit/s
          = 21.333 Kbit/s

bw_host_B = (50 / (30+50+50+50)) * 128 Kbit/s
          = (50 / 180) * 128 Kbit/s
          = 35.55 Kbit/s
Contoh lain:
w_host_A = 10
w_host_B = 20
w_host_C = 30
w_host_D = 40

bw_host_A = (10 / (10+20+30+40)) * 128 Kbit/s
          = (10 / 100) * 128 Kbit/s
          = 12.8 Kbit/s

bw_host_B = (20 / (10+20+30+40)) * 128 Kbit/s
          = (20 / 100) * 128 Kbit/s
          = 25.6 Kbit/s
Perhitungan queue slot. Dalam hal ini queue di rule diatas adalah 4, maka bisa dikalkulasikan:
bw_perclient = bw_total/slot_queue
Dari sample diatas bisa dihitung untuk host A sbb:
bw_host_A = 128 Kbit/s / 4 
          = 32 Kbit/s
Jika semua host aktif maka dummynet akan berusaha membagi rata bandwidth 32 Kbit/s per slot-nya (1 slot = 32 Kbit/s). IMHO, queue slot mendingan disesuaikan dengan jumlah client yg share, contoh diatas 1:4 berarti queue slot-nya

4. Jika kita rubah misalnya queue slot menjadi 8 slot maka ada kemungkinan host A akan menggunakan lebih dari 1 slot, artinya bisa cenderung ngerebut slot jatah host lain.
root:~# uname -srnm
FreeBSD gw-core-introuter.kumprang.com 4.10-STABLE i386
root:~# ipfw queue show
00001:  24.000 Kbit/s    0 ms   50 sl. 1 queues (1 buckets) droptail
   mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  0 tcp      74.6.68.227/42040   202.146.228.9/80    5535  3192733  0   0   0
00002:  68.000 Kbit/s    0 ms    6 sl. 0 queues (1 buckets) droptail
   mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
00003:  36.000 Kbit/s    0 ms    6 sl. 0 queues (1 buckets) droptail
   mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
q00001: weight 50 pipe 2    6 sl. 6 queues (64 buckets) droptail
   mask: 0x00 0x00000000/0x0000 -> 0xffffffff/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
 17 ip           0.0.0.0/0         192.168.1.1/0     81105 53885327  0   0  2960
 26 ip           0.0.0.0/0        192.168.1.10/0     121939 96279102  0  0  3719
 27 ip           0.0.0.0/0        192.168.1.11/0     134476 96276870  0  0  6141
 28 ip           0.0.0.0/0        192.168.1.12/0     35325 17986730  0   0  1243
 29 ip           0.0.0.0/0        192.168.1.13/0     43479 35034555  0   0  1247
 34 ip           0.0.0.0/0        192.168.1.50/0     154963 152289033  0  0 8521
q00002: weight 50 pipe 3    6 sl. 6 queues (64 buckets) droptail
   mask: 0x00 0xffffffff/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
 12 ip      192.168.1.50/0             0.0.0.0/0     128724 17526438  0  0  211
 42 ip       192.168.1.1/0             0.0.0.0/0     71625  8097141  0   0  592
 48 ip      192.168.1.12/0             0.0.0.0/0     28546  2747603  0   0  131
 50 ip      192.168.1.13/0             0.0.0.0/0     32582  3594117  0   0  29
 60 ip      192.168.1.10/0             0.0.0.0/0     102737 10325047  0  0  73
 62 ip      192.168.1.11/0             0.0.0.0/0     89624  8851578  0   0  100
Kolom paling kanan pertanda paket yg sudah didrop, uji gampangnya lihat saja jika kita download gede2an (pake getright/flashget) pasti banyak yg didrop sesuai dengan perhitungan diatas. Dan silahkan coba download dengan cara dilimit di client (pake getright/flashget misalnya) sesuei dengan perhitungan diatas, nah gimana hasilnya tuh :-).

Sistem kerjanya, andaikata host A menggunakan bandwidth melebihi kapasitas sharing bandwidth bedasarkan perhitungan diatas dan host B pada saat bersamaan mulai ngeload bandwidth (katakanlah mulai ngeclick browser) maka host A akan didrop secara random untuk memberikan kesempatan kepada host B sampai kedudukannya seimbang (katakanlah jika bandwidth 128 Kbit/s maka host A akan mendapatkan 64 Kbit/s dan host B akan mendapatkan 64 Kbit/s), dan ketika host B tidak ngeload bandwidth (idle) maka host A akan mendapatkan bandwidth 128 Kbit/s kembali.

28 April 2013

Windows XP Restart

Lumayan dikerjain dengan komputer billing di warnet saya karena selalu restart persatuan waktu yg tidak bisa ditentukan. Awalnya saya curiga hardware (Memori/Prosesor kepanasan/Power Supply yg udah jelek). Saya coba untuk membawa komputer saya ke reparasi hardware untuk mengeceknya tapi ternyata komputer tidak apa-apa. Ganti-ganti memori, benerin heatsing karena takut kepanasan, sampe ganti kabel power takut udah jelek, plus ganti kabel SATA Hardisk. Tapi ternyata bukan!

Dengan melihat perbedaan di tempat saya dengan di tempat reparasi hardware adalah "Di tempat saya dicolok kabel LAN, sedangkan di reparasi hardware tidak dicolok kabel LAN". Logika perbedaan yang simple tapi menjadi awal clue pemecahannya. Saya coba di tempat saya tidak dicolok kabel LAN dan ternyata komputer tidak restart lagi!. OK, permasalahan ternyata di seputar LAN device, cable, atau switch LAN?. Saya mulai mencari solusi untuk masalah ini:
  1. Ganti ethernet dengan external ethernet (Asalnya ethernet onboard).
  2. Ganti kabel UTP
  3. Ganti port colokan di switch dan merestart switch.
  4. Update driver LAN onboard
Ternyata semua ke-4 solusi itu tidak mengatasi setiap kali kabel UTP di colokin komputer selalu restart. OK, saya mulai lebih detail lagi dengan melihat log via "Event Viewer", dan bengo! ternyata ada beberapa log error yang cukup serius:
Error code 00000027, parameter1 baad00a3, parameter2 a7a6b3b8, parameter3 a7a6b0b4, parameter4 00040001.
Saya mulai mencari informasi dari Google, dan ada beberapa solusi yang bisa ditawarkan:
  1. Menambah memori fisik.
  2. Menambah paging file via virtual memory.
Tapi ternyata error itu masih nampak :-(, akhirnya saya coba untuk reinstall Windows dan akhirnya error itu tidak nampak, asumsi saya karena sistem udah rusak duluan jadi mau gak mau harus reinstall Windowsnya.

Besoknya saya install IDM (Internet Download Manager) untuk mendownload video, loh errornya kembali muncul komputer sering restart lagi. Saya cek kembali log Event Viewer ternyata ketemu lagi masalah yang sama. OK berarti semuanya ini gara-gara IDM sialan!.

System damage/error karena tidak bisa mengakses (read) memory address setelah menginstall IDM (Internet Download Manager) inilah penyebab utamanya!.


Untuk solusinya mudah sekali, tinggal uninstall saja IDM keparatnya :). Permasalahnya karena saya kurang sistematis mengerjakannya, tidak diurut dari kemungkinan yang terdekat dan pengerjaannya yang paling mudah dulu. Mudah-mudahan sharing ini membantu pembaca.

18 Maret 2012

H264 Streaming Dengan Lighttpd

Selama ini saya menggunakan file-file yang berformat FLV untuk streaming video LAN. Sayangnya ada beberapa video bagus tapi berformat MP4, nah permasalahannya bagaimana jika ingin menggunakan file berformat MP4. Berikut saya akan share beberapa caranya, seperti biasa saya bertanya ke Google, akhirnya dapet juga trik jitu. Saya menggunakan Lighttpd H264 untuk streaming MP4-nya. Untuk mempercepat produktifitas saya menggunakan ports saja. Install Lighttpd via ports (Cukup dibuild saja).
root:~# cd /usr/ports/www/lighttpd
root:/usr/ports/www/lighttpd# make
Download module versi terakhir:
root:~# fetch http://h264.code-shop.com/download/lighttpd-1.4.18_mod_h264_streaming-2.2.9.tar.gz
root:~# tar zxvf lighttpd-1.4.18_mod_h264_streaming-2.2.9.tar.gz
root:~# cd lighttpd-1.4.18/src/
root:~# cp mod_h264_streaming.c /usr/ports/www/lighttpd/work/lighttpd-1.4.30/src/
root:~# cp mod_streaming_export.h /usr/ports/www/lighttpd/work/lighttpd-1.4.30/src/
root:~# cp moov.c /usr/ports/www/lighttpd/work/lighttpd-1.4.30/src/
root:~# cp moov.h /usr/ports/www/lighttpd/work/lighttpd-1.4.30/src/
root:~# cp mp4_io.c /usr/ports/www/lighttpd/work/lighttpd-1.4.30/src/
root:~# cp mp4_io.h /usr/ports/www/lighttpd/work/lighttpd-1.4.30/src/
root:~# cp mp4_reader.c /usr/ports/www/lighttpd/work/lighttpd-1.4.30/src/
root:~# cp mp4_reader.h /usr/ports/www/lighttpd/work/lighttpd-1.4.30/src/
root:~# cp mp4_writer.c /usr/ports/www/lighttpd/work/lighttpd-1.4.30/src/
root:~# cp mp4_writer.h /usr/ports/www/lighttpd/work/lighttpd-1.4.30/src/
root:~# cp mp4_process.c /usr/ports/www/lighttpd/work/lighttpd-1.4.30/src/
root:~# cp mp4_process.h /usr/ports/www/lighttpd/work/lighttpd-1.4.30/src/
root:~# cp output_bucket.c /usr/ports/www/lighttpd/work/lighttpd-1.4.30/src/
root:~# cp output_bucket.h /usr/ports/www/lighttpd/work/lighttpd-1.4.30/src/
root:~# cp output_mp4.c /usr/ports/www/lighttpd/work/lighttpd-1.4.30/src/
root:~# cp output_mp4.h /usr/ports/www/lighttpd/work/lighttpd-1.4.30/src/
Tambahkan Makefile.am di /usr/ports/www/lighttpd/work/lighttpd-1.4.30/src/
lib_LTLIBRARIES += mod_h264_streaming.la
mod_h264_streaming_la_SOURCES = mod_h264_streaming.c \
mod_streaming_export.h \
moov.c moov.h \
mp4_io.c mp4_io.h \
mp4_reader.c mp4_reader.h \
mp4_writer.c mp4_writer.h \
mp4_process.c mp4_process.h \
output_bucket.c output_bucket.h \
output_mp4.c output_mp4.h
mod_h264_streaming_la_CFLAGS = $(AM_CFLAGS) -DBUILDING_H264_STREAMING
mod_h264_streaming_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined
mod_h264_streaming_la_LIBADD = $(common_libadd)
Lakukan penginstalan Lighttpd
root:/usr/ports/www/lighttpd# make install clean
Edit/tambahkan option yang diperlukan untuk lighttpd.conf
root:~# vim /usr/local/etc/lighttpd/lighttpd.conf
server.modules              = (....................
                              "mod_h264_streaming",
                               ....................
)

# MP4 streaming
h264-streaming.extensions = ( ".mp4" )
Edit dan jalankan startup script
root:~# vim /usr/local/etc/rc.d/lighttpd
Edit : ${lighttpd_enable="NO"} menjadi : ${lighttpd_enable="YES"}
root:~# /usr/local/etc/rc.d/lighttpd start
root:~# ps ax | grep lighttpd
72915  ??  S       0:00.74 /usr/local/sbin/lighttpd -f /usr/local/etc/lighttpd/lighttpd.conf
9444  p0  S+     0:00.00 grep lighttpd

02 Februari 2012

Bikin Mirror Update Kaspersky Antivirus

Sering kali kita direpotkan dengan update Kaspersky Antivirus yang cukup makan waktu, ditambah koneksi yang lemot mungkin bikin anda pegel-pegel. Banyak aplikasi yang memudahkan untuk kebutuhan ini, tapi saya mencoba dengan cara lain ( Yang ada di otak saya.baca ) dan terbilang cara ini manual, tapi cukup ampuh dan sederhana. Pertama-tama untuk kebutuhan ini perlu anda siapkan:
  • Webserver local.
  • Scripting.
  • Otomatis update per satuan waktu dengan cron.
Diasumsikan webserver sudah ready ( Saya menggunakan Lighttpd under FreeBSD ), saya coba memonitor path file apa saja yang diperlukan untuk update Kaspersky Antivirus 2011, anda bisa menggunakan bitanalyzer, tcpdump, URLSnooper, Wireshark dsb. Setelah itu saya coba bikin script sederhana:
budsz:~$ mkdir kav ; cd kav
budsz:~/kav$ cat kav.sh
#!/bin/sh
WGETBIN="wget -m -nH -N -R *.html"
BASEURL="ftp://dnl-00.geo.kaspersky.com"
CURDIR="/home/budsz/kav"
cd $CURDIR
for LISTDIR in \
        AutoPatches/kav11 \
        bases/apu \
        bases/av/ark \
        bases/av/emu \
        bases/av/kdb/i386 \
        bases/av/qscan \
        bases/av/wa \
        bases/blst \
        bases/dnscln \
        bases/ids \
        bases/info \
        bases/klifppcfg \
        bases/ksn \
        bases/pdm \
        bases/sco/i386/win \
        bases/ssa \
        bases/sw2 \
        bases/uds \
        bases/upd \
        bases/vlns \
        bases/wmuf \
        diffs/bases/apu \
        diffs/bases/av/emu/i386 \
        diffs/bases/av/kdb/i386 \
        diffs/bases/blst \
        diffs/bases/dnscln \
        diffs/bases/klifppcfg \
        diffs/bases/ksn \
        diffs/bases/pdm \
        diffs/bases/sco/i386/win \
        diffs/bases/uds \
        diffs/bases/wmuf \
        index
do

# Looping untuk downloading
$WGETBIN $BASEURL/$LISTDIR
        echo "----------------------------------"
        echo " Mirroring beres untuk: "$LISTDIR
        echo "----------------------------------"
done

# Hapus file '.listing'
find . -name ".listing" -delete
Script itu diberi nama kav.sh, lalu disimpan di directory kav. Setelah itu dijalankan secara automatic dengan menggunakan cron:
budsz:~$ crontab -l
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/
SHELL=/bin/sh
MAILTO=""
HOME=/var/log
0      7        *      *      *      /home/budsz/kav/kav.sh > /dev/null
Setiap jam 7.00 melakukan update dengan main server. Biar lebih enak dilihat, anda bisa bikin virtual domain/host di lighttpd.conf:
$HTTP["host"] =~ "av\.example\.net" {
     dir-listing.exclude = ( "favicon.ico" )
     server.document-root = "/home/budsz/kav"
}
Dan A Record atau CNAME di Bind:
budsz:~$ host av.example.net
av.example.net has address 172.16.135.145
Setelah selesai tinggal arahkan setting update server pada Kaspersky Antivirus:
  • Setting.
  • Update Setting.
  • Update Source.
  • Isikan http://av.example.net/ ( Checklist ).
  • Jangan lupa unchecklist Kaspersky Lab Update Server.
Nah, sudah deh beres -;)

06 Januari 2012

PC game VS PS game

Salah satu yang mencolok dalam hal kebiasaan dan hasrat untuk bermain game di Willsz.net - Cyber Internet Station adalah PC game selalu diidentikan dengan PS game, akibatnya request game-game baru di Warnet yang saya kelola selalu berpatokan dengan game yang ada di PS. Itu wajar karena mereka berpengalaman hanya di game PS, sedangkan di game basis PC mereka dalam tahan penyesuaian.

Maka dari itu saya coba mencarikan game-game yang ada di PS agar bisa diimplementasikan di PC, ada beberapa game yang saya hindari menggunakan emulator PS, jadi saya cari saja game yang benar-benar compatible dengan PC.

Diantaranya karena disini populer Winning Eleven, GTA San Andreas, mungkin sementara segitu dulu. Nanti saya tambah lagi biar gak pada bosan :)

02 Januari 2012

Hitung packets IPFW untuk TCP/UDP

Dulu pernah terpikir dibenak saya untuk menghitung packet yang lewat IPFW dan seperti biasa hasilnya saya phasing ke MRTG. Tapi kendalanya packet selalu bertambah jumlahnya sesuai dengan output rules dari IPFW; dengan ini grafik yang dihasilnya bersifat naik terus sampe ketika mesin reboot barulah ia kembali ke nol. Jadi, perhitungan rata-rata packet yang masuk/keluar lewat router per-satuan waktu tidak didapatkan alias tidak dinamis. Barulah setelah saya ingat beberapa teknik lama pemograman yaitu dengan variable dummy dengan mencatat packet awal/akhir, lalu dihitung selisihnya per-satuan waktu, hasil grafik terlihat lebih manusiawi :-). Ini adalah satu contoh sederhana scripting yang saya buat:
#!/bin/sh
# TmpFile
TEMPFILE="/tmp/ipfw.tu"
# TCP/UDP grab to file
OLDT1=`ipfw -a list | grep 00300 >  $TEMPFILE`
OLDT2=`ipfw -a list | grep 00301 >> $TEMPFILE`
OLDT3=`ipfw -a list | grep 00302 >> $TEMPFILE`
OLDT4=`ipfw -a list | grep 00303 >> $TEMPFILE`
OLDU1=`ipfw -a list | grep 00400 >> $TEMPFILE`
OLDU2=`ipfw -a list | grep 00401 >> $TEMPFILE`
OLDU3=`ipfw -a list | grep 00402 >> $TEMPFILE`
OLDU4=`ipfw -a list | grep 00403 >> $TEMPFILE`

# Fetch old packets
OLDTI1=`grep 00300 $TEMPFILE | awk '{print $2}'`
OLDTI2=`grep 00301 $TEMPFILE | awk '{print $2}'`
OLDTI3=`grep 00302 $TEMPFILE | awk '{print $2}'`
OLDTI4=`grep 00303 $TEMPFILE | awk '{print $2}'`
OLDTO1=`grep 00300 $TEMPFILE | awk '{print $3}'`
OLDTO2=`grep 00301 $TEMPFILE | awk '{print $3}'`
OLDTO3=`grep 00302 $TEMPFILE | awk '{print $3}'`
OLDTO4=`grep 00303 $TEMPFILE | awk '{print $3}'`
OLDUI1=`grep 00400 $TEMPFILE | awk '{print $2}'`
OLDUI2=`grep 00401 $TEMPFILE | awk '{print $2}'`
OLDUI3=`grep 00402 $TEMPFILE | awk '{print $2}'`
OLDUI4=`grep 00403 $TEMPFILE | awk '{print $2}'`
OLDUO1=`grep 00400 $TEMPFILE | awk '{print $3}'`
OLDUO2=`grep 00401 $TEMPFILE | awk '{print $3}'`
OLDUO3=`grep 00402 $TEMPFILE | awk '{print $3}'`
OLDUO4=`grep 00403 $TEMPFILE | awk '{print $3}'`

# Clean TmpFile
rm -f $TEMPFILE

# Summ TCP old packets
SOLDTIO=$(($OLDTI1+$OLDTI2+$OLDTI3+$OLDTI4 \
+$OLDTO1+$OLDTO2+$OLDTO3+$OLDTO4))

# Summ UDP old packets
SOLDUIO=$(($OLDUI1+$OLDUI2+$OLDUI3+$OLDUI4 \
+$OLDUO1+$OLDUO2+$OLDUO3+$OLDUO4))

# Fetch TCP curr packets
NEWTI1=`ipfw -a list | grep 00300 | awk '{print $2}'`
NEWTI2=`ipfw -a list | grep 00301 | awk '{print $2}'`
NEWTI3=`ipfw -a list | grep 00302 | awk '{print $2}'`
NEWTI4=`ipfw -a list | grep 00303 | awk '{print $2}'`
NEWTO1=`ipfw -a list | grep 00300 | awk '{print $3}'`
NEWTO2=`ipfw -a list | grep 00301 | awk '{print $3}'`
NEWTO3=`ipfw -a list | grep 00302 | awk '{print $3}'`
NEWTO4=`ipfw -a list | grep 00303 | awk '{print $3}'`

# Summ TCP curr packets
SNEWTIO=$(($NEWTI1+$NEWTI2+$NEWTI3+$NEWTI4 \
+$NEWTO1+$NEWTO2+$NEWTO3+$NEWTO4))

# Fetch UDP curr packets
NEWUI1=`ipfw -a list | grep 00400 | awk '{print $2}'`
NEWUI2=`ipfw -a list | grep 00401 | awk '{print $2}'`
NEWUI3=`ipfw -a list | grep 00402 | awk '{print $2}'`
NEWUI4=`ipfw -a list | grep 00403 | awk '{print $2}'`
NEWUO1=`ipfw -a list | grep 00400 | awk '{print $3}'`
NEWUO2=`ipfw -a list | grep 00401 | awk '{print $3}'`
NEWUO3=`ipfw -a list | grep 00402 | awk '{print $3}'`
NEWUO4=`ipfw -a list | grep 00403 | awk '{print $3}'`

# Summ UDP curr packets
SNEWUIO=$(($NEWUI1+$NEWUI2+$NEWUI3+$NEWUI4 \
+$NEWUO1+$NEWUO2+$NEWUO3+$NEWUO4))

# Diff old/curr packets
DIFFTIO=$(($SNEWTIO-$SOLDTIO))
DIFFUIO=$(($SNEWUIO-$SOLDUIO))

# Prob all result
echo $DIFFTIO
echo $DIFFUIO
Selanjutnya hasilnya tinggal ditampilkan ke MRTG atau RRDTool. Dibawah ini saya coba menggunakan MRTG:
Target[ipfw.tu]: `/usr/local/bin/ipfw.tu`
Title[ipfw.tu]: IPFW TCP/UDP Packets Summary
Colours[ipfw.tu]: DODGERBLUE#1E90FF,BLUE#0000FF,DODGERBLUE#1E90FF,BLUE#0000FF
RouterUptime[ipfw.tu]: local@localhost
MaxBytes[ipfw.tu]: 30000
AbsMax[ipfw.tu]: 30000
YTics[ipfw.tu]: 10
PageTop[ipfw.tu]: IPFW TCP/UDP Packets Summary
YLegend[ipfw.tu]: Packets/5 Min
ShortLegend[ipfw.tu]:
LegendI[ipfw.tu]: TCP
LegendO[ipfw.tu]: UDP
Legend1[ipfw.tu]:
Legend2[ipfw.tu]:
Options[ipfw.tu]: gauge, growright, avgpeak, integer, absolute, pngdate


Selamat mencoba :-)

07 November 2011

Ethernet Dual Port

Karena beberapa kepentingan untuk penambahan bandwidth dikarenakan Telkom di Sumedang maksimum cuma 1 Mbps saja (`Katanya`) jadi diperlukan mesin sbg router untuk load balancing outgoing. Saat ini memang sudah running hampir 1 tahun lebih dengan sistem spt ini, tp kendala lain harus cari motherboard yang slot PCInya lebih dari 4 slots untuk backup, mengingat motherboard dengan slot PCInya banyak itu pada jadul semua.

Alternatif untuk permasalah ini adalah:
1. Menggunakan Switch Manageable dengan VLAN.
2. Menggunakan Ethernet X Ports UTP.
3. Motherboard dengan slot PCI minimal 4.

Tidak ada solusi yang murah :).

25 Agustus 2011

Genre FPS paling banyak diminati

Setelah kurang lebih satu minggu uji coba game online, ternyata gamer di warnetku kebanyakan gemar bermain game berbasis FPS, mungkin karena simple dan tidak terlalu memakan waktu (Beres 1 babak ya sudah). Dan tidak terlalu banyak mikir seperti halnya game genre lainnya. Sekarang lagi ekspansi dulu untuk menambah market sebelom saya "suntik" lagi dengan game-game FPS lainnya :)

19 Agustus 2011

Game Online

Setelah beberapa bulan menunggu akhirnya saya memutuskan untuk mengalihkan beberapa komputer yang dipakai internet browsing ke layanan game online. Jumlahnya tidak banyak cuma 7 unit saja, tapi lebih baik begitu daripada dirusak orang-orang tidak bertanggung jawab. Game yang di install standar saja yang ada dilingkungan IIX/OpenIXP saja, karena memang kualitas jaringan dari sisi provider kami juga tidak disarankan untuk menjalankan game-game yang sensitif terhadap latency/delay.

20 Juli 2011

Banyak kegiatan anarki di warnet

Akhir-akhir ini entah kenapa user-user di warnet willsz.net terutama yang bermain zynga poker sudah benar-benar keterlaluan. Mereka melalukan pengrusakan monitor LCD 2 unit, keyboard/mouse, belom pada ngutang. Saya gak abis pikir, kenapa bisa demikian. Belom dari tata sopan santun di tempat umun sudah tidak ada, mereka gaduh/sangat berisik mengganggu ketentraman user lain dengan cara memukul-mukul meja atau dinding bilik, berteriak-teriak seakan-akan dirumah sendiri, meludah sembarangan, kecing di botol aqua dan disimpen di bilik, minum-minum di bilik serasa warnet sendiri saja.

Jadi ada pertanyaan apakah mereka pernah bersekolah, atau dididik oleh orang tuanya? Susah emang berurusan sama orang² "Sampah" Dunno deh..  

06 Juni 2011

Service Name Speedy

Setelah beberapa hari koneksi Speedy down dengan indikasi lampu internet mati juga. Saya sempat komplain kesana-kesini namun orang Speedy-nya pun kebingungan sendiri - Setelah gangguan masal pada hari kamis jam 18.00, modem tidak bisa dial lagi ke DSLAM. Malah permasalahan ini saling lempar antara teknisi di kota kami dengan pusat. Dan saya dapat kabar bahwa orang Speedy dari pusat bakal datang ke tempat saya. Dan pada hari senin memang ada kunjungan teknis tersebut, teknisi ini login ke DSLAM mengecek signal dan ternyata signal OK (Karena memang status ADSL kami tidak bermasalah), dan ketika tombol update profile di DSLAM ditekan masih juga lampu internet mati.

Seketika teknisi tersebut mereset modem kami, dan menyeting ulang dengan parameter sama, alhasil lampu internet nyala kembali. Saya binggung apanya yang salah dengan setting modem ini, padahal setting ini udah saya gunakan ampir 2 tahun-an dan tidak ada masalah apa-apa. Setelah saya test satu persatu parameter di modem ini ternyata ketauan gara-gara  
"Service Name di isi sembarang" (Tadinya biar tidak binggung karena disini ada 3 line/3 modem juga)
Yang jadi pertanyaan kenapa gara-gara ini lampu internet jadi mati (Mungkin koneksi direject)?. Tidak ada penjelasan umum tentang hal ini.

26 Maret 2011

Speedy bermasalah

Sejak tanggal 19 Maret saya mengalama gagal dial/bridge atau PPPoE. Dengan mode PPPoE di modem ada error spt ini:
1/1/2000 0:11:16> mpoaChannDown: ch<0> null iface
1/1/2000 0:11:18> spDropRemoteIPNode failed: status= 0
1/1/2000 0:11:18> netMakeChannDial: err=-3001 rn_p=804894d0
1/1/2000 0:11:51> Call Failed
1/1/2000 0:11:51> ppp:ch<0> Down
1/1/2000 0:12:21> Call Failed
1/1/2000 0:12:21> ppp:ch<0> Down
Semua line ADSL sehat waalfiat dgn SNR/LA (40/28), tapi lampu indikator untuk line internetnya padam. Saya coba modem diset bridge dan dial di XP ada 3 kemungkinan:
1. Error 691 muncul.
2. Dial berhasil tetapi assign IP Public jadi 10.25.0.X.
3. Berhasil masuk normal tp jika DC keseringan maka dapet IP Public 10.25.0.x
Untuk no 1 jika login @telkom.net di hapus (tinggal nomer digit saja) bisa masuk tp tetep assign IP Public dapet 10.25.0.x. Ketika error ini terjadi menggunakan BRAS-CBN-SNT-D905L4110L004B. Sekarang semuanya normal di BRAS-LBG-SNT-D905L4110L004C (maybe?).

Kata orang di 147 katanya ada masalah di RADIUS server, dimana jika account yg pernah melakukan perubahan password yg diberikan pas registrasi maka pasti mendapatkan masalah ini. Rollback database kah?

Petugas datang dan melakukan reset ulang semua line di tempat saya, tp tetep aja masalah gak hilang. dan bilang "Ini urusan central...karena kita ikut ke Bandung". 

Waktu downnya gak kira-kira:
1. Tanggal 19 down dari jam 22.00 s/d tgl 20 jam 16.00
2. Tanggal 22 down dari jam 20.00 s/d tgl 23 jam 17.00
3. Tanggal 24 down dari jam 16.00 s/d tgl 25 jam 24.00
Saya minta nomer tlp NOC untuk daerah Bandung. Bicara dng 147 malah bikin cape karena report birokrasi yg berbelit-belit.

26 November 2010

Koneksi Speedy Bermasalah

Sekedang sharing, seringkali kita mendapat masalah dengan koneksi internet Telkom Speedy, setelah ganti Modem, ganti semua kabel, ganti ethernet, cek SNR Margin/Line Attenuation, ping antara node, cek semua sambungan RJ/Splitter. Tapi tetep saja masalah gak sembuh-sembuh. Ada baiknya minta dicek sambungan kabel di tiang, dan memang ini penyebabnya bisa jadi berkarat, kendur dsb. Lumayan ini makan waktu berhari-hari mengecek kemungkinan trouble ini. Yang jelas lumayan dibikin ribet karena urusan hal seperti ini, tapi gpp lah tambah pengalaman :)

28 September 2010

Mass Banned dari Zynga

Baru kali ini ada banned masal dari Zynga, entah dng alasan mengurangi peredaran chips atau memang menegakan rule, yang jelas akibat dari ini semua orang enggan untuk bermain poker Zynga lagi. Beberapa rekan pun ternyata kena hal serupa, entah gara-gara transfer, atau maen multi ID dalam 1 table atau apalah...

Sudah saatnya kita pindah mencari poker dari vendor laen, karena memang Zynga ini diperuntukan untuk player yang kurang kerjaan untuk menghabiskan waktu berjam-jam depan PC. Sedangkan player kami money oriented, jadi ya gak akan pernah nyambung karena visi/misinya berbeda :D

27 Juli 2010

Ingat-ingat pesan dari Zynga!

Cara melindungi chips anda:
Untuk melindungi chips anda, kami menyarankan anda secara teratur mengosongkan cache anda dan mengubah sandi anda sekali per bulan.

Catatan: Jangan lupa untuk selalu logout dari account jaringan Anda. Ada beberapa aplikasi deteksi spyware tersedia salah satu yang Anda mungkin anda ingin mencoba.

* Jangan PERNAH memberikan login/password anda kepada siapapun! Kami tidak akan pernah meminta login/password anda!.
* Jangan PERNAH klik pada link apapun anda tidak yakin.
* Jangan PERNAH meminjamkan chips untuk pemain lain, di bawah kedok sebuah pengembalian dengan bunga.

Jika anda menemukan salah satu contoh berikut, tolong laporkan segera. Jika anda menerima pesan jaringan (bukan e-mail) yang menunjukkan:

* Anda sudah dituduh untuk penyalahgunaan account: "Jika anda tidak mengklik pada link di bawah ini; account anda akan diblokir atau dinonaktifkan dalam jangka waktu tertentu" . Atau "Iming² bonus chips silahkan masukkan e-mail/password dan silahkan klik link dibawah ini.

* Sebuah "Teman lama" keinginan anda untuk mengklik pada link ke foto/webcam. Dalam kebanyakan kasus foto utama adalah seorang gadis dalam bikini.

Anda bisa merepot via Zynga Ticket System.

Atau, ketika sedang bermain di table, silahkan klik pemainnya dan tekan "Abuse Button" (Tombol Penyalahgunaan), pilih judul dan kategorinya lalu isi komentar singkat tentang kasus anda ini. Sebagai tambahan silahkan Print Screen dan sertakan URL-nya biar lebih jelas.