Portál AbcLinuxu, 26. dubna 2024 03:22

Zprovoznění ADSL v Linuxu

27. 2. 2003 | Martin Kučera
Články - Zprovoznění ADSL v Linuxu  

Podrobný návod k instalaci a konfiguraci ADSL připojení.

Podle neověřených informací je zprovoznění ADSL v ČR na spadnutí [vypadá to, že už spadlo... pozn. red.]. Aby si čtenáři AbcLinuxu mohli s předstihem udělat představu, co všechno obnáší zprovoznění připojení pod Linuxem, rozhodl jsem se podělit se se svými zkušenostmi, nabytými zhruba ročním provozem T-DSL připojení v Německu.

Hardware:

Dva dny po objednání služby přišla poštou krabice, ve které byly skryty dvě podivné krabičky: jedna menší (splitter) k připojení mezi telekomácké dráty a ISDN ústřednu a ta větší a pro mne zajímavější byl modem, který se připojí na jedné straně k té menší krabičce a na druhé straně k 10Mbps ethernetové kartě v počítači. Modem má ješte jeden podivný drát, kterýžto je nutno zasunout do zásuvky. Nadešel tedy čas připojit domek k elektrárně.

Software:

Nic světoborného jsem od telekomunistů neočekával, ale přesto má první cesta při honbě za manuály a HOWTO vedla na jejich stránky. Zjistil jsem tam, že počítají i s účastníky, kteří používají podivné operační systémy, omezují se ovšem jen na SuSE Linux, další informace a linky chybějí.

To nevadí, existuje ještě dokumentace k jádru. Co v něm budeme potřebovat (budu se zabývat pouze takzvanou RP-PPPoE verzí od Deavida Skolla):

Konfigurace jádra - PPPoE
Položka v jádře Volba kompilace
Networking options
    Socket filtering (FILTER) Y
Network device support
    PPP (point-to-point protocol) support (PPP) Y/M
    PPP filtering (PPP_FILTER) Y
    PPP support for async serial ports (ASYNC) Y/M
    PPP support for sync tty ports (SYNC_TTY) Y/M
    PPP Deflate compression (DEFLATE) Y/M
    PPP BSD-Compress compression (BSDCOMP) Y/M
    PPP over Ethernet (EXPERIMENTAL) (PPPOE) Y/M
Character devices
    Unix98 PTY support (UNIX98_PTYS) Y

Samozřejmě je možné šoupnout tam ty věci i jako moduly. Pak je ovšem nutno napsat pár řádků do /etc/modules.conf:

alias char-major-108 ppp_generic
alias tty-ldisc-3 ppp_async alias tty-ldisc-14 ppp_synctty
alias net-pf-24 pppoe

Není špatné mrknout, jestli existuje /dev/ppp. V případě negativního výsledku hledání nutno vytvořit:

mknod --mode=664 /dev/ppp c 108 0

Předpokládám, že ovladač sítovky už běží, a ta je jádrem vedena jako eth0.

Dalším krůčkem bude doplnění potřebného programového vybavení. Budeme potřebovat PPP software a PPPoE driver (Point-to-Point Protocol over Ethernet). V Debianu stačí toto:

apt-get install ppp pppoe

To bychom měli. Nyní se pokusme spícího démona probudit.... Existuje-li default route, tak ji smažeme:

route del default

Vyzkoušet, je-li propojení našich tří krabiček v pořádku, není nic složitého:

pppoe -I eth0 -A

Mělo by nám vylézat něco podobného následujícímu:

--------------------------------------------
Access-Concentrator:
OSNC13-nrp3
Got a cookie: 50 64 87 59 6d bf 73 00 1d 67 98 7d c2 d3 a5 32
AC-Ethernet-Address: 00:01:96:99:50:b7
--------------------------------------------

Nyní nadešel čas zkontrolovat, jestli na druhé straně nemají dlouhou polední přestávku:

pppoe -T20 -I eth0 -D /var/log/pppoe.log > /dev/null

Soubor pppoe.log by měl obsahovat podobný text:

SENT PPPOE Discovery (8863) PADI sess-id 0 length 4
SourceAddr 00:00:1c:db:da:93 DestAddr ff:ff:ff:ff:ff:ff 01 01 00 00
RCVD PPPOE Discovery (8863) PADO sess-id 0 length 39

SourceAddr 00:01:96:99:50:b7 DestAddr 00:00:1c:db:da:93
01 01 00 00 01 02 00 0b-4f 53 4e 43 31 33 2d 6e
72 70 33 01 04 00 10 50-64 87 59 6d bf 73 00 1d
67 98 7d c2 d3 a5 32

