PPPD

Bir pppd'ye (Point to Point Protocol Deamon) ve nasıl çalıştığına dair makul bir bilgiye sahip olmalısınız. Eğer gerekliyse ilgili RFC'lere ya da Linux PPP NASIL belgesine göz atabilirsiniz. Eğer bir login prosedürü kullanmayacaksanız, (m)getty kullanmanıza ya da bağlantınızı kontrol eden pppd ile ilişkilendirilmiş (sahte) bir kullanıcıya ihtiyacınız olmayacak. Eğer telefon etmeyecekseniz, herhangi bir konuşma betiğine de gerek kalmaz. Aslında kurduğunuz modem devreleri ve yapılandırması biraz da tamamen telli boş modem kablolarına benzer. Bu da pppd'nizi boş bir modem kablosunu nasıl yapacaksanız aynı yolla yapılandırmanız gerektiği anlamına gelir.

Güvenilir bir bağlantı için, kurulumunuz aşağıdaki kriterleri izlemelidir;

  • Sisteminizin ön yüklemesinden kısa bir süre sonra pppd, RS232 portunuzda DTR sinyalini vermeli, DCD'nin çıkmasını beklemeli ve bağlantıyı müzakere etmelidir.
  • Eğer uzak sisteme erişilemiyorsa, pppd tekrar erişilene kadar beklemede kalmalıdır.
  • Eğer bağlantı geldiyse ve devam ediyorsa, pppd modemi yeniden ayarlamalı (bu işlem DTR'yi düşürüp sonra da yükseltilerek yapılır), ve daha sonra yeniden bağlantı kurmaya çalışmalıdır.
  • Eğer bağlantının kalitesi çok düşükse, pppd modemi yeniden ayarlamalı ve bağşantıyı yeniden kurmalıdır.
  • Eğer bağlantıyı kontrol eden süreç, yeni pppd ölürse bir bekçiköpeği (watchdog) pppd'yi yeniden başlatmalıdır.

Yapılandırma

Örneğin modemin COM2'ye bağlı olduğunu, yerel IP adresinin `Loc_Ip' olduğunu ve uzak IP adresinin `Rem_Ip' olduğunu düşünelim. MTU için 576'yı kullanmak istiyoruz. /etc/ppp/options.ttyS1 dosyamız aşağıdaki gibi olmalıdır:

crtscts
mru 576
mtu 576
passive
Loc_Ip:Rem_Ip
-chap
modem
#noauth
-pap
persist
#maxfail 0
#holdoff 10

'asyncmap 0','lock', 'modem' ve '-detach' gibi şeyler muhtemelen /etc/ppp/options dosyasında bulunuyordur. Eğer öyle değilse, bunları /etc/ppp/options.ttyS1 dosyanıza eklemelisiniz. Eğer yerel sisteminiz 192.168.1.1 ve uzak sisteminiz 10.1.1.1 ise, yerel sisteminizdeki /etc/ppp/options.ttyS1 dosyanız aşağıdaki gibi olmalıdır:

crtscts
mru 576
mtu 576
passive
192.168.1.1:10.1.1.1
-chap
modem
#noauth
-pap
persist
#maxfail 0
#holdoff 10

Uzak sistemdeki ttyS1 seçenekleri şöyle olmalıdır:

crtscts
mru 576
mtu 576
passive
10.1.1.1:192.168.1.1
-chap
modem
#noauth
-pap
persist
#maxfail 0
#holdoff 10

'passive' seçeneği bağlantı (ya da yeniden bağlantı) girişimlerinin sayısını sınırlar. 'persist' seçeneği pppd'nin ilk seferde bağlantı kuramadığı takdirde ya da bağlantı koptuğunda ayakta olmasını sağlar. Eğer dosya transferleri sırasında (FTP ya da internette gezinirken) çok fazla telnet kullanırsanız 296 gibi daha küçük bir MTU ve MRU kullanmanız daha iyi olacaktır. Böylece uzak sisteminizi daha unumlu hale getirmiş olacaksınız. Eğer FTP kullanırken telnet'i fazla umursamazsanız o zaman MTU ve MRU'yu 1500 gibi büyük bir değer yapabilirsiniz. Aynı zamanda UDP'nin parçalanamayacağını da aklınızda bulundurun. Örneğin UDP paketlerinin 512 bayt olduğunu kabul edelim. O halde asgari MTU'nun 552 bayt olması gerekecektir. 'noauth' seçeneği bazı yeni dağıtımlar için gerekli olabilir. `maxfail 0' de daha yeni PPPD'ler için gerekli olabilir. Bağlantı kaybolduktan sonra PPPD yeniden bağlanmak için bir süre bekleyecektir. Bekleme süresi 'holdoff' seçeneği ile ayarlanabilir. Varsayılan holdoff 30 saniye olarak kullanılırdı ancak artık sıfır kullanılıyor. holdoff seçeneği genelde 10 olarak kullanılır.

Betikler

pppd'yi başlatma ve ayakta tutma

pppd formunu bir önyükleme betiğinden (rc) çalıştırabilirsiniz. Buna rağmen eğer bu yolu kullanırsanız ve pppd ölürse, o zaman bir bağlantınız da olmayacaktır. Daha kararlı bir çözüm, pppd'yi /etc/inittab'dan başlatmak olacaktır;

s1:23:respawn:/usr/sbin/pppd /dev/ttyS1 115200

Bu yöntem sayesinde pppd ölürse, yeniden başlatılacaktır. Ancak `-detach' seçeneğiniz olduğundan (yeni sistemlerde 'nodetach') emin olun, aksi takdirde inittab pppd'nin bir çok örneğini başlatacaktır.

Not

Bazı eski sistemler `115200' hızını kabul etmeyecektir. Bu durumda hızı 38400 yapmanız ve setseral ile `spd_vhi' bayrağını ayarlamanız gerekecektir. Bazı sistemler `ttyS' aygıtı yerine `cua' kullandığınızı varsayarlar.

Rotaların Kurulumu

Varsayılan rota 'defaultroute' seçeneği ile ya da /etc/ppp/ip-up betiğiyle ayarlanabilir;

#!/bin/bash
case $2 in
     /dev/ttyS1)
          /sbin/route add -net 0.0.0.0 gw Rem_Ip netmask 0.0.0.0
          ;;
esac

Ip-up aynı zamanda sistem saatinizi netdate kullanarak eşzamanlamak için kullanılabilir.

Rotanın ip-up içide varsayılan rota olarak ayarlanması zorunlu değildir. Sizin ip-up'ınız uzak ağdaki rotayı ayarlarlarken, uzak sistemdeki ip-up betiği de sizin ağınıza erişmek için gereken rotayı ayarlar. Eğer ağınız 192.168.1.0 ve ppp arayüzünüz 192.168.1.1 ise, uzak sistemdeki ip-up betiği aşağıdaki gibi olmalıdır;

#!/bin/bash
case $2 in
   /dev/ttyS1)
      /sbin/route add -net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0
      ;;
esac

`case $2' ve `/dev/ttyS1)' bitleri birden fazla ppp bağlantınız olduğu durumlarda işinize yarar. Ip-up bağlantı kurulduğu her sefer çalışacaktır, ama sadece `/dev/ttySx)' ve `;;' arasındakiler işletilecektir ve doğru ttyS için rota belirlenecektir. Rotalama hakkında daha fazla bilgiyi Linux Ağ Oluşturma NASIL belgesinde bulabilirsiniz.

Bazı sistemler temel bir tty üzerinden rota edemekdikleri zaman dinamik ttys kullanmayı tercih ederler. Bu durumda ip adresini bir ppp arayüzüne çevirmek ve sonra da belli bir ppp arayüzünden rotalama (ve güvenlik duvarı) yapmak daha elverişli olabilir. Bu yüzden /etc/ppp/ip-up dosyasını aşağıdaki gibi düzenledim;

# Bu değişkenler çalışan-kısımlar tarafından betiklerin çalıştırılması içindir
PPP_IFACE="$1"
PPP_TTY="$2"
PPP_SPEED="$3"
PPP_LOCAL="$4"
PPP_REMOTE="$5"
PPP_IPPARAM="$6"
export PPP_IFACE PPP_TTY PPP_SPEED PPP_LOCAL PPP_REMOTE PPP_IPPARAM

# ip ' yi  ppp ' ye çevirme
echo $PPP_IFACE > "/var/run/ppp/if-$PPP_LOCAL"
sleep 1
# Güvenlik duvarını tekrar çalıştırma .
/usr/local/sbin/rc.block

# (Varsayılan) rotaya (ya da rotalara ) dikkat edilmesi
case $PPP_LOCAL in
        "My_Ip_Address")
                /sbin/route add -net 0.0.0.0 gw $PPP_REMOTE netmask 0.0.0.0
                ;;

esac

# Önyüklemede sabit şeyler atlandı
if ! ( netstat -an | grep 'My_Ip_Address:53' > /dev/null 2>&1 )
then
        # Just booted
        # Sync clock
        /usr/local/sbin/ntpdate.sh &
        # Set the null routes
        /usr/local/sbin/null-route.sh &
        # Bind 9 needs this;
        sleep 1
        /etc/init.d/bind9 restart
fi

# Bir sesli uyarı ihbarı
/bin/echo -ne "\007" >> /dev/tty1

'My_Ip_Address' kısmını kendi Ip adresinizle değiştirin./usr/local/sbin/ntpdate.sh dosyası saati eşzamanlamak için kullanılır. Bu dosya NTPD'yi durdurur, ntpdate kullanarak eşzamanlamayı yapar ve NTPD'yi yeniden başlatır. /usr/local/sbin/null-route.sh boş rotaları ayarlayan bir dosyadır;

#!/bin/bash
# RFC 1918
route add -net 10.0.0.0    netmask 255.0.0.0   reject
route add -net 172.16.0.0  netmask 255.240.0.0 reject
route add -net 192.168.0.0 netmask 255.255.0.0 reject
# RFC 3927
route add -net 169.254.0.0 netmask 255.255.0.0 reject

Eğer kullanımda RFC 1918 adreslerine sahipseniz, boş rotalar daha küçük bir ağ maskesi kullanmanıza izin vermeyeceklerdir. 192.168.1.0/24 ağı boş rota 192.168.0.0/16 tarafından rahatsız edilmeyecektir;

Kernel IP rota tespit etme tablosu
Hedef    Ağ Geçidi         Bilgi Maskesi         Bayrak Metrik Ref    Use Iface
255.255.255.255 0.0.0.0         255.255.255.255 UH    0      0        0 eth0
195.190.249.4   0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     -               255.255.0.0     !     0      -        0 -
192.168.0.0     -               255.255.0.0     !     0      -        0 -
172.16.0.0      -               255.240.0.0     !     0      -        0 -
10.0.0.0        -               255.0.0.0       !     0      -        0 -
0.0.0.0         195.190.249.4   0.0.0.0         UG    0      0        0 ppp0

Test

Modemi test etmek diğer şeyleri test etmek gibidir. Eğer çalışırsa, bisikletinize atlayın ve uzak modemi bağlantınızın uzak tarafına taşıyın. Eğer çalışmazsa, o zaman yapmanız gereken ilk işlerden biri COM portunun hızını kontrol etmek olacaktır; genelde sıkça yapılan hatalardan biri Minicom'lu modemleri tek bir hız kullanarak yapılandırmak ve daha sonra da başka bir tane hız kullanarak pppd'yi ayarlamaktır. Bu hiç bir zaman çalışmayacaktır! Her zaman aynı hızı kullanmak zorundasınız!