Teknik Mudah & Murah Membangun Router Linux

M. Umar S. Tjokroaminoto
Tjokroaminoto2001@yahoo.com

Dalam membangun suatu jaringan komputer, salah satu alat terpenting adalah Router yang bertugas meneruskan (forward) ataupun mengendalikan paket-paket network dari suatu sumber (source) ke suatu tujuan (destination). Demikianlah kerja router secara  secara garis besar.

Ada beberapa hal yang biasanya dilakukan untuk mengadakan router:

1.	Memasang branded router (Cisco, Motorolla, dsb.)
2.	Memasang komputer (Server) dengan O/S yang dapat menangani proses routing (NT, Linux, dsb.)
3.	Memasang komputer kecil kelas 486 yang menjalankan LRP (Linux Router Project).

Pada kesempatan ini akan dibicarakan teknik nomor 3 dengan beberapa alasan dan tujuan:

1.	Harga branded router relatif mahal sehingga tidaklah bijaksana suatu jaringan komputer kecil sekelas Warnet harus menghambur2kan uangnya untuk menyediakan perangkat ini.
2.	Untuk mendapatkan fungsi router dengan memasang perangkat komputer yang O/S nya dapat menjalankan fungsi router keseringan akan menimbulkan dampak pemborosan resource yang seharusnya tidak perlu terjadi, misalnya: 

a.	Perlunya perangkat monitor, keyboard dan mouse pada server berbasiskan WinXX.
b.	Membutuhkan Storage, RAM yang relatif besar
c.	Membutuhkan processor class yang relatif tinggi
d.	Banyak aplikasi terpasang yang tidak perlu.
e.	Memerlukan perhatian ekstra ketat apalagi bagi suatu network yang terhubung langsung ke Internet (terutama masalah security).

Lalu apakah keuntungannya menggunakan perangkat komputer yang menjalankan LRP?

1.	Selain kebalikan dari kebutuhan resources diatas maka pengalaman para pengguna LRP adalah, tingginya aspek security dan stabil.
2.	Yang paling utama adalah irit, baik biaya pengadaan ataupun maintenance.

Perlu penulis kemukakan pengalaman penulis menggunakan perangkat ini, bahwa network penulis menggunakan LRP dengan spesifikasi sebagai berikut:

Komputer PC, Processor AMD K6-266, 32 MB RAM, 1,2 GB Harddisk

Sepintas lalu tidak ada istimewanya, akan tetapi hal ini akan menjadi lain bilamana Harddisk yang dipergunakan memiliki 250-an MB Bad Sector dan telah disimpan sejak tahun 97, tidak memerlukan dukungan UPS dengan kata lain tidak mengenal kewajiban shutdown dan dipersiapkan untuk jalan pada processor terendah 386 bilamana terjadi kerusakan hardware. Oh ya uptime nya 24 jam sehari dan 7 hari seminggu, sharing akses dengan salah satu warnet tetangga, dapat menjalankan fungsin bandwidth management.

Hal diatas hanya sekedar pengantar dan menggambarkan kebanggaan penulis dalam menggunakan perangkat tersebut, lalu siapa sajakah yang dapat membuat perangkat ini ? Jawabnya adalah setiap orang yang menguasai dasar-dasar O/S dan konsep network dengan TCP/IP.

Salah satu tujuan penulis membuat tulisan ini adalah share (berbagi) pengalaman membangun jaringan yang murah dan stabil dengan memanfaatkan program-program open source seperti Linux itu sendiri.

Hardware yang perlu dipersiapkan:

1.	Walaupun dimungkinkan processor 386, untuk memudahkan kita pilih P-100 dan sekelasnya yang masih mudah didapat.
2.	RAM 8 MB sudah cukup.
3.	Floppy drive 1,4 MB (nantinya dapat ditanggalkan)
4.	Harddisk dengan space minimum 2 MB yang bisa dimanfaatkan

Software yang diperlukan:

1.	Siapkan diskette DOS (bootable) dengan program fdisk, format dan edit didalamnya.
2.	Download/dapatkan paket LRP di http://lrp.steinkuehler.net, untuk permulaan silahkan download 1440-basic.floppy.bin (1,44 MB)
3.	Download paket syslinux, bisa didapatkan pada beberapa site seperti http://www.linuxapps.com atau http://www.sourgeforge.net atau pada http://metalab.sunsite.unc.edu dengan key pencarian "syslinux". Syslinux ini merupakan utilitas penyedia boot loader seperti program system.exe pada dos atau lilo pada linux, akan tetapi mempunyai kemampuan melakukan booting Linux dari filesystem dos dan banyak digunakan dalam CD distro Linux (bisa anda manfaatkan). Satukan syslinux.com kedalam DOS bootdisk. 
4.	Download kernel LRP yang mendukung penggunaan Harddisk bisa didapat pada http://lrp.steinkuehler.net dengan nama file 2.2.13-2.tar.gz (4,2 MB) yang didalamnya terdapat 2.2.13-2-LRP-zimage sebesar 511 KB

