• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Optionale ISDN-Verbindung - wie geht das?

SD582

Member
Hallo Leute

Ich hatte folgendes auf einem WindowsXP-Rechner (Router, Proxy, ...) laufen. Das Selbe möchte ich jetzt mit SuSE 9.1 erreichen.

Der "Proxy" hängt mit einer Netzwerkkarte an einem Router (von meinem Provider), welcher sich mit DialOnDemand zu meinem Provider connected.
Wenn diese Verbindung (kommt manchmal vor) gestört ist, habe ich die Möglichkeit über ein ISDN-Modem (ippp0 bis ippp2) drei verschiedene Verbindungen zu nutzen.

Mein Problem ist nun, daß die Arbeitsplatzrechner bei einer Dialup-Verbindung nicht rausfinden. Ich müsste wohl das Defaultgetway ändern.

Ich stelle mir das etwa so vor:

Wenn eine Dialup-Verbindung besteht, sollte alles was sonst zur zweiten Netzwerkkarte geroutet wird, vorübergehend über diese Dialup-Verbindung geroutet werden. Bei Abbau dieser Verbindung sollte das Standardrouting wieder hergestellt werden.

Was müsste ich da wie konfigurieren? Gibt es dafür ein verständliches Kochbuch?

In diesem Zusammenhang ist mir noch aufgefallen, daß ich bei der Firewallkonfiguration (Yast) nur eine externe Verbindung angeben kann.
Ich interpretiere das so, daß die Dialup-Verbindungen total offen sind, wenn ich als externe Schnittstelle die Netzwerkkarte angebe. Sehe ich das richtig? Oder sind die per Default dicht?

Danke im Voraus für jede Hilfreiche Antwort.

Gruß
Franz
 

Bonsai

Advanced Hacker
Zur Firewall:

Wenn Du die Konfiguration mit der Hand machst (frag wenf, er kann das) kannst Du das schon konfigurieren.

Dynamisches Routing? Ohje, das weiss er bestimmt auch.
 

wenf

Hacker
danke für die lorbeeren

ich hoffe du hast mir nicht zu viel zugetraut

also mal sehen
a soizburga
bin a tennengauer

also dynamisches routing ...
so eine art fallback bei defekter hauptleitung
vermutlich ohne userinteraktion...

Router, Proxy mit SuSE ist kein Problem


Der "Proxy" hängt mit einer Netzwerkkarte an einem Router (von meinem Provider), welcher sich mit DialOnDemand zu meinem Provider connected.

das ist gut, dann brauchst du dich nicht um ppoe oder so etwas kümmern

Wenn diese Verbindung (kommt manchmal vor) gestört ist, habe ich die Möglichkeit über ein ISDN-Modem (ippp0 bis ippp2) drei verschiedene Verbindungen zu nutzen.

aha AONLINE ? *gg*
was hast du da für eine Hardware ?
3 Karten oder eine kompikarte ?

wechselt dein Server die verbindung schon automatisch ?

hast du in richtung deines Routers immer die gleiche IP ?

YAST kannst du da vergessen
da mußt du selbst Hand anlegen
alles was über 2 Interfaces geht kann SuSEFirewall und Yast nicht

do miassma söba hond onlegn
 
OP
SD582

SD582

Member
Hallo Tennengauer :)

Soizburga bin i kana, eher a Mattseer :)

Gut, also die Netzwerkkarte zur "bösen Seite" 8) hat eine fixe IP.
Die drei ISDN Connections gehen alle über ein USB-ISDN Modem (Fritz X USB). Ich habe nur drei getrennte ipppx angelegt, weil mir das irgendwie logisch erschien. Jede ipppx für einen Provider mit den entsprechenden Daten.

Das mit dem dynamischen routing ist vielleicht nicht sooooo wichtig.
Wenn ich squid zum laufen bringe (dazu gibt es ein anderes Posting von mir), sollte ich ohne Veränderung des Routings zumindest per http über den Proxy rauskommen, oder? So hatte ich das auch unter XP - also nur eingeschränkter Zugang über die Notconnection.

Die Firewall wollte ich schon einmal zu Fuß konfigurieren - per iptables. Allerdings bin ich an den sehr langen Namen der Netzwerkkarten gescheitert. Das löste Fehlermeldungen aus.
eth0 und eth1 hätte iptables gefressen, aber das ging dann nicht.
SuSE verpasst den Netzwerkkarten anscheinend Namen in der Art eth-id-00:0c:6e:74:c0:5b und das ist anscheinend für iptables zu lang.

Die Verbindung wird nicht automatisch gewechselt. Die Notconnection wird bei Bedarf über einen Button auf unserer lokalen Startseite per PHP aufgebaut. Wie ich das genau mache - da muß ich noch etwas daran arbeiten :)
Unter XP habe ich das mit Hilfe von Hamster gemacht (ein guter Mail und News Server den ich jetzt mit sendmail/fetchmail/procmail teilweise nachbilde).

