mpd5 & PPPoE als Internet Gateway

Leanderq

Leanderq

pseudo guru
Hi,


ich habe es endlich geschafft einen soweit funktionierenden PPPoE Server aufzusetzen. Leider haben die Clients die sich danach auf den mpd verbinden KEIN Internet. Es ist den Clients zwar möglich den PPPoE server zu Pingen, und auch sonstige auf dem Server laufende Dienste (wie z.B. ssh, ftp, ssh) zu verwenden, aber eben keine Internet weiterleitung ...
Mein Plan war eigentlich diesen PPPoE Server als Internet Gateway für die PPPoE Clients zu verwenden.

Was fehlt mir noch zu meinem Glück ;) ?


LG,

Leander
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

hat niemand ne Idee?
 
Zuletzt bearbeitet:
Moin

Zeig mal deine Firewall Regeln.
Hab gereade einen mittelgrossen Kampf mit ipfw und pipes hinter mir.
VVielleicht fällt mir ja was auf. :D

Gruss Diirch

Edit: hast du gateway_enable="YES" in der rc.conf?
 
hmmm ;) ich bin was IPFW angeht ziemlich verloren .... wie bekomme ich denn eine Übersicht der Regeln?


LG,

Leander
 
Damit ich dich richtig verstehe:
Du hast im Moment gar keine FW?
Da du ja Provider machst, vermute ich mal das dir eine FW vom Typ OPEN
reichen wird. Das erreichst du durch:
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_type="OPEN"
in die rc.conf schreiben.
ich empfehle dir aber dringend in der /etc/rc.firewall zu lesen.
Da sind verschiedene Prototype setups (open/client/simple/usw.) drin.
Open lässt alles durch aber nichts auf das lokale loopback.
Im FreeBSD Handbuch findest du auch Beispiele. Auf alle Fälle kannst
du schon viel über die IPFW lernen wenn du dir mal die /etc/rc.firewall
durch liesst.

Gruss Diirch
 
jopp, das habe ich mir gestern bereits fix in den Kernel compiliert und funktioniert soweit auch ... also auf "open".

Kann ich dir sonst mit nützlichen Informationen dienen?


Leander
 
hmm hast du einen defaultrouter="xx.xxx.xxx.xxx" eintrag?
Ich könnte mir sonnst auch ein dns Problem vorstellen.
Hast du einen dns-Server laufen?

Edit: funktioniert die bandlim jetzt?

Edit2: Du hast ja warscheinlich auch einen isc-dhcpd oder sowas laufen.
Übergibt das Teil denn auch Gateway bzw. DNS IP's richtig?
 
Zuletzt bearbeitet:
Also das mit der Bandbreitenlimitierung habe ich hinbekommen (IPFW und Dummynet)
... verwende hierbei folgende RADIUSattribute:

Code:
        mpd-table += "1=<PPoE ServerIP>",
        mpd-table += "1=<PPPoE ClientIP>",
        mpd-pipe += "1=bw 100Kbyte/s",
        mpd-pipe += "5=bw 200Kbyte/s",
        mpd-rule += "1=pipe %p1 all from any to table\\(%t1\\) in",
        mpd-rule += "2=pipe %p5 all from table\\(%t1\\) to any out",
        mpd-rule += "100=allow all from any to any",

... allerdings liegen diese Angaben noch etwas neben dem gemessenen ... aus 100 KB/s werden später nur 70 KB/s und aus den 200KB/s 170KB/s ... und schwankt auch stark ... (habe auf die schnelle FileZilla zum messen verwendet)

######

hmm hast du einen defaultrouter="xx.xxx.xxx.xxx" eintrag?

^^ das dachte ich anfangs auch ... habs dann auch auskommentiert .. geht aber dennoch nciht.

DNS Problem ist es leider auch nciht, denn sonst könnte ich die Hosts ja per IP Adresse anpingen, aber auch dazu reichts nicht.

Ich kann in der mpd conf ne route mitgeben ... habe diese auch auf default gesetzt:

Code:
[...]
PPPoE_server:

        create bundle template B1
        set ipcp ranges 11.1.11.1/32 80.50.80.10
        set ipcp dns 145.253.2.203 195.202.32.79
        set ipcp yes vjcomp
-->   set iface route default

        create link template L1 pppoe
        set link enable multilink
        set link action bundle B1
        set link disable chap pap eap
        set link enable chap
        load radius
        set pppoe service "*"
        set link keep-alive 60 60

        create link template ath0 L1
        set pppoe iface ath0
        set link enable incoming

        create link template rl0 L1
        set pppoe iface rl0
        set link enable incoming