Membuat LRP Dengan Disket Saja

Cara pembuatan diskette:

1.	Bila anda pengguna Win9x, buatlah diskette system dengan cara memformat diskette untuk bootable system, klik icon kiri bawah, pilih run, kemudian pada bar ketik "format a: /s", setelah itu copykan program format, fdisk dan edit kedalamnya.
2.	Untuk diskette yang berisi basic system LRP, dibuat dengan cara menuliskan file binary 1440-basic.floppy.bin ke diskette. Terdapat beberapa utilitas untuk melakukan hal ini, antara lain: rawimage.exe rawrite.exe ataupun perintah dd bila dilakukan dari mesin linux yang kesemuanya berguna untuk menguraikan binary tersebut kedalam file-file dan ditempatkan dalam suatu media. Karena penulis pengguna linux, biasanya penulis melakukan perintah:

dd if=1440-basic.floppy.bin of=/dev/fd0

maka akan diperoleh diskette basic system LRP. Biasanya dalam CD distro Linux, rawrite disertakan sebagai utility.

Bagi yang menginginkan LRP via diskette, maka sampai disini system telah dapat bekerja dengan cara memasukan diskette tersebut ke komputer yang akan difungsikan sebagai router dan reboot. Cara ini adalah yang paling secure menurut Charles Steinkuehler, mengingat setelah LRP bekerja dan diskette dicabut maka tidak ada media storage lain kecuali ramdisk yang dapat disusupi.

Beberapa rekan terutama dari PT. Pointer Indonesia (yang mengembangkan WARNET) menggunakan flashdisk untuk mesin-mesin LRP nya dan mengingat harga flashdisk yang relatif mahal, maka penulis mengajak anda sekalian untuk memanfaatkan harddisk, tujuan utama meggunakan media fixed ini adalah untuk langkah praktis saja agar berkurang kekhawatiran rusaknya media boot, seperti yang sering dialami sebuah floppy disk dan pemilihan harddisk merupakan langkah efisiensi semata, mengingat harga harddisk 20 GB sekitar USD 90 dibanding flashdisk yang US$150.

Membuat LRP Menggunakan Harddisk

Memang penggunaan storage ini merupakan pemborosan space, mengingat dari ratusan bahkan ribuan mega bytes hanya dipakai paling banyak 5 MB (10 MB harddisk terlalu besar untuk LRP). Akan tetapi dapat kita manfaatkan pada pengembangan fungsi LRP berikutnya termasuk menjalankan Proxy, Mail dan Web server di LRP, tetapi itu nanti setelah jadinya LRP standard yang menjadi tujuan tulisan ini.

Langkah selanjutnya adalah mempersiapkan Harddisk untuk digunakan sebagai media boot dan penyimpanan file-file system LRP.

Harddisk yang dapat digunakan adalah setiap harddisk yang dapat didetect oleh komputer kita dan paling tidak 5 MB space awalnya dalam keadaan bebas dari bad sector.

1.	Boot komputer anda dengan diskette dos yang sudah anda miliki
2.	Siapkan partisi pada harddisk melalui program fdisk, anda hanya perlu mempersiapkan satu buah partisi sebesar 2 s/d 5 MB saja, selebihnya biarkan kosong.
3.	Formatlah partisi tersebut secara normal (tidak perlu system)
4.	Muatkan syslinux kedalam harddisk dengan mengetik "syslinux c:" untuk harddisk dan partisi pertama. Perhatian bagi yang menggunakan boot disk Win9x agar menjalankan perintah internal "lock c:" agar dapat mengisi syslinux kedalam harddisk, bila menggunakan dos origin maka tidak ada masalah.
5.	Masukan diskette basic LRP ke floppydrive, copykan semua file yang berekstension lrp (misal root.lrp etc.lrp), copykan file syslinux.cfg, syslinux.dpy kedalam harddisk.
6.	Copykan file 2.2.13-2-LRP-zimage yaitu kernel LRP kedalam harddisk dengan nama linux (pada diskette basic LRP, kernelnya tidak mengenal harddisk).
7.	Edit file syslinux.cfg pada harddisk khususnya pada baris yang mengandung "append" sehingga berbentuk seperti berikut: (semuanya berada pada satu baris), besarnya ramdisk dalam ukuran KB misalnya 2048 = 2 MB, 4096 = 4 MB, sesuaikan dengan kapasitas RAM anda.

