Keepcon: Unterschied zwischen den Versionen

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(39 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
* Automatisches prüfen und Aufrechterhalten von Internet-Verbindungen<br>
keepcon für Linux prüft und sichert Internetverbindungen via DSL oder Kabel.
 
* Automatisches Prüfen und Aufrechterhalten von Internet-Verbindungen<br>
* Wechsel des Providers im Fehlerfall und Start der entsprechenden Firewall<br>
* Wechsel des Providers im Fehlerfall und Start der entsprechenden Firewall<br>
* Publizieren der eigenen IP ins InterNet<br>
* Publizieren der eigenen IP ins InterNet<br>
* Ermitteln der IPs anderer Maschinen, und Eintragung in /etc/hosts<br>
* Ermitteln der IPs anderer Maschinen, und Eintragung in /etc/hosts<br>
* Patch, danach Upload von html-Templates um die eigene IP zu publizieren<br>
* Patch, danach Upload von html-Templates um die eigene IP zu publizieren<br>
* Linux-Dämon für SuSE Linux 8.2,9.0,9.1,10 Freeware mit Quelltexten in Kylix 3
* Eigene IP via DynDNS publizieren<br>
* Linux-Dämon für SuSE Linux >=9.0 Freeware mit Quelltexten in Freepascal
* entworfen von Andreas Filsinger, IT-Freiberufler  
* entworfen von Andreas Filsinger, IT-Freiberufler  
 
* zum Download: https://cargobay.orgamon.org/keepcon.html
* Quelltext in [[Freepascal]] : http://orgamon.de/websvn/filedetails.php?repname=OrgaMon&path=/keepcon/keepcon.pas<br>
== Konzepte ==
== Konzepte ==


Zeile 12: Zeile 16:


* linux-Anwendung die auf dem Router selbst läuft.
* linux-Anwendung die auf dem Router selbst läuft.
* Programierung mit Open edition von Kylix sollte möglich sein
* Compilierung mit Freepascal
* Konsolenanwendung die als dämon laufen kann.
* Konsolenanwendung die als dämon laufen kann.
* ersetzt langfristig RouteIP, es soll alles der linux-Server aus eigener Kraft machen könnenn! (Seit Rev. 1.009 erfüllt)
* ersetzt langfristig RouteIP, es soll alles der linux-Server aus eigener Kraft machen können.(Seit Rev. 1.009 erfüllt)
<br>
<br>
* keepcon macht massiven Gebrauch der Commandozeile, es ruft: cinternet, ftp, whoami, ifconfig.
* keepcon macht massiven Gebrauch der Kommandozeile, es ruft: cinternet, ftp, whoami, ifconfig.


'''Verbindungs-Sicherung'''
'''Verbindungs-Sicherung'''


    * passives prüfen, ob im Moment eine Verbindung nach draussen besteht
* passives Prüfen, ob im Moment eine Verbindung nach draussen besteht (passives Erkennen = ohne traffic, ob im Moment TDSL oder/und ISDN aktiv ist.) (ISDN up? TDSL up?) via ifstatus
      (passives Erkennen=ohne traffic, ob im Moment TDSL oder/und ISDN aktiv ist.)
* aktives Prüfen der jeweiligen Verbindung: ping auf feste IP (TCP da?!)
      (ISDN up? TDSL up?) via cinternet, das heist was denkt cinternet, welche
* versuch der Namensauflösung via DNS (Namensauflösung da?!)
      Verbindung im Moment offen ist!
* Sicherstellen (durch künstlichen traffic) das eine Wählverbindung bestehenbleibt. (das sonst der provider auflegt, wir legen durch eintrag von "0" eh niemals auf) Ev. traffic detectieren, wenn innerhalb einer gewissen Zeit delta=0, dann einen ping machen, oder ein POP Konto anfragen oder irgendwas ... (Ev. auch etwas mit keiner Antwort, da ja nur die Anfrage ausreicht!=) Traffic könnte man im ifconfig erkennen.
    * aktives pr?er jeweiligen Verbindung:
* down einer Verbindung erkennen, und
      * ping auf feste IP (TCP da?!)
*# Sicherstellen, dass beim Abbruch von TDSL, gleich wieder TDSL angewählt wird.
      * versuch der Namensaufl?g via DNS (Namensaufl?g da?!)
*# misslingt das mehrfach, die Ersatzverbindung aufbauen. Diese hat jedoch nur eine festlegbare Haltbarkeit. Nach dieser Zeit (ev. traffic beobachten, um einen ruhigen Moment abzuwarten) wird wieder versucht die Hauptverbindung wiederherzustellen.
    * Sicherstellen (durch k?chen traffic) das einen W䨬verbindung
* starten/beenden der entsprechenden firewall, ev. kann man doch einfach dieselben Regeln immer auf beide interfaces anwenden, es ist doch nicht notwendig ein spezielles firewall script anzuwenden.
      bestehenbleibt. (das sonst der provider auflegt, wir legen durch eintrag
* wiederkehrende verfügbarkeitsprüfung der Hauptverbindung während die Ausfallverbindunf ihren Dienst tut. (ist sowas überhaupt möglich, werden da nicht die nameservereinträge zerstört?) (ich glaube nicht!)
      von "0" eh niemals auf)
      Ev. traffic detectieren, wenn inerhalb einer gewissen Zeit delta=0, dann
      einen ping machen, oder ein POP Konto anfragen oder irgendwas ...
      (Ev. auch etwas mit keiner Antwort, da ja nur die Anfrage ausreicht!=)
      Traffic könnte man im ifconfig erkennen.
    * down einer Verbindung erkennen, und
      a) Sicherstellen, dass beim Abbruch von TDSL, gleich wieder TDSL angew䨬t
          wird.
      b) misslingt das mehrfach, die Ersatzverbindung aufbauen. Diese hat jedoch
          nur eine festlegbare Haltbarkeit. Nach dieser Zeit (ev. traffic beobachten,
          um einen ruhigen Moment abzuwarten) wird wieder versucht die Hauptverbindung
          wiederherzustellen.
    * starten/beenden der entsprechenden firewall, ev. kann man doch einfach
      dieselben Regeln immer auf beide interfaces anwenden, es ist doch nicht
      notwendig ein spezielles firewall script anzuwenden.
    * wieder-kehrende verf?eitspr?der Hauptverbindung w䨲end die
      Ausfallverbindunf ihren Dienst tut. (ist sowas ?upt m?ch, werden
      da nicht die nameservereintr䧥 zerst?) (ich glaube nicht!)


