SSH-Tunnel aber keine Verbindung zum LAN der DS

Status
Für weitere Antworten geschlossen.

sy-pit

Benutzer
Mitglied seit
13. Jan 2014
Beiträge
64
Punkte für Reaktionen
0
Punkte
6
Hallo allerseits,
ich bekomme über meinen SSH-Tunnel mit RSA-Zertifikat keine Verbindung zum lokalen LAN der DS.
Die WAN-Verbindung zur DS funktioniert und auf der Konsole lässt sich auch alles ausführen.
Es klappt aber keine Verbindung zu den DS-Anwendungen oder dem lokalen Netz der DS.
Und sorry ich finde leider keine Lösung in den bestehenden Beiträgen.

Meine DS ist Modell 212 mit DSM 4.3-3810 Update 4

Meine „sshd_config“ sieht ohne die auskommentierten Zeilen so aus:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile /ssh/authorized_keys
ChallengeResponseAuthentication no
UsePAM yes
AllowAgentForwarding yes
AllowTcpForwarding yes
GatewayPorts yes
TCPKeepAlive yes
UseDNS yes
PermitTunnel yes

Pfad ist:
/etc/ssh/sshd_config

Die „S95sshd.sh“ sieht unter beiden Pfaden gleich aus.
Pfade:
/usr/syno/etc/rc.d/
/usr/syno/etc.defaults/rc.d/

#!/bin/sh
# Copyright (c) 2000-2012 Synology Inc. All rights reserved.

RunSSH=`/bin/get_key_value /etc/synoinfo.conf runssh`

. /etc.defaults/rc.subr
. /usr/syno/etc.defaults/rc.ssh.subr

case "$1" in

stop)
echo "Stop SSH..."
${SSHDUtils} --unregister_kill ${ReferKeyShell}
;;

start)
if [ "yes" = ${RunSSH} ]; then
# gen-key and start sshd in background mode
IsPidRunning ${SSHPidFile}
if [ $? = 1 ]; then
echo "Another SSH is starting. Skip..."
${SSHDUtils} --register ${ReferKeyShell} ${ReferProcShell}
exit 0
fi

if [ "yes" = "$SupportSSH" ]; then
/bin/sh /usr/syno/etc.defaults/rc.ssh > /dev/null 2>&1 &
echo "Start SSH..."
fi
fi
;;

restart)
$0 stop
sleep 1
$0 start
;;
status)
if [ "yes" = ${RunSSH} ]; then
IsSSHDAlive
return $?
else
return $LSB_STAT_NOT_RUNNING
fi
;;
*)
echo "usage: $0 { start | stop | restart | status}" >&2
exit 1
;;
esac

Wer kann mir helfen?
 

fbartels

Benutzer
Mitglied seit
19. Mrz 2013
Beiträge
284
Punkte für Reaktionen
2
Punkte
24
Normalerweise tunnelt man per SSH nur einzelne und gezielte Ports. Oder meinst du einen Socks Proxy per SSH, oder gar ein VPN per SSH?

Wie sieht denn Clientseitig dein Befehl aus?
 

sy-pit

Benutzer
Mitglied seit
13. Jan 2014
Beiträge
64
Punkte für Reaktionen
0
Punkte
6
erst mal hallo ;-)
Mit Zertifikat möchte ich das lieber per Putty, vssh oder zattelnet machen.
Hier wird ja unter der Funktion Tunnel bzw. Portforward am Client Source/Destination-Port eingegeben.
Wie läuft das nun auf der Synology weiter?
Bei irgend einem Forenbeitrag war doch auch etwas von einem Forward auf Kernelebene...
Oder ist das der falsche Ansatz...

>nachbearbeitet
Ja eigentlich möchte ich einen VPN per SSH mit Zertifikat herstellen.
 

sy-pit

Benutzer
Mitglied seit
13. Jan 2014
Beiträge
64
Punkte für Reaktionen
0
Punkte
6
erst mal hallo ;-)
Hier wird ja unter der Funktion Tunnel bzw. Portforward am Client Source/Destination-Port eingegeben.

habe ich auf der Client-Seite einen Denkfehler bei den Regeln
127.0.0.1:80 --> 192.168.0.1:80
usw.
 

sy-pit

Benutzer
Mitglied seit
13. Jan 2014
Beiträge
64
Punkte für Reaktionen
0
Punkte
6
Hallo fbartels, danke für den Link. Ist eine schöne Sache für einen Windows PC mit Firefox und allen webbasierten Anwendungen.
Meine eigentliche Absicht besteht aber darin, auf einem meiner mobilen iOS Geräte über diese Verbindung folgende Funktionen bzw. Anwendungen zu nutzen:
DS-Filestation, DS-Surveillance, DSM und im lokalen Netz Dreambox, Webcams usw. zu erreichen.
Als nächsten Schritt möchte ich das dann alles über eine Website auf der DS ansteuern.
 