"append=load_ramdisk=1 initrd=root.lrp initrd_archive=minix ramdisk_size=4096 root=/dev/ram0 boot=/dev/hda1,msdos LRP=etc,log,local,modules,ppp22"

Savelah file tersebut, maka anda siap menjalankan mesin LRP anda yang pertama, cabut floppy disk, arahkan setting BIOS untuk boot hanya via harddisk. Setelah boot akan muncul prompt linux pada umumnya, silahkan isi dengan root dan tekan ENTER, maka anda akan masuk kesuatu menu utama.

Pada tahap awal, root belum diberikan password dan langsung masuk ke menu, hal ini dapat dirubah kemudian setelah setting parameter system cocok untuk kebutuhan anda.
Sebagai catatan, LRP tidak mengenal PnP jadi settinglah interface anda secara manual yang nantinya akan diisi pada parameter module yang harus diload, ini berlaku terutama untuk card interface yang menempati port ISA. Sedang untuk yang menempati port PCI, tidaklah menjadi suatu masalah.

Setting parameter LRP

Yang paling utama harus diperhatikan dalam melakukan setting ini adalah text editor yang digunakan diaktifkan dengan perintah "ae", melakukan setting via menu jauh lebih mudah akan tetapi bagi sebagian orang yang terbiasa, akan lebih praktis melakukan secara langsung via text editor. File-file konfigurasi disimpan dibawah directory /etc, ber-ekstension ".conf" dan yang terpenting disini adalah file /etc/network.conf serta /etc/resolv.conf untuk menentukan nameserver serta domain yang digunakan bila berhubungan ke internet. Dengan demikian pada menu utama, silahkan pilih exit.

Agar tidak lupa, pertama-tama silahkan isi password root dengan mengetikan perintah "passwd", maka anda diminta memberikan password anda, kemudian untuk konfirmasi diminta mengisikan kembali. Agar diingat dan untuk sementara dicatat agar tidak lupa (musnahkan catatan bila sudah hafal).

Setiap saat bila ingin masuk ke menu, ketikan perintah "lrcfg", penulis melakukannya pada saat akan melakukan backup ramdisk. Untuk pengerjaan yang lain, penulis langsung melakukan editing langsung pada file yang bersangkutan.

Penulis coba menerjemahkan tuntunan singkat dari file konfigurasi /etc/network.conf yang mudah-mudahan dapat membantu pembaca dalam melakukan setting, bila tambah membingungkan, silahkan lihat kembali file originalnya dan isinya kira-kira sebagai berikut:

