Home,Forum diskusi, Chatting, Download 


Akses Internet untuk LAN anda dengan Linux

Kestabilan Linux dan keamanan linux dalam hal jaringan disamping gratis membuatnya menjadi salah satu pilihan bagi warnet-warnet dan perusahaan yang menginginkan fasilitas Internet Sharing bagi jaringan lokal. Tulisan ini akan memberikan beberapa alternatif didalam pemanfaatan Linux sebagai kotak ICS, yaitu dengan Masquerading, Proxy Server, Socks Server.

Salam,

Hendra & Susan Dewichan


Akses Internet untuk LAN anda

(c) 1998-1999 oleh Mark Roberts

Pendahuluan

Tulisan ini mengasumsikan bahwa komputer dengan sistem operasi Linux yang akan digunakan sebagai gateway ke internet telah dapat mengakses internet dengan baik. Tulisan ini akan membahas apa yang dapat anda lakukan agar komputer-komputer yang berada dalam LAN dapat mengakses internet melalui komputer Linux tersebut. Perhatikan Gambar 1 untuk jelasnya. 

Gambar 1, Contoh Jaringan dengan Linux Gateway.

Pada Gambar 1, terlihat bahwa jaringan anda  memiliki satu alamat IP yang nyata (real) [yang diberikan oleh ISP anda ketika melakukan koneksi dialup] pada komputer Linux Masq-gate yang dapat langsung mengakses internet, sedangkan komputer-komputer  lainnya (dalam hal ini disebut klien) dalam LAN anda hanya memiliki alamat IP lokal (192.168.1.x), sehingga akses ke internet harus melalui Linux Masq-gate. Dalam hal ini pada komputer Linux tersebut harus bertindak Proxy Server atau dengan mengaktifkan  kemampuan Masquerading pada Linux.

Proxy Server atau Masquerading ?

Masquerading adalah suatu solusi tingkat rendah (low level) - dengan melakukan perubahan informasi yang terkandung dalam paket TCP/IP dengan melakukan pencatatan terhadap koneksi pada suatu interface  dan mem-forward paket tersebut ke interface lain. Pada masquerading, program/sistem klien tidak menyadari proses tersebut. Dalam hal ini bertindak sebagai firewall, dimana semua klien tersembunyi dibelakangnya, sehingga semua akses ke internet dan sebaliknya harus melalui firewall tersebut.

                      _________________________________________
                     |  __________    LAN     _______________  |
   _/\__/\_          | |          |          |               | |
  |        |         | | Firewall |          |  Masqueraded  | |
 / Internet \--(PPP0)--|  System  |--(ETH0)--| Workstation/s | |
 \_  _  _  _/        | |__________|          |_______________| |
   \/ \/ \/          |_________________________________________|

Sedangkan Proxy Server adalah suatu solusi tingkat tinggi (high level) - program/browser pada setiap klien harus dikonfigurasi untuk melakukan permintaan ke server dan bertindak sebagai klien.

Berdasarkan keterangan diatas, Masquerading nampaknya lebih mudah untuk dilakukan dan merupakan suatu pilihan yang mudah dipahami. Tetapi sebenarnya suatu Proxy Server memiliki fungsi lebih dari sekedar hanya melayani permintaan klien, suatu Proxy Server mengerti jenis data yang diminta oleh klien, dan dapat juga  melakukan cache terhadap data tersebut, Sebagai contoh, suatu Proxy HTTP dapat melakukan cache terhadap halaman web yang pernah diakses, dan pada permintaan klien terhadap halaman yang sama, maka halaman yang berada dalam cache tersebut akan diberikan, sehingga akan menghemat  bandwidth jaringan  komunikasi ke internet yang secara langsung akan meningkatkan unjuk kerja sistem.

Anda dapat juga mengabungkan kedua teknik diatas untuk memperoleh suatu konfigurasi yang optimal, dimana Proxy Server digunakan untuk melayani permintaan HTTP, sedangkan Masquerading digunakan untuk permintaan non HTTP, seperti IRC, TELNET, SMTP, POP3, dll

Packet Filtering (Masquerading)

Masquerading bekerja dengan menggunakan paket filter. Paket filter memakai sejumlah Rules (aturan) untuk mengarahkan paket dari suatu interface ke interface lain, misalnya dari ETH0 ke PPP0, dengan melakukan perubahan data terhadap bagian header pada paket TCP/IP.