Soweit klar?

Gruß
Franz
 

wenf

Hacker
SD582 schrieb:
Gut, also die Netzwerkkarte zur "bösen Seite" 8) hat eine fixe IP.
gefällt mir schon mal gut
SD582 schrieb:
Die drei ISDN Connections gehen alle über ein USB-ISDN Modem (Fritz X USB).
kenn ich nicht aber wenns funst - suppi
SD582 schrieb:
Ich habe nur drei getrennte ipppx angelegt, weil mir das irgendwie logisch erschien. Jede ipppx für einen Provider mit den entsprechenden Daten.
perfekt
SD582 schrieb:
Das mit dem dynamischen routing ist vielleicht nicht sooooo wichtig.
Doch
denn alle datenpakete an "Extern" sendet linux über das eingetragene gateway
SD582 schrieb:
Wenn ich squid zum laufen bringe (dazu gibt es ein anderes Posting von mir), sollte ich ohne Veränderung des Routings zumindest per http über den Proxy rauskommen, oder?
nö eben wegen der default-route
SD582 schrieb:
So hatte ich das auch unter XP - also nur eingeschränkter Zugang über die Notconnection.
ok verstehe nun was du hattest...
SD582 schrieb:
Die Firewall wollte ich schon einmal zu Fuß konfigurieren - per iptables. Allerdings bin ich an den sehr langen Namen der Netzwerkkarten gescheitert. Das löste Fehlermeldungen aus.
eth0 und eth1 hätte iptables gefressen, aber das ging dann nicht.
SuSE verpasst den Netzwerkkarten anscheinend Namen in der Art eth-id-00:0c:6e:74:c0:5b und das ist anscheinend für iptables zu lang..
eth0 und eth1 funktionieren schon - auch mit SuSE 9.1
SD582 schrieb:
Die Verbindung wird nicht automatisch gewechselt. Die Notconnection wird bei Bedarf über einen Button auf unserer lokalen Startseite per PHP aufgebaut. Wie ich das genau mache - da muß ich noch etwas daran arbeiten :)
ist das so gewünscht, oder ist das aus einer Notkrücke entstanden ?

ich würde folgendes vorschlagen
Code:
LAN-------SQUIDSERV---------GATEWAY-------INTEWRNET
           |  |  |
           ISDN1-3
alle rechner im Lan verwenden den SQUIDSERVER als PROXY und als GATEWAY (die Firewall + Routing funktion basteln wir noch später dazu)

Am SQUIDSERV lassen wir einen Daemon laufen (natürlich auch selbst erstllt)
welcher im 30sec. takt 3 Rechner im Internet anpingt (2 Nameserver deines Providers, und einen anderen Rechner welcher beinahe immer online ist (google.at oder so etwas))
wenn alle 3 Rechner nicht verfügbar sind, dann ist internet in der oben gezeigten konstellation tot...
dieser daemon versucht nun die verbindung über isdn1 dann isdn2 und 3 herzustellen, ändert die default-route (über das aktive interface)
ändert die Firrewall für das andere interface
dann eine Inforamtions-Mail an den Admin - um darüber informiert zu werden.

das problem was ich derzeit bei dieser konstellation sehe, ist das zurückwechseln an den "original" internetzugang

dass glaube ich müßte dann manuell erfolgen

oder willst du das anders machen ?
 
OP
SD582

SD582

Member
Servus wenf

Eines gefällt mir an Deinem Vorschlag nicht ganz:
Durch dieses ständige Ping wird die Internetverbindung den ganzen Tag aufrechterhalten, auch wenn sie niemand braucht.

Nö, das mit manuellem Connect der Notverbindung nur bei wirklichem Bedarf und nach Gewissenerforschung :D möchte ich schon wieder so machen.
Die Notverbindung kostet nämlich auf alle Fälle zusätzlich - wenn auch nicht viel, aber wenn's nicht wirklich wichtig ist, sollte man hier sparen.

Gruß
Franz
 

wenf

Hacker
ok - da muß ich dir recht geben

wenn du dann auf deiner Seite auf den knopf drückst, dann soll er den Inernet-Zufang auf ISDN1 starten ...

dann kann dieses script ja auch deine default-route löschen, eine andere Firewall laden und fertig ? -

oder habe ich jetzt etwas übersehen ?
 
OP
SD582

SD582

Member
Hi wenf

Das könnte ganz gut hinkommen so, ja. Scheint ja relativ einfach zu werden :)

Gruß
Franz
 

wenf

Hacker
:lol:
genau
am besten baust du ein script, welches die verbindung mit isdn aufbaut, welches du dann "hinter" deinen Button legst.

