PPP Script Tutorial Zakaria, zak@telkom.net v1.1.2, 29 Dec 1999 Dokumen ini mencoba menjelaskan langkah-langkah yang harus ditempuh untuk membuat komputer linux anda berinternet-ria melalui PPP dengan menggunakan script. Petunjuk ini dibuat pada RedHat Linux 5.2, untuk distribusi lain mungkin juga bisa, kalau ada masalah silakan tanya ahli distronya. Untuk troubleshooting silakan lihat PPP HOWTO atau tanya saya atau mailing list (tentu saja anda harus subscribe dulu :) Pendahuluan

Ada banyak cara untuk menghubungkan komputer linux anda dengan internet melalui PPP. Petunjuk ini hanya akan menjelaskan langkah-langkah yang diperlukan untuk memakai ppp melalui script. Mungkin agak sedikit rumit tetapi memiliki beberapa keuntungan:

Tidak memerlukan software tambahan (cukup pppd) Bisa berjalan pada modus text (tidak memerlukan X Window) Bisa dijalankan melalui crontab untuk dial berkala (lihat bagian ) Scriptnya bisa mencari line telepon ISP yang kosong. Hal ini sangat berguna bila telepon ISP anda selalu sibuk

Versi terakhir dokumen ini dalama berbagai format (html, dvi, ps, text) berikut dengan sourcenya dapat anda dapatkan di

Log Perubahan

versi 1.0

Direlease pertamakali di KPLI Jakarta mailing list

versi 1.1

Copyright diubah menjadi OPL (Open Content) Menambah setting security Menggabungkan setting modem dengan ppp-chat-init Menambah saving routing dengan linuxconf Mengubah ppp-redialer Mengubah ppp-chat-dial Perubahan Estetika

versi 1.1.1

Merubah tanggal :) Ubah URL modem init Ubah ppp-chat-init dan ppp-chat-dial Perubahan Estetika

versi 1.1.2

Tambahan di Perubahan Setting -> User Name & Password (terimakasih untuk dik Nur atas sarannya)

Copyright & Disclaimer

Hak cipta dilindungi Undang-Undang. Izin diberikan untuk memperbanyak, menyebarluaskan dan mengubah dokumen inii seperti diatur dalam OpenContent License (OPL).

Secara singkat anda boleh memperbanyak dan meyebarluaskan selama copyright dan disclaimer ini diikutsertakan. Anda juga boleh mengubah isi dokumen ini selama anda menyatakan dengan jelas perubahannya dan hasil perubahannya harus di-license dengan OPL juga. Selain itu anda berhak meminta bayaran atas media atau pengiriman dokumen ini atau bayaran atas jaminan dan dukungan teknis.

Walaupun penulis sudah berupaya untuk membuat dokumen ini bebas dari kesalahan tetapi TIDAK ADA JAMINAN bahwa petunjuk ini akan bekerja dan tidak MERUSAK sistem/komputer anda.

OpenContent License (OPL) secara lengkap dapat anda lihat di

Yang diperlukan