###############################################################################
# Keterangan Singkat
###############################################################################
#
# VERBOSE=(YES/NO)			Default: Yes
# Menampilkan isi setting secara verbose
#
# MAX_LOOP=(int)			Default: 10
# Jumlah maximum masukan yang akan dicari
# Misal DNS7=, dan MAX_LOOP=7, tidak akan tercapai.
# (DNS0 - DNS7 == 8 masukan)
# Setting diatas yang terlalu tinggi akan menurunkan kecepatan system 
#
# IPFWDING_KERNEL=(YES/NO/FILTER_ON)	Default: NO
# 
# Mengaktifkan penerusan IP (IP forward) pada kernel. FILTER_ON dimaksud
# penerusan IP hanya terjadi bila aturan IP filtering dimuat/diaktifkan. 
#
# IPALWAYSDEFRAG_KERNEL=(YES/NO)	Default: NO
# Mengaktifkan defragment IP Global pada kernel.
# **Perhatian** - Bila dihidupkan dapat menyebabkan kegagalan koneksi TCP
# dan koneksi TCP akan direset.
#
# Aktifkan pilihan ini bila mesin ini bertindak sebagai firewall atau
# sebagai satu2nya entry pada jaringan atau titik akhir dari port
# forwarding atau sebagai load balancer untuk server www.
# Jangan aktifkan pilihan ini bila mesin ini hanya berfungsi sebagai
# router biasa (secara umum). Pilihan ini diperlukan pada saat penggunaan
# IP NAT, IP masquerade, IP autofw, IP portfw, transperent proxy atau
# operasi kernel lainnya yang bersifat mengarahkan aliran paket (packet
# flow).
#
# Tool yg sangat berguna pada penggunaan packet filtering router  yang
# terhubung langsung ke Internet dan akan menghentikan fragment attack
# server yang berada dibelakang router. Kegunaan lainnya adalah
# router yang menyaring paket untuk melindungi pengguna Internet
# secara dial-in dari attacker (Portmasters, TC racks dsb) dan
# bermacam-macam attack SMB dan fragment dan untuk mengarahkan semua
# koneksi WWW ke WWW proxy server 
#
# CONFIG_HOSTNAME=(YES/NO)		Default: NO
# Membuat file /etc/hostname berdasarkan masukan HOSTNAME 
# File hostname yg ada sebelumnya akan tertimpa (OVERWRITTEN)
#
# CONFIG_HOSTSFILE=(YES/NO)		Default: NO
# Membuat file /etc/hosts berdasarkan masukan pada HOSTx
# File hosts yang ada sebelumnya akan tertimpa (OVERWRITTEN)
#
# CONFIG_DNS=(YES/NO)			Default: NO
# Membuat /etc/resolv.conf berdasarkan masukan DOMAINS dan DNSx
# resolv.conf yang ada sebelumnya akan tertimpa (OVERWRITTEN)
#
# IF_LIST                       	Default: "$IF_AUTO"
# Daftar interface yang dapat diaktifkan pada mesin ini dan penulisannya
# dipisahkan dengan spasi. Dengan daftar ini, interface dapat diaktifkan
# dan dinonaktifkan secara manual.
#
# IF_AUTO                       	Default: "eth0"
# Interface yang akan distart pada saat boot, urutan penulisannya dipisahkan
# dengan spasi. Interface tsb akan diload berdasarkan urutannya dan pada
# secara kebalikan pada saat shutdown.
#
# IPFILTER_SWITCH=(none|router|firewall)	Default: "none"
# Pilihan untuk setup firewall/filtering. "None" berarti langsung melalui
# router, "router" untuk filtering dan proteksi IP Spoof serta proteksi
# Martian dan "firewall" untuk firewall masquerade/NAT.
# Secara dasar proses Filter disediakan dalam file /etc/ipfilter.conf bila 
# ingin lebih terinci dan lebih complex, silahkan baca manual ipchains dan
# ipfwadm, HATI2 ketika mengedit file ini.
#
###############################################################################
# General Settings
###############################################################################

VERBOSE=YES
MAX_LOOP=10

IPFWDING_KERNEL=FILTER_ON

IPALWAYSDEFRAG_KERNEL=YES

CONFIG_HOSTNAME=YES

CONFIG_HOSTSFILE=YES

CONFIG_DNS=YES

###############################################################################
# Interfaces
###############################################################################

# Penentuan aktifasi interface pada saat boot ada disini, misalnya:
# "eth0 eth1 ppp0 dst."
IF_AUTO="eth0 eth1"

# Daftar dari semua interface yang terkonfigurasi, baik manual ataupun
# boot
# IF_LIST="$IF_AUTO ppp0" 

# Dapat menjalankan fungsi ICMP Redirects untuk semua Interfaces, juga tergantung kepada
# /proc per Interface dan IP forwarding flag - YES/NO
# Isi dengan YES untuk redirects ICMP pada semua interfaces. 
ALLIF_ACCEPT_REDIRECTS=NO

# Need these both for interfaces run by daemons - ie PPP, CIPE, some
#	  WAN interfaces
# Proteksi terhadap spoof IP - YES/NO
DEF_IP_SPOOF=YES
# Kernel logging of spoofed packets by default for interfaces - YES/NO
DEF_IP_KRNL_LOGMARTIANS=YES

# Mengaktifkan fungsi bridge (fungsi bridge berjalan sangat baik disini)
# Enable bridging - YES/NO
BRG_SWITCH=NO
# Exempt ethernet protocol types - type "brcfg list" to find out allowed
# values
# Bila menjalankan fungsi bridge, isi parameter berikut dengan protocol yang akan
# di keluarkan dari bridge,  sedang yang diijinkan dapat dilihat 
# dengan perintah "brcfg list" pisahkan antar protocol dengan spasi
BRG_EXEMPT_PROTOS=""

# Untuk mendefinisikan IP pada interface
eth0_IPADDR=192.168.1.254
# Untuk mendefinisikan netmask
eth0_MASKLEN=24
# Untuk mendefinisikan broadcast
eth0_BROADCAST=192.168.1.255

# Sama dengan diatas, isi untuk eth1
eth1_IPADDR=192.168.2.1
# Untuk mendefinisikan netmask
eth1_MASKLEN=30
# Untuk mendefinisikan broadcast
eth1_BROADCAST=192.168.2.3