'''(publish dienst) eigenen Namen ins Internet ?agen'''
'''(publish dienst) eigenen Namen ins Internet Übertragen'''


     * hinausschreiben der eigenen aktuellen IP-Adresse erhalten vom provider nach
     * hinausschreiben der eigenen aktuellen IP-Adresse erhalten vom provider nach
Zeile 67: Zeile 53:


     erstellen sie ein Template, das anstelle der IP Adresse die Zeichenfolge
     erstellen sie ein Template, das anstelle der IP Adresse die Zeichenfolge
     ~IP~ enth䬴.
     ~IP~ enthält.


     (keepcon quelle in der anlage)
     (keepcon quelle in der anlage)
Zeile 73: Zeile 59:
'''Tipp für Hostnamen'''
'''Tipp für Hostnamen'''


     wenn m?ch die IP Adresse des Servers angeben, dann kann auch bei DNS-
     wenn möglich die IP Adresse des Servers angeben, dann kann auch bei DNS-
     Ausfall oder Misskonfiguration die eigene IP hochgeladen werden. Ev. k?e
     Ausfall oder Misskonfiguration die eigene IP hochgeladen werden. Ev. könnte
     man eine lokale Datenhaltung der zuletzt ermittelten IP verwenden, damit
     man eine lokale Datenhaltung der zuletzt ermittelten IP verwenden, damit
     bei einem Fail der Namensaufl?g die zuletzt bekannte IP verwendet werden
     bei einem Fail der Namensauflösung die zuletzt bekannte IP verwendet werden
     kann.
     kann.


== Keepcon Begriffe ==
== Keepcon Begriffe ==


* '''Fail''': ein keepcon test gibt einen negativen Ergebniswert zur?anic: keepcon weiss nicht weiter. der zugesicherte Dauer-Betrieb kann nicht aufrecht erhalten werden.
* '''Fail''': ein keepcon test gibt einen negativen Ergebniswert zurück an ic: keepcon weiss nicht weiter. der zugesicherte Dauer-Betrieb kann nicht aufrecht erhalten werden.
* '''Zwangs-Trennung''': Ein Kappen der Verbindung ausgehend vom Provider, motiviert durch das Erreichen einer maxmalen Verbindungszeit (z.B. 24h) Silence-Trennung: Ein Kappen der Verbindung ausgehend vom Provider, motiviert durch das Erreichen einer Verbindungszeit ohne jeglichen traffic.
* '''Zwangs-Trennung''': Ein Kappen der Verbindung ausgehend vom Provider, motiviert durch das Erreichen einer maxmalen Verbindungszeit (z.B. 24h) Silence-Trennung: Ein Kappen der Verbindung ausgehend vom Provider, motiviert durch das Erreichen einer Verbindungszeit ohne jeglichen traffic.
* '''Traffic''': Datenbewegung (lesen oder schreiben) auf der Leitung zum Provider.
* '''Traffic''': Datenbewegung (lesen oder schreiben) auf der Leitung zum Provider.
Zeile 91: Zeile 77:
* ON DEMAND "AUS"
* ON DEMAND "AUS"