sy-pit

Benutzer
Mitglied seit
13. Jan 2014
Beiträge
64
Punkte für Reaktionen
0
Punkte
6
Ah, die anderen beiden Clients waren mir kein Begriff.

Wie wärs denn damit?
http://www.quxisto.com/2013/feb/10/secure-public-wi-fi-from-your-iPad/

Wobei du vermutlich eher in Richtung VPN statt SSH schauen solltest.

Hallo fbartels,
ganau das scheint es zu sein und ich hatte zig Portweiterleitungen eingetragen.
Jetzt habe ich den "dynamic SOCKS Proxy" mit 127.0.0.1:9876 eingetragen und die Datei ios.pac in /volume1/Pub auf der DS abgelegt.
Verbindung wird hergestellt und das Script gestartet...

Original Vorlage:
function FindProxyForURL(url, host)
{
return "SOCKS 127.0.0.1:9876";
}

geändert in:
function FindProxyForURL(url, host) <-- URL in 127.0.0.1, host in lokale IP der DS
{
return "SOCKS 127.0.0.1:9876";
}

Ich bekomme nun folgende Fehlermeldung:
line 3: Syntax error: unexpected "("

Bei unverändertem Dateiinhalt ist der gleiche Fehler gekommen.
Ich habe auch hier nachgesehen:
http://technet.microsoft.com/de-de/library/cc985335.aspx
http://www.letztechance.org/read-576-4046.html

Ich scheitere aber an der Schreibweise...
 

fbartels

Benutzer
Mitglied seit
19. Mrz 2013
Beiträge
284
Punkte für Reaktionen
2
Punkte
24
steht in deiner geänderten Datei wirklich "<-- URL in 127.0.0.1, host in lokale IP der DS"? Ich würde es mal ohne versuchen.

Auch scheint es sogedacht zu sein, das du von deinem mobilen Gerät direkten Zugriff auf die pac Datei benötigst. daher ist /volume1/web vermutlich ein besserer Ort (natürlich nur, falls Port 80 von extern erreichbar ist). Alternativ wird im Artikel ja auch die Möglichkeit angesprochen die Datei im Dropbox Public Folder zu haben (man braucht halt eine öffentlich erreichbare URL).
 

sy-pit

Benutzer
Mitglied seit
13. Jan 2014
Beiträge
64
Punkte für Reaktionen
0
Punkte
6
steht in deiner geänderten Datei wirklich "<-- URL in 127.0.0.1, host in lokale IP der DS"? Ich würde es mal ohne versuchen.

Auch scheint es sogedacht zu sein, das du von deinem mobilen Gerät direkten Zugriff auf die pac Datei benötigst. daher ist /volume1/web vermutlich ein besserer Ort (natürlich nur, falls Port 80 von extern erreichbar ist). Alternativ wird im Artikel ja auch die Möglichkeit angesprochen die Datei im Dropbox Public Folder zu haben (man braucht halt eine öffentlich erreichbare URL).

auch bei unveränderter Zeile
"function FindProxyForURL(url, host) "
kommt die Fehlermeldung mit der Klammer...
das Script wird in /volume1/pub ja auch ausgeführt...
braucht die Datei evtl. spezielle Rechte?
muss in der Zeile
"function FindProxyForURL(url, host) "
url und host nicht geändert werden?

ich kann leider erst heute Abend weiter testen
Grüße
sy-pit
 

fbartels

Benutzer
Mitglied seit
19. Mrz 2013
Beiträge
284
Punkte für Reaktionen
2
Punkte
24
Für den Fall der Fälle: die *.pac Datei führst du nicht auf deinem NAS aus. Stattdessen lädt dein Endgerät sie herunter und nimmt sich daraus die benötigten Einstellungen für den Proxy. Daher muss diese Datei per http von außen erreichbar sein.
 

sy-pit

Benutzer
Mitglied seit
13. Jan 2014
Beiträge
64
Punkte für Reaktionen
0
Punkte
6
Für den Fall der Fälle: die *.pac Datei führst du nicht auf deinem NAS aus. Stattdessen lädt dein Endgerät sie herunter und nimmt sich daraus die benötigten Einstellungen für den Proxy. Daher muss diese Datei per http von außen erreichbar sein.
Hallo fbartels,
ich bin nicht früher dazu gekommen :cool:
So ich habe die ios.pac nach /volume1/web/ verschoben, kann die Datei jetzt sogar aus dem WWW aufrufen.
Es kommt aber der gleiche Fehler.
 

fbartels

Benutzer
Mitglied seit
19. Mrz 2013
Beiträge
284
Punkte für Reaktionen
2
Punkte
24
Ich habe kein IPhone und kann es daher nicht selbst ausprobieren. Wo bekommst du denn die Fehlermeldung? (an welchem Gerät? wie aufgerufen? vielleicht machst du mal nen Screenshot)
 