Untuk menggunakan paket filter di Linux, anda harus menggetahui versi kernel yang anda gunakan, karena pada kernel 2.0.x paket filter standarnya adalah ipfwadm, sedangkan pada kernel  kernel 2.1.x dan 2.2.x telah diganti dengan ipchains. Cara melakukan konfigurasi Masquerading sangat tergantung kepada jenis paket filter yang anda gunakan.

Anda mungkin perlu mengkonfigurasi kembali kernel anda untuk kemampuan dukungan terhadap service masquerade/ firewall.

Catatan : Pemakaian Masquerading/ Firewall dapat menyebabkan gangguan operasi internet pada beberapa game.

Sebagai contohnya adalah game yang diproduksi oleh perusahaan Blizzard yang mana memerlukan koneksi ke Battle.net, misalnya pada game Diablo, dan Starcraft. Masalah ini dapat saja diatasi, sejauh mengetahui nomor port/IP address yang digunakan oleh aplikasi game tersebut untuk melakukan koneksi.

ipfwadm

Untuk kernel release 2.0.x dan sebelumnya, paket filtering mengunakan ipfwadm. Berikut ini adalah script sederhana yang memungkinkan komputer pada Gambar 1 untuk menangani pesan dikirim melalui gateway anda ke internet

/etc/rc.d/init.d/pfilter: 
#!/bin/sh 
# pfilter -- start/stop (IP) packet filter services 
# Allow use of autoconfiguration (RH 5.2) 
# chkconfig: 345 90 25 

NAME=$0 
case "$1" in 
start) 
echo -n "Memulai Paket Filter... " 
# Mengosongkan setting sebelumnya: 
/sbin/ipfwadm -O -f 
/sbin/ipfwadm -I -f 
/sbin/ipfwadm -F -f 
# policy defautnya adalah "deny" 
/sbin/ipfwadm -F -p deny 
# melakukan brokir terhadap trafik autodial pada Windows, misalnya: 
/sbin/ipfwadm -F -a deny -P tcp -S 0.0.0.0/0 137:139 
# /sbin/ipfwadm -F -a deny -P udp -S 0.0.0.0/0 137:139 
# untuk menyediakan service masquerade bagi komputer lokal - perbaiki 
# alamat-alamat berikut sesuaikan dengan LAN anda dan pastikan juga
# untuk komputer Linux-nya ! 
/sbin/ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0 -P all 
# install module-module berikut ini jika anda membutuhkannya... 
/sbin/insmod ip_masq_cuseeme 
/sbin/insmod ip_masq_ftp 
/sbin/insmod ip_masq_irc 
/sbin/insmod ip_masq_quake 
/sbin/insmod ip_masq_raudio 
/sbin/insmod ip_masq_vdolive 
echo "Selesai." 
;; 
stop) 
echo -n "Menghentikan Paket Filter..." 
/sbin/rmmod ip_masq_cuseeme 
/sbin/rmmod ip_masq_ftp 
/sbin/rmmod ip_masq_irc 
/sbin/rmmod ip_masq_quake 
/sbin/rmmod ip_masq_raudio 
/sbin/rmmod ip_masq_vdolive 
/sbin/ipfwadm -F -f 
echo "Selesai." 
;; 
*) 
echo "Pemakaian: $NAME {start|stop}" 
exit 1 
;; 
esac 
exit 0 

Masquerading harus diaktifkan setelah service network bekerja. Hal tersebut dapat dilakukan dengan salah satu cara sebagai berikut ini :

a) dengan menambahkan command

/etc/rc.d/init.d/pfilter

kedalam file /etc/rc.d/rc.local sehingga Masquerading akan dijalankan pada setiap bootup sistem.

b) cara yang lebih baik adalah jika sistem anda mendukung pemakaian chkconfig adalah menggunakan perintah

chkconfig --add pfilter

Perintah diatas akan membuat suatu link start dan stop ke masq script untuk semua runlevel

ipautofw

ipfwadm bisa saja menyebabkan pemblokiran terhadap beberapa paket ip yang perlu dilewatkan ke internet untuk game-game tertentu. Hal tersebut dapat diatasi dengan menggunakan suatu paket ipautofw. Bacalah dokumentasi tentang ipautofw. Suatu percobaan yang sederhana perlu dilakukan untuk mendapatkan nomor port yang digunakan oleh aplikasi game tersebut :