[...]


im XP sieht das erhaltene dann folgendermaßen aus:

Code:
C:\>ipconfig -all

Windows-IP-Konfiguration

[...]

PPP-Adapter wisp:

        Verbindungsspezifisches DNS-Suffix:
        Beschreibung. . . . . . . . . . . : WAN (PPP/SLIP) Interface
        Physikalische Adresse . . . . . . : 00-53-45-00-00-00
        DHCP aktiviert. . . . . . . . . . : Nein
        IP-Adresse. . . . . . . . . . . . : 217.222.222.222
        Subnetzmaske. . . . . . . . . . . : 255.255.255.255
        Standardgateway . . . . . . . . . : 217.222.222.222
        DNS-Server. . . . . . . . . . . . : 145.253.2.203
                                            195.202.32.79
        NetBIOS über TCP/IP . . . . . . . : Deaktiviert
[...]

C:\>

Fehlt dem vielleicht NAT?
 
Zuletzt bearbeitet:
Jetzt wo du es sagst ich habe noch nie einen Gateway ohne nat gehabt.
Ich wüsste auch nicht wie das gehen soll. Wenn du den natd benutzt, wirst
du warscheinlich noch options IPDIVERT in der kernel und
in etwa sowas:
$cmd 100 divert natd ip from any to any in via $oif
brauchen
 
;-) .. ma so nebenbei ;)


ok .. also ich habe gerade vorsichtshalber die Option IPDIVERT noch eingetragen und lasse das Ding nochmal kompilieren ....

.. du musst mir blos nochma erklären wo ich diese Option reinpacken muss?:

$cmd 100 divert natd ip from any to any in via $oif

-------------
Dann aber noch ne Kleinigkeit ... sollte der mpd nicht schon von Haus aus ohne Hilfe des Kernels NAT beherrschen?
Das viel mir nur ein als ich im FreeBSD Handbuch über
"25.2.1.3. Interne NAT von PPP benutzen"

http://www.freebsd.org/doc/de/books/handbook/book.html#NETWORK-NATD

gestolpert bin ... der kan das ja auch ...
und wie du in dem folgenden Link sehen wirst sollte der mpd auch schon was zumindestens NAT ähnliches können?!

http://www.lghost.ru/docs/mpd5/mpd32.html#32

Grüße,

Leander
 
Zuletzt bearbeitet:
Stimmt der scheint das selber zu können.
Du musst das wohl nur confen. Vom mpd habe ich aber
auch nicht wirklich einen Plan. Das scheint aber ziemlich eindeutig
zu sein. Hast du das schon mal Probiert?
options NETGRAPH_NAT muss dann wohl noch mit in die kernel.
 
Zuletzt bearbeitet:
Hast du das schon mal Probiert?
^^ Nein, weil ich da genauso im Dunkeln stehe wie du ;)
muss die Option "options NETGRAPH_NAT" trotzdem in die CUSTOM Kernel config, also selbst, wenn der mpd das schon können sollte?

Leander
 
Also wie ich das sehe muss irgendwas nat machen. Ich würde an deiner Stelle
vermutlich das nat vom mpd benutzen. Dafür brauchst du dann NETGRAPH_NAT in der kernel. Ich nehme an das es sowas wie eine mpd.conf gibt da wird warscheinlich das nat enable (option) rein müssen. Da musst du dich aber noch genauer informieren. Ich habe keinen mpd drauf. :). Naja und an sonsten natd das braucht dann IPDIVERT und eine FW-Regel die die divert-sockets benutzt.
 
... Ich wurde gerade vom Entwickler persönlich eines Besseren belehrt... :

Mpd implements NAT only for upstream (client side) interface. As soon as ng_nat
node connected below interface level it is impossible to use it in opposite direction.
To share your internet connection to your PPPoE clients you sould configure NAT
on your uplink using natd, ipnat, ipfwnat or whatever else.

also doch so wie du anfangs gmeint hast.

Mir ist leider nur immer noch nicht klar, wo ich

"$cmd 100 divert natd ip from any to any in via $oif" reinschreiben soll :)

options IPDIVERT ist jetzt bereits im Kernel, aber denkst du options NETGRAPH_NAT ist dann ncoh notwendig?

LG,

Leander
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

ach ja... btw ... hast du ne Idee weshalb die Bandbreite mit Dummynet & IPFW so ungenau umgesetzt wird?!
 
Zuletzt bearbeitet:
Das kannst du mit in die /etc/rc.firewall schreiben.

${fwcmd} add 100 divert natd ip from any to any in via rl0
${fwcmd} add 65000 pass all from any to any #schon vorhanden