Modem (kalau ada manualnya lebih baik Informasi ISP (no telp dan IP DNS Primary & Secondary) Password root (harus pakai root dong :)

Persiapan Setting Linux Agar Kenal Modem

Untuk menggunakan modem anda harus mensetting linux anda agar linux tahu dimana ia harus mencari modem. Untuk mensetting cukup jalankan perintah

ln -s /dev/cua0 /dev/modem

Jika modem anda terhubung ke COM1 jika modem anda terhubung ke COM2 ganti /dev/cua0 dengan /dev/cua1, jika COM3 menjadi cua2 dan seterusnya.

Mengetest Modem

Untuk mengetest modem anda sudah terhubung dengan baik jalankan langkah-langkah berikut:

Jalankan minicom # minicom Welcome to minicom 1.82 OPTIONS: History Buffer, F-key Macros, Search History Buffer, I18n Compiled on Oct 1 1998, 23:34:55. Press CTRL-A Z for help on special keys AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0 OK Kalau tampilannya seperti diatas berarti modem dan komputer anda sudah terhubung. Jika belum cek apakah modemnya sudah dinyalakan atau kabel serialnya sudah terhubung. Untuk mengetest line telepon anda ketikkan ATDT<no telepon ISP> ATDT9,5759000 CONNECT 26400/V42BIS Welcome to 3Com Total Control HiPer ARC (TM) Networks That Go The Distance (TM) login: xxxxx Password: Kalau modem anda sudah berbunyi toet totet dan tampilannya seperti diatas berarti koneksi line telepon anda sudah baik. Catatan: Contoh diatas memakai line telepon dibelakan PABX jadi perlu 9, dulu untuk dial ke luar. Jika line telepon anda langsung (misalnya di rumah) tidak perlu pakai 9, cukup ATDT5759000 Jika line telepon anda belum terkoneksi dengan baik periksa kabel telepon (coba dengan telepon biasa) atau line telepon anda memakai PABX 4 Kabel (untuk yang ini saya nggak tahu bagaimana cara menanganinya :< ) Jika sudah OK semua tekan Ctrl + A + X terus tekan Enter pada Yes.

Testing Routing

Jika linux anda mempunyai network card anda harus mengeset route table anda agar tidak ada default route. Jika anda harus mempunya default route silakan lihat Net 2/3 HOWTO. Untuk mengecek routing lakukan langkah-langkah berikut:

Lihat daftar routing kernel # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 12 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 10 lo Jika tampilannya seperti diatas berarti routing table anda sudah OK. Silahkan lanjutkan ke langkah persiapan berikutnya. Jika tampilan anda seperti dibawah ini berarti anda mempunya default route # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 12 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 10 lo 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 Untuk menghapus default route jalankan perintah # route del default Untuk menyimpan perubahan jalankan ikuti langkah-langkah berikut: Jalankan linuxconf # linuxconf Pilih Config -> Networking -> Client tasks -> Routing and gateways -> Defaults Kosongkan kotak default gateway dan kosongkan checkbox Enable Routing

Testing PAP/CHAP

Beberapa ISP di Indonesia menggunakan PAP atau CHAP untuk otorisasi pengguna yaitu mereka tidak menggunakan Login: & Password: prompt untuk mengotorisasi. Tetapi beberapa ISP menggunakan PAP dengan login: dan password: prompt, IndosatNet misalnya. Untuk memastikan hubungi Customer Services ISP anda. Kalau mereka tidak tahu anda bisa menganggap ISP anda memakai otorisasi biasa atau melakukan testing berikut:

Dial no telepon ISP anda (caranya seperti testing modem) Jika mereka menampilkan login: dan password: berarti mereka menggunakan otorisasi biasa Jika yang tampil adalah sampah seperti dibawah ini dan terus datang berarti mereka menggunakan PAP/CHAP y}#.!}!}!} }8}!}$}%U}"}&} } } } }%}& ...}'}"}(}"} .y} Tetapi seperti saya bilang diatas beberapa server menggunakan PAP dengan login: dan password: salah satu petunjuknya adalah prompt sebelum login misalnya "Indosat PAP server"

Editing File Sebelum Meng-edit

Setting berikut dibuat dengan user name: user dan password: pass. Jika ISP anda CBN atau IndosatNet anda bisa langsung meng-copy setting di bawah ini dengan mengubah user name dan passwordnya. Untuk perubahan setting lihat Bagian .

Disamping nama file terdapat keterangan seperti (root, root 700) ini berarti file itu dimiliki oleh user root, group root dan modenya 644 (rw-r--r--) jika tidak sesuai ubah dengan chown, chgrp dan chmod (lihat masing-masing man untuk lebih detail).

Setting Security

Untuk mengamankan linux anda dari cracker di internet anda harus mengatur akses ke komputer anda. Petunjuk berikut hanya menjelaskan langkah-langkah dasar untuk mengamankan komputer anda untuk lebih mengamankan komputer anda silakan baca Security-HOWTO

hosts.deny

Edit file /etc/hosts.deny (root, root 644)untuk menolak semua akses ke komputer anda

# # hosts.deny This file describes the names of the hosts which are # *not* allowed to use the local INET services, as decided # by the '/usr/sbin/tcpd' server. # # The portmap line is redundant, but it is left to remind you that # the new secure portmap uses hosts.deny and hosts.allow. In particular # you should know that NFS uses portmap! ALL:ALL

hosts.allow

