Hallo, Leute!
Noch ein Problem, und zwar: Der Server soll Apache (wegen Nagios) haben, der vom Internet erreichbar ist. Wir wollen aber nicht die Port 80 nutzen, sondern die Port 12500 (historische Gründe).
Apache läuft und lauscht auf die Port 80 wegen internen Traffic. Innerhalb des Netzes läuft alles gut.
Nun habe ich folgende IPTables-Regel geschrieben:
/sbin/iptables -t nat -A POSTROUTING -d 192.168.1.13 -p tcp -j MASQUERADE -m comment --comment "Wegen Zugriffe ueber Portweiterleitung" /sbin/iptables -t nat -A PREROUTING -p tcp --dport 12500 -j DNAT --to-destination 192.168.1.13:80 -m comment --comment "Apache"
Theoretisch sollte es funktionieren... Ich habe als Test die Port 22 für SSH probiert, und es funktioniert einwandfrei. Ich kann mich dann per SSH anmelden. Aber Apache will definitiv nicht.
Ich bin sicher, daß es kein Problem vom IPTables ist, sondern von Apache.
Wenn ich die externe IP des Servers in meinem Browser angebe, kommt die Apache-Seite ("It works!"), aber wenn ich einen NameVirtualHost angeben, klappt es nicht. Es kommt immer "It works!" und nicht den richtigen Inhalt.
Was mache ich denn falsch? Will Apache auch die Port 12500 haben? Ich will aber nicht zwei VirtualHosts anlegen mit den gleichen Inhalt. Außerdem, es kann sein, daß wir in Zukunft andere VirtualHost vom Internet haben möchten. Ich suche eine allgemeine Lösung.
Kann jemand mir helfen?
Besten Dank Luca Bertoncello (lucabert@lucabert.de)
Moin Luca,
On Sun, Nov 04, 2012 at 10:14:49AM +0100, Luca Bertoncello wrote:
/sbin/iptables -t nat -A POSTROUTING -d 192.168.1.13 -p tcp -j MASQUERADE -m comment --comment "Wegen Zugriffe ueber Portweiterleitung" /sbin/iptables -t nat -A PREROUTING -p tcp --dport 12500 -j DNAT --to-destination 192.168.1.13:80 -m comment --comment "Apache"
Warum muss die erste Regel sein? Ich hab für die meisten Sachen bei mir nur das DNAT, denn von außen nach innen muss man ja kein Masquerading sein, oder?
Greifst du von außen auf wirklich auf den Hostnamen zu, der im vHost verwendet wird? Mir ist es schon häufiger passiert, dass ich dann mit foo.dyndns.org:1080 oder sowas testen wollte, weil ich den DNS-Record noch nicht erzeugt hatte.. Und dann matchte erwartungsgemäß der vHost nicht..
Gruß, Andre
Andre Klärner kandre@ak-online.be schrieb:
Greifst du von außen auf wirklich auf den Hostnamen zu, der im vHost verwendet wird? Mir ist es schon häufiger passiert, dass ich dann mit foo.dyndns.org:1080 oder sowas testen wollte, weil ich den DNS-Record noch nicht erzeugt hatte.. Und dann matchte erwartungsgemäß der vHost nicht..
Ich glaube, das Problem ist bei Apache. Bei VirtualHost kriegt es vom Browser auch die Port.
Ich habe (wenigstens temporär) so gelöst, daß ich Apache auf die 12500 lauschen lassen.
Grüße Luca Bertoncello (lucabert@lucabert.de)
On Sun, Nov 04, 2012 at 06:30:28PM +0100, Luca Bertoncello wrote:
Andre Klärner kandre@ak-online.be schrieb:
Greifst du von außen auf wirklich auf den Hostnamen zu, der im vHost verwendet wird? Mir ist es schon häufiger passiert, dass ich dann mit foo.dyndns.org:1080 oder sowas testen wollte, weil ich den DNS-Record noch nicht erzeugt hatte.. Und dann matchte erwartungsgemäß der vHost nicht..
Ich glaube, das Problem ist bei Apache. Bei VirtualHost kriegt es vom Browser auch die Port.
Ich habe (wenigstens temporär) so gelöst, daß ich Apache auf die 12500 lauschen lassen.
Hast du mal spaßeshalber mit Wireshark mitgeschnitten und geschaut ob das passt? Und: ist vielleicht im "Hostname: <foo>" HTTP-Header der Port enthalten? Wenn ja könnte ein passender "ServerAlias <foo>:12500" helfen.
Gruß, Andre
Andre Klärner kandre@ak-online.be schrieb:
Hast du mal spaßeshalber mit Wireshark mitgeschnitten und geschaut ob das passt? Und: ist vielleicht im "Hostname: <foo>" HTTP-Header der Port enthalten? Wenn ja könnte ein passender "ServerAlias <foo>:12500" helfen.
Nein, mit Wireshark habe ich nicht geschaut, aber ServerAlias foo:12500 habe ich schon probiert, leider erfolglos.
Grüße Luca Bertoncello (lucabert@lucabert.de)
lug-dd@mailman.schlittermann.de