ubuntuusers.de

LAMP Server öffentlich machen

Status: Ungelöst | Ubuntu-Version: Lubuntu 14.04 (Trusty Tahr)
Antworten |

HerrVonFluff

Anmeldungsdatum:
28. Mai 2015

Beiträge: 42

Hallöchen,

ohne lange Vorrede!

Mein Problem: Ich kann meine Webseite auf meinem LAMP-Server nicht im Browser aufrufen, wenn ich die (externe) IP eingebe. Kann also nicht öffentlich auf meinen Server zugreifen. Eine Fehlermeldung gibt es nicht, nur laden bis zum Time Out.

Was Helfern helfen könnte:

  • Server läuft (ich kann eine Website aufrufen, indem ich "localhost" bzw. die IP "192.168.0.12" im Browser eingebe)

  • Portweiterleitung ist im Router eingerichtet (Dieser Port-Scanner sagt: "Port 80 Wird zur Kommunikation mit dem Webserver verwendet.")

  • Rechte für alle Verzeichnisse u Dateien sind 775

  • In den Logdateien (/var/log/apache2/) wird nichts protokolliert, wenn ich versuche, die Seite via externe IP aufzurufen

  • Zwischen Router und Rechner sitzt noch ein Repeater (spielt aber keine Rolle für die Portweiterleitung des Routers, oder?)

  • Portweiterleitung ist folgendermaßen eingerichtet:

Port Öffentlich: 80
Port Privat: 80
Protokoll: TCP/UDP
IP-Adresse: 192.168.0.12 (die mich auch lokal zum Server führt)
  • Auch mit einem alternativen Port hat es bisher nicht geklappt

  • Mein Anschluss ist auf IPv4 eingestellt. Als vor ein paar Tagen noch Dual-Stack Lite eingestellt war hatte es auch nicht geklappt.

??? ☺

verdooft

Anmeldungsdatum:
15. September 2012

Beiträge: 4437

Wenn du möchtest, kannst du mal die IP mitteilen, hatte auch mal den Fall, dass es im eigenen Netzwerk (über die öffentliche IP) nicht ging, aber externe problemlos darauf zugreifen konnten.

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Poste mal bitte die Ausgaben folgender Befehle in einem Codeblock:

1
2
3
cat /etc/apache2/ports.conf
netstat -tlpn
iptables -nL

HerrVonFluff

(Themenstarter)

Anmeldungsdatum:
28. Mai 2015

Beiträge: 42

verdooft schrieb:

Wenn du möchtest, kannst du mal die IP mitteilen, hatte auch mal den Fall, dass es im eigenen Netzwerk (über die öffentliche IP) nicht ging, aber externe problemlos darauf zugreifen konnten.

Danke! Bin dem mal nachgegangen und habe Browsershots (Screenshots der IP über browserstack.org) generieren lassen. Kein Browser konnte drauf zugreifen.

misterunknown schrieb:

Poste mal bitte die Ausgaben folgender Befehle in einem Codeblock:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
n@ASUS:~$ cat /etc/apache2/ports.conf
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80
Listen 8080

<IfModule ssl_module>
	Listen 443
</IfModule>

<IfModule mod_gnutls.c>
	Listen 443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
n@ASUS:~$ sudo iptables -nL
[sudo] password for n: 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
n@ASUS:~$ sudo netstat -tlpn
Aktive Internetverbindungen (Nur Server)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:51013           0.0.0.0:*               LISTEN      877/rpc.statd   
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1389/mysqld     
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      815/smbd        
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      867/rpcbind     
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1580/dnsmasq    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1190/sshd       
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      3482/cupsd      
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      815/smbd        
tcp6       0      0 :::51328                :::*                    LISTEN      877/rpc.statd   
tcp6       0      0 :::139                  :::*                    LISTEN      815/smbd        
tcp6       0      0 :::111                  :::*                    LISTEN      867/rpcbind     
tcp6       0      0 :::8080                 :::*                    LISTEN      6757/apache2    
tcp6       0      0 :::80                   :::*                    LISTEN      6757/apache2    
tcp6       0      0 :::22                   :::*                    LISTEN      1190/sshd       
tcp6       0      0 ::1:631                 :::*                    LISTEN      3482/cupsd      
tcp6       0      0 :::445                  :::*                    LISTEN      815/smbd  

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Dein Apache lauscht korrekt an Port 80 und reagiert auch auf alle IPs. Das Problem liegt also nicht am Server an sich. Ich vermute, dass noch ein Fehler im Port-Forwarding ist, und es daher zum Timeout kommt. Das lässt sich natürlich schlecht debuggen. Was für einen Router nutzt du? Gibt es da irgendwelche Debug-Logs? Funktionieren andere Portweiterleitungen (beispielsweise SSH)?