Edit file /etc/hosts.allow (root,root 644) untuk mengizinkan akses ke komputer anda selain yang ditolak oleh /etc/hosts.deny. Minimal anda harus mengizinkan komputer anda (127.0.0.1) untuk mengakses dirinya sendiri !

# # hosts.allow This file describes the names of the hosts which are # allowed to use the local INET services, as decided # by the '/usr/sbin/tcpd' server. # ALL:127.0.0.1

Jika komputer anda berada dalam jaringan (LAN) anda harus menambah entry di hosts.allow dengan IP LAN anda atau komputer anda tidak dapat diakses dari komputer lainnya di LAN. Untuk komputer yang berada di LAN dengan range IP subclass C unregistered (192.168.1.x) file /etc/hosts.deny-nya adalah:

# # hosts.allow This file describes the names of the hosts which are # allowed to use the local INET services, as decided # by the '/usr/sbin/tcpd' server. # ALL:127.0.0.1 ALL:192.168.1.0/255.255.255.0

Setting DNS Server

Edit file /etc/resolv.conf (root, root 644) untuk menunjukkan DNS server ISP anda

DNS CBN

# CBN search cbn.net.id nameserver 202.158.3.6 nameserver 202.158.3.7

DNS IndosatNet

# IndosatNet search indosat.net.id nameserver 202.155.0.10 nameserver 202.155.0.15

Script ppp-on

Buat file /etc/ppp/ppp-on (root, root 700) untuk menjalankan pppd

CBN

#!/bin/sh # # script to connect to ISP # # CBN exec /usr/sbin/pppd debug /dev/ttyS0 115200 \ connect /etc/ppp/ppp-redialer

IndosatNet

#!/bin/sh # # script to connect to ISP # # IndosatNet exec /usr/sbin/pppd debug name user /dev/ttyS0 115200 \ connect /etc/ppp/ppp-redialer

Script ppp-redialer

Buata file /etc/ppp/ppp-redialer (root, root 700) untuk mendial ke ISP

CBN

#!/bin/sh # Script untuk mendial ISP dengan mencari line telepon yang kosong # Copyright (c) Zakaria 1999 licensed in GPL # ################################################################### # # Parameter ini mengatur urutan dial # # Berapa kali nomor telepon yang sama di dial MAX_ATTEMPTS=5 # Waktu antara setiap dial. Parameter ini digunakan oleh sleep # jadi gunakan "15s" untuk 15 second (detik), "1m" untuk 1 menit, dst SLEEP_DELAY=1s ################################################################### # # No awal di dial untuk telepon keluar, gunakan bila anda memakai PABX PHONEPRE="" # Daftar nomor telepon. Tambahkan no telepon baru dan # ubah function callall supaya sesuai dengan daftar no telepon # #PHONE1=5759000 PHONE1=57989000 #PHONE2=52994999 #PHONE3=25537500 PHONE2=25507500 PHONE3=25655000 ################################################################### # # Function untuk mengeset modem untuk memastikan modem siap dipakai function initialize { /usr/sbin/chat -v -f /etc/ppp/ppp-chat-init return } ################################################################### # # Function untuk mendial no telepon # function callnumber { # initialize setiap dial untuk menghindarkan modem hang pada saat chat /usr/sbin/chat -v -T $1 -f /etc/ppp/ppp-chat-dial # Jika koneksi berhasil maka kita akhiri script # dengan return value 0 (tanpa error) # if [ "$?" = "0" ]; then exit 0 else initialize fi return } ################################################################### # # Function untuk mendial semua no telepon # function callall { # echo "dialing attempt number: $1" >/dev/console callnumber $PHONEPRE$PHONE1 callnumber $PHONEPRE$PHONE2 callnumber $PHONEPRE$PHONE3 } ################################################################### # # Set modem jika tidak berhasil exit dengan return value = 1 (ada error) initialize if [ ! "$?" = "0" ]; then exit 1 fi # # Dial no telepon sampai salah satu nyambung atau MAX_ATTEMPTS tercapai # attempt=0 while : ; do attempt=`expr $attempt + 1` callall $attempt if [ "$attempt" = "$MAX_ATTEMPTS" ]; then exit 1 fi sleep "$SLEEP_DELAY" done

IndosatNet

