squid-dns - problem

crumble

Mitglied und 2 Nüssen
Registriert
8. Januar 2003
Reaktionspunkte
6
Ort
Dresden
Hi Folks,

nachdem ich heute mal ein bisschen in der PC Praxis Sonderheft - Linux-intern rumgeblättert habe, wollte ich mir für mein LAN einen Squid einrichten mit der Funktion, alle ein- und ausgehenden Daten mit Hilfe von Surfprotect/Antivir auf Viren zu überprüfen (squid/squidguard welcher selbst wiederum Surfprotect verwenden soll)
also zunächst squid und squidguard installiert, in der squid.conf das lan-netz freigeschaltet und den squid gestartet.
Theoretsich sollte jetzt bereits surfen möglich sein. Ein normaler ping vom (Proxy-)Server zu einem Internetrechner zeigt mir, dass DNS funktioniert.
Wenn ich nun aber den Proxy bei den anderen Rechnern im LAN einstelle und eine Seite aufrufe, meldet sich Squid mit dem Fehler, dass die Adresse nicht gefunden werden kann:
The cache was not able to resolve the hostname presented in the URL.
Check if the address is correct.

Auch bei Eingabe einer IP-Adresse (von zB Google) kam diese Fehlermeldung.
Könnte mir jemand sagen, woran dies liegen kann?
Die Netzwerkkonfiguration/-topo ist im Anhang.
Obwohl die Rechner natürlich auch direkt aufs Internet zugreifen können, sollen sie (probeweise) erst ihre Daten über den Router an den Proxy schicken, der überprüft auf Viren, holt bei ok die seite aus dem netz und schickt sie zurück an den clienten. das ist zwar ein deutlicher mehraufwand an traffic aber das ist erstmal egal. als gateway hab ich die ip des routers gelassen, hab aber auch schon die ..1.99 des client2 probiert - keine änderung.
Bitte nachfragen, wenn noch etwas unklar ist.
 

Anhänge

  • squid.jpg
    squid.jpg
    14,6 KB · Aufrufe: 45
Hi,

das Gateway muss natürlich die IP des Routers bleiben, es sei denn Du hast am Proxy IP-forwarding eingerichtet, was aber Quatsch wäre. Im Browser ist die IP-Adresse und der Port des Proxys einzutragen, bei squid standardmäßig 3128. Also http://192.168.1.99:3128. Am Anfang solltest Du am Proxy keine Benutzerauthentifizerung verwenden, um dieses Problem schon mal auszuschliessen. Die Namensauflösung auf dem Proxy funktioniert ja scheinbar einwandfrei?!

Hast Du die Proxy-Funktion schon mal ohne Viren-Scan-Funktion probiert? Nicht, dass der Viren-Scanner dazwischen funkt.

Osti
 
Osti schrieb:
Hi,

das Gateway muss natürlich die IP des Routers bleiben, es sei denn Du hast am Proxy IP-forwarding eingerichtet, was aber Quatsch wäre. Im Browser ist die IP-Adresse und der Port des Proxys einzutragen, bei squid standardmäßig 3128. Also http://192.168.1.99:3128. Am Anfang solltest Du am Proxy keine Benutzerauthentifizerung verwenden, um dieses Problem schon mal auszuschliessen. Die Namensauflösung auf dem Proxy funktioniert ja scheinbar einwandfrei?!

Hast Du die Proxy-Funktion schon mal ohne Viren-Scan-Funktion probiert? Nicht, dass der Viren-Scanner dazwischen funkt.

Osti
Der Virenscanner ist noch nicht installiert - es gibt im Prinzip erstmal nur um das reine Surfen über den Proxy.
Als Gateway ist an allen Rechnern der Router (..1.1) eingestellt.
Ein Ping funktioniert von allen Rechnern aus problemlos.
Der Proxy ist auch im Browser eingestellt. Bei einer Anfrage meldet er sich auch - eben mit der Meldung oben, dass der Internetname nicht aufgelöst werden kann.
Eine Benutzerauthentifizierung sollte per default nicht aktiv sein bzw. sollte dann der squid dies als Fehlermeldung mitteilen - denk ich mal.
 
ja, ich denke, die sind richtig. normalerweise schaut der squid in die /etc/resolv.conf rein; ich habe aber zusätzlich die nameserver daraus in die squid.conf eingetragen. (nachdem es ohne die einträe auch nicht ging)
>dns_nameservers 141.30.66.1 192.168.1.1
der erste eintrag ist der eines öffentlichen DNS-Servers (meiner uni), der 2. der, den der Router bei der Einwahl (DSL) erhalten sollte. Die Server sind auch da, was das problemlose Surfen ohne Proxy zeigt.
 
Hast Du Squid im chroot? Wenn ja, muss da natuerlich auch die passende Resolver Library rein. Hast Du mal versucht, nach su auf Squid-User den Hostname aufzuloesen? Manchmal sind auch Library/Config-Permissions an sowas schuld.

Ansonsten halt noch den restlichen dns_* Direktiven Beachtung schenken .. oder gleich strace dranhaengen und schauen woran's letztendlich scheitert. Mal mit tcpdump geschaut ob die domain-Packets zur/ueber die Firewall hinaus kommen, wenn Du den Proxyaufruf startest?
 
Code:
server:/var/log/squid # su squid
squid@server:/var/log/squid> ping [url]www.google.de[/url]
PING [url]www.google.akadns.net[/url] (66.102.11.104) from 192.168.1.99 : 56(84) bytes of data.
64 bytes from 66.102.11.104: icmp_seq=1 ttl=244 time=90.4 ms
...
->geht

hier noch ein auszug aus der /var/log/cache.log
Vielleicht ist ja hier ein Fehler zu ersehen
Code:
2004/08/20 12:53:18| Starting Squid Cache version 2.4.STABLE6 for i686-pc-linux-gnu...
2004/08/20 12:53:18| Process ID 1090
2004/08/20 12:53:18| With 4096 file descriptors available
2004/08/20 12:53:18| DNS Socket created on FD 5
2004/08/20 12:53:18| Adding nameserver 141.30.66.1 from squid.conf
2004/08/20 12:53:18| Adding nameserver 192.168.1.1 from squid.conf
2004/08/20 12:53:18| helperOpenServers: Starting 5 'squidGuard' processes
2004/08/20 12:53:18| User-Agent logging is disabled.
2004/08/20 12:53:18| Unlinkd pipe opened on FD 15
2004/08/20 12:53:18| Swap maxSize 102400 KB, estimated 17066 objects
2004/08/20 12:53:18| Target number of buckets: 853
2004/08/20 12:53:18| Using 8192 Store buckets
2004/08/20 12:53:18| Max Mem  size: 8192 KB
2004/08/20 12:53:18| Max Swap size: 102400 KB
2004/08/20 12:53:18| Rebuilding storage in /var/cache/squid (CLEAN)
2004/08/20 12:53:18| Using Least Load store dir selection
2004/08/20 12:53:18| Set Current Directory to /var/cache/squid
2004/08/20 12:53:18| Loaded Icons.
2004/08/20 12:53:19| Accepting HTTP connections at 0.0.0.0, port 3128, FD 16.
2004/08/20 12:53:19| Accepting ICP messages at 0.0.0.0, port 3130, FD 17.
2004/08/20 12:53:19| Accepting SNMP messages on port 3401, FD 18.
2004/08/20 12:53:19| WCCP Disabled.
2004/08/20 12:53:19| Ready to serve requests.
2004/08/20 12:53:29| Done scanning /var/cache/squid swaplog (0 entries)
2004/08/20 12:53:29| Finished rebuilding storage from disk.
2004/08/20 12:53:29|         0 Entries scanned
2004/08/20 12:53:29|         0 Invalid entries.
2004/08/20 12:53:29|         0 With invalid flags.
2004/08/20 12:53:29|         0 Objects loaded.
2004/08/20 12:53:29|         0 Objects expired.
2004/08/20 12:53:29|         0 Objects cancelled.
2004/08/20 12:53:29|         0 Duplicate URLs purged.
2004/08/20 12:53:29|         0 Swapfile clashes avoided.
2004/08/20 12:53:29|   Took 10.7 seconds (   0.0 objects/sec).
2004/08/20 12:53:29| Beginning Validation Procedure
2004/08/20 12:53:29|   Completed Validation Procedure
2004/08/20 12:53:29|   Validated 0 Entries
2004/08/20 12:53:29|   store_swap_size = 84k
2004/08/20 12:53:29| storeLateRelease: released 0 objects

an den dns_* - einträgen fiel nur auf, das in dem vorgegebenen Verzeichnis /usr/sbin/ kein dnslookup - programm liegt. das programm ist mit 'which' weder als root, noch 'user' squid noch als standard-user auffindbar. dafür gibts doch imo dnsquery:
Code:
server:/ # dnsquery www.google.de
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58923
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4
;;      www.google.de, type = ANY, class = IN
www.google.de.          2d19h48m22s IN CNAME  www.google.com.
google.de.              3d23h14m47s IN NS  ns2.google.com.
google.de.              3d23h14m47s IN NS  ns3.google.com.
google.de.              3d23h14m47s IN NS  ns4.google.com.
google.de.              3d23h14m47s IN NS  ns1.google.com.
ns2.google.com.         3d23h59m21s IN A  216.239.34.10
ns3.google.com.         3d23h59m21s IN A  216.239.36.10
ns4.google.com.         3d23h59m21s IN A  216.239.38.10
ns1.google.com.         3d23h59m21s IN A  216.239.32.10
 
crumble .. der Resolver, der Squid angegeben wird, muss natuerlich schon existieren :)

Du kannst den IMHO in der Config einfach auskommentieren, dann nimmt er einfach gethostbyname() und geht damit ueber den normalen Resolver, ggfs. auch nscd. Ich finde es sowieso sinnvoller, Proxy- und NS-Cache zu trennen. NS-Caching ist auch fuer andere Anwendungen sinnvoll ...
 
auskommentiert war er schon. zu finden ist er bei SuSE8.0 statt unter /usr/sbin/ unter /usr/bin/. Ich hab einen Link erstellt. Dieser hilft allerdings auch nicht.
Ich hab noch herausgefunden, dass man in der /etc/named.conf unter forwarders ebenfalls die IP des DNS-Server eintragen sollte. Hab ich gemacht, der named-dienst gestartet - brachte aber auch nix *verzweifel*

hier noch ein ausszug aus der squid.conf (kommentare weg):
Code:
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
dns_nameservers 141.30.66.1 192.168.1.1
redirect_program /usr/sbin/squidGuard
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443 563     # https, snews
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost

acl allowed_hosts src 192.168.1.0/255.255.255.0
http_access allow allowed_hosts
http_access deny all

icp_access allow all
cache_mgr [email protected]
*verzweifel*
 
*yeah baby*
ich hab's.
es lag an dem
>redirect_program /usr/sbin/squidGuard
Offensichtlich sollte ich das erstmal genauer einrichten.

Trotzdem vielsten dank :)
 
Wenn Du named als Cache nehmen willst, musst Du die richtigen DNS nur als Forwarder in der named.conf haben, fuer Squid und /etc/resolv.conf im Allgemeinen nimmst Du dann 127.0.0.1 ..

Die Frage ist, ob das Dein Problem ist. Eher nein, wuerde ich sagen. Hast Du mal dns_testnames definiert, und werden die beim squid-Start aufgeloest?
 
named hab ich jetzt wieder rausgenommen und es läuft ok (bis auf die apache-seiten, die auf den squid-server selbst liegen. wahrscheinlich muss da doch die dns-ip-reihenfolge so sein, dass erst auf der 192.168.1.1 nachgesehen wird (für 'interne' Seiten) und bei Mißerfolg die Anfrage nach aussen geht.
die access.log zeigt ebenfalls erfolg:
Code:
1093020728.754    211 192.168.1.11 TCP_MISS/200 1167 GET http://www2.mtb-news.de/anz/adframe.php? - DIRECT/213.239.196.150 text/html
1093020728.810    260 192.168.1.11 TCP_MISS/200 1171 GET http://www2.mtb-news.de/anz/adframe.php? - DIRECT/213.239.196.150 text/html
1093020919.179    313 192.168.1.11 TCP_MISS/200 1585 GET http://www.google.de/ - DIRECT/66.102.11.99 text/html
es wird durch den redirect eintrag alles an das externe programm angegeben. da dieses wohl standardmäßig erstmal alles blockiert, ging halt nichts raus. das sollte ich mir erstmal ansehen. danach kommt der virenscanner. na mal sehen, vielleicht kommt hier noch mehr rein ;)
Danke nochmals.
 
Zurück