# Use this to set the default route if required - ONLY one to be set.
# routed or gated could be used to set this so only use if not running these.
#  Parameter dibawah untuk menentukan gateway dari jaringan anda (bila ada)
# bila berencana menggunakan dialup, maka parameter ini jangan diaktifkan
#eth0_DEFAULT_GW=192.168.1.254
# Untuk mengaktifkan proteksi Spoof pada IP - YES/NO
eth0_IP_SPOOF=YES
# Kernel logging of spoofed packets on this interface - YES/NO
eth0_IP_KRNL_LOGMARTIANS=YES
# Setting berikut akan berpengaruh kepada proses redirect ICMP, nilai NO
# membuat lebih secure, jangan beri nilai NO bila anda memiliki dua IP
# networks/subnet pada media yang sama (alias) - YES/NO
eth0_IP_SHARED_MEDIA=NO
# Apakah interface ini akan diterapkan bridge ? - YES/NO
eth0_BRIDGE=NO
# Proxy-arp from this interface, no other config required to turn on proxy ARP!
# - YES/NO
# Apakah interface ini dijadikan ARP - proxy ? - YES/NO
eth0_PROXY_ARP=NO

# Bagian ini untuk mengaktifkan bandwidth management, lakukan bila anda sudah 
# menguasainya, bahan-bahan diperoleh pada topic TrafficShaper atau BandWidth
# limiter

# Simple QoS/fair queueing support
# Turn on Stochastic Fair Queueing - useful on busy DDS links - YES/NO
eth0_FAIRQ=NO
# Ethernet Transmit Queue Length
# eth0_TXQLEN=100
# Complex QoS - Enable all of these + above to turn it on
#eth0_BNDWIDTH=10Mbit   # Device bandwidth
#eth0_HNDL=2            # Queue Handle - must be unique
#eth0_IABURST=100       # Interactive Burst
#eth0_IARATE=1Mbit      # Interactive Rate
#eth0_PXMTU=1514        # Physical MTU - includes Link Layer header

# PPP interface stuff - these apply to all ASYNC ppp interfaces, options
# same as ethernet above.
ppp_BNDWIDTH=30Kbit
ppp_FAIRQ=YES
ppp_TXQLEN=30
ppp_IABURST=20
ppp_IARATE=10Kbit
ppp_PXMTU=1500

###############################################################################
# IP Filter setup - can pull in settings from above
###############################################################################

# Menentukan dasar dan jenis filtering yang akan diterapkan dengan pilihan 
# none atau router atau firewall (pilih salah satu)
# ip_masq harus anda load untuk menjalankan fungsi IP masquerading secara lengkap
# dan ip_masq_portfw jika anda ingin meneruskan port eksternal pop-3, www ke 
# internal mesin dibawah.
IPFILTER_SWITCH=firewall

# This set of variables is used with both sets of filters
# Apakah SNMP akan di block ?
SNMP_BLOCK=NO                   # Block all SNMP (YES/NO)
# Daftar IP Nos yang digunakan pada management SNMP
SNMP_MANAGER_IPS="10.100.1.2"
# Fair Queuing support 		
# List of Mark values
MRK_CRIT=1			# Critical traffic, routing, DNS
MRK_IA=2			# Interactive traffic - telnet, ssh, IRC
				# List of traffic types and maps to mark values
				# Setting this variable turns on the 
				# fairq chain
CLS_FAIRQ="${MRK_CRIT}_89_0/0 ${MRK_CRIT}_udp_0/0_route ${MRK_CRIT}_tcp_0/0_bgp ${MRK_CRIT}_tcp_0/0_domain ${MRK_CRIT}_udp_0/0_domain ${MRK_IA}_tcp_0/0_telnet ${MRK_IA}_tcp_0/0_ssh"

# This set of variables is used with the basic routing filter setup

# This set of variables is used with a basic IP masquerading firewall setup 
#Notation - IP addresses/masklen
# 
# NOTE: Do NOT turn on the DMZ network or ANY external port masquerading/
#	port forwarding when EXTERN_DYNADDR is on because some security
#	leaks will result.  You may also want to limit the external open
#	ports to domain (UDP) for DNS. Anyhow, these features are not that 
#	usable unless you have a static external address 
#

# Berikan nilai yang menyatakan interface yg berhubungan ke Internet
# bila pada jaringan dedicated biasanya eth0 bila dialup biasanya ppp0
EXTERN_IF="eth0"		# External Interface
      				# External Address dynamically assigned
EXTERN_DYNADDR=NO		# - YES/NO
				#  -- OR --
EXTERN_IP=192.168.1.254		# External Interface IP number
				# UDP Services open to outside world
				# - srcip/mask_dstport
EXTERN_UDP_PORTS="0/0_domain 0/0_ntp"
				# TCP services open to outside world
				# - srcip/mask_dstport