#!/bin/sh # Script untuk mendial ISP dengan mencari line telepon yang kosong # Copyright (c) Zakaria 1999 licensed in GPL # ################################################################### # # Parameter ini mengatur urutan dial # # Berapa kali nomor telepon yang sama di dial MAX_ATTEMPTS=5 # Waktu antara setiap dial. Parameter ini digunakan oleh sleep # jadi gunakan "15s" untuk 15 second (detik), "1m" untuk 1 menit, dst SLEEP_DELAY=1s ################################################################### # # No awal di dial untuk telepon keluar, gunakan bila anda memakai PABX PHONEPRE="" # Daftar nomor telepon. Tambahkan no telepon baru dan # ubah function callall supaya sesuai dengan daftar no telepon # PHONE1=3825001 PHONE2=3825200 PHONE3=34354000 PHONE4=7507977 PHONE5=3524001 PHONE6=3520550 PHONE7=3864901 ################################################################### # # Function untuk mengeset modem untuk memastikan modem siap dipakai function initialize { /usr/sbin/chat -v -f /etc/ppp/ppp-chat-init return } ################################################################### # # Function untuk mendial no telepon # function callnumber { # initialize setiap dial untuk menghindarkan modem hang pada saat chat initialize /usr/sbin/chat -v -T $1 -f /etc/ppp/ppp-chat-dial # Jika koneksi berhasil maka kita akhiri script # dengan return value 0 (tanpa error) # if [ "$?" = "0" ]; then exit 0 fi return } ################################################################### # # Function untuk mendial semua no telepon # function callall { # echo "dialing attempt number: $1" >/dev/console callnumber $PHONEPRE$PHONE1 callnumber $PHONEPRE$PHONE2 callnumber $PHONEPRE$PHONE3 callnumber $PHONEPRE$PHONE4 callnumber $PHONEPRE$PHONE5 callnumber $PHONEPRE$PHONE6 callnumber $PHONEPRE$PHONE7 } ################################################################### # # Set modem jika tidak berhasil exit dengan return value = 1 (ada error) initialize if [ ! "$?" = "0" ]; then exit 1 fi # # Dial no telepon sampai salah satu nyambung atau MAX_ATTEMPTS tercapai # attempt=0 while : ; do attempt=`expr $attempt + 1` callall $attempt if [ "$attempt" = "$MAX_ATTEMPTS" ]; then exit 1 fi sleep "$SLEEP_DELAY" done

Setting Modem dan Script ppp-chat-init

Untuk bekerja dengan baik, modem harus diset dengan menggunakan modem init string. Modem init string adalah suatu kumpulan perintah untuk menginisialisasi modem supaya bekerja pada modus yang sesuai. Perintah-perintah ini biasanya dimulai dengan huruf AT sehingga sering disebut perintah AT atau AT command. Jika anda mempunya manual book modem anda dapat melihat daftar AT command di manual book tersebut. Jika anda tidak mempunyai manual book modem anda bisa mencoba init string standar atau anda dapat mencari init string untuk modem anda di .

Jika anda mempunyai manual modem menurut PPP-HOWTO minimal yang anda harus perhatikan adalah

Hardware flow control (RTS/CTS) (&K3 on many Hayes modems)

Setting lain yang patut diselidiki

E1 Command/usr/src/linux-2.0.27/include/linux/serial.h Echo ON (required for chat to operate) Q0 Report result codes (required for chat to operate) S0=0 Auto Answer OFF (unless you want your modem to answer the phone) &C1 Carrier Detect ON only after connect &S0 Data Set Ready (DSR) always ON (depends) Data Terminal Ready

Tetapi biasanya AT&F dan/atau AT&Z sudah mencukupi. Jika anda sudah mengetahui perintah AT Command yang sesuai dengan modem anda atau anda yakin modem anda cukup standar buat file /etc/ppp/ppp-chat-init (root, root 600) untuk chat script inisialisasi modem

TIMEOUT 3 '' \rAT 'OK-+++\c-OK' ATH OK AT&F

Script ppp-chat-dial

Buat file /etc/ppp/ppp-chat-dial (root, root 600) untuk chat script dial

CBN