Wobei ich natürlich keine Ahnung habe wie dein aussen-Interface heisst.
*gespannt*

Edit: dummynet wackelt bei mir teilweise auch ganz schön rum. Scheint zum Teil
vom Protokoll abhängig zu sein.
 
Danke
... habe rl0 und ath0 ;) hoffe dir damit deine Spannung genommen zu haben ;)

Das mit Dummynet stinkt dann aber ein wenig ... kann man das irgendwie tunen?
Denke da werde ich ma bissel googlen müssen ;)
 
Ich bin eher gespannt ob die Clients nun rein kommen.
 
Kernel ist noch am kompilieren .... kanns dir in ca. einer Stunden sagen ;)

... ist ne 500MHz Testkiste ... ;) gestern hat er 3h dafür gebraucht.
 
Hi,

so, aheb ma wieder Zeit gefunden weiterzu basteln ;)
Habe es aber leider noch nicht hinbekommen, dass die Clients Internet bekommen.

Ich blicke noch nicht ganz, wo ich

Code:
$cmd 100 divert natd ip from any to any in via $oif
in der /etc/rc.firewall platzieren soll, so, dass das von rl0 kommende Pakete an die PPPoE Clients weitergereicht werden und umgekehrt.

Btw. soweit wie ich das verstanden habe stehen in der /etc/rc.firewall enige vordefinierte Firewallprofile ... und ich benutze momentan das Profil "open" - sehe ich das richtig? ;)

Das sind soweit meine OPTIONS die ich in der CUSTOM Kernel conf drin und kompiliert habe:

Code:
# IPFW - Firewall
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=5
options         IPFIREWALL_DEFAULT_TO_ACCEPT

# Dummynet driver
options         DUMMYNET

# NATd
options         IPDIVERT


in meiner rc.conf sieht es mittlerweile wie folgt aus:

Code:
# Netzwerk
hostname="wisp.leolinux"
ifconfig_rl0="inet 10.1.10.80  netmask 255.0.0.0"
ifconfig_ath0="inet 192.168.1.1 netmask 255.255.255.0 ssid wisp wepmode on weptxkey 1 wepkey 1:0x123456789abcd123456789abcd mode 11g mediaopt
 hostap"

#defaultrouter="10.1.10.1"
gateway_enable="YES"

# NATd
natd_enable="YES"
natd_interface="rl0"
#natd_flags="-f /etc/natd.conf"

# IPFW - Firewall

(Wenn ich das richtg verstanden habe, dann sind die IPFW-Einträge hier ja nutzlos, da ich das ja schon fix im Kernel so festgelegt habe, oder?
... Ausgenommen meine Profilangabe "open", welcher dann den Default Eintrag "options         IPFIREWALL_DEFAULT_TO_ACCEPT" überschreibt ?!

#firewall_enable="YES"   
firewall_type="open"
#firewall_logging="YES"


# Daemons
sshd_enable="YES"
postgresql_enable="YES"
apache22_enable="YES"
radiusd_enable="YES"
mpd_enable="YES"


Grüße,

Leander
 
Moin

Bei mir steht in der rc.firewall zeile 153 das:

case ${firewall_type} in
[Oo][Pp][Ee][Nn])
${fwcmd} add 65000 pass all from any to any
;;

und daraus machst du das:

case ${firewall_type} in
[Oo][Pp][Ee][Nn])
${fwcmd} add 100 divert natd ip from any to any in via rl0
${fwcmd} add 65000 pass all from any to any
;;

Damit solltest du glücklich werden.

Gruss Diirch

Edit: ${fwcmd} add 65000 pass all from any to any entspricht IPFIREWALL_DEFAULT_TO_ACCEPT
aaaber Das rc.firewall Skript flushed die Regeln beim boot. Sprich der FW-Table wird beim hochfahren
von der rc.firewall neu definiert.
 
Zuletzt bearbeitet:
hmmm, das ist aber komisch, denn das stand bereits schon drin .. das muss der irgendwie selbst reingeschrieben haben.

Code:
# Prototype setups.
#
case ${firewall_type} in
[Oo][Pp][Ee][Nn])
        ${fwcmd} add 100 divert natd ip from any to any in via rl0
        ${fwcmd} add 65000 pass all from any to any
        ;;

P.S. muss ich in der rc.conf ne defaultroter Angabe machen?
 
Zuletzt bearbeitet:

Ähnliche Themen

OpenVPN Ports für Anwendungen weiterleiten?

iptables - default policy - Server macht dicht

PPPOE Einwahl und Server als Gateway

Routing Problematik

Samba als PDC

Zurück
Oben