Bei allen Verbindungen darf "ON DEMAND" nicht aktiviert werden. Da sonst das Linux System selbst die Kontrolle ?en Verbindungsaufbau zur "Haupt"-Verbindung ?mmt, was im St?gsfall die "falsche" VErbindung ist.
Bei allen Verbindungen darf "ON DEMAND" nicht aktiviert werden. Da sonst das Linux System selbst die Kontrolle über den Verbindungsaufbau zur "Haupt"-Verbindung übernimmt, was im Störungsfall die "falsche" Verbindung ist.


* Device Aktivierung "manuell"
* Device Aktivierung "manuell"


nicht schon beim boot die Verbindung aufbauen lassen! keepcon will hier die volle KOntrolle ?hmen und selbst bestimmen wann und wer aufgebaut werden soll.
nicht schon beim boot die Verbindung aufbauen lassen! keepcon will hier die volle Kontrolle übernehmen und selbst bestimmen wann und wer aufgebaut werden soll.


* Interface aktivierung "on boot"
* Interface aktivierung "on boot"
Zeile 117: Zeile 103:
  rckeepcon start
  rckeepcon start


Der ganze Rest an Dateien sind nur die Quelltexte des Programmes und sind zum Ablauf nicht notwendig! Wer Indy hat, kann mit der Open Editon von Kylix 3 dieses Projekt selbst compilieren / modifizieren.
keepcon.pas ist der Quelltexte des Programmes und ist zum Ablauf nicht notwendig!


FehlerDiagnose (wenn was nicht geht)
=== Installations-Script ===


  nachsehen, ob keepcon gestartet ist
<code>
  #/
fpc keepcon.pas
cp keepcon /root/keepcon
chmod 0755 /root/keepcon
cp etc.keepcon.conf /etc/keepcon.conf
chmod 0644 /etc/keepcon.conf
cp init.d.keepcon /etc/init.d/keepcon
chmod 0755 /etc/init.d/keepcon
cp and-firewall /etc/and-firewall
chmod 0755 /etc/and-firewall
ln -s /etc/init.d/keepcon /usr/sbin/rckeepcon
chkconfig --add keepcon
</code>


  ps x | grep keepcon
=== /etc/keepcon.conf (DSL) ===
 
meldungen, die keepcon loged auf den Bildschirm ausgeben:
 
  cat /var/log/messages | grep keepcon


* System-Bereich: Geben Sie hier an, wie sich Ihre Maschine im Internet bekannt macht.
* System-Bereich: Geben Sie hier an, wie sich Ihre Maschine im Internet bekannt macht.
* Primary-Bereich: Geben Sie hier die Hauptw䨬verbindung an.
* Primary-Bereich: Geben Sie hier die Hauptwählverbindung an.
* Failover-Bereich: Geben Sie hier Ausfallverbindungen an.
* Failover-Bereich: Geben Sie hier Ausfallverbindungen an.
* Remote-Bereich: Geben Sie hier die Namen 'befreundeter' Server an, die auch via keepcon im Netz sind.
* Remote-Bereich: Geben Sie hier die Namen 'befreundeter' Server an, die auch via keepcon im Netz sind.
Zeile 140: Zeile 135:
  # [System]
  # [System]
  # publish=Der Hostname unter dem Ihr System im Internet seine IP Adresse publiziert
  # publish=Der Hostname unter dem Ihr System im Internet seine IP Adresse publiziert
  # ftp_server=ftp-Hostname f? Public Upload
  # ftp_server=ftp-Hostname für Public Upload
  # ftp_user=ftp-Benutzer f? Public Upload
  # ftp_user=ftp-Benutzer für Public Upload
  # ftp_password=ftp-Kennwort f? Public Upload
  # ftp_password=ftp-Kennwort für Public Upload
  # ftp_path=ftp-Zielverzeichnis f? Public Upload
  # ftp_path=ftp-Zielverzeichnis für Public Upload
  #
  # Ping=[Host {"," Host}]
  [System]
  [System]
