Jail(s) und SSH auf Computer mit dyn. IP

Dieses Thema im Forum "FreeBSD - Netzwerk" wurde erstellt von findus, 25 November 2004.

  1. findus

    findus a nice one

    Registriert seit:
    12 August 2003
    Beiträge:
    228
    Ort:
    Eckernförde (bei Kiel)
    Hallo Ihr!

    Seit ~ 2 Monaten bin ich an das DSL-Netz der Versatel angeschloßen:
    2 Mbit Up und 256 Kbit down mit dynamischer IP sind die wichtigsten Eckdaten.

    Seit gestern beschäftige ich mich sehr intensiv mit der Jailfunktionalität unter FreeBSD und kann seit heute Mittag behaupten das meine erste Jail einigermaßen läuft, d.h. ich kann mich mittels SSH an dieser anmelden, habe auch schon den ersten Port installiert (die zsh ;))

    Nun zu meinem Problem: Im Moment bin ich mit meinem PC direkt an dem DSL-Modem angeschloßen, d.h. es läuft kein Router zwischen Modem und PC. Nach jedem Start/Neustart wähle ich mich automatisch mittels PPP in das Inet ein und nutze ddclient um meine aktuelle IP an dynDNS zu übertragen!

    Soweit ich es dem Howto von ASG, dem Handbuch von FreeBSD und einigen Seiten im Inet entnehmen kann müssen bestimmte Dienste umgebogen werden damit diese sich nicht auf jedes Interface:Port stürzen - z.B.:
    horcht der SSH Daemon auf allen Interfaces auf dem Port 22! Da die Jail ja über eine IP mit dem Hostsystem kommuniziert ist das ungünstig und SSH muss dazu gebracht werden nur auf bestimmten Interfaces z.B. auf Port 22 zu lauschen!

    Normalerweise würde ich ja z.B. bei einer statischen IP sagen - ListenAdress 10.100.4.10 und dies in der /etc/ssh/sshd_config vermerken! Da ich ja bei jeder Einwahl eine $IpAdresse erhalte, dachte ich das ich den SSH Daemon auf meinen dynamischen DNS Eintrag fessele, z.B. xxx.dyndns.org. Leider sieht es in der Praxis so aus das alle relevanten Dienste für diese Idee in der nachfolgenden Reihenfolge gestartet werden:
    • ppp
    • ssh
    • dyndns
    Diese Reihenfolge ist problematisch da ich ja den ssh auf den dynamischen Hosteintrag fesseln möchte, der Abgleich erfolgt allerdings erst nach dem start des SSH Daemons und braucht wohl auch länger (vermutung meinerseits - falls dies stimmt, bringt es mich also auch nicht weiter wenn ich einfach nur die Reihenfolge vertausche)
    Eine Idee von mir war es nun, denn SSH beim starten deaktiviert zu lassen und diesen über ppp.linkup starten zu lassen: Evt. kann dies ja sogar helfen, wenn die ppp.linkup nicht sofort nach dem Verbindungsaufbau abgearbeitet wird - d.h. der dynamische host wurde vorher übermittelt - klappt bei mir aber auch nicht, denn wenn ich SSH über die /etc/rc.conf auf sshd_enable="NO" setze kann ich überhaupt gar keinen ssh mehr starten bevor ich den Eintrag nicht wieder auf "YES" gesetzt habe...

    Vielleicht hat ja jemand von euch einen konkreten Denkanstoß für mich - ich komme leider nicht mehr weiter :confused: Und bitte laßt Kommentare wie: "Schaffe dir nen Router an" oder "Hole dir einfach eine statische IP"! ich weiß das dieses Optionen wären ;), allerdings habe ich momentan weder Geld für neue Hardware noch Geld um eine Stromrechnung für einen P1 200 zu bezahlen!

    Ich weiß, immer diese Extrawünsche :D

    Viele grüße :)

    Björn
  2. juedan

    juedan Guest

    Guten Morgen findus,

    Du hast drei Möglichkeiten dieses Problem anzugehen:
    • Abschalten des sshd auf dem Wirtsystem und Umleiten aller ssh-Anfragen in die Jail (sshd="NO" und NAT anpassen)
    • sshd in Jail so konfigurieren, dass er auf einen anderen Port als 22 hört; alle ssh-Anfragen, die von außen auf Port 22 eintreffen auf den Port in der Jail umleiten.
    • Du baust Dir ein Skript, das von ppp.linkup/ppp.linkdown aufgerufen wird. Diese Skript arbeitet der Reihe nach (!!!) alles ab. So habe ich es bei mir im Moment wegen eines anderen Problems gelöst:
    Code:
    #!/bin/sh
    #
    # Skript: /etc/ppp/linkupdown.sh
    # erstellt: 14.11.2004
    # Ergaenzungen:
    #
    # ==============================
    
    case "$1" in
    	start)
    		# AntiVir aktualisieren
    		# ---------------------
    		/usr/lib/AntiVir/antivir --update
    
    		# DynDNS (nerdcamp.net) anrufen
    		# -----------------------------
    		/usr/local/bin/ez-ipupdate -c /usr/local/etc/ez-ipupdate.conf -R nobody
    
    		# fetchmail.log loeschen und fetchmail neu starten
    		# ------------------------------------------------
    		rm /var/log/fetchmail.log
    		/usr/local/bin/fetchmail -s -F -f /usr/local/etc/fetchmail.conf -v
    
    		# Mail an alle User, dass Verbindung steht
    		# ----------------------------------------
    		ifconfig tun0 | /usr/bin/mail -s "PPPoE: Verbindung aufgebaut" allusers
    		;;
    	stop)
    		# fetchmail beenden
    		# -----------------
    		/usr/local/bin/fetchmail --quit
    		
    		# tun0-Interface loeschen
    		# -----------------------
    		ifconfig tun0 delete
    
    		# Mail an alle User, dass Verbindung beendet
    		# ------------------------------------------
    		ifconfig tun0 | /usr/bin/mail -s "PPPoE: Verbindung getrennt" allusers
    		;;
    esac
    
    exit 0
    
    und

    Code:
    #!/bin/sh
    #
    # Skript: /etc/ppp/ppp.linkup
    # erstellt: 14.11.2004
    # ========================
    tonline:
     !bg /etc/ppp/linkupdown.sh start
    
    
    Vielleicht ist das für Dich ein kleiner Denkanstoß :)

    Viele Grüße

    Jürgen
  3. ZerBEruZ

    ZerBEruZ New Member

    Registriert seit:
    2 Oktober 2003
    Beiträge:
    159
    Ort:
    Gerbrunn / Würzburg
    hi findus,

    kuck ma im kernel *ggg*

    ich hab zum lo0 ein lo1 dazugebaut und alle jails an dieses interface gebunden :rolleyes: , ob des jetzt eine saubere lösung is wird sich zeigen ....

    wir lesen uns
  4. asg

    asg push it, don´t hype

    Registriert seit:
    11 Dezember 2002
    Beiträge:
    6.075
    Ort:
    Lat 49' 11` Nord - Long 9' 13` Ost
    Habe es nur überflogen, aber, installier Dir doch openssh aus den Ports, deaktivere den ssh in der rc.conf, starte den aus den Ports installierten ssh über ein Script in /usr/local/etc/rc.d/.
    Hier kannst Du angeben welches Script vor welchen ausgeführt werden soll (das mit der grösseren Nummer, also bsp "999.ssh.sh" wird später als 001.dyndns.sh" ausgeführt).