TIMEOUT 3 OK-\rAT-OK ATDT\T TIMEOUT 60 ABORT '\nBUSY\r' ABORT '\nNO ANSWER\r' ABORT '\nNO DIALTONE\r' ABORT '\nNO CARRIER\r' ABORT '\nRINGING\r\n\r\nRINGING\r' SAY "Dialing CBN ..\n" 'CONNECT' '' ECHO ON TIMEOUT 20 ogin:--ogin: user ECHO OFF SAY "Sending Login\n" assword: pass SAY "Sending Password\n" \˜ '' SAY "Connected\n"

IndosatNet

TIMEOUT 3 OK-\rAT-OK ATDT\T TIMEOUT 60 ABORT '\nBUSY\r' ABORT '\nNO ANSWER\r' ABORT '\nNO DIALTONE\r' ABORT '\nNO CARRIER\r' ABORT '\nRINGING\r\n\r\nRINGING\r' SAY "Dialing IndosatNet ..\n" 'CONNECT' '' '0' '' SAY "Connected\n"

Setting Option PPP

edit file /etc/ppp/options (root, root 600)

# Prevent pppd from forking into the background -detach # # use the modem control lines modem # use uucp style locks to ensure exclusive access to the serial device lock # use hardware flow control crtscts # create a default route for this connection in the routing table defaultroute # do NOT set up any "escaped" control sequences asyncmap 0 # use a maximum transmission packet size of 552 bytes # Put values 2*N*128 + 40 (40 header) #mtu 1064 mtu 552 #mtu 296 # use a maximum receive packet size of 552 bytes #mru 1064 mru 552 #mru 296 # # Set the maximum number of LCP configure-request transmissions to <n> # (default 10). # Some PPP servers are slow to start up. You may need to increase this # if you keep getting 'serial line looped back' errors and your are SURE # that you have logged in correctly and PPP should be starting on the server. # lcp-max-configure 25 # How many second we tolerate idle ? Useful for cron dialing # idle 60

PAP Secret (hanya PAP)

edit file /etc/ppp/pap-secrets (root, root 600) untuk menyimpan password anda

IndosatNet

# Secrets for authentication using PAP # client server secret IP addresses user * pass

File-file lain

File-file ini secara default sudah ada di linux anda tetapi untuk kelengkapan saya sertakan disini. Biasanya file ini terletak di /etc/ppp atau /usr/doc/ppp-*/scripts

File /etc/ppp/ppp-off

Script untuk memutuskan koneksi (root, root 700)

#!/bin/sh ###################################################################### # # Determine the device to be terminated. # if [ "$1" = "" ]; then DEVICE=ppp0 else DEVICE=$1 fi ###################################################################### # # If the ppp0 pid file is present then the program is running. Stop it. if [ -r /var/run/$DEVICE.pid ]; then kill -INT `cat /var/run/$DEVICE.pid` # # If the kill did not work then there is no process running for this # pid. It may also mean that the lock file will be left. You may wish # to delete the lock file at the same time. if [ ! "$?" = "0" ]; then rm -f /var/run/$DEVICE.pid echo "ERROR: Removed stale pid file" exit 1 fi # # Success. Let pppd clean up its own junk. echo "PPP link to $DEVICE terminated." exit 0 fi # # The ppp process is not running for ppp0 echo "ERROR: PPP link is not active on $DEVICE" exit 1

File /etc/ppp/ip-up

Script yang dieksekusi pada saat koneksi PPP terhubung (root, root 700)

#!/bin/bash # This file should not be modified -- make local changes to # /etc/ppp/ip-up.local instead LOGDEVICE=$6 REALDEVICE=$1 export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin echo "$REALDEVICE" > /var/run/ppp-$LOGDEVICE.dev [ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local $* /etc/sysconfig/network-scripts/ifup-post ifcfg-${LOGDEVICE} exit 0

File /etc/ppp/ip-down

Script yang dieksekusi pada saat koneksi PPP teputus (root, root 700)

#!/bin/bash # This file should not be modified -- make local changes to # /etc/ppp/ip-down.local instead LOGDEVICE=$6 REALDEVICE=$1 [ -x /etc/ppp/ip-down.local ] && /etc/ppp/ip-down.local $* /etc/sysconfig/network-scripts/ifdown-post ifcfg-${LOGDEVICE} exit 0

Perubahan Setting