Ping=www.t-com.de
  publish=WR32
  publish=WR32
  ftp_server=www.raib.de
  ftp_server=www.raib.de
Zeile 151: Zeile 147:
  ftp_password=<YourPwd>
  ftp_password=<YourPwd>
  ftp_path=/raib       
  ftp_path=/raib       
# NewRoute=NO
#
# Ist der Parameter auf "YES" gesetzt, so wird die "default" Route überwacht.
# Ist diese im Status "unconnected" da ist was faul -> Löschung
# Ust diese NICHT da im späteren Status "connected" wurd ebvergessen sie zu setzen -> route add default dsl0
#
   
   
  #
  #
  # [Primary]
  # [Primary]
  # provider=Geben Sie hier Ihren Standard-Provider an. Solange es keine St?          rungen gibt, wird dieser Provider benutzt.
  # provider=Geben Sie hier Ihren Standard-Provider an. Solange es keine Störungen gibt, wird dieser Provider benutzt.
  #
  #
  # Wenn Sie die Namen aller Provider ermitteln wollen, starten Sie keepcon  
  # Wenn Sie die Namen aller Provider ermitteln wollen, starten Sie keepcon  
Zeile 164: Zeile 167:
  #
  #
  # [FailOver]
  # [FailOver]
  # provider1=Geben Sie hier Ihren bevorzugten Provider im St?ll an.  
  # provider1=Geben Sie hier Ihren bevorzugten Provider an.  
  # provider2=
  # provider2=
  # ..
  # ..
Zeile 179: Zeile 182:
  #
  #
  # [Remote]
  # [Remote]
  # host1=remote Hostnamen, deren IP Adresse keepcon ermitteln soll. keepcon tr䧴 den Namen+IP
  # host1=remote Hostnamen, deren IP Adresse keepcon ermitteln soll. keepcon trägt den Namen+IP
         in /etc/hosts ein. L䵦t ein WINS Server sind diese Namen im ganze WIn32 Netz sichtbar.
         in /etc/hosts ein. Lässt ein WINS Server sind diese Namen im ganze WIn32 Netz sichtbar.
  # host2=
  # host2=
  # ...
  # ...
Zeile 197: Zeile 200:
  [Templates]
  [Templates]
  1=
  1=
=== /etc/keepcon.conf (Vigor) ===
keepcon arbeitet nicht nur mit lokal betriebenen WAN zugängen, sondern auch mit dem Vigor 2920 der Firma Draytek zusammen. Andere Router / Switches können durch das offene System hinzugenommen werden. In meinem Falle ist "WAN 2" eine wechselnde also dynamische IP Adresse, ich nutze keepcon nur zur Leitungsüberwachung und für das Update der DynDNS Adresse, da im Vigor 2920 Firmware Rev. 3.3.7 ein Bug ist, der die DynDNS aktualisierung viel zu oft und unnötig durchführt. Hier der entsprechende Setup (Erfordert keepcon 1.035).
[System]
Ping=www.avm.de,www.t-online.de,www.schlund.de
DynDNS=orgamon.dyndns.org
DynDNS_user=AndreasFilsinger
DynDNS_password=*********
[Primary]
provider=WAN 2@vigor.sh
[FailOver]
provider1=WAN 1@vigor.sh
provider2=WAN 3@vigor.sh
=== vigor.sh ===
Als Transport-Interface ist also "vigor.sh" angegeben. Also ein "externes" Skript das den Status der verbindung (samt IP Adresse) ermittelt. Damit macht keepcon dann selbsttätig den DynDNS - Update (nur 1mal pro IP-Adresswechsel! Sollte reichen oder?).
#!/usr/bin/expect
spawn telnet -e x gateway
expect "Account:"
send "admin\r"
expect "Password: "
send "*******\r"
expect "> "
send "show status\r"
expect "> "
send "exit"
exit
=== Autostart via systemd ===
joe /etc/systemd/system/keepcon.service
#
# (c) OrgaMon.org, Andreas Filsinger
#
# keepcon checks and restart you internet connection
#
[Unit]
Description=Permanent Internet Connection
After=multi-user.target
[Service]
ExecStart=/root/keepcon -a
StandardOutput=null
StandardError=null
[Install]
WantedBy=multi-user.target
#
systemctl enable keepcon
systemctl start keepcon
== compilieren der Anwendung ==
* Installiere freepascal.2.2.0.rpm für deine Plattform
* Compiliere keepcon
bash# fpc keepcon.pas
== Fehlerdiagnose ==
FehlerDiagnose (wenn was nicht geht)
nachsehen, ob keepcon gestartet ist
  ps x | grep keepcon
