Limitasi Bandwidth
Pada praktek kali ini, proses limitasi
bandwidth saya akan menggunakan squid berdasarkan delay pools diamana
saya membuat aturan sebagai berikut
- Limitasi berdasarkan IP Address dimana IP admin : 192.168.0.2-192.168.0.10/24 dan IP user : 192.168.0.11-192.168.0.254/24
- Untuk admin mendapatkan full bandwidth alias tanpa limitasi sedangkan untuk user limitasi berjalan ketika ada user yang mendownload file lebih dari 5Mbps, jadi apabila file melebihi 5Mbps maka bandwidth untuk user maksimum menjadi 9 Kbps
dengan asumsi PC telah selesai terinstall Ubuntu server :
1. Setting interfaces sesuai topologi jaringan anda, pada praktek ini saya menggunakan settinggan interface sebagai berikut
root@goestoe:/# nano /etc/network/interfaces
| auto eth0
iface eth0 inet static address 192.168.10.188 netmask 255.255.255.0 network 192.168.10.0 broadcast 192.168.10.255 gateway 192.168.10.100 dns-nameservers 202.134.0.155 auto eth1 iface eth1 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 |
Catatan : Apabila anda tidak menginstall dns maka
agar squid dapat berjalan maka sebaiknya pada interface eth1 ditambahkan
dns-nameservers lalu nantinya pada resolv.conf juga ditambahkan nameservers
2. Selanjutnya aktifkan packet forward ipv4 pada file sysctl.conf
root@goestoe:/# nano /etc/sysctl.conf
| # Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1 |
3. Tambahkan iptables pada rc.local untuk masquerade paket ke default interface
root@goestoe:/# nano /etc/rc.local
| iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE
exit 0 |
4. Tambahkan nameserver pada file resolv.conf
root@goestoe:/# nano /etc/resolv.conf
| nameserver 202.134.0.155 |
5. Selanjutnya kita mulai mamasuki squid, pertama kita install dahulu paket squid tersebut lalu edit file squid.conf
root@goestoe:/# apt-get install squid
root@goestoe:/# nano /etc/squid/squid.conf
| http_port 3128 transparent
cache_mem 32 MB cache_dir ufs /var/spool/squid 1600 4 256 negative_ttl 2 minutes maximum_object_size 1024 KB minimum_object_size 4 KB cache_swap_low 80 cache_swap_high 100 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS acl clients src 192.168.0.0/24 acl admin src 192.168.0.2-192.168.0.10/32 acl user src 192.168.0.11-192.168.0.254/32 acl ftp proto FTP acl download url_regex -i \.avi$\.mpg$\.mpeg$\.rm$\.iso$\.wav$\.mov$\.dat$\.mpe$ acl download url_regex -i ftp \.exe$\.mp3$\.mp4$\.tar.gz$\.tar.bz2$\.rpm$\.zip$$ acl download url_regex –I \.midi$\.rmi$\.wma$\.wmv$\.ogg$\.ogm$\.m1v$\.mp2$\.mp$ acl download url_regex -i \.m3u$\.asx$\.wpl$\.wmx$\.dvr-ms$\.snd$\.au$\.aif$\.a$ acl download url_regex -i \.m2p$\.ts$\.tp$\.trp$\.div$\.divx$\.mod$\.vob$\.aob$$ acl download url_regex -i \.ac3$\.cda$\.vro$\.deb$\.mkv$ delay_pools 2 delay_class 1 1 delay_parameters 1 -1/-1 delay_access 1 allow admin delay_access 1 deny all delay_class 2 1 delay_parameters 2 9000/500000 delay_access 2 allow user delay_access 2 allow user download delay_access 2 deny all http_access allow ftp http_access allow clients http_access deny all |
6. Tambahkan iptables pada rc.local agar semua paket yang direquest oleh client yang melalui interface local dipaksa / redirect untuk melalui port 3128 / proxy
root@goestoe:/# nano /etc/rc.local
| iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j REDIRECT –to-port 3128 |
7. Langkah terakhir restart PC lalu test download pada clients dan
lihat perbedaan transfer rate antara admin dengan user, tapi sebaiknya
agar lebih aman kita tambahkan Mac dan IP filtering agar tidak ada user
ynag menggunakan IP admin
Mac & IP filtering
1. Pada proses Mac IP filtering kali ini saya akan menggunakan script yang akan di eksekusi pada file /etc/network/filter.rules dengan isi script sebagai berikut
| #!/bin/bash
# Bash script Firewall with IP Address and MAC Address Filtering ###### VARIABLE files=”/etc/network/clientsfilter.list” device=eth1 device_inet=eth0 http=80 proxy=3128 ####### SCRIPT echo “FIREWALL STATUS: All Firewall Drop & Reset” /sbin/iptables -t mangle -F /sbin/iptables -t nat -F /sbin/iptables -t filter -F /sbin/iptables -t filter -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT echo “FIREWALL STATUS: Drop all PREROUTING on $device” /sbin/iptables -t nat -I PREROUTING -i $device -j DROP echo “FIREWALL STATUS: Drop all FORWARD on $device” /sbin/iptables -t filter -I FORWARD -i $device -j DROP echo “FIREWALL STATUS: IP & MAC Filtering on device $device” echo “FIREWALL STATUS: Allow access for IP-ADDRESS and MAC-ADDRESS: “ cat $files | while read ip_address mac_address client; do /sbin/iptables -A INPUT -t filter -i $device -s $ip_address -m mac –mac-source $mac_address -j ACCEPT /sbin/iptables -I PREROUTING -t nat -i $device -s $ip_address -m mac –mac-source $mac_address -j ACCEPT /sbin/iptables -t nat -I PREROUTING -i $device -s $ip_address -p tcp -m tcp –dport $http -j REDIRECT –to-ports $proxy /sbin/iptables -t nat -I PREROUTING -i $device -s $ip_address -p udp -m udp –dport $http -j REDIRECT –to-ports $proxy /sbin/iptables -I FORWARD -i $device -s $ip_address -m mac –mac-source $mac_address -j ACCEPT /sbin/iptables -t nat -A POSTROUTING -s $ip_address -o $device_inet -j MASQUERADE echo “$ip_address [$mac_address] => $client” done echo “FIREWALL STATUS: Drop all INPUT on $device” /sbin/iptables -t filter -A INPUT -i $device -j DROP echo “FIREWALL STATUS: Accept all INPUT on $device_inet” /sbin/iptables -t filter -A INPUT -i $device_inet -j ACCEPT |
2. Buat file /etc/network/clientsfilter.list sebagai database yg berisi MAC-ADDRESS client dgn IP yg telah di tentukan, contoh:
| 192.168.0.13 B8:70:F4:12:D3:CB Mar-LAN
192.168.0.3 68:A3:C4:9F:BE:8F Mar-WLAN |
3. Beri chmod a+x untuk file /etc/network/filter.rules
chmod a+x file1 file2 (Give execute permission to everybody)
root@goestoe:/# chmod a+x /etc/network/filter.rules
4. Agar setiap kali reboot atau startup program langsung jalan maka buka file /etc/rc.local dan tambahkan /etc/network/filter.rules pada baris terakhir tetapi hapus baris exit 0
root@goestoe:/# nano /etc/rc.local
| # By default this script does nothing.
/etc/network/filter.rules exit 0 |
5. Langkah terakhir reboot server lalu tes apakah mac filter sudah
berjalan atau belum, untuk hasil akan dicantumkan pada bab berikutnya
Untuk lebih jelasnya saya berikut adalah video tutorialnya…
Sign up here with your email
ConversionConversion EmoticonEmoticon