EXTERN_TCP_PORTS="0/0_ssh 0/0_smtp"
# Internal interface
INTERN_IF="eth1"		# Internal Interface
INTERN_NET=192.168.2.0/30	# Internal network (to be masqueraded)
INTERN_IP=192.168.2.1		# IP number of Internal Interface
				# (to allow forwarding to external IP)
MASQ_SWITCH=YES			# Masquerade internal network to outside
				# world - YES/NO
# These services are not masqueraded from inside to outside. proto_destnet_port
# Allows the firewall to be trusted for ssh access to routers...
#NOMASQ_DEST="tcp_0/0_ssh"
# Uncomment following for internal services
#INTERN_FTP_SERVER=192.168.1.1	# Internal FTP server to make available
#INTERN_WWW_SERVER=192.168.1.1	# Internal WWW server to make available
#INTERN_SMTP_SERVER=192.168.1.1	# Internal SMTP server to make available
#INTERN_POP3_SERVER=192.168.1.1	# Internal POP3 server to make available
#INTERN_IMAP_SERVER=192.168.1.1	# Internal IMAP server to make available
#INTERN_SSH_SERVER=192.168.1.1   # Internal SSH server to make available
#EXTERN_SSH_PORT=24		# External port to use for internal SSH access

###############################################################################
# Interface activation/deactivation functions
#  Here so that special interface commands can be called and daemons started
#  
#  Arps can be set up here, network/host routes and so forth.
#
#  This appears to be a little messy but is needed to achieve maximum 
#  functionality and flexibility.
#
###############################################################################

if_up () {

	# sort out a few things to make life easier - here so that you
	# can see what is done and so that you can add anything if needed
	eval local IPADDR=\${"$1"_IPADDR:-""}     # I am also a good genius
	eval local MASKLEN=\${"$1"_MASKLEN:-""}
	eval local BROADCAST=\${"$1"_BROADCAST:-""}
	eval local PTPADDR=\${"$1"_PTPADDR:-""}
	eval local DEFAULT_GW=\${"$1"_DEFAULT_GW:-""}
	eval local FAIRQ=\${"$1"_FAIRQ:-""}
	eval local TXQLEN=\${"$1"_TXQLEN:-""}
	eval local IP_SPOOF=\${"$1"_IP_SPOOF:-""}
	eval local IP_KRNL_LOGMARTIANS=\${"$1"_IP_KRNL_LOGMARTIANS:-""}
        eval local IP_SHARED_MEDIA=\${"$1"_IP_SHARED_MEDIA:-""}
        eval local BRIDGE=\${"$1"_BRIDGE:-""}
        eval local PROXY_ARP=\${"$1"_PROXY_ARP:-""}
	if [ -n "$BROADCAST" ] ; then
		IFCFG_BROADCAST="broadcast $BROADCAST"
	fi

        # Do dee global bridge stuff
	brg_global
	
	# Set default interface flags here - used for PPP and WAN interfaces
	if_setproc default rp_filter $DEF_IP_SPOOF
	if_setproc default log_martians $DEF_IP_KRNL_LOGMARTIANS
	if_setproc all accept_redirects $ALLIF_ACCEPT_REDIRECTS
	
	# Set up each interface
	case $1 in
	ppp0)
		pppd call provider
		;;
	fr*)
		ip addr add $IPADDR peer $PTPADDR dev $1 		
		ip link set $1 arp off multicast on
		ip link set $1 up
		# Fair queuing - this can be selected for any interface
		ip_frQoS $1
		;;
	*)      # default interface startup
                brg_iface $1 up $BRIDGE
		[ -n "$IPADDR" ] \
			&& ip addr add $IPADDR/$MASKLEN $IFCFG_BROADCAST dev $1
		ip link set $1 up
		# Fair queuing - this can be selected for any interface
		ip_QoS $1
		;;
	esac
	
	# Do universal interface config items here 
	# Default route support
	[ -n "$DEFAULT_GW" ] \
		&& ip route replace default nexthop via $DEFAULT_GW dev $1
	# Set the TX Queue Length
	[ -n "$TXQLEN" ] \
		&& ip link set $1 txqlen $TXQLEN 
	# Spoof protection
	if_setproc $1 rp_filter $IP_SPOOF
	# Kernel logging of martians on this interface
	if_setproc $1 log_martians $IP_KRNL_LOGMARTIANS
	# Shared Media stuff
	if_setproc $1 shared_media $IP_SHARED_MEDIA
	# Proxy ARP support
	if_setproc $1 proxy_arp $PROXY_ARP
		
	return 0
}