dann schreiben wir zu diesem script noch die routen löschung (vor dem start)
und die firewall-änderung nach dem start dazu
 
OP
SD582

SD582

Member
Servus

Also, ich habe inzwischen ein script gebastelt, welches aus PHP heraus aufgerufen wird und je nach Parameter eine von drei möglichen ipppx connected, disconnected oder den Status abfragt.

Dann habe ich nochmal mit diesem http://www.64-bit.de/dokumentationen/netzwerk/f/002/DE-Mailserver-HOWTO-7.html#ss7.3 Firewallscript Versuche angestellt. Die Zeile mit der Weiterleitung an squid habe ich auskommentiert und den Rest wo nötig angepasst.
Soweit ich sehen konnte geht da zwar etwas raus (auf meiner Standardconnection) aber es kommt anscheinend zu wenig zurück. Der Browser auf einem Client meint, er hätte Verbindung zur angeforderten Seite gehabt aber es wäre ein Timeout aufgetreten. Daher denke ich, da fehlen noch ein paar Regeln.

@wenf - kannst du mir da eine Schubs geben?

Meine squid Konfiguration quählt mich auch noch, aber die hat noch etwas Zeit :) Alles auf einmal geht nunmal nicht :roll:

Gruß
Franz
 

Bonsai

Advanced Hacker
Wenf mag ja gut sein, aber er ist nicht Gott und benutzt meines Wissens auch sehr ungern Kristallkugeln :) Wenn Du ihm Deine Konfiguration mal zeigst, kann er Verstehen, was nicht geht und muss nicht raten.
 
OP
SD582

SD582

Member
Hi

Also, ich weiß nicht recht, was ich noch alles an Konfiguration posten sollte. Das Firewallscript, welches ich probiert habe entspricht dem oben genannten Link. Die Änderungen sind ganz am Anfang:

NETINT="192.168.0.0/24"
# Devices
DEVINT="eth0"
DEVEXT="eth1"

und die Zeile mit der Weiterleitung von Port 80 an squid

# ... leitet alle Port 80- Anfragen an Squid
# $FW -A PREROUTING -t nat -i $DEVINT -p tcp --dport http -j REDIRECT --to-port 3128

Die exakte Fehlermeldung von Conqueror am Client habe ich momentan nicht parat. Wenn sie wirklich wichtig ist, wiederhole ich den Test.

Sind Inhalte irgendwelcher Logfiles interessant? Wenn ja, von welchen Files?

Der Gateway-Rechner hat die IP-Adresse intern (eth0) 192.168.0.1 und zum BussinesAccess-Router (eth1) 192.168.1.5.
Der Client auf dem ich mit Conqueror getestet habe hat die IP 192.168.0.7

Fehlt noch etwas?

Gruß
Franz
 

Bonsai

Advanced Hacker
$FW -A PREROUTING -t nat -i $DEVINT -p tcp --dport http -j REDIRECT --to-port 3128

Braucht squid nicht ALLE Port 80 Verbindungen?
Nur eine Idee. Ich bin in dem Bereich noch nicht wirklich fit.

Request kommt vom Client zum Router. Der Routet zum Proxy. Proxy geht für Client ins Netz und will die Site laden.

Bis hier alles OK

Paket vom Server kommt zurück und erreicht den Router, bleibt aber da hängen, weil der Router keine Regel hat um das wieder dem Proxy zu geben :?:

Wenf zu Hülf :!: :wink:

Testen kann nicht schaden oder?
$FW -A PREROUTING -t nat -i $DEVEXT -p tcp --dport http -j REDIRECT --to-port 3128

Jetzt müsste der squid das paket erhalten?
 

wenf

Hacker
diese regel klappt sicher (verwende ich derzeit selbst)

$IPTABLES -t nat -A PREROUTING -i $INTIF -p TCP --sport $p_high --dport 80 -j DNAT --to-destination ${SQUIDSERVER}:3128

aber squid muß nun noch so konfiguriert werden, dass squid auch hidden proxy bedienen kann

sonst sollte es gehen
obwohl mir

$FW -P OUTPUT ACCEPT
nicht gefällt

EDIT
REDIRECT --to-port 3128 klappte bei mit nicht zuverlässig
 
OP
SD582

SD582

Member
Servus

Haaaalt! :)

Lasst squid mal aussen vor! Ich möchte mit Port 80 auf alle Fälle direkt durch. Also einfach nur mit masquerade durch, so wie alle anderen Ports auch. Squid kommt später wahlweise als cachender Proxy dazu. Der wird aber dann von den Clients absichtlich und geziehlt auf Port 8080 angesprochen (wieso eigentlich immer diese komischen 3128 - jeder HTTP-Proxy den ich bisher kennengelernt habe hört auf 8080 und nicht auf 3128).

