04 May 2006

Linux Internet Connection Sharing

Ini nih ada cara gampang buat sharing koneksi internet pake linux. Linux yang dipake adalah distro PLuG. Anggap aja kita udah tau interface apa yang buat sharingnya. Misal ppp0, eth0, atau eth1.
Beri nama script ini ics.sh, dan isinya kaya gini :

#!/bin/sh
#ics.sh alias buat internet connectuon sharing
#2006 @ blitar
#bayuart@yahoo.com
echo "Interface mana yg dipake ICS ? [ppp0,eth0,eth1,dst]"
read inf
echo ""
DEVICE=$ics

#LAN ke Internet
iptables -A FORWARD -o $DEVICE -i ! $DEVICE -j ACCEPT
#Dari Internet
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -f -j ACCEPT
#Internet Sharingnya
iptables -t nat -A POSTROUTING -o $DEVICE -j MASQUERADE
Ok, cuman itu aja ICS nya, sekarang pastikan bahwa IP Forwarding telah diaktifkan.
cat /proc/sys/net/ipv4/ip_forward
jika masih bernilai "0", lakukan langkah berikut ini:
echo "1" > /proc/sys/net/ipv4/ip_forward
Sekarang chmod +x ics.sh nya, jalankan, kemudian lakukan
service iptables save
hal ini akan secara otomatis menyimpan rule iptables dari ics.sh dan secara otomatis juga akan di load setiap kali komputer di hidupkan (kondisi service default), kecuali IP Forwardingnya. Untuk IP FORWARDING agar sama perlakuannya dengan rule iptables ics.sh tadi taruh
echo "1" > /proc/sys/net/ipv4/ip_forward
pada file /etc/rc.local, atau bisa juga menambahkan baris
net.ipv4.ip_forward=1
di /etc/sysctl.conf tanpa menaruh apa² di /etc/rc.local

Tanpa menambah perintah untuk route manual, dengan kondisi diatas box linux kita sudah bisa digunakan sebagai ICS alias Internet Connectuon Sharing.

Reset Iptables

Kadang orang suka lupa, emang lupa tu penyakit bawaan sejak jaman manusia pertama kali diciptakan, so para admin atau sebangsanya juga kena jatah penyakit ini. Pada lupa bagian ini adalah dikondisikan kita lupa gimana caranya nge-reset rule iptables. Gara²nya pas ngetik rule iptables salah trus akhirnya itu rule jadi amburadul :))
Lets go....

Contoh Konfigurasinnya, misal aja kasih nama file reset-iptables.sh

#reset rule iptables
#2004 @ blitar
#bayuart@yahoo.com

IPTABLES="/sbin/iptables"

#reset policy di tabel filter
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT

#reset policy di tabel nat
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT

#reset policy di tabel mangle
$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT

#flush semua rule di tabel filter dan nat
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F

#hapus semua chain
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X

kemudian chmod +x agar bisa dijalankan.

Iptables u/ Transparent Proxy dgn Squid

Tentu saja, pertama kali yang harus dibutuhkan agar sesuai dengan judul adalah rule iptables DNAT atau REDIRECT. Gunakan REDIRECT hanya jika squid dijalankan pada mesin (box) itu sendiri. Contohnya :

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.22.33:3128 

Setelah itu adalah langkah mengkonfigurasi squid. Pada konfigurasi squid tambahkan beberapa sintak ini ke file squid.conf.

Jika menggunakan squid-2.3

http_port 3128
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Dan squid-2.4 keatas, perlu ditambahkan:

httpd_accel_single_host off

Ok, segitu aja dulu