misalnya : Sisipkan kode startup berikut pada packet filtering:

Fix untuk Starcraft/ Brood - Belum dicoba !

/usr/sbin/ipautofw -A -r tcp 6112 6112 -h <your client ip> 
/usr/sbin/ipautofw -A -r udp 6112 6112 -h <your client ip>

Fix untuk Diablo - Belum dicoba !

/usr/sbin/ipautofw -A -r udp 6112 6112 -c tcp 116 
/usr/sbin/ipautofw -A -r udp 6112 6112 -c tcp 118 

 

ipchains

Pada umumnya Kernel yang modern telah mendukung "ipchains". IP Chains adalah suatu penulisan ulang terhadap ip.

Peringatan!! Bagian ini tidak pernah dicoba - karena saya belum melakukan instalasi ipchains

Berikut ini adalah script sederhana untuk memungkinkan komputer pada sistem Gambar 1 menangani pesan melalui gateway anda ke internet.

/etc/rc.d/init.d/pfilter: 
#!/bin/sh 
# pfilter -- start/stop packet filter services 
# Allow use of autoconfiguration (RH 5.2) 
# chkconfig: 345 90 25 

NAME=$0 
case "$1" in 
start) 
echo -n "Memulai Packet Filter... " 
# 2.1.x/2.2.x secara default menonaktifkan IP forwarding 
echo 1 > /proc/sys/net/ipv4/ip_forward 
# menghapus setting sebelumnya: 
/sbin/ipchains -F 
# policy defaultnya adalah "deny" 
/sbin/ipchains -P forward DENY 
# melakukan brokir terhadap trafik autodial pada Windows, misalnya: 
/sbin/ipchains -A forward -j DENY -p tcp -s 0.0.0.0/0 137:139 
# /sbin/ipchains -A forward -j DENY -p udp -s 0.0.0.0/0 137:139 
# menyediakan layanan masquerade bagi komputer lokal 
# masquerade interface ppp0 - ganti/ tambah interface lainnya sesuai 
dengan kebutuhan 
/sbin/ipchains -A forward -j MASQ -i ppp0 
# mungkin saja anda membutuhkan yang berikut ini pada 
# install module ini jika anda membutuhkannya 
# /sbin/insmod ip_masq_cuseeme 
# /sbin/insmod ip_masq_ftp 
# /sbin/insmod ip_masq_irc 
# /sbin/insmod ip_masq_quake 
# /sbin/insmod ip_masq_raudio 
# /sbin/insmod ip_masq_vdolive 
echo "Selesai." 
;; 
stop) 
echo -n "Menghentikan..." 
# don't think you need these with IP chains - let me know !! 
# install these modules if you have a need for them... 
# /sbin/rmmod ip_masq_cuseeme 
# /sbin/rmmod ip_masq_ftp 
# /sbin/rmmod ip_masq_irc 
# /sbin/rmmod ip_masq_quake 
# /sbin/rmmod ip_masq_raudio 
# /sbin/rmmod ip_masq_vdolive 
# /sbin/ipchains forward -F 
echo "Done." 
;; 
*) 
echo "Usage: $NAME {start|stop}" 
exit 1 
;; 
esac 
exit 0 

Masquerading harus diaktifkan setelah service network bekerja. Hal ini dapat dilakukan dengan salah satu cara berikut ini :
a) menambah command

/etc/rc.d/init.d/pfilter

dalam file /etc/rc.d/rc.local sehingga masquerading akan dijalankan pada setiap bootup sistem.

b) metode yang lebih baik dilakukan jika sistem anda mendukung pemakaian chkconfig adalah dengan menggunakan perintah

chkconfig --add pfilter

Perintah diatas membuat suatu start dan stop links ke masq script untuk semua runlevel

ipmasqadm

ipchain bisa saja menyebabkan pemblokiran terhadap beberapa paket ip yang perlu dilewatkan ke internet pada game-game tertentu. Hal ini diatasi dengan menggunakan suatu paket ipmasqadm. Bacalah dokumentasi tentang ipmasqadm. Suatu percobaan yang sederhana perlu dilakukan untuk mendapatkan nomor port yang digunakan oleh aplikasi game tersebut :misalnya.

Sisipkan kode startup berikut untuk packet filtering:

Fix untuk Starcraft/ Brood War fix - belum dicoba !

