ubuntuusers.de

iptables apache nicht erreichbar

Status: Gelöst | Ubuntu-Version: Server 18.04 (Bionic Beaver)
Antworten |

htt.tito

Avatar von htt.tito

Anmeldungsdatum:
7. Dezember 2014

Beiträge: 87

Hi Leute!

Ich hänge ganz gewaltig bei den Iptables.

Ich erreiche meinen Apache vom Internet nicht.

Ich habe zwei Netzwerkschnittstellen auf meinem Server.

- ppp0 (das Internet - USB Modem auf 192.168.1.1)

- eno1 (das Interne LAN mit apache,... - 192.168.0.100)

- net.ipv4.ip_forward=1 ist gesetzt

- Der Traffic vom LAN ins Internet funktioniert

iptables:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 443 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -i eno1 -o ppp0 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Irgendetwas fehlt da, oder ist falsch...

Bitte um Hilfe...DANKE!!

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Wo läuft denn der Apache?

htt.tito schrieb:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

Wenn er auf dem Server läuft, also dort, wo du auch diese Regeln einträgst, sind die Regeln oben korrekt. Es fehlt allerdings eine Regel in der INPUT-Chain, welche Pakete mit dem Status ESTABLISHED und RELATED erlaubt.

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Diese Regeln sind sind an sich Blödsinn. Sie bewirken das gleiche, wie die ersten beiden Regeln, allerdings prüfen Sie den Status nicht, das heißt diese Regeln kannst du nutzen, und brauchst keine zusätzliche Regel für ESTABLISHED- und RELATED-Pakete.

-A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 443 -j ACCEPT

Diese Regeln sind absolut kontraproduktiv, weil ein Angreifer damit dein Regelwerk komplett umgehen kann, sofern er seine Pakete mit dem Quell-Port 80 bzw. 443 sendet.

-A FORWARD -s 192.168.0.0/24 -i eno1 -o ppp0 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Diese beiden Regeln sind vermutlich ebenfalls nicht das, was du willst. Die erste Regel erlaubt neue Verbindungen aus 192.168.0.0/24 ins Internet. Die zweite Regel erlaubt auch ESTABLISHED und RELATED Pakete, effektiv bezieht sich diese Regel natürlich nur für Verbindungen aus dem LAN ins Internet, und nicht umgekehrt.

Zeige also mal

iptables -t nat -nvL
iptables -nvL

und sag genau, was du erreichen willst.

Cranvil

Anmeldungsdatum:
9. März 2019

Beiträge: 990

Wenn ich dich richtig verstehe, möchtest du auf dem Internet-Router einen Webserver betreiben. Soll dieser Webserver denn Anfragen von außen (Internet) oder vom lokalen Netzwerk aus beantworten?

Lass uns bitte die Ausgabe von

sudo iptables-save 

zukommen. Dieser Befehl gibt uns ein besseres Bild über deine iptables.

Ich habe zwar bereits Vermutungen, aber ohne die Antworten oben könnten die nur zu unnötiger Verwirrung führen.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9717

Wohnort: Münster

htt.tito schrieb:

[…] Ich hänge ganz gewaltig bei den Iptables. Ich erreiche meinen Apache vom Internet nicht.

Mit welchen Befehlen versuchst Du ihn denn zu erreichen?

Solange Du den Server aus dem Internet nicht ansprechen kannst und Du von ihm keine Antwort erhältst, brauchst Du gar nicht mit Netfilter/iptables anfangen.

Mach erst einmal folgenden Test:

  1. Stoppe den Webserver auf dem Server.

  2. Entferne alle Iptables-Regeln.

  3. Spreche den Server über das Internat mit ping an. Dazu musst Du erst einmal die externe IP-Adresse, welche dem Rechner vom Internet-Provider zugewiesen wird, in Erfahrung bringen.

Es gibt auch ISP, die gar keine routingfähige IPv4-Adresse mehr vergeben, sondern ihre Kunden hinter einem CGN-NAT einsperren. Dann hast Du keine Chance.

htt.tito

(Themenstarter)
Avatar von htt.tito

Anmeldungsdatum:
7. Dezember 2014

Beiträge: 87

Nur zur Erklärung: Ich will meinen externen Router in Rente schicken, und alles über den Server machen.

WLAN, Apache, und vieles mehr läuft schon.

Jetzt soll der externe Router weg.

Mein Huawei E3276 das zuvor am externen Router war, soll jetzt direkt an den Server.

iptables:

Ich hab mal alles gelöscht, ich dachte mir das da Blödsinn drinnen steht....

- Also ich hab einen Apache auf der Schnittstelle eno1 laufen auf IP 192.168.0.100

- Ein USB Modem auf ppp0 mit IP 192.168.1.1

- Mit diesen Regeln bekam ich Zugang vom internen Netzwerk ins Internet.

-A FORWARD -s 192.168.0.0/24 -i eno1 -o ppp0 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A POSTROUTING -o ppp0 -j MASQUERADE

- fehlt noch das ich von Außen auf meinen Server (Apache, Jellyfin, Nextcloud) komme.

PS.: Ich habe eine Wechsel-IP (ddclient)

Wenn ich meine externe IP in den Browser eingebe komme ich nur auf das Webinterface vom USB-Modem...

Cranvil

Anmeldungsdatum:
9. März 2019

Beiträge: 990

htt.tito schrieb:

Nur zur Erklärung: Ich will meinen externen Router in Rente schicken, und alles über den Server machen.

WLAN, Apache, und vieles mehr läuft schon.

Jetzt soll der externe Router weg.

Soll der weg oder ist er schon weg?

Mein Huawei E3276 das zuvor am externen Router war, soll jetzt direkt an den Server.

Soll es direkt an den Server oder ist es schon direkt an dem Server?

- Also ich hab einen Apache auf der Schnittstelle eno1 laufen auf IP 192.168.0.100

Wenn Apache nur auf dieser Schnittstelle lauscht, hört er auf allen anderen Schnittstellen nichts.

- Mit diesen Regeln bekam ich Zugang vom internen Netzwerk ins Internet.

-A FORWARD -s 192.168.0.0/24 -i eno1 -o ppp0 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A POSTROUTING -o ppp0 -j MASQUERADE

Wenn du den Serverdienst auf deinem Internet-Router betreiben willst, dann sind die INPUT und OUTPUT Chains wesentlich interessanter als die FORWARD Chain. NAT spielt dann auch erstmal eine untergeordnete Rolle. Btw: Output von iptables-save?

- fehlt noch das ich von Außen auf meinen Server (Apache, Jellyfin, Nextcloud) komme.

Ich finde die Idee, dein Internet-Gateway als Webserver zu verwenden, aus Sicherheitsgründen eher schlecht - nur mal so am Rande.

PS.: Ich habe eine Wechsel-IP (ddclient)

Wenn ich meine externe IP in den Browser eingebe komme ich nur auf das Webinterface vom USB-Modem...

In welchem Netzwerk befindet sich der Browser denn, wenn du die externe IP eingibst? Wenn er sich im Heimnetzwerk befindet, dann ist alles gut. Wenn du das Webinterface tatsächlich von außen aufrufen kannst, solltest du deinen Webserver mal links liegen lassen und erstmal dein Modem richtig konfigurieren.

Während du dein Modem richtig konfigurierst, kannst du gleich mal schauen, ob dein Modem wirklich nur Modem ist oder nicht doch eher Router. Es gibt da so ein Indiz (ppp0 mit 192.168.1.1 z.B.), das mich allerdings annehmen lässt, dass du hinter einem sogenannten CGNAT hängst. Das dürfte es recht schwer machen, den Server wirklich von außen erreichbar zu machen. Die nächstnervigere Variante wäre eine Verbindung über DS-Lite.

htt.tito

(Themenstarter)
Avatar von htt.tito

Anmeldungsdatum:
7. Dezember 2014

Beiträge: 87

Mein Router ist weg und dass Modem steckt jetzt im Server. Der Router war auf 192.168.0.1 und war als gateway im dhcp eingetragen.

Am Router wurden die port-forwarding regeln erstellt:

z. Bsp: incoming port 80 auf 192.168.0.100:80

Das das Ganze wieder funktioniert, muss das port forwarding wohl iptables machen....

Am Modem selbst kann man nichts konfigurieren....

Man erreicht nur das Webinterface vom Modem auf 192.168.1.1

Das ganze hängt an der Schnittstelle ppp0 (selbst umbenannt von enx54684684 usw...denn das merkt sich ja kein Schw...)

Into_the_Pit Team-Icon

Ehemalige
Avatar von Into_the_Pit

Anmeldungsdatum:
25. Juni 2008

Beiträge: 9490

Wohnort: Bochum

htt.tito schrieb:

Mein Router ist weg und dass Modem steckt jetzt im Server. Der Router war auf 192.168.0.1 und war als gateway im dhcp eingetragen.

Hast Du schonmal probiert, das Modem nun als Gateway und DHCP-Server zu nutzen? Bekommt das Modem an Deinem Server einen IP-Adresse aus dem 192.168.1.0/24 Netz, wenn Du mit dhclient eine anforderst?

Man erreicht nur das Webinterface vom Modem auf 192.168.1.1

Vertraut man diesem Beitrag, dient das Modem auch als Gateway, wenn man es entsprechend einrichtet.

Abgesehen davon, am Ende wirst Du nur mit dem Modem über eine Mobilfunk-Verbindung keine Chance haben, extern auf Deinen Server zuzugreifen. Die Geräte haben i.d.R. keine eigene öffentliche IP-Adresse und verwenden CGN vom Betreiber. Dein bisheriger Anschluß hatte eine öffentliche IP-Adresse am Router anliegen und konnte daher aus dem Internet zugeordnet werden. Solche USB-Modems dienen halt nur für den Zugang zum Internet.

htt.tito

(Themenstarter)
Avatar von htt.tito

Anmeldungsdatum:
7. Dezember 2014

Beiträge: 87

Im Router war auch nur das USB Modem.

Sorry, aber auch das mit CGN ist Blödsinn.

Was ein Router kann muss auch Linux können...

Hat jemand noch Vorschläge?

z. Bsp. wie die richtigen Iptables lauten müssen?

Cranvil

Anmeldungsdatum:
9. März 2019

Beiträge: 990

htt.tito schrieb:

Im Router war auch nur das USB Modem.

Sorry, aber auch das mit CGN ist Blödsinn.

Was ein Router kann muss auch Linux können...

Hat jemand noch Vorschläge?

z. Bsp. wie die richtigen Iptables lauten müssen?

Wir freuen uns über folgende Informationen:

  • Internetprovider, Tarif, Privat- oder Geschäftskundentarif

  • Providerseitige Konfiguration des Internetzugangs (z.B. via Kundenportal abrufbar; Vodafone/KDG hatte ich mal und da kann man lustige Dinge drüber machen)

  • GENAUE Darstellung der Gesamtkonfiguration (LTE-Signal → LTE-USB-Modem → USB-Port-Nr Router (Orig) → ...)

  • Gerätebezeichnung, Modell, Konfiguration des ursprünglichen Routers (abzüglich von Benutzernamen und Passwörtern)

  • Konfiguration des LTE-USB-Modems (es hat in Webinterface, also hat es auch eine Konfiguration)

  • Sind die Geräte in der ursprünglichen Konfiguration alle vom Provider geliefert und eingestellt worden, sodass du nur noch dein Heimnetz anstöpseln brauchtest und ggf. mal eine Portweiterleitung?

Überdenke deine Haltung und Wortwahl. Wir versuchen mit den wenigen Informationen von deiner Seite und unseren eigenen Erfahrungen eine Lösung zu finden. Wenn du der Meinung bist, dass unsere Vorschläge und Annahmen nicht zutreffen, dann sei so freundlich und lass uns wissen, warum diese nicht zutreffen (erfolglos getestet, kommt in der Situation nicht zum Tragen etc.) - auf eine vernünftige Art und Weise ("Sorry, das ist Blödsinn" gehört nicht dazu).

Edit: Vergessenes Wort eingefügt.

htt.tito

(Themenstarter)
Avatar von htt.tito

Anmeldungsdatum:
7. Dezember 2014

Beiträge: 87

Alle Angaben unter:

https://forum.ubuntuusers.de/topic/ubuntu-server-1404-lts-als-router-problem-port/

Kennt sich jemand mit iptables gut aus? Kann jemand helfen? Ich denke es liegt nur an den Regeln...

Cranvil

Anmeldungsdatum:
9. März 2019

Beiträge: 990

htt.tito schrieb:

Kennt sich jemand mit iptables gut aus? Kann jemand helfen? Es liegt nur an den Regeln...