meldungen, die keepcon loged auf den Bildschirm ausgeben:
  cat /var/log/messages | grep keepcon


== Diagnose ==
== Diagnose ==
Zeile 207: Zeile 292:


  tail -2000 /var/log/messages | grep keepcon
  tail -2000 /var/log/messages | grep keepcon
=== typisches Firewall Skript ===
#!/bin/bash
#
#
DEV_LOC=eth0
DEV_EXT=$2
# Kernelmodule laden
. /etc/rc.status
rc_reset
echo -n "Wolff firewall Rev. 1.031 device $2"
rc_status -v
echo "1" > /proc/sys/net/ipv4/conf/$DEV_LOC/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/$DEV_LOC/accept_redirects
echo "0" > /proc/sys/net/ipv4/conf/$DEV_LOC/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/$DEV_LOC/bootp_relay
echo "1" > /proc/sys/net/ipv4/conf/$DEV_LOC/log_martians
echo "1" > /proc/sys/net/ipv4/conf/$DEV_EXT/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/$DEV_EXT/accept_redirects
echo "0" > /proc/sys/net/ipv4/conf/$DEV_EXT/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/$DEV_EXT/bootp_relay
echo "1" > /proc/sys/net/ipv4/conf/$DEV_EXT/log_martians
# done
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo "1" > /proc/sys/net/ipv4/ip_forward
# Alle Regelketten, die sich noch im Speicher befinden könnten, löschen
iptables -F
iptables -t mangle -F
iptables -t nat -F
iptables -X
# Kernelmodule masq und forwarding aktivieren (dyn. IP vom Provider)
iptables -t nat -A POSTROUTING -o $DEV_EXT -j MASQUERADE
# WIEN VNC
iptables -t nat -A PREROUTING -i $DEV_EXT -p tcp --dport 5900 -j DNAT --to 192.168.100.90:5900
# alle externen eMail Ports 25 blocken
iptables -t nat -A PREROUTING -i $DEV_LOC -p tcp --dport 2525 -j DNAT --to-destination :25
iptables -A INPUT -i eth0 ! -d 192.168.100.184 -p tcp --dport 25 -j DROP
rc_exit


== Links zu weiteren Keepcon Themen ==
== Links zu weiteren Keepcon Themen ==


[[Linux.iptables]]<br>
[[DMZ]]<br>
[[keepcon.Templates|HTML Vorlagen]]<br>
[[keepcon.Templates|HTML Vorlagen]]<br>
[[keepcon.todo|to-do]]<br>
[[keepcon.todo|to-do]]<br>
[[keepcon.t-online|FTP-Platz bei t-online]]<br>
[[keepcon.t-online|FTP-Platz bei t-online]]<br>
[[keepcon.win32|Keepcon unter Win32]]
== Ausblick ==
* Neu: im "Download": Prüfung auch des eigenen Publish Namen, wenn nicht aktuell -> neu uploaden! (Cool!)
* Neu: Laufzeitmessung der aktuellen Verbindung.
* Neu: Wunschzeit für eine routinegemässe Zwangstrennung angebbar. Dadurch kommen wir der Zwangstrennung zuvor und die Offline - Zeit verkürzt sich.

Aktuelle Version vom 6. November 2019, 13:01 Uhr

keepcon für Linux prüft und sichert Internetverbindungen via DSL oder Kabel.

Konzepte

Anforderungen waren:

  • linux-Anwendung die auf dem Router selbst läuft.
  • Compilierung mit Freepascal
  • Konsolenanwendung die als dämon laufen kann.
  • ersetzt langfristig RouteIP, es soll alles der linux-Server aus eigener Kraft machen können.(Seit Rev. 1.009 erfüllt)


  • keepcon macht massiven Gebrauch der Kommandozeile, es ruft: cinternet, ftp, whoami, ifconfig.