Also, squid läuft nicht! (oder wenn er läuft solls derzeit keinen interessieren)
Die Antwortpakete müssen also wieder zurück von eth1 zu eth0 und weiter zum entsprechenden Client.
Das sollte grundsätzlich ja durch diese Zeilen erledigt sein?

# Pakete die schon zu einer Verbindung gehören erlauben
$FW -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$FW -A FORWARD -i $DEVEXT -o $DEVINT -m state --state ESTABLISHED,RELATED -j ACCEPT

Fehlt da vielleicht ein Gegenstück zu dieser hier?

# Masquerade
$FW -t nat -A POSTROUTING -o $DEVEXT -j MASQUERADE

Gibt es dazu irgendwo eine gute deutsche (ich quäle mich etwas mit englisch) Doku?

Gruß
Franz
 
OP
SD582

SD582

Member
Hi

Ich probiere gerade wieder mein Firewallscript hinzubringen.

Also der Browser am Client sagt:
Beim Laden von http://www.google.com/ ist folgender Fehler aufgetreten:
Zeitüberschreitung auf dem Server
Verbindung bestand zu www.google.com an Port 80

Jetzt habe ich testweise das $FW -P FORWARD DROP auf ACCEPT geändert. Ist mir schon klar, daß damit alles reinkann - ist ja nur zum Test.

Jedenfalls funktioniert dann erwartungsgemäß alles.
Das heißt, daß mir auf alle Fälle irgendwelche Regeln für FORWARD fehlen.
Kann mir da einer einen Tip geben?
Hier nochmal mein aktuelles Script:

#!/bin/sh

# Iptables
FW="/usr/sbin/iptables"

# Netz
NETINT="192.168.0.0/24"

# Devices
DEVINT="eth0"
DEVEXT="eth1"

# IP- Forwarding aktivieren
echo 1 > /proc/sys/net/ipv4/ip_forward

# vorhandene Regeln löschen
$FW -F
$FW -X
$FW -t nat -F

# Defaults
$FW -P INPUT DROP
$FW -P FORWARD ACCEPT
$FW -P OUTPUT ACCEPT

# Pakete vom lokalen Rechner erlauben (u.a. wg. Mail)
$FW -A INPUT -s 127.0.0.1 -i lo -p tcp -j ACCEPT

# DNS- Anfragen
$FW -A INPUT -i $DEVEXT -p udp --sport domain -j ACCEPT
$FW -A FORWARD -p tcp --dport domain -j ACCEPT
$FW -A FORWARD -p udp --dport domain -j ACCEPT

# Ping
$FW -A INPUT -s $NETINT -i $DEVINT -p icmp -j ACCEPT
$FW -A FORWARD -s $NETINT -i $DEVINT -p icmp -j ACCEPT
$FW -A FORWARD -p icmp -j ACCEPT

# Masquerade
$FW -A POSTROUTING -t nat -o $DEVEXT -j MASQUERADE

# Pakete die schon zu einer Verbindung gehören erlauben
$FW -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$FW -A FORWARD -i $DEVEXT -o $DEVINT -m state --state ESTABLISHED,RELATED -j ACCEPT

# ... leitet alle Port 80- Anfragen an Squid
# $FW -A PREROUTING -t nat -i $DEVINT -p tcp --dport http -j REDIRECT --to-port 3128

# SSH
$FW -A INPUT -p tcp --dport ssh -j ACCEPT
$FW -A FORWARD -o $DEVEXT -p tcp --dport ssh -j ACCEPT

# Telnet (nur vom internen Netz; wg. Passwörtern)
$FW -A INPUT -i $DEVINT -s $NETINT -p tcp --dport telnet -j ACCEPT
$FW -A INPUT -p tcp --dport telnet -j DROP
$FW -A INPUT -p udp --dport telnet -j DROP

# lokales Netz (ich erlaube alles)
$FW -A INPUT -s $NETINT -i $DEVINT -p tcp -j ACCEPT
$FW -A INPUT -s $NETINT -i $DEVINT -p udp -j ACCEPT

Gruß
Franz
 
OP
SD582

SD582

Member
Hi Leute

Ich hab's :D

Ich dachte immer es fehlt irgendetwas für den Rückweg, von draußen rein zum Client.
Gerade umgekehrt wars.

# nach außen wird alles geroutet
$FW -A FORWARD -s $NETINT -o $DEVEXT -j ACCEPT

Natürlich ist das noch auszufeilen und sinnvoll einzuschränken, aber damit ist einmal klar was fehlte.
Ich dachte eigentlich, das macht schon die MASQUERADE - Zeile implizit mit.

Ok, ich glaube, jetzt schaffe ich auch den Wechsel zwischen eth1, ippp0, ippp1 und ippp2.
Das Ergebnis werde ich dann auf meine Website stellen und den Link hier posten.

Gruß
Franz
 
Oben