HerrVonFluff

(Themenstarter)

Anmeldungsdatum:
28. Mai 2015

Beiträge: 42

Was für einen Router nutzt du?

Hitron CVE30360

Gibt es da irgendwelche Debug-Logs?

Negativ

Funktionieren andere Portweiterleitungen (beispielsweise SSH)?

Bin noch nicht in den Genuss gekommen, ssh zu benutzen. Kann ich das unkompliziert testen, ohne ein fremdes System zu konfigurieren?

Oder wofür kann man sonst mal eben eine Portweiterleitung einrichten u testen?

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

HerrVonFluff schrieb:

Bin noch nicht in den Genuss gekommen, ssh zu benutzen. Kann ich das unkompliziert testen, ohne ein fremdes System zu konfigurieren? Oder wofür kann man sonst mal eben eine Portweiterleitung einrichten u testen?

Portweiterleitung kann man ganz einfach testen. Leite einfach einen Port deiner Wahl weiter (12345) und dann versuchst du per netcat einen Text zu senden:

1
2
3
4
5
# auf dem Server
echo "Das ist ein Test" | nc -l -p 12345

# irgendwo
nc DEINSERVER 12345

Der String "Das ist ein Test" sollte jetzt übertragen werden und erscheinen (geht natürlich auch mit telnet).

HerrVonFluff

(Themenstarter)

Anmeldungsdatum:
28. Mai 2015

Beiträge: 42

Ok, ich habe gerade diese Weiterleitung eingerichtet:

Anwendungsname: -SERVICES-
Protokoll: TCP/UDP
Öffentlicher Port Bereich: 12345 - 12345
Privater Port Bereich: 12345 - 12345
IP-Adresse: 192.168.0.12

netcat:

1
n@ASUS:~$ echo "Das ist ein Test" | nc -l -p 12345

...passiet nix

bzw:

1
2
n@ASUS:~$ sudo nc -vz 192.168.0.12 12345
nc: connect to 192.168.0.12 port 12345 (tcp) failed: Connection refused

Hab ich den Test jetzt richtig gemacht?

misterunknown schrieb:

# auf dem Server

also mein Rechner = mein Terminal???

# irgendwo

also stdout = mein Terminal???

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

HerrVonFluff schrieb:

netcat:

1
n@ASUS:~$ echo "Das ist ein Test" | nc -l -p 12345

...passiet nix

Das ist richtig. Der Befehl öffnet den Port 12345 und schickt den Text "Das ist ein Test" raus. Da noch niemand zu dem Port verbunden ist, wartet der Prozess, bis das der Fall ist. Möchtest du den Test also auf dem gleichen Rechner machen, dann brauchst du 2 Terminals 😉 In dem ersten muss der Befehl abgesetzt werden. Der läuft so lange, bis sich jemand zu dem Port verbindet.

1
2
n@ASUS:~$ sudo nc -vz 192.168.0.12 12345
nc: connect to 192.168.0.12 port 12345 (tcp) failed: Connection refused

Da der andere Befehl vermutlich nicht mehr lief, ist das die korrekte Antwort (der Port ist zu). Du musst auch den Parameter -z weglassen, da der nur zum scannen von Ports ist. Wir wollen aber testen, ob der Text auch übers Netz geht.

Du kannst das mit der IP 192.168.0.12 testen (das sollte Problemlos möglich sein). Der eigentliche Test muss natürlich mit deiner externen IP erfolgen.

HerrVonFluff

(Themenstarter)

Anmeldungsdatum:
28. Mai 2015

Beiträge: 42

Danke ☺

1
2
3
n@ASUS:~$ nc -v 192.168.0.12 12345
Connection to 192.168.0.12 12345 port [tcp/*] succeeded!
Das ist ein Test

...aber leider

1
2
n@ASUS:~$ nc -v [ext. IP] 12345
nc: connect to [ext. IP] port 12345 (tcp) failed: Connection timed out

Sollte ich mich mal an den Support des Routers wenden?

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

HerrVonFluff schrieb:

1
2
3
n@ASUS:~$ nc -v 192.168.0.12 12345
Connection to 192.168.0.12 12345 port [tcp/*] succeeded!
Das ist ein Test

So muss es aussehen 👍

...aber leider

1
2
n@ASUS:~$ nc -v [ext. IP] 12345
nc: connect to [ext. IP] port 12345 (tcp) failed: Connection timed out

Sollte ich mich mal an den Support des Routers wenden?

Also ich glaube nicht, dass es etwas mit dem Router zu tun hat. Wenn die Portweiterleitung korrekt eingerichtet ist, sollte das passen – so viel kann man da schließlich nicht falsch machen. Ich würde als erste Anlaufstelle deinen Internet-Provider sehen und dort beim Support anrufen.

HerrVonFluff

(Themenstarter)

Anmeldungsdatum:
28. Mai 2015

Beiträge: 42

Ok werd ich machen. Nur eins noch: Die IP, die ich bei der Portweiterleitung eintragen muss, kann ja nur die (IPv4) Adresse sein, die ich mittels ifconfig im Bereich wlan0 angezeigt bekomme, oder?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
n@ASUS:~$ ifconfig
eth0      Link encap:Ethernet  Hardware Adresse f4:6d:04:be:11:39  
          UP BROADCAST MULTICAST  MTU:1500  Metrik:1
          RX-Pakete:0 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
          TX-Pakete:0 Fehler:0 Verloren:0 Überläufe:0 Träger:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX-Bytes:0 (0.0 B)  TX-Bytes:0 (0.0 B)

lo        Link encap:Lokale Schleife  
          inet Adresse:127.0.0.1  Maske:255.0.0.0
          inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine
          UP LOOPBACK RUNNING  MTU:65536  Metrik:1
          RX-Pakete:11925 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
          TX-Pakete:11925 Fehler:0 Verloren:0 Überläufe:0 Träger:0
          Kollisionen:0 Sendewarteschlangenlänge:0 
          RX-Bytes:3503873 (3.5 MB)  TX-Bytes:3503873 (3.5 MB)

wlan0     Link encap:Ethernet  Hardware Adresse e0:b9:a5:60:03:2e  
          inet Adresse:192.168.0.12  Bcast:192.168.0.255  Maske:255.255.255.0
          inet6-Adresse: 2a02:8109:a280:a68::2/128 Gültigkeitsbereich:Global
          inet6-Adresse: fe80::e2b9:a5ff:fe60:32e/64 Gültigkeitsbereich:Verbindung
          inet6-Adresse: fd00:fc:8dd7:9222:a19d:3c97:5d94:abc4/64 Gültigkeitsbereich:Global
          inet6-Adresse: fd00:fc:8dd7:9222:e2b9:a5ff:fe60:32e/64 Gültigkeitsbereich:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          RX-Pakete:292852 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
          TX-Pakete:232326 Fehler:0 Verloren:0 Überläufe:0 Träger:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX-Bytes:250155824 (250.1 MB)  TX-Bytes:38953044 (38.9 MB)

Also sowas wie die Adresse meines Rechners im lokalen Netz, wenn ich das richtig verstanden habe.

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

HerrVonFluff schrieb:

Die IP, die ich bei der Portweiterleitung eintragen muss, kann ja nur die (IPv4) Adresse sein, die ich mittels ifconfig im Bereich wlan0 angezeigt bekomme, oder?

Richtig.

Antworten |