Mitglied seit
10. Jan 2014
Beiträge
393
Punkte für Reaktionen
0
Punkte
0
Hi,

PAC Scripte versteht -nebenbei- auch der Firefox bzw. IE.
Beim Firefox braucht man das PAC-Script auch nicht auf einen Webserver zu legen.
Stattdessen kann man es zb auch auf der lokalen Platte liegen haben.
Wenn das Script z.B. unter Linux im Verzeichnis /tmp liegt, sieht das dann so in der Firefox-Konfig aus:
file:///tmp/test.pac

Die Syntax ist tatsächlich so:
Code:
function FindProxyForURL(url, host)
{
  return "SOCKS 127.0.0.1:9876";
}
Man könnte nämlich im Script auch abhängig von den Parametern url und host unterschiedliche Proxies zurückliefern.

Siehe auch:
http://de.wikipedia.org/wiki/Proxy_Auto-Config

Schick' mal bitte einen Screenshot, wie du's auf dem IOS eingetragen hast.
M.E. muss da die interne Adresse der DS benutzt werden.
Weil du willst ja erst den Proxy benutzen, wenn die ssh Verbindung schon steht.
Sonst müsstest du ja vorher schon einen Zugriff auf deinen Webserver zulassen und das wäre ja nicht getunnelt.

Also ssh mit einem Tunnel starten und dann über den Tunnen das PAC Script runterladen.
 

sy-pit

Benutzer
Mitglied seit
13. Jan 2014
Beiträge
64
Punkte für Reaktionen
0
Punkte
6
Hi,

PAC Scripte versteht -nebenbei- auch der Firefox bzw. IE.
Beim Firefox braucht man das PAC-Script auch nicht auf einen Webserver zu legen.
Stattdessen kann man es zb auch auf der lokalen Platte liegen haben.
Wenn das Script z.B. unter Linux im Verzeichnis /tmp liegt, sieht das dann so in der Firefox-Konfig aus:
file:///tmp/test.pac

Die Syntax ist tatsächlich so:
Code:
function FindProxyForURL(url, host)
{
  return "SOCKS 127.0.0.1:9876";
}
Man könnte nämlich im Script auch abhängig von den Parametern url und host unterschiedliche Proxies zurückliefern.

Siehe auch:
http://de.wikipedia.org/wiki/Proxy_Auto-Config

Schick' mal bitte einen Screenshot, wie du's auf dem IOS eingetragen hast.
M.E. muss da die interne Adresse der DS benutzt werden.
Weil du willst ja erst den Proxy benutzen, wenn die ssh Verbindung schon steht.
Sonst müsstest du ja vorher schon einen Zugriff auf deinen Webserver zulassen und das wäre ja nicht getunnelt.

Also ssh mit einem Tunnel starten und dann über den Tunnen das PAC Script runterladen.

Hallo Micky,
ich poste hier mal zwei Screenshots vom iPhone (hier ist keine Kaufversion der App).
2014-02-17 11.17.52.png
Zweites Bild kommt im nächsten Beitrag. Auf meinem iPad ist die Kaufversion der gleichen App und die verhalten sich absolut identisch.
 
Mitglied seit
10. Jan 2014
Beiträge
393
Punkte für Reaktionen
0
Punkte
0
Genau daneben, wie fbartels schon korrekt vermutet hat.
Das PAC Script liegt zwar (theoretisch) auf der DS, wird aber nicht auf der DS ausgeführt.
Das PAC Script muss durch den Client (IOS bzw. Firefox bzw. IE) zur Laufzeit ausgeführt werden.

Hier steht es nochmal:
http://de.wikipedia.org/wiki/Proxy_Auto-Config

Der Client bekommt das PAC Script normalerweise per http-download.
Deshalb muss auf dem Client z.B. der Aufruf:
http://deineds/pfad/ios_xxx.pac
das PAC Script zurückliefern.
Woher z.B. soll dein IOS wissen, dass sich /volume1/web/proxy/ios_xx.pac (deine 2. Screenshot) auf der DS befindet, und nicht auf deinem IOS?
Wenn's auf dem IOS liegen sollte, wäre die Syntax:
file:///pfad/ios_xx.pac
Wobei ich nicht weiss, wie man auf IOS lokal Dateien ablegt.
Aber was du angegeben hast, kann nicht korrekt sein.

Wenn der Client dann das PAC Script runtergeladen hat, führt er es bei jedem Netzwerkzugriff aus, um zu ermitteln, welchen Proxy (es wären nämlich theoretisch mehrere Proxies möglich) er für den jeweiligen Netzwerkzugriff zu benutzen hat.
In deinem Fall kommt zwar immer der gleiche Proxy raus, aber PAC ist halt für noch mehr Funktionen ausgelegt.

Ich weiss nicht, wie ich's besser erklären kann....
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat