PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : squid und Apache auf einer Maschine



sauertopf
21.02.03, 22:51
Hallo,

ich will den Zugriff auf einen Web-Bereich (Directory) nur für Computer des internen Netzes erlauben (Apache läuft auf NAT-Router im folgenden PC1 genannt), hab da aber ein Problem:

Auf PC1 läuft ausserdem noch ein squid, mit dem sich die internen Clients für alle Web-Zugriffe connecten, also auch für die auf den Apache. Deshalb kann ich in .htaccess nicht einfach die IP-Adressen allowen. In der custom-logfile des Apache-Servers sind alle Zugriffe von bla.dip.t-dialin.net. Ich hab dynamische IP. Also das Problem: Die Zugriffe auf Apache kommen von squid mit entweder der dynamischen IP oder dem dip.t-dialin. Also nix statisches, was man gebrauchen könnte.

Ideen?

Wahrscheinlich muss ich den squid irgendwie konfigurieren, oder?

geronet
22.02.03, 09:05
Sperr den Port 80 doch einfach mit iptables auf der externen Netzwerkkarte, dann können nur deine internen Rechner auf den Apache zugreifen.

Grüsse, Stefan

sauertopf
22.02.03, 13:41
Jo, das wär ne Möglichkeit. Nur schade, dass dann von aussen keiner mehr auf meinen Apache zugreifen kann. Manche Seiten sollen auch von aussen erreichbar sein. Das Problem liegt glaub ich an dem Absender, den alle Requests von Squid verpasst kriegen: nämlich (s. o.) die Internet-Ip oder den komischen xxx.dip.t-oneline.dialin. Wäre der localhost - ich hätt keine Probleme mehr.

geronet
22.02.03, 14:18
Dann mach einen Virtualhost mit dem Apache und setz die Seiten rein die von aussen erreichbar sein sollen.

Grüsse, Stefan

sauertopf
22.02.03, 14:25
Dann muss ich intern oder extern einen anderen Port im Apache einstellen. Keine gute Lösung: Kein Mensch gibt hinter URLSs Portnummern ein.
Eine Lösung wäre, wenn ich TCP-Outgoing-Address von Squid abhängig von der URL setzen könnte. Das geht aber soweit ich weiss nicht.

geronet
22.02.03, 15:15
>Dann muss ich intern oder extern einen anderen Port im Apache einstellen

Wieso hast du nur ein Netzwerkinterface?

sauertopf
22.02.03, 15:44
Wieso hast du nur ein Netzwerkinterface?

Nein! Da haben wir uns missverstanden.

Also: Die internen User machen http über squid. Squid leitet http-Requests, die an meinen Apache gehen sollen, lokal an ihn weiter (wie gesagt Apache und squid beide auf PC1). Squid tut das aber mit einem Absender, der entweder die öffentliche (dynamische) IP von PC1 darstellt, oder eben dieses xxx.t-online.dialin. Damit kann Apache nicht erkennen, dass die Requests eigentlich vom internen Netz kommen.

Wie meinst Du, könnte ich erreichen, dass der eine VH nur vom internen Netz und der andere auch vom Internet her erreichbar ist?

geronet
22.02.03, 17:23
Wenn du immer feste IP Adressen hast machst du einen Virtualhost auf deiner externen Adresse und somit gehn die Antworten von aussen nur an diesen.

Die internen Anfragen vom Port 80 werden dann je nachdem du das einstellst vom normalem Verzeichnis behandelt oder eben von einem anderem Virtualhost.

Ich hab bei mir auch den squid & apachen drauf, die Konfiguration ist folgend:
Squid so eingestellt dass er transparent funktionieren kann, d.h. alle Pakete die nicht an die interne IP-Adresse des Computers gehen werden mit iptables auf 8080 (mein squid-port) redirectet.
Die anderen Pakete auf Port 80 sind dann logischerweise Anfragen auf den httpd selber, der sie ohne den squid beantwortet.
Ein Browser bei dem der Proxy eingetragen ist frägt natürlich den Proxy selber und der wiederum über 127.0.0.1 den Apachen (so sollte es sein).
Man kann ja noch beim Browser einstellen dass er den Proxy nicht bei der internen IP vom Apachen verwendet.

Aber bei mir hab ich die drei Zeilen drin, damit der squid die Anfragen an den lokalen Apachen direkt weiterleitet (somit taucht auch die Client-IP im http-log auf):

acl local-servers dst 192.168.1.0/255.255.255.0
always_direct allow localhost
always_direct allow local-servers


Zusätzlich fungiert bei mir ein Virtualhost auf der internen IP, da ich bei der externen eine dynamische habe, für diese ist dann der normale Apache zuständig, also ein Verzeichnis mit html Dateien fürs Internet und eins fürs Intranet.

Grüsse, Stefan

sauertopf
22.02.03, 18:05
Danke!

Wir war entgangen, dass man acls auch mit anderen Tags kombinieren kann als http_access, icp_access, miss_access, proxy_auth_realm und ident_lookup_access, weil diese zusammen mit den acls in einem Abschnitt stehen, und andere Tags in anderen Abschnitten der squid.conf. Deswegen hab ich die anderen Tags gar nicht erst beachtet.

Keep Hackin'!

sauertopf
22.02.03, 20:14
always_direct übergibt nicht die lokale ip! zu sehen in der log-datei vom apache.

squid.conf:
acl lddst dstdomain testserver.homelinux.net
always_direct allow lddst

Immer noch keine Lösung.

sauertopf
23.02.03, 01:06
Lösung:

acl lddst dstdomain .testserver.homelinux.net
tcp_outgoing_address 127.0.0.1 lddst
tcp_outgoing_address 255.255.255.255

:)

Geht aber erst ab squid 2.5.