ipmasqadm autofw -A -r tcp 6112 6112 -h <your client ip>
ipmasqadm autofw -A -r udp 6112 6112 -h <your client ip>

Fix untuk Diablo fix - belum dicoba !

ipmasqadm autofw -A -r udp 6112 6112 -c tcp 116
ipmasqadm autofw -A -r udp 6112 6112 -c tcp 118

Proxy Servers

Bagian ini akan mediskusikan bagaimana melakukan setup suatu proxy server dan paket apa yang tersedia pada service proxy untuk jaringan anda.

Apache

Apache adalah salah satu web server yang paling banyak digunakan, dan disebarkan melalui banyak distribusi Linux. Sesuatu hal yang jarang diketahui, adalah Apache dapat juga berfungsi sebagai suatu proxy server untuk jaringan, supaya dapat melakukan hal ini, anda perlu melakukan edit terhadap konfigurasi file Apache Web yang terdapat pada direktori /etc/httpd/conf dan menambahkan baris-baris berikut:

httpd.conf: 
# Proxy Server directives. Uncomment the following line to 
# enable the proxy server: 
ProxyRequests On 
# To enable the cache as well, edit and uncomment the following lines: 
CacheRoot /var/cache/httpd 
CacheSize 5 
CacheGcInterval 4 
CacheMaxExpire 24 
CacheLastModifiedFactor 0.1 
CacheDefaultExpire 1 
NoCache <alamat situs web yang tidak ingin di cache>

Apache juga mampu melakukan FTP proxying, dan dapat juga dikombinasikan dengan SOCKS (lihat yang berikut ini).

Socks

Socks adalah suatu mekanisme proxy pada jaringan dimana memungkinkan host-host yang berada pada sisi SOCKS server mendapatkan akses penuh ke host-host yang berada di sisi lain dari SOCKS server tanpa menggunakan IP yang dapat dicapai secara langsung. Hal ini bekerja dengan mengarahkan kembali permintaan koneksi (connection requests) dari suatu host pada satu sisi ke host yang berada di sisi lain pada SOCKS server, dalam hal ini akan melakukan identifikasi yang memperbolehkan akses tersebut atau tidak, membangun suatu koneksi proxy untuk melewatkan data yang masuk dan keluar. Hal ini tepatnya berfungsi sebagai suatu firewall jaringan yang mana memungkinkan host-host yang berada dibelakang suatu SOCKS server untuk mendapatkan akses penuh ke internet dan dapat mencegah akses yang yang tidak diperbolehkan dari internet ke host-host internal.

Socks datang dengan 2 paket, yaitu :
- satu untuk server yang mana diinstall paada komputer Linux gateway,
- satu lagi untuk klien [SocksCap16/32 unttuk Windows , atau runsocks untuk Linux] yang harus diinstall pada sistem klien.

Anda perlu melakukan setup program socks klien pada setiap program yang membutuhkan socks service.Socks juga dapat mendukung UDP proxy, hal ini berarti dia juga dapat bekerja pada sejumlah games. Socks5 menggunakan suatu konfigurasi file pada server (Sistem Unix : file ini adalah /etc/socks5.conf).

httpd.conf:
auth - - -
interface 192.168.1. - -
permit - - 192.168.1. - - -

Squid

Suatu paket alternatif yang sering digunakan untuk memungkinkan service proxy adalah squid. Squid bertindak sebagai suatu proxy caching server yang berkemampuan tinggi untuk FTP, Gopher dan HTTP (Web)

Pemakaian proxy caching server akan menghemat waktu akses dan bandwidth, karena proxy caching server akan melakukan cache terhadap data yang telah diminta dari internet pada proxy server lokal, dan hasil cache tersebut dapat digunakan kembali untuk melayani permintaan berikutnya akan data yang sama.

Secara default, squid diinstall kedalam direktori /usr/local/squid . File konfigurasi squid.conf. dapat saja berada pada suatu subdirektori etc dalam direktori tertentu, atau berada pada subdirektori /etc yang sebenarnya Konfigurasi file berikut mengandung perintah yang mana menentukan siapa saja yang diperbolehkan untuk menggunakan proxy server.Suatu contoh untuk file squid.conf adalah:

squid.conf:
daftar Access control. Hal ini sangat penting karena mencegah
pencurian resource jaringan oleh orang lain. Isikan pada "allowed_hosts"
ACL,dengan alamat jaringan (misalnya 192.168.200.0 dan mask jaringan
anda (misalnya 255.255.255.0):
acl manager proto cache_object 
acl localhost src 127.0.0.1/255.255.255.255 
acl all src 0.0.0.0/0.0.0.0 
acl allowed_hosts src 192.168.1.0/255.255.255.0 
http_access deny manager all 
http_access allow allowed_hosts 
http_access deny all 
icp_access allow allowed_hosts 
icp_access deny all

Pada contoh diatas, ganti bagian yang ber-cetak tebal network dan netmask dengan alamat IP dan netmask yang sesuai dengan jaringan anda. Setelah melakukan konfigurasi, pertama kali squid perlu diaktifkan dengan parameter -z yang berfungsi untuk melakukan setup suatu cache direktori. Akhirnya, suatu startup script harus di buat untuk memulai operasi squid. Suatu contoh startup script untuk squid pada RH5.2 adalah:

/etc/rc.d/init.d/squid:
!/bin/bash
# squid This shell script takes care of starting and stopping
# Squid Internet Object Cache
#
# chkconfig: - 90 25
# description: Squid - Internet Object Cache. Internet object caching is
\
# a way to store requested Internet objects (i.e., data available \
# via the HTTP, FTP, and gopher protocols) on a system closer to the \
# requesting site than to the source. Web browsers can then use the \
# local Squid cache as a proxy HTTP server, reducing access time as \
# well as bandwidth consumption.
# pidfile: /var/run/squid.pid
# config: /etc/squid.conf
PATH=/usr/bin:/sbin:/bin:/usr/sbin
export PATH
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
# check if the squid conf file is present
[ -f /etc/squid.conf ] || exit 0
# determine the name of the squid binary
[ -f /usr/sbin/squid ] && SQUID=squid
[ -f /usr/sbin/squid.novm ] && SQUID=squid.novm
[ -z "$SQUID" ] && exit 0
# determine which one is the cache_swap directory
CACHE_SWAP=`sed -e 's/#.*//g' /etc/squid.conf | \
grep cache_dir | sed -e 's/cache_dir//' | \
tr -d '\n'`
[ -z "$CACHE_SWAP" ] && CACHE_SWAP=/var/spool/squid
# default squid options
# -D disables initial dns checks. If you most likely will not to have an
# internet connection when you start squid, uncomment this
#SQUID_OPTS="-D"
case "$1" in
start)
echo -n "Starting $SQUID: "
[ ! -d $CACHE_SWAP/00 ] && \
echo -n "init_cache_dir $CACHE_SWAP... " && $SQUID -z -F 2>/dev/null
$SQUID $SQUID_OPTS &
echo $SQUID
touch /var/lock/subsys/$SQUID
;;
stop)
echo -n "Stopping $SQUID: "
$SQUID -k shutdown &
rm -f /var/lock/subsys/$SQUID
while : ; do
[ -f /var/run/squid.pid ] || break
sleep 2 && echo -n "."
done
echo "done"
;;
restart)
$SQUID $SQUID_OPTS -k reconfigure
exit $?
;;
status)
status $SQUID
$SQUID -k check
exit $?
;;
probe)
exit 0;
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
esac
exit 0

Konfigurasi browser anda untuk menggunakan proxy server

Jika anda telah memilih proxy service untuk layanan jaringan anda, anda perlu melakukan konfigurasi pada web browser di setiap komputer klien (kecuali komputer gateway anda) agar dapat menggunakan fasilitas proxy server tersebut.

Anda tidak perlu melakukan hal ini pada Masquerading/Packet Filtering!

Pada Netscape hal ini dapat ditemukan pada menu Preferences dan didalam Advanced/Proxies. Pilih Manual Configuration yang mana akan memungkinkan anda untuk mengisi alamat IP dan port dari komputer proxy server. Setting standard untuk port proxy server adalah :

http: 80
ftp: 21
gopher: 70

Bacaan lanjutan

Apache Web Server: http://www.apache.org/

Socks: http://www.socks.nec.com/

Squid : http://squid.nlanr.net/

IP-Chains HowTo : http://www.rustcorp.com/linux/ipchains/HOWTO-3.html

Halaman manual pada :

ipfwadm [kernel 1.x/ 2.0.x only]
ipchains [kernel 2.1.x/2.2.x only]


Dibuat  oleh hendra@indoprog.com
Medan - Sumatera Utara
Indonesia