Stelle deine iptables auf Default, verbinde deinen Webserver mit dem Internet, aktualisiere deinen DDNS-Eintrag und greife von außerhalb auf den Webserver zu. Wenn es nur an den Regeln liegt, dann wird's direkt klappen und wir können weitermachen. Du könntest auch mit Tools wie tcpdump den Netzwerkverkehr abhorchen, um das zu bestätigen.

Wenn der Webserver in dieser (absolut unsicheren und daher nur kurz zu aktivierenden) Konfiguration erreichbar ist, wird dich hier auch keiner mehr mit Fragen zur vorherigen Konfiguration oder zum Internetzugang nerven, und wir können uns endlich um die Regeln kümmern.

htt.tito

(Themenstarter)
Avatar von htt.tito

Anmeldungsdatum:
7. Dezember 2014

Beiträge: 87

Hallo!

Ich denke das funktioniert mit deaktivierten iptables nicht.

Das Modem ist auf Schnittstelle eno2 mit Interner IP 192.168.1.1 und der öffentlichen IP .....

Der Apache läuft auf br0 mit 192.168.0.100

Irgendjemand muß ja den Verkehr von eno2 auf br0 und auch umgekehrt umleiten...

Oder liege ich da falsch?!

htt.tito

(Themenstarter)
Avatar von htt.tito

Anmeldungsdatum:
7. Dezember 2014

Beiträge: 87

OK noch ein Versuch mit kompletter Beschreibung:

Modem: Huawei E3276 mit Hilink am Dovado Router - Mit Hilink nichts einstellbar nur Verbindung EIN/AUS/Manuel/Automatisch...

Ehemaliger Router: Dovado Pro mit IP 192.168.0.1

Server: Ubuntu 18.04 mit Apache, Bind, Squid, usw...auf IP 192.168.0.100

Vorher:
Server IP 192.168.0.100
ISC-DHCP: gateway 192.168.0.1 für br0
ip route default: 192.168.0.1 (Dovado Router) via br0 (Ist bridge für LAN/WLAN)
Alle benötigten ports wurden im forwarding des Routers eingestellt z.Bsp. icoming port 80 auf 192.168.0.100:80
Jetzt:
ISC-DHCP: geteway 192.168.1.1 für eno2
ip route default: 192.168.1.1 (Modem IP) via eno2 (Ist die neue Schnittstelle an der das Modem steckt)
iptables:
-A FORWARD -s 192.168.0.0/24 -i br0 -o eno2 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A POSTROUTING -o eno2 -j MASQUERADE
-A PREROUTING -i eno2 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.100:80
-A PREROUTING -i eno2 -p tcp --dport 443 -j DNAT --to-destination 192.168.0.100:443
forwarding ist auch eingestellt...sysctl -w net.ipv4.ip_forward=1

Es geht alles, nur apache wird nicht erreicht.

Ein Ping auf die öffentiche Seite wird mit der richtigen IP auch beantwortet, nur ist keine Seite aufrufbar.

Fehlt noch was?!

htt.tito

(Themenstarter)
Avatar von htt.tito

Anmeldungsdatum:
7. Dezember 2014

Beiträge: 87

OK ich versuche das Ganze mal mit einer wvdial Verbindung.

Und da taucht schon das nächste Problem auf:

Mit usb_modeswitch hab ich mein Modem in den ttyUSB mode versetzen können (War gefühlte 100h Arbeit die richtige Konfiguration zu finden.)

Egal, es hat funktioniert.

Jetzt bricht wvdial immer mit der Meldung :

wvdial: utils/wvtask.cc:303: static int WvTaskMan::yield(int): Assertion `*current_task->stack_magic == WVTASK_MAGIC' failed.

ab.

Ich hab schon von einen Bug gelesen, der leider nur in Debian gelöst wurde....

https://bugs.launchpad.net/ubuntu/+source/wvdial/+bug/1762215

Nur wie löse ich das in Ubuntu?!

Meine wvdial.conf

[Dialer Defaults]
Modem = /dev/ttyUSB1
New PPPD = yes 
Carrier Check = on
Init1 = ATZ
Init2 = AT^SYSCFGEX="03",3FFFFFFF,2,4,40,,
Init3 = AT+COPS=1,2,"23205",7
Init4 = AT+CGDCONT=1,"IP","drei.at"
Phone = *99#
Stupid Mode = 1
Dial Attempts = 2
Username = drei.at
Password = drei.at
Nameserver = 213.94.78.16
Antworten |