if_down () {

	# Do Dee global bridge stuff
	brg_global

	case $1 in 
	ppp*)
		[ -f /var/run/$1.pid ] && qt kill `cat /var/run/$1.pid`
		sleep 5        # Wait for pppd to die 
		;;
	fr*)
		ip link set $1 down
		qt ip addr flush dev $1 
		;;
	*)	# default action
                brg_iface $1 down
		ip link set $1 down    # This also kills any routes 
		qt ip addr flush dev $1
		;;
	esac

	# Clean up any QoS/fair queuing stuff
	ip_QoSclear $1

	true

}	#END if_down

###############################################################################
# Hostname					Requires: CONFIG_HOSTNAME=YES
###############################################################################
HOSTNAME=myrouter

###############################################################################
# Hosts file (Static domainname entires)	Requires: CONFIG_HOSTSFILE=YES
###############################################################################
#	IP		FQDN				hostname alias1 alias2..
HOSTS0="$eth0_IPADDR	$HOSTNAME.somewhere.net		$HOSTNAME mr rtr"
HOSTS1="192.168.1.22	host2.somewhere.net		host2 h2"

###############################################################################
# Domain Search Order and Name Servers		Requires: CONFIG_DNS=YES
###############################################################################

DOMAINS="somewhere.net domain2.net"

DNS0=192.168.1.1
DNS1=192.168.1.2

###############################################################################
# QoS/Fariqueing functions
###############################################################################

ip_QoSclear () {
	[ -x /sbin/tc ] \
		&& qt tc qdisc del dev $1 root
	return 0
}

ip_frQoS () {

	# Set some vaiables 
	eval local FAIRQ=\${"$1"_FAIRQ:-""}
	eval local BULKRATE=\${"$1"_BULKRATE:-""}
	eval local BULKBURST=\${"$1"_BULKBURST:-""}
	eval local FRBURST=\${"$1"_FRBURST:-""}
	eval local HNDL=\${"$1"_HNDL:-""}
	eval local BNDWIDTH=\${"$1"_BNDWIDTH:-""}
	eval local IARATE=\${"$1"_IARATE:-""}
	eval local IABURST=\${"$1"_IABURST:-""}
	eval local PXMTU=\${"$1"_PXMTU:-""}

	if [ ! -x /sbin/tc ]; then
		return 1
	fi	

	if [ "$FAIRQ" != "YES" -a "$FAIRQ" != "Yes" -a "$FAIRQ" != "yes" ]
	then
		return 1
	fi 

	if [ -z "$BULKRATE" -o -z "$FRBURST" -o -z "$HNDL" -o -z "$PXMTU" \
		-o -z "$BNDWIDTH" -o -z "$IARATE" -o -z "$IABURST" \
		-o -z "$BULKBURST" ]; then
		tc qdisc replace dev $1 root sfq
		return 0
	fi
	
	# Attach CBQ  to device 
	tc qdisc add dev $1 root handle $HNDL: cbq \
		bandwidth $BNDWIDTH avpkt 1000
	# Set up classes
	# Bulk class
	tc class add dev $1 parent $HNDL:0 classid :1 \
		est 1sec 8sec cbq bandwidth $BNDWIDTH \
		rate $BULKRATE allot $PXMTU bounded weight 1 prio 6 \
		avpkt 1000 maxburst $BULKBURST \
		split $HNDL:0 defmap ff7f
	tc qdisc add dev $1 parent $HNDL:1 sfq perturb 15
	# Interactive Class
	tc class add dev $1 parent $HNDL:0 classid :2 \
		est 2sec 16sec cbq bandwidth $BNDWIDTH \
		rate $IARATE allot $PXMTU bounded weight 1 prio 6 \
		avpkt 1000 maxburst $IABURST \
		split $HNDL:0 defmap 80
	tc qdisc add dev $1 parent $HNDL:2 sfq perturb 15
	# Priority class
	tc class add dev $1 parent $HNDL:0 classid :3 \
		est 1sec 8sec cbq bandwidth $BNDWIDTH \
		rate $FRBURST allot $PXMTU bounded weight 1 prio 1 \
		avpkt 1000 maxburst 21
	tc qdisc add dev $1 parent $HNDL:3 pfifo
	# Add filters
	tc filter add dev $1 parent $HNDL:0 protocol ip \
		priority 50 handle $MRK_CRIT fw classid $HNDL:3
	tc filter add dev $1 parent $HNDL:0 protocol ip \
		priority 60 handle $MRK_IA fw classid $HNDL:2

	return 0
}

ip_QoS () {

	# Set some vaiables 
	eval local HNDL=\${"$1"_HNDL:-""}
	eval local FAIRQ=\${"$1"_FAIRQ:-""}
	if [ -z "$FAIRQ" -a -n "$2" ]; then
		 local FAIRQ=$2 
	fi
	eval local BNDWIDTH=\${"$1"_BNDWIDTH:-""}
	if [ -z "$BNDWIDTH" -a -n "$3" ]; then 
		 local BNDWIDTH=$3 
	fi
	eval local PXMTU=\${"$1"_PXMTU:-""}
	if [ -z "$PXMTU" -a -n "$4" ]; then 
		 local PXMTU=$4 
	fi
	eval local IARATE=\${"$1"_IARATE:-""}
	if [ -z "$IARATE" -a -n "$5" ]; then 
		local IARATE=$5 
	fi
	eval local IABURST=\${"$1"_IABURST:-""}
	if [ -z "$IABURST" -a -n "$6" ]; then 
		local IABURST=$6 
	fi

	if [ ! -x /sbin/tc ]; then
		return 1
	fi	

	if [ "$FAIRQ" != "YES" -a "$FAIRQ" != "Yes" -a "$FAIRQ" != "yes" ]
	then
		return 1
	fi 

	if [ -z "$BNDWIDTH" -o -z "$IABURST" -o -z "$IARATE" -o -z "$HNDL" \
		-o -z "$PXMTU" ]; then
		tc qdisc replace dev $1 root sfq
		return 0
	fi

	# Attach CBQ  to device 
	tc qdisc add dev $1 root handle $HNDL: cbq \
		bandwidth $BNDWIDTH \
		avpkt 1000
	# Set up classes
	# Bulk class
	tc class add dev $1 parent $HNDL:0 classid :1 est 1sec 8sec \
		cbq bandwidth $BNDWIDTH rate $BNDWIDTH \
		allot $PXMTU avpkt 1000 bounded weight 1 prio 6 \
		split $HNDL:0 defmap ff7f
	tc qdisc add dev $1 parent $HNDL:1 sfq perturb 15
	# Interactive class
	tc class add dev $1 parent $HNDL:0 classid :2 est 2sec 16sec \
		cbq bandwidth $BNDWIDTH rate $IARATE maxburst $IABURST \
		allot $PXMTU avpkt 1000 bounded isolated weight 1 \
		prio 2 split $HNDL:0 defmap 80
	tc qdisc add dev $1 parent $HNDL:2 sfq perturb 15
	# Priority class
	tc class add dev $1 parent $HNDL:0 classid :3 est 1sec 8sec \
		cbq bandwidth $BNDWIDTH rate $BNDWIDTH \
		allot $PXMTU avpkt 1000 bounded weight 1 prio 1
	tc qdisc add dev $1 parent $HNDL:3 pfifo
	# Add filters
	tc filter add dev $1 parent $HNDL:0 protocol ip \
		priority 50 handle $MRK_CRIT fw classid $HNDL:3
	tc filter add dev $1 parent $HNDL:0 protocol ip \
		priority 60 handle $MRK_IA fw classid $HNDL:2 \

	return 0
}

###############################################################################
# End
###############################################################################

Demikianlah kira-kira isi dan maksud file /etc/network.conf, silahkan isi sesuai dengan konfigurasi yang anda butuhkan.

Hal diatas adalah minimal dan hanya sebagian dari kemampuan lrp yang dapat ditonjolkan, dengan melakukan kombinasi hardware/ interface, maka fungsi router yang lebih complex dapat dilakukan dengan baik oleh lrp. Contoh: pemasangan interface PC300 dari Cyclades untuk mendapatkan Synchronous Port V.35, dll.

Untuk berlatih, anda bisa mencoba mengedit semua konfigurasi yang dibutuhkan dan tidak akan berpengaruh bila tidak dilakukan backup ramdisk.

Bagaimanapun, untuk hal yang lebih mendetail dan serius, maka site http://lrp.steinkuehler.net atau http://lrp.c0wz.net merupakan tempat yang sangat baik untuk merambah seluruh aspek linux router.

Untuk yang menggunakan koneksi dialup dan tidak ingin repot-repot membuat disk image dsb. dengan kata lain ingin membuat lrp dengan cara yang sangat mudah dapat memperolehnya dengan men download file executable eigerstein.exe dari http://lrp.steinkuehler.net dan tinggal dieksekusi dari dalam WinXX environtment, maka anda akan diminta memasukan diskette kosong, ikuti perintah selanjutnya, tunggu, voilaaaa... anda memiliki diskette router yang siap untuk digunakan. Memang lebih mudah, akan tetapi sudah menjadi aturan umum, sesuatu yang mudah didapat akan mudah dilupakan atau sulit dikembangkan.

Site lain yang dapat dicoba adalah http://www.freesco.org juga untuk mendapatkan router berbasiskan PC.