SENT PPPOE Discovery (8863) PADR sess-id 0 length 24
SourceAddr 00:00:1c:db:da:93 DestAddr 00:01:96:99:50:b7
01 01 00 00 01 04 00 10-50 64 87 59 6d bf 73 00
1d 67 98 7d c2 d3 a5 32

Jestliže je tomu jinak a je tam plno chybových hlášek, je s největší pravděpodobností námraza na silnici... Já budu samozřejmě vycházet z předpokladu, že i tohle dopadlo podle očekávání a že se můžeme vrhnout do víru přihlašování, navazování spojení, pingnutí a rozchození dial-on-demand.

Zatím zřejmě nikdo neví, v jaké formě se bude zadávat uživatelské jméno u Českého Telecomu. Tady se to liší od operátora k operátorovi. Jisté je jen, že se ona přístupová data musí zapsat do /etc/ppp/pap-secrets:

"uzivatelske_jmeno" * "desne_tajne_heslo"

Dalším konfiguračním souborem, jenž se musí vytvořit, je /etc/ppp/peers/dsl-provider.

Měl by obsahovat podobné tajemné formule:

pty "pppoe -I eth0"
#pty "pppoe -I eth0 -m 1452"
#pty "pppoe -I eth0 -m 1412"
#demand
connect /bin/true
ipcp-accept-remote
ipcp-accept-local
usepeerdns
idle 90
noipdefault
defaultroute
user "uzivatelske_jmeno"
hide-password
noaccomp
nopcomp
novj
novjccomp
nobsdcomp
nodeflate
noccp
nocrtscts
local
lcp-echo-interval 10
lcp-echo-failure 3
lock
# Jen pro testovani v syslog
#debug
# jen pro testovani - neskoci po spusteni do pozadi
nodetach

Položka "uzivatelske_jmeno" by měla odpovídat zápisu v /etc/ppp/pap-secrets, zakomentované řádky #pty "pppoe -I eth0 -m 1452" a 1412 jsou v záloze pro případ maškarády, jelikož pppoe protokol vyžaduje přesně 8 Byte v jednom ethernet paketu.

V okamžiku, kdy tyhle soubory obsahují, co mají, můžeme se zavěsit na systémové logy:

tail -f /var/log/syslog
tail -f /var/log/messages
watch plog

Nadchází slavnostní okamžik spuštění pppd:

pppd call dsl-provider

Na obrazovce se objeví následující řádky:

pppd[1578]: pppd 2.4.1 started by root, uid 0
pppd[1578]: Serial connection established.
pppd[1578]: Using interface ppp0
pppd[1578]: Connect: ppp0 <--> /dev/pts/4
pppoe[1579]: PADS: Service-Name: ''
pppoe[1579]: PPP session is 4658
pppd[1578]: local IP address 2.226.75.9
pppd[1578]: remote IP address 10.112.112.112

Tak to pingneme: ping -c5 nejaka.ip.adresa a zkusíme, jestli DNS funguje, jak má: ping -c5 abclinuxu.cz. Spojení ukončíme Ctrl+C.

Tím máme vše nastaveno, zkontrolováno a můžeme zakomentovat řádek "nodetach" v /etc/ppp/peers/dsl-provider.

Spojení budeme navazovat pon dsl-provider a ukončovat pomocí poff.

Zajímavější se jeví být navazování spojení pomocí Dial On Demand. Tento přístup předpokládá existenci souboru ppp_on_boot v adresáři /etc/ppp. Při instalaci PPPoE byl vytvořen jako dsl_on_boot. Nastavíme mu práva chmod 750 dsl_on_boot a vytvoříme symbolický link jménem ppp_on_boot na něj. Přidáme ještě maličkost kvůli možnosti chyb při neplatných IP adresách a mazání default route je-li to nutné, takže výsledný soubor pak vypadá takto:

#!/bin/sh
#

route del default

# The location of the ppp daemon itself (shouldn't
# need to be changed)
PPPD=/usr/sbin/pppd

# The Ethernet interface the DSL modem is connected to.
# If you change this, you also need to edit the file
# /etc/ppp/peers/dsl-provider.INTERFACE=eth0

# Bring the interface up
ifconfig $INTERFACE up -arp
$PPPD call dsl-provider

echo 2 > /proc/sys/net/ipv4/ip_dynaddr

Nezapomene odkomentovat položku "demand" v /etc/ppp/peers/dsl-provider. Po restartu pppd je dobré nějakou dobu kontrolovat logy, abychom měli jistotu, že se spojení po 90 sekundách nečinnosti opravdu vždy odpojí. S takovou pak nebudeme muset prodat náš čerstvě připojený domek po příchodu telefonního účtu...

Odkazy a zdroje

PPP FAQ
ADSL4Linux.de (německy)
Linux PPP HOWTO
The Linux Kernel HOWTO

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.