Verbindungs-Sicherung

  • passives Prüfen, ob im Moment eine Verbindung nach draussen besteht (passives Erkennen = ohne traffic, ob im Moment TDSL oder/und ISDN aktiv ist.) (ISDN up? TDSL up?) via ifstatus
  • aktives Prüfen der jeweiligen Verbindung: ping auf feste IP (TCP da?!)
  • versuch der Namensauflösung via DNS (Namensauflösung da?!)
  • Sicherstellen (durch künstlichen traffic) das eine Wählverbindung bestehenbleibt. (das sonst der provider auflegt, wir legen durch eintrag von "0" eh niemals auf) Ev. traffic detectieren, wenn innerhalb einer gewissen Zeit delta=0, dann einen ping machen, oder ein POP Konto anfragen oder irgendwas ... (Ev. auch etwas mit keiner Antwort, da ja nur die Anfrage ausreicht!=) Traffic könnte man im ifconfig erkennen.
  • down einer Verbindung erkennen, und
    1. Sicherstellen, dass beim Abbruch von TDSL, gleich wieder TDSL angewählt wird.
    2. misslingt das mehrfach, die Ersatzverbindung aufbauen. Diese hat jedoch nur eine festlegbare Haltbarkeit. Nach dieser Zeit (ev. traffic beobachten, um einen ruhigen Moment abzuwarten) wird wieder versucht die Hauptverbindung wiederherzustellen.
  • starten/beenden der entsprechenden firewall, ev. kann man doch einfach dieselben Regeln immer auf beide interfaces anwenden, es ist doch nicht notwendig ein spezielles firewall script anzuwenden.
  • wiederkehrende verfügbarkeitsprüfung der Hauptverbindung während die Ausfallverbindunf ihren Dienst tut. (ist sowas überhaupt möglich, werden da nicht die nameservereinträge zerstört?) (ich glaube nicht!)

(publish dienst) eigenen Namen ins Internet Übertragen

   * hinausschreiben der eigenen aktuellen IP-Adresse erhalten vom provider nach
     www.raib.de/<<hostname>>.html. Dazu werden jetzt nicht mehr templates benutzt,
     sondern das programm kann aus eigener Kraft die entsprechende html datei erzeugen,
     und hochladen.

(friends) fremde Namen, und deren IP aus dem Internet laden

   und so andere Remote-System dem eigenen System bekannt machen. Diese Systeme
   werden mit ihrem hostnamen und der IP automatisch in /etc/hosts eingetragen.
   * auslesen aus web und eintragen nach /etc/hosts von angebbaren domain-namen
     von www.raib.de/<<hostname>>.html. Vozugsweise im ip6 format
     ::ffff:192.168.115.2

(templates) links im Internet auf aktuelle IP patchen

   erstellen sie ein Template, das anstelle der IP Adresse die Zeichenfolge
   ~IP~ enthält.
   (keepcon quelle in der anlage)

Tipp für Hostnamen

   wenn möglich die IP Adresse des Servers angeben, dann kann auch bei DNS-
   Ausfall oder Misskonfiguration die eigene IP hochgeladen werden. Ev. könnte
   man eine lokale Datenhaltung der zuletzt ermittelten IP verwenden, damit
   bei einem Fail der Namensauflösung die zuletzt bekannte IP verwendet werden
   kann.

Keepcon Begriffe

  • Fail: ein keepcon test gibt einen negativen Ergebniswert zurück an ic: keepcon weiss nicht weiter. der zugesicherte Dauer-Betrieb kann nicht aufrecht erhalten werden.
  • Zwangs-Trennung: Ein Kappen der Verbindung ausgehend vom Provider, motiviert durch das Erreichen einer maxmalen Verbindungszeit (z.B. 24h) Silence-Trennung: Ein Kappen der Verbindung ausgehend vom Provider, motiviert durch das Erreichen einer Verbindungszeit ohne jeglichen traffic.
  • Traffic: Datenbewegung (lesen oder schreiben) auf der Leitung zum Provider.

Voraussetzungen

Für alle Provider gilt:

  • ON DEMAND "AUS"

Bei allen Verbindungen darf "ON DEMAND" nicht aktiviert werden. Da sonst das Linux System selbst die Kontrolle über den Verbindungsaufbau zur "Haupt"-Verbindung übernimmt, was im Störungsfall die "falsche" Verbindung ist.

  • Device Aktivierung "manuell"

nicht schon beim boot die Verbindung aufbauen lassen! keepcon will hier die volle Kontrolle übernehmen und selbst bestimmen wann und wer aufgebaut werden soll.

  • Interface aktivierung "on boot"

damit die Interfaces schon gesehen werden, und vorhanden sind.

Installation

Zip Datei im /root auspacken und folgende Dateien in die angegebenen Verzeichnisse kopieren sowie mit chmod die angegebenen Rechte vergeben:

Quelldatei          Zielverzeichnis           chmod
keepcon             /root/keepcon             0755
etc.keepcon.conf    /etc/keepcon.conf         0600
init.d.keepcon      /etc/init.d/keepcon       0755
and-firewall        /etc/and-firewall         0755

