Pendahuluan
Berdasarkan pengalaman pribadi selama saya mengadu nasib di kota Malang, ternyata Setup Server Ubuntu + Transparent Squid Proxy itu susah juga yah =))
Berawal dari seorang pelanggan yang berkeluh kesah tentang koneksinya yang lemott :( padahal ga lemot kok ! Itu mungkin dikarenakan server di cafe sedang bermasalah, tepat nya tanggal 10 Desember 2010 setelah pulang dari kota Kediri.
Berikut ini adalah perlengkapannya.
X. INDEX
I. PC yang akan di install Server dengan menggunakan OS Ubuntu
II. Koneksi Speedy
III. Lan Card ( 2 Pcs )
IV. Wireless AP Client Router
V. Switch Hub
TAHAP I
##########
Lakukan Installasi PC server dengan OS Ubuntu, selanjutnya setelah terinstall login kedalam server dengan user sebagai
root- Login:
Linux ubuntu 2.6.35-22-generic-pae #35-Ubuntu SMP Sat Oct 16 22:16:51 UTC 2010 i686 GNU/Linux
Ubuntu 10.10
Welcome to Ubuntu!
* Documentation:
[You must be registered and logged in to see this link.]root@ubuntu:~#
TAHAP II
##########
Langkah berikutnya adalah setting ethernet card ( Lan Card )
Buka file
/etc/network/interfaces ( gunakan tools editor favorit anda )
Dan perlu diingat, Lan Card
eth0 terhubung dengan modem ADSL dan IPv4 mengikuti DHCP dari modem jadi kita tidak perlu setting lagi karena sudah di setting saat penerapan OS .
- root@ubuntu:~# nano /etc/network/interfaces:
auto lo
iface lo inet loopback
#Speedy
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1
#Server
auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.1
post-up iptables-restore < /etc/iptables.up.rules
kemudian di‚Äêsimpan.
Langkah selanjutnya setelah mengedit konfigurasi pada
/etc/network/interfaces adalah restart pada jaringan.
root@ubuntu:~# /etc/init.d/networking
Usage: /etc/init.d/networking {start|stop|restart|force-reload}
root@ubuntu:~# /etc/init.d/networking restart
Lihat hasil seting kartu jaringan pada eth0 dan eth1
- root@ubuntu:~# ifconfig:
eth0 Link encap:Ethernet HWaddr 00:a0:b0:1b:7a:9b
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::2a0:b0ff:fe1b:7a9b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:228438 errors:0 dropped:0 overruns:0 frame:0
TX packets:225393 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:187090075 (187.0 MB) TX bytes:41115026 (41.1 MB)
Interrupt:18 Base address:0xd000
eth1 Link encap:Ethernet HWaddr 00:30:84:9e:e8:ee
inet addr: 192.168.0.1 Bcast: 192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::230:84ff:fe9e:e8ee/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:190471 errors:0 dropped:0 overruns:0 frame:0
TX packets:245521 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:36899774 (36.8 MB) TX bytes:189647171 (189.6 MB)
Interrupt:16 Base address:0xd100
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:13527 errors:0 dropped:0 overruns:0 frame:0
TX packets:13527 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1443512 (1.4 MB) TX bytes:1443512 (1.4 MB)
TAHAP III
##########
INSTALL DAN SETING DHCP SERVER
root@ubuntu:~# apt-get update
root@ubuntu:~# apt-get install dhcp3-server
Setelah diinstall, lakukan seting pada DHCP3 Server, Jaringan pada eth1 pada range IP 192.168.0.100- 192.168.0.200 dan Netmask 255.255.255.0.
Edit file conf pada DHCP3 yaitu file
/etc/dhcp3/dhcpd.conf.
- root@ubuntu:~# nano /etc/dhcp3/dhcpd.conf:
ddns-update-style none;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.3 192.168.0.100;
option domain-name-servers 192.168.0.1;
option domain-name "dns.indonesiancoder.net";
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
}
Setelah itu di-save.
DHCP juga dapat di buat seperti halnya MAC Filter, dalam pengertian sebagai berikut
Kita sebelumnya sudah mencatat MAC‚ÄêADDRESS dari seluruh hardware Ethernet maupun wifi client yang kemudian diberikan IP sesuai ketentuan MAC‚ÄêADDRESS.
Contoh PC Server dengan MAC 00:30:84:9e:e8:ee akan selalu mendapat IP
192.168.0.123.
Berikut adalah codenya
- Code:
-
host ubuntu {
hardware ethernet 00:30:84:9e:e8:ee;
fixed-address 192.168.0.1;
}
Tambahkan kode tersebut pada
/etc/dhcp3/dhcpd.conf, maka akan menjadi seperti ini
- Code:
-
ddns-update-style none;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.3 192.168.0.100;
option domain-name-servers 192.168.0.1;
option domain-name "dns.indonesiancoder.net";
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
}
host ubuntu {
hardware ethernet 00:30:84:9e:e8:ee;
fixed-address 192.168.0.1;
}
TAHAP IV
##########
MEMBUAT NAT / ROUTER
Agar client bisa terkoneksi dengan internet maka kita harus mengaktifkan ip forward.
Membuat router maka aktifkan IP Forwarding, dari eth0 ke eth1
/etc/sysctl.conf cari kode berikut
- Code:
-
# net.ipv4.ip_forward=1
untuk mengaktifkannya, hilangkan tanda "
#" maka anak menjadi seperti
- Code:
-
net.ipv4.ip_forward=1
untuk meningkatan pengaman sebaiknya anti spoofing attack dan kernel map protect diaktifkan, dengan mencari kode berikut
- Code:
-
# net.ipv4.conf.default.rp_filter=1
# net.ipv4.conf.all.rp_filter=1
dan diaktifkan menjadi
- Code:
-
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1
kemudian save. Dan lakukan
reboot root@ubuntu:~# reboot
Membuat NAT dengan command
iptables root@ubuntu:~# iptables -t nat -A POSTROUTING -j MASQUERADE -s 192.168.0.0/24
TAHAP V
##########
INSTALL DAN SETING PADA DNS SERVER MENGGUNAKAN BIND9
Fungsi DNS Server ini adalah me-resolved nama domain yang diminta client untuk di memberitahukan server dari domain yang ditanyakan client berada di IP mana.
Selanjutnya kita memulai konfigurasi Bind9, sebelumnya kita tentukan nama domainnya semisalnya dns.indonesiancoder.net dan kemudian dapat diganti sesuai keinginan.
root@ubuntu:~# apt-get install bind9
edit file
/etc/bind/named.conf.options karna file tersebut berisi DNS forward ditujukan kemana, maka itu karena kita memakai telkomspeedy maka diarahkan IP DNS Telkom, OpenDNS, DNS Google, dan lain sebagainya.
Contohnya adalah sebagai berikut :
- Code:
-
options {
directory "/var/cache/bind";
forwarders {
222.124.204.34;
202.134.1.10;
203.130.193.74;
8.8.8.8;
8.8.4.4;
203.130.196.155;
203.130.196.5;
202.134.0.61;
125.160.2.162;
203.130.206.250;
};
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
setelah itu simpan, kemudian buka file
/etc/bind/named.conf.local dan edit file tersebut. File tersebut berisi letak file zona yang berisi DNS Record local.
- Code:
-
include "/etc/bind/zones.rfc1918";
zone "dns.indonesiancoder.net" { type master;
file "/etc/bind/db.dns.indonesiancoder.net";
};
zone "0.168.192.in-addr.arpa" { type master;
file "/etc/bind/db.192";
};
include "/etc/bind/rndc.key";
Kemudian duplicate file db local sesuai nama file yang disebutkan /etc/bind/named.conf.local.
root@ubuntu:~# cp /etc/bind/db.local /etc/bind/db.dns.indonesiancoder.net
root@ubuntu:~# cp /etc/bind/db.local /etc/bind/db.192
Edit file
/etc/bind/db.dns.indonesiancoder.net edit isinya menjadi
- /etc/bind/db.dns.indonesiancoder.net:
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns.dns.indonesiancoder.net. mail.dns.indonesiancoder.net. (
2010121105 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
localhost IN A 127.0.0.1
@ IN NS ns.dns.indonesiancoder.net.
ns IN A 192.168.0.1
smtp IN CNAME ns
www IN CNAME ns
cups IN CNAME ns
proxy IN CNAME ns
indonesiancoder IN A 192.168.0.1
Banyak orang menggunakan tanggal terakhir edited sebagai seri dari zona, seperti 2010121105 yang yyyymmddss (di mana angka serial), setiap edit file configurasi tersebut agar mengganti serial tersbut dengan tanggal terbaru bertujuan agar bind9 segera mengupdate perubahaannya.
Edit file
/etc/bind/db.192 edit isinya menjadi
- /etc/bind/db.dns.indonesiancoder.net:
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns.dns.indonesiancoder.net. mail.dns.indonesiancoder.net. (
2010121105 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.
1 IN PTR ns.dns.indonesiancoder.net.
smtp IN CNAME ns
www IN CNAME ns
cups IN CNAME ns
proxy IN CNAME ns
Edit file
/etc/hosts dan tambahkan seperti data di bawah karena domain ini diaktifkan sebagai host pula.
root@ubuntu:~# nano /etc/hosts
- Code:
-
127.0.0.1 localhost
127.0.1.1 ubuntu
192.168.0.1 indonesiancoder ns.dns.indonesiancoder.net proxy.indonesiancoder.net
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Edit file /etc/resolv.conf
root@ubuntu:~# nano /etc/resolv.conf
search dns.indonesiancoder.net
nameserver 192.168.0.1
nameserver 127.0.0.1
Restart jaringan dan bind9.
root@ubuntu:~# /etc/init.d/bind9 restart
Untuk menguji bind9, kita perlu menginstall repository dnsutils.
root@ubuntu:~# apt-get install dnsutils
Check zona untuk mengetest settingan kita didalam file /etc/bind/db.dns.indonesiancoder.net dan /etc/bind/db.192
root@ubuntu:~# named-checkzone dns.indonesiancoder.net /etc/bind/db.dns.indonesiancoder.net
zone dns.indonesiancoder.net/IN: loaded serial 2010121105
OK
root@ubuntu:~# named-checkzone dns.indonesiancoder.net /etc/bind/db.192
zone dns.indonesiancoder.net/IN: loaded serial 2010121105
OK
kalau settingan tidak ada masalah hasilnya akan muncul serial yang telah dibuat. Setelah itu menguji dengan command dig.
dimulai dengan mencoba localhost
- root@ubuntu:~# dig localhost:
; <<>> DiG 9.7.1-P2 <<>> localhost
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18052
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;localhost. IN A
;; ANSWER SECTION:
localhost. 604800 IN A 127.0.0.1
;; AUTHORITY SECTION:
localhost. 604800 IN NS localhost.
;; ADDITIONAL SECTION:
localhost. 604800 IN AAAA ::1
;; Query time: 1 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Sat Dec 11 08:43:12 2010
;; MSG SIZE rcvd: 85
kemudian coba menguji untuk mencari domain di internet
- root@ubuntu:~# dig google.com:
; <<>> DiG 9.7.1-P2 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16690
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 4, ADDITIONAL: 4
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 48 IN A 209.85.175.147
google.com. 48 IN A 209.85.175.99
google.com. 48 IN A 209.85.175.103
google.com. 48 IN A 209.85.175.104
google.com. 48 IN A 209.85.175.105
google.com. 48 IN A 209.85.175.106
;; AUTHORITY SECTION:
google.com. 1430 IN NS ns1.google.com.
google.com. 1430 IN NS ns2.google.com.
google.com. 1430 IN NS ns3.google.com.
google.com. 1430 IN NS ns4.google.com.
;; ADDITIONAL SECTION:
ns1.google.com. 298809 IN A 216.239.32.10
ns2.google.com. 298809 IN A 216.239.34.10
ns3.google.com. 213624 IN A 216.239.36.10
ns4.google.com. 312752 IN A 216.239.38.10
;; Query time: 1 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Sat Dec 11 08:49:04 2010
;; MSG SIZE rcvd: 260
atau bisa juga menguji dengan perintah nslookup.
- root@ubuntu:~# nslookup:
> set type=any
> dns.indonesiancoder.net
Server: 192.168.0.1
Address: 192.168.0.1#53
dns.indonesiancoder.net nameserver = ns.dns.indonesiancoder.net.
dns.indonesiancoder.net
origin = ns.dns.indonesiancoder.net
mail addr = mail.dns.indonesiancoder.net
serial = 2010121105
refresh = 604800
retry = 86400
expire = 2419200
minimum = 604800
> localhost
Server: 192.168.0.1
Address: 192.168.0.1#53
Name: localhost.dns.indonesiancoder.net
Address: 127.0.0.1
>
TAHAP VI
##########
Setup Transparent Squid Proxy Server di Ubuntu
root@ubuntu:~# sudo aptitude install squid squid-common
edit squid config file.
root@ubuntu:~# nano /etc/squid/squid.conf
Set host yang di izinkan
acl internal_network src 192.168.0.0/24
http_access allow internal_network
Set Permisi file & folder
root@ubuntu:~# sudo chown -R proxy:proxy /var/log/squid/
root@ubuntu:~# sudo chown proxy:proxy /etc/squid/squid.conf
Restart Squid
root@ubuntu:~# sudo /etc/init.d/squid restart
Set Otentikasi untuk Proxy, Anda ingin menggunakan otentikasi dengan proxy Anda, Anda akan perlu menginstal utilitas apache2
root@ubuntu:~# sudo aptitude install squid squid-common apache2-utils
Untuk menambahkan user pertama
root@ubuntu:~# sudo htpasswd -c /etc/squid.passwd first_user
Setelah menambahkan user, edit squid.conf kembali dan tambahkan seperti dibawah ini.
root@ubuntu:~# nano /etc/squid/squid.conf
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid.passwd
auth_param basic children 5
auth_param basic realm NFYE Squid proxy-caching web server
auth_param basic credentialsttl 3 hours
auth_param basic casesensitive off
acl users proxy_auth REQUIRED
acl sectionx proxy_auth REQUIRED
http_access allow users
- Contoh keseluruhan isi dari file squid.conf tersebut adalah:
acl all src 0.0.0.0/0.0.0.0
acl internal_network src 192.168.0.0/24
acl users proxy_auth REQUIRED
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563 # https, snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl sectionx proxy_auth REQUIRED
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access allow users
http_access allow internal_network http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
http_reply_access allow all
icp_access allow all
Kemudian mengalihkan semua traffic menggunaka Transparent Proxy yang telah di setting pada Squid
root@ubuntu:~# iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.1:3128
root@ubuntu:~# iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
dan terakhir adalah SELAMAT MENIKMATI !!!