Achtung! Die Howtos stammen aus der Zeit vor 2006 und sind nur noch aus historischen Gründen online!
Ich möchte ganz kurz und schmerzlos die Konfiguration eines ADSL Zugangs unter FreeBSD mit Hilfe des mpd, dem "netgraph multi-link PPP daemon", erläutern. Mpd verwendet das Netgraph Subsystem des FreeBSD-Kernel zur eigentlichen Kommunikation, wobei die PPP Implementation in einem User-Prozess erfolgt. Somit werden Geschwindigkeit und Robustheit der Kernel-Implementation von Netgraph mit der Flexibilität der User-Implementation von PPP in mpd kombiniert.
Anmerkung: Leider gibt es Probleme mit mpd und dem Alcatel 1000 ADSL Modem (ISDN und ADSL). Mpd funktioniert aber einwandfrei mit den Alcatel Modems für Analog und ADSL. Es handelt sich scheinbar um einen Bug in der Firmware des Alcatel 1000 ADSL Modems.
Mpd kann ohne weiters auch für normale PPP Verbindungen mit einem Modem verwendet werden, ich werde mich hier aber auf die Verwendung für einen ADSL Zugang mit PPTP (Point to Point Tunneling Protocol von Microsoft) konzentrieren.
options NETGRAPH #netgraph(4) system options NETGRAPH_ASYNC options NETGRAPH_BPF options NETGRAPH_CISCO options NETGRAPH_ECHO options NETGRAPH_FRAME_RELAY options NETGRAPH_HOLE options NETGRAPH_IFACE options NETGRAPH_KSOCKET options NETGRAPH_LMI # MPPC compression requires proprietary files (not included) #options NETGRAPH_MPPC_COMPRESSION options NETGRAPH_MPPC_ENCRYPTION options NETGRAPH_PPP options NETGRAPH_PPPOE options NETGRAPH_PPTPGRE options NETGRAPH_RFC1490 options NETGRAPH_SOCKET options NETGRAPH_TEE options NETGRAPH_TTY options NETGRAPH_UI options NETGRAPH_VJC
Bei einer Standardinstallation kann man ohne weiteres Netgraph automatisch laden lassen, was für einen FreeBSD-Neuling wesentlich einfacher (Plug and Play) ist, da er keinen neuen Kernel übersetzen muss.
Entweder durch Download des mpd-netgraph-Packages von einem FreeBSD FTP Server und pkg_add oder durch Übersetzen des Ports unter /usr/ports/net/mpd-netgraph. Beim Übersetzen des Ports ist als Benutzer root wie folgt vorzugehen:
Und schon ist mpd übersetzt und installiert.
Als erstes konfigurieren wir die Datei /usr/local/etc/mpd/mpd.conf:
default:
load adsl
adsl:
new -i ng0 adsl adsl
set iface disable on-demand
set iface addrs 192.168.1.1 192.168.2.2
set iface idle 0
set iface route default
set bundle disable multilink
set bundle authname xyz@inode.at
set bundle password abcdefg12
set link no acfcomp protocomp
set link no pap
set link disable chap
set link accept chap
set ipcp no vjcomp
open
Die beiden Adressen 192.168.1.1 und 192.168.2.2 sind willkürlich gewählt und werden vom PPP als Platzhalter für die tatsächlichen IP-Adressen verwendet. Eventuell sollten diese beiden Adressen in keinem lokalen Netzwerk vorkommen.
Als nächstes folgt die Datei /usr/local/etc/mpd/mpd.links:
adsl:
set link type pptp
set pptp self 10.0.0.1
set pptp peer 10.0.0.138
set pptp enable originate incoming outcall
Die Adresse 10.0.0.1 ist die Adresse des Computers der mit ADSL mit dem Internet verbunden werden soll, 10.0.0.138 ist die IP-Adresse der ADSL-Modems der Telekom Austria. 10.0.0.138 ist fix vergeben und kann nicht geändert werden.
Start des mpd erfolgt als Benutzer root aus der Shell mit:
Auf diese Art wird mpd im Vordergrund gestartet und man erhält einige Logging-Informationen. Um mpd im Hintergrund zu starten gibt man folgendes Kommando ein:
Wenn alles geklappt hat, sollte man folgende ähnliche Ausgabe bei netstat -in erhalten:
# netstat -in Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll ed0 1500 00:00:21:6b:28:fd 32155 0 32453 0 5 ed0 1500 10 10.0.0.1 32155 0 32453 0 5 ed1 1500 00:4f:49:06:6b:52 13813 0 4789 0 3 ed1 1500 192.168.202 192.168.202.1 13813 0 4789 0 3 lp0* 1500 0 0 0 0 0 ppp0* 1500 0 0 0 0 0 ppp1* 1500 0 0 0 0 0 lo0 16384 163 0 163 0 0 lo0 16384 127 127.0.0.1 163 0 163 0 0 ng0 1500 20285 0 19404 0 0 ng0 1500 213.229.7.154 213.229.7.154 20285 0 19404 0 0
Wesentlich ist die Zeile mit ng0. Ng0 ist das Netgraph Interface, an der IP-Adresse erkennen wir, das die Verbindung aufgebaut werden konnte. Es sollte ausserdem einen Eintrag für den Default-Router geben:
# netstat -rn Routing tables Internet: Destination Gateway Flags Netif Expire default 195.58.161.6 UGSc 3 0 ng0 10 link#1 UC 0 0 ed0 => 10.0.0.1 0:0:21:6b:28:fd UHLW 2 2 lo0 10.0.0.138 0:90:d0:e:c2:4f UHLW 2 33279 ed0 882 127.0.0.1 127.0.0.1 UH 1 161 lo0 192.168.202 link#2 UC 0 0 ed1 => 195.58.161.6 213.229.7.154 UH 4 0 ng0
Wir erkennen einen Eintrag fuer default auf 195.58.161.6 bzw. für 195.58.161.6 auf Gateway 213.229.7.154 (ng0). Die IP-Adressen sind natürlich von Provider zu Provider und Computer zu Computer unterschiedlich
Wenn nun auch der Resolver für DNS korrekt konfiguritert ist, siehe /etc/resolv.conf:
domain jawa.at nameserver 195.58.160.2 nameserver 195.58.161.3
sollte nun einem nslookup www.yahoo.com oder einem ping www.yahoo.com nichts mehr im Wege stehen:
# nslookup www.yahoo.com
Server: web1.inforum.at
Address: 195.58.178.86
Non-authoritative answer:
Name: www.yahoo.akadns.net
Addresses: 216.32.74.51, 216.32.74.52, 216.32.74.53, 216.32.74.55
216.32.74.50
Aliases: www.yahoo.com
# ping www.yahoo.com
PING www.yahoo.akadns.net (216.32.74.51): 56 data bytes
64 bytes from 216.32.74.51: icmp_seq=0 ttl=235 time=1141.945 ms
64 bytes from 216.32.74.51: icmp_seq=1 ttl=235 time=1028.090 ms
64 bytes from 216.32.74.51: icmp_seq=2 ttl=235 time=817.856 ms
64 bytes from 216.32.74.51: icmp_seq=3 ttl=235 time=970.859 ms
64 bytes from 216.32.74.51: icmp_seq=4 ttl=235 time=887.007 ms
^C
--- www.yahoo.akadns.net ping statistics ---
6 packets transmitted, 5 packets received, 16% packet loss
round-trip min/avg/max/stddev = 817.856/969.151/1141.945/112.225 ms
Entweder man erzeugt ein Startscript in /usr/local/etc/rc.d oder man erzeugt einen Eintrag in der Datei rc.local:
/usr/local/sbin/mpd -b adsl
Copyright ©2000 Michael Ranner mranner@bugat.at
BSD Usergroup Austria