alle Dateien an ihren Platz kopieren, und mit den entsprechenden Rechten versehen. Zum komfortablen Start brauchen wir noch ein rc* Script:

ln -s /etc/init.d/keepcon /usr/sbin/rckeepcon
chkconfig --add keepcon
rckeepcon start

keepcon.pas ist der Quelltexte des Programmes und ist zum Ablauf nicht notwendig!

Installations-Script

#/
fpc keepcon.pas
cp keepcon /root/keepcon
chmod 0755 /root/keepcon
cp etc.keepcon.conf /etc/keepcon.conf
chmod 0644 /etc/keepcon.conf
cp init.d.keepcon /etc/init.d/keepcon
chmod 0755 /etc/init.d/keepcon
cp and-firewall /etc/and-firewall
chmod 0755 /etc/and-firewall
ln -s /etc/init.d/keepcon /usr/sbin/rckeepcon
chkconfig --add keepcon

/etc/keepcon.conf (DSL)

  • System-Bereich: Geben Sie hier an, wie sich Ihre Maschine im Internet bekannt macht.
  • Primary-Bereich: Geben Sie hier die Hauptwählverbindung an.
  • Failover-Bereich: Geben Sie hier Ausfallverbindungen an.
  • Remote-Bereich: Geben Sie hier die Namen 'befreundeter' Server an, die auch via keepcon im Netz sind.
  • Templates-Bereich: Listen Sie hier die html-Vorlagen auf, die hochgeladen werden sollen.

keepcon.ini, wie sie der Distribution beiliegt:

#
# [System]
# publish=Der Hostname unter dem Ihr System im Internet seine IP Adresse publiziert
# ftp_server=ftp-Hostname für Public Upload
# ftp_user=ftp-Benutzer für Public Upload
# ftp_password=ftp-Kennwort für Public Upload
# ftp_path=ftp-Zielverzeichnis für Public Upload
# Ping=[Host {"," Host}]
[System]
Ping=www.t-com.de
publish=WR32
ftp_server=www.raib.de
ftp_user=<YourUser>
ftp_password=<YourPwd>
ftp_path=/raib      
# NewRoute=NO
#
# Ist der Parameter auf "YES" gesetzt, so wird die "default" Route überwacht.
# Ist diese im Status "unconnected" da ist was faul -> Löschung
# Ust diese NICHT da im späteren Status "connected" wurd ebvergessen sie zu setzen -> route add default dsl0
#

#
# [Primary]
# provider=Geben Sie hier Ihren Standard-Provider an. Solange es keine Störungen gibt, wird dieser Provider benutzt.
#
# Wenn Sie die Namen aller Provider ermitteln wollen, starten Sie keepcon 
# von der Kommandozeile, die Schreibweise muss exact eingehalten werden.
#
[Primary]
provider=telekom TDSL   

#
# [FailOver]
# provider1=Geben Sie hier Ihren bevorzugten Provider an. 
# provider2=
# ..
#
# Wenn Sie die Namen aller installierten Provider ermitteln wollen, starten Sie keepcon 
# von der Kommandozeile. Die Namen stehen in der Tabelle an erster Stelle.
# Die Schreibweise muss exakt eingehalten werden.
#
[FailOver]
provider1=telekom ISDN
provider2=UMTS
provider3=WLAN  

#
# [Remote]
# host1=remote Hostnamen, deren IP Adresse keepcon ermitteln soll. keepcon trägt den Namen+IP
        in /etc/hosts ein. Lässt ein WINS Server sind diese Namen im ganze WIn32 Netz sichtbar.
# host2=
# ...
#
#
[Remote]
host1=GH14  

#
# [Templates]
# 1=/root/index.html,www.myhomepage.de,ftpuser,ftppwd,/www/htmldocs
# 2=/root/suche.php,www.myhomepage.de,ftpuser,ftppwd,/www/cgibin
# ...
#
#
[Templates]
1=

/etc/keepcon.conf (Vigor)

keepcon arbeitet nicht nur mit lokal betriebenen WAN zugängen, sondern auch mit dem Vigor 2920 der Firma Draytek zusammen. Andere Router / Switches können durch das offene System hinzugenommen werden. In meinem Falle ist "WAN 2" eine wechselnde also dynamische IP Adresse, ich nutze keepcon nur zur Leitungsüberwachung und für das Update der DynDNS Adresse, da im Vigor 2920 Firmware Rev. 3.3.7 ein Bug ist, der die DynDNS aktualisierung viel zu oft und unnötig durchführt. Hier der entsprechende Setup (Erfordert keepcon 1.035).


[System]
Ping=www.avm.de,www.t-online.de,www.schlund.de
DynDNS=orgamon.dyndns.org
DynDNS_user=AndreasFilsinger
DynDNS_password=*********

[Primary]
provider=WAN 2@vigor.sh

[FailOver]
provider1=WAN 1@vigor.sh
provider2=WAN 3@vigor.sh

vigor.sh

Als Transport-Interface ist also "vigor.sh" angegeben. Also ein "externes" Skript das den Status der verbindung (samt IP Adresse) ermittelt. Damit macht keepcon dann selbsttätig den DynDNS - Update (nur 1mal pro IP-Adresswechsel! Sollte reichen oder?).

#!/usr/bin/expect 

spawn telnet -e x gateway
expect "Account:"
send "admin\r"
expect "Password: "
send "*******\r"
expect "> "
send "show status\r"
expect "> "
send "exit"
exit

Autostart via systemd

joe /etc/systemd/system/keepcon.service


#
# (c) OrgaMon.org, Andreas Filsinger
#
# keepcon checks and restart you internet connection
#
[Unit]
Description=Permanent Internet Connection
After=multi-user.target 

[Service]
ExecStart=/root/keepcon -a
StandardOutput=null
StandardError=null

[Install]
WantedBy=multi-user.target

#
systemctl enable keepcon
systemctl start keepcon

compilieren der Anwendung

  • Installiere freepascal.2.2.0.rpm für deine Plattform
  • Compiliere keepcon
bash# fpc keepcon.pas

Fehlerdiagnose

FehlerDiagnose (wenn was nicht geht)

nachsehen, ob keepcon gestartet ist
 ps x | grep keepcon
meldungen, die keepcon loged auf den Bildschirm ausgeben:
 cat /var/log/messages | grep keepcon

Diagnose

Anzeigen, welche keepcon-Meldungen es in der letzten Zeit gab:

tail -2000 /var/log/messages | grep keepcon

Anzeigen, welche DSL Störungen beim letzten Einwahlversuch gab:

tail -2000 /var/log/messages | grep keepcon


typisches Firewall Skript

#!/bin/bash
#
#

DEV_LOC=eth0
DEV_EXT=$2

# Kernelmodule laden
. /etc/rc.status
rc_reset
echo -n "Wolff firewall Rev. 1.031 device $2"
rc_status -v

echo "1" > /proc/sys/net/ipv4/conf/$DEV_LOC/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/$DEV_LOC/accept_redirects
echo "0" > /proc/sys/net/ipv4/conf/$DEV_LOC/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/$DEV_LOC/bootp_relay
echo "1" > /proc/sys/net/ipv4/conf/$DEV_LOC/log_martians

echo "1" > /proc/sys/net/ipv4/conf/$DEV_EXT/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/$DEV_EXT/accept_redirects
echo "0" > /proc/sys/net/ipv4/conf/$DEV_EXT/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/$DEV_EXT/bootp_relay
echo "1" > /proc/sys/net/ipv4/conf/$DEV_EXT/log_martians

# done

echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo "1" > /proc/sys/net/ipv4/ip_forward 


# Alle Regelketten, die sich noch im Speicher befinden könnten, löschen
iptables -F
iptables -t mangle -F
iptables -t nat -F
iptables -X

# Kernelmodule masq und forwarding aktivieren (dyn. IP vom Provider)
iptables -t nat -A POSTROUTING -o $DEV_EXT -j MASQUERADE

# WIEN VNC
iptables -t nat -A PREROUTING -i $DEV_EXT -p tcp --dport 5900 -j DNAT --to 192.168.100.90:5900

# alle externen eMail Ports 25 blocken
iptables -t nat -A PREROUTING -i $DEV_LOC -p tcp --dport 2525 -j DNAT --to-destination :25
iptables -A INPUT -i eth0 ! -d 192.168.100.184 -p tcp --dport 25 -j DROP 

rc_exit

Links zu weiteren Keepcon Themen

Linux.iptables
DMZ
HTML Vorlagen
to-do
FTP-Platz bei t-online
Keepcon unter Win32

Ausblick

  • Neu: im "Download": Prüfung auch des eigenen Publish Namen, wenn nicht aktuell -> neu uploaden! (Cool!)
  • Neu: Laufzeitmessung der aktuellen Verbindung.
  • Neu: Wunschzeit für eine routinegemässe Zwangstrennung angebbar. Dadurch kommen wir der Zwangstrennung zuvor und die Offline - Zeit verkürzt sich.