Squid Proxy Server (nicht transparent) funktioniert nicht



  • Hallo Forum,

    Mein Squid Proxy Server den ich unter PfSense 2.3 nach diesem Tutorial konfiguriert habe (https://www.youtube.com/watch?v=H-6_13P8pS8) funktioniert nicht, also er zeigt wenn ich ihn auf meinem PC im Browser (Firefox) als Proxy Server angebe,unter dem Port (3128), und eine http Website aufrufen willl nur Zeitüberschreitung an, also lädt die Seite nicht.

    Das Paket Squidguard ist (wie im Tutorial) auch installiert und konfiguriert,dabei kann ich aber die Funktionalität nicht testen, weil ja schon der normale Proxy nicht läuft.

    Wenn ich jetzt eine https Seite in der Adresszeile eingebe lädt der Browser diese ohne Probleme. Allerdings funktioniert das Sperren von https Seiten über die Blacklist von Squidguard auch nicht, was heißen könnte das der Proxy https Seiten einfach so weiterleitet ohne diese zu filtern oder so.

    Http Seiten lässt er dann allem Anschein nach garnicht durch.

    Die Einstellungen sind eigentlich dieselben wie im Tutorial, außer dass ich Transparenter Proxy deaktiviert habe, da ich das nicht brauche.

    Die zweite Sache was bei mir im Vergleich zum Tutorial anders ist, ist dass ich nur das WAN Interface habe und kein LAN Interface.
    Ich habe nur eine Netzwerkkarte in dem PC eingebaut auf dem der Proxy läuft und konnte somit bei der Installation von PfSense auch nur für das WAN Interface eine Netzwerkkarte angeben.
    Könnte es vielleicht daran liegen das der Proxy nicht richtig funktioniert?

    Also Internet hat er auf jeden Fall, er konnte ja auch die Blacklist von Shallalist erfolgreich runterladen.

    Muss ich vielleicht damit der Proxy läuft irgendwelche Firewallregeln konfigurierenM? (Bis jetzt habe ich an den Firewalleinstellungen nichts verändert)

    Freue mich auf Lösungsvorschläge

    LG



  • Moin,

    ein Router ist für komplette Funktionalität auf 2 oder mehr Netzwerkinterfaces angewiesen.
    Hast Du VLan taugliche Hardware? Dann könntest Du 2 VLans anlegen.

    Was hast du überhaupt vor? Willst Du einen reinen Proxy betreiben?

    -teddy



  • @magicteddy:

    Moin,

    ein Router ist für komplette Funktionalität auf 2 oder mehr Netzwerkinterfaces angewiesen.
    Hast Du VLan taugliche Hardware? Dann könntest Du 2 VLans anlegen.

    Was hast du überhaupt vor? Willst Du einen reinen Proxy betreiben?

    -teddy

    Ich möchte einfach einen Proxy betreiben, der mit über Blacklists auch Websites rausfiltern kann, welche ich in die Blacklist eintrage.
    Sonst nichts.



  • Moin,

    wenn es Dir ums Blocken geht wirf mal einen Blick auf https://pi-hole.net/
    Arbeitet aber nicht als Proxy sondern als DNS.

    Wenn es denn unbedingt Squid sein soll:
    http://www.itbert.de/raspberry-pi-squid-block-ads/

    Oder Du setzt einen Ubuntu Server mit Squid auf.

    -teddy



  • @magicteddy:

    Moin,

    wenn es Dir ums Blocken geht wirf mal einen Blick auf https://pi-hole.net/
    Arbeitet aber nicht als Proxy sondern als DNS.

    Wenn es denn unbedingt Squid sein soll:
    http://www.itbert.de/raspberry-pi-squid-block-ads/

    Oder Du setzt einen Ubuntu Server mit Squid auf.

    -teddy

    Ich würde aber gerne PFSense verwenden. Es muss doch eine Lösung für das Problem geben, bei anderem Leuten klappt es ja auch.
    Bei Ubuntu muss ich alles über die Kommamdozeile einstellen, bei PFSense hätte ich die Weboberfläche.

    -Yoda



  • Hallo,

    wie soll denn für deine Firewall dann das Natting funktionieren bei nur einem Interface. Ein und Ausgehendes Interface sind ja in deinem Fall gleich. Du müsstest dann die Ausgehenden NAT Regeln anpassen, bzw. den NAT reflection Mode (Advanced/Firewall/NAT). Dann eben auch die Regeln für eingehenden und ausgehenden Traffic. Klär also erstmal ab, ob das überhaupt passt, bevor wir uns dem Squid nähren.

    Ich habe das Video jetzt nicht gesehen, gut möglich das es da erwähnt wurde. HTTPS gehe ich mal davon aus, läuft bei dir nicht über den Proxy sondern geht direkt von deinem PC über das Gateway, nicht pfSense?! Mir ist dein Netzaufbau nämlich noch nicht ganz klar. WO steht deine pfSense im Netz? Hinter einer anderen Firewall, hinter einem Router, oder direkt an einem Modem?

    Ich lehne mich mal aus dem Fenster und behaupte, dass der Fehler nicht am Squid liegt, sondern an deinem Netz. Was genau möchtest du mit der pfSense bezwecken? Was wäre dein Einsatzziel? Es wird dir sicher nicht nur um den Squid gehen. Ich kann dir gerne dabei helfen, die "Basis" zu analysieren, um dann deinem Problem mit dem Squid näher zu kommen. Eine Lösung gibt es garantiert, da das Paket funktioniert und bei mir sowie vielen anderen seinen guten Dienst erweist.

    PS: Geht es dir nur um Filter, wäre pfBlocker-NG eine "viel" bessere Wahl. Da kannst du einfach viel mehr mit erreichen, da es auch die Kommunikation von NICHT Proxy fähigen Anwendungen und Geräten abfängt.

    Grüße
    Markus



  • @ms-kassel:

    Hallo,

    wie soll denn für deine Firewall dann das Natting funktionieren bei nur einem Interface. Ein und Ausgehendes Interface sind ja in deinem Fall gleich. Du müsstest dann die Ausgehenden NAT Regeln anpassen, bzw. den NAT reflection Mode (Advanced/Firewall/NAT). Dann eben auch die Regeln für eingehenden und ausgehenden Traffic. Klär also erstmal ab, ob das überhaupt passt, bevor wir uns dem Squid nähren.

    Ich habe das Video jetzt nicht gesehen, gut möglich das es da erwähnt wurde. HTTPS gehe ich mal davon aus, läuft bei dir nicht über den Proxy sondern geht direkt von deinem PC über das Gateway, nicht pfSense?! Mir ist dein Netzaufbau nämlich noch nicht ganz klar. WO steht deine pfSense im Netz? Hinter einer anderen Firewall, hinter einem Router, oder direkt an einem Modem?

    Ich lehne mich mal aus dem Fenster und behaupte, dass der Fehler nicht am Squid liegt, sondern an deinem Netz. Was genau möchtest du mit der pfSense bezwecken? Was wäre dein Einsatzziel? Es wird dir sicher nicht nur um den Squid gehen. Ich kann dir gerne dabei helfen, die "Basis" zu analysieren, um dann deinem Problem mit dem Squid näher zu kommen. Eine Lösung gibt es garantiert, da das Paket funktioniert und bei mir sowie vielen anderen seinen guten Dienst erweist.

    PS: Geht es dir nur um Filter, wäre pfBlocker-NG eine "viel" bessere Wahl. Da kannst du einfach viel mehr mit erreichen, da es auch die Kommunikation von NICHT Proxy fähigen Anwendungen und Geräten abfängt.

    Grüße
    Markus

    Hi Markus,
    erstmal danke für deine Antwort.
    Also ich habe ehrlich gesagt keine Ahnung von Firewalls etc.
    Also PfSense steht in meinem LAN Netzwerk mit einer festen IP, also hinter meinem Router.
    Bis jetzt habe ich in PFSense an den Firewall Einstellungen nichts verändert.

    Ich hatte vorher einen Debian Proxy, auch mit Squid und dieser hat auch funktioniert. Allerdings wollte ich wegen der einfacheren Konfigurationsoberfläche auf PFSense umsteigen.

    Also mit PFSense will ich einen Squid Proxy mit Squidguard zum Laufen bekommen, sodass ich über die Blacklist Seiten sperren kann (am besten auch HTTPS Seiten, also diese müssten auch über den Squid gehen) und ich möchte dass wenn von mehreren PCs im Netzwerk gleichzeitg die gleiche Seite aufgerufen wird, dass diese nur einmal auf den Squid geladen wird und nicht für jeden PC einzelnd geladen werden muss.

    Hoffe du kannst mir helfen

    -Yoda



  • Hallo,

    dann versuchen wir mal unser Glück :-)

    Versuch dir mal vorzustellen du bist ein IP Paket grins und kommst an der Telefondose / Kabeldose deines Gebäudes an. Das erste was du zu Gesicht bekommst wäre dann das Modem / Router. Von da aus geht es dann in deine Firewall an den WAN Port. Deine übrigen Geräte / Switche, Accesspoints, Drucker und PCs, steckst du an den LAN Port deiner pfSense.

    Von der Architektur gesehen, kommt also erst dein Router des Anbieters (Telekom etc.) und dann deine pfSense Firewall. Alle anderen Gerätschaften hängst du bitte hinter deine pfSense. Der "Nachteil" ist, dass dein WLAN deaktiviert werden muss, sofern es auf deinem Router überhaupt aktiv ist. Für WLAN solltest du einen eigenen Accesspoint haben. Wenn du aus irgendwelchen Gründen damit nicht leben kannst, wäre pfSense vielleicht das falsche Produkt, denn du hast hier eine 1A Firewall / Gateway- Lösung die eigentlich zu schade dafür ist, nur als Proxy zu fungieren.

    Gehen wir kurz auf das Szenario ein, du kannst ohne WLAN nicht leben… dann kannst du unter advanced auch gleich die Firewall "deaktivieren". Sämtliche Filter wären damit ausgeschaltet, denn die machen in diesem Fall eh keinen Sinn mehr, da die pfSense mitten in deinem Netzwerk steht und nicht wie sie es sollte, davor!

    Jetzt zu dem Fall, die pfSense steht direkt hinter deinem Router und vor deinem Netzwerk (LAN). Ich gehe davon aus, dass die pfSense zum Router eine Verbindung aufbauen kann?! Du solltest im Übrigen am Router deines Anbieters DHCP aktivieren und dein WAN Interface der pfSense ebenfalls auf DHCP setzen. Das macht am wenigsten Probleme (persönliche Meinung). Deine pfSense sollte ein anderes LAN Subnetz bekommen. Hat deine "FRITZ!Box z.B. die 192.168.178.1 als IP Adresse, benötigt deine pfSense am LAN Interface eine andere z.B: 192.168.2.1 oder 10.0.0.1

    Dein DHCP Server der pfSense sollte IP Adressen automatisch verteilen, ich persönlich lasse immer etwas Platz im DHCP Pool für feste IP Adressen und beginne dann IP Adressen ab 192.168.2.20 - 192.168.2.254 zu verteilen.

    Wenn das steht, dann richtest du deine CA ein über den Cert. Manager der pfSense. Das root Zertifikat bitte herunterladen und auf allen deinen Geräten in den Speicher der "vertrauenswürdigen Stammzertifizierungsstellen" importieren. Wenn das erledigt ist, gehts an den Squid. Paket herunterladen, installieren und einrichten wie du es haben möchtest.

    Lass es mich wissen, wenn du bei einem der Schritte Probleme hast.

    Grüße
    Markus



  • Hallo Yoda00,

    es sollte kein Problem sein, die pfSense lediglich als Proxy zu benutzen. Es reicht dafür auch ein Interface vollkommen aus.
    Wenn du wirklich nur die reine Proxy Funktionalität nutzen willst, also keine "Firewall" und kein "NAT", weil das deine Speedport oder deine Fritzboz oder ein anderes Gerät macht, dann würde ich dir empfehlen folgende Option zu setzen:

    System –> Advanced --> Firewall & NAT --> Disable Firewall

    Jetzt musst du dich an der pfsense um keine Firewall-Regeln etc. mehr kümmern.

    Weiterhin musst du den Gateway und DNS konfigurieren.

    System –> General Setup --> DNS Server

    Ich würde folgende Optionen in der pfsense NICHT anhaken:

    System –> General Setup --> Disable DNS Forwarder
    System --> General Setup --> DNS Server Override

    Weiterhin den DNS Forwarder an der pfsense aktivieren:

    Services –> DNS Forwarder --> Enable DNS forwarder

    Ich würde dir empfehlen bei Interfaces "All" zu verwenden.

    Weiterhin der pfsense ein Gateway konfigurieren:

    System –> Routing --> Gateways

    Als Gateway die IP-Adresse wählen, die dein Speedport oder deine Fritzbox haben.
    Weiterhin würde ich dort folgende Optionen aktivieren (anhaken):

    This will select the above gateway as the default gateway.
    Disable Gateway Monitoring

    Als letztes noch das WAN Interface der pfsense konfigurieren - falls nicht sowieso schon geschehen:

    Interfaces –> WAN --> IPv4 address
    IPv4 Upstream gateway (Das Gateway, was zuvor angelegt wurde)

    Folgende Optionen beim WAN Interface noch deaktivieren. Evtl. unnötig/nicht möglich, da du zuvor die Firewall komplett abgeschaltet hast.

    Block private networks and loopback addresses
    Block bogon networks

    Beim Thema squid würde ich folgendes empfehlen - erst einmal ohne squidguard testen:

    PackageProxy Server: General SettingsGeneral

    Aktivieren / Haken setzen (Squid General Settings):

    Enable Squid Proxy
    Allow Users on Interface
    Resolve DNS IPv4 First

    Bei "Proxy Interface(s)" solltest du "WAN" auswählen

    Use "Use Alternate DNS Servers for the Proxy Server" solltest du leer lassen. Dann verwendet er die DNS Server die du weiter oben konfiguriert hast.

    Transparent Proxy settings:
    Ist deaktiviert, also nichts zu tun.

    SSL Man In the Middle Filtering:

    "Enable SSL filtering." aktivieren
    Bei "CA" ein CA-Zertifikat angeben, dem du und deine Clients vertrauen
    Bei "SSL Intercept Interface(s)" solltest du auch "WAN" nehmen

    Danach speichern. Anschließend empfehle ich hier zu prüfen, ob der Squid Proxy verwendet wird:

    Package –> Proxy Server: General Settings --> Real Time

    In deinem Browser musst du nun die IP-Adresse der pfsense (WAN Interface) angeben und als Port 3128. In den meisten Browsern kannst du dann wählen, dass dieser Port auch für "http und https" verwendet werden soll. Das anhaken.

    An deinen Clients im Netz musst du als Gateway deine FritzBox einstellen, damit jedglicher anderer Traffic, der nicht vom Browser kommt, direkt dort hin geroutet wird.
    Traffic der vom Browser kommt (http, https) wird über die Proxy Konfiguration zur pfsense geleitet und von dort wird eine neue TCP Verbindung vom Proxy aufgebaut. Es gibt also keine Probleme wegen "asynchronem Routing".

    Danach sollte es funktionieren.

    PS:
    In diesem Szenario kannst du allerdings nicht verhindern, dass Clients, die KEINEN Proxy eingetragen haben oder diesen ignorieren einfach direkt mit dem Internet kommunizieren können.
    Kann den Leuten hier, die behaupten, dass 1 Interface nicht ausreicht oder NAT benötigt wird nicht oder nur teilweise zustimmen.

    –-- edit ----
    Jenachdem, ob du DHCP an der Fritzbox nutzt oder nicht, empfiehlt es sich den DHCP Server an der pfsense auszuschalten. Ich würde dazu raten, wenn die pfsense wirklich nur proxy sein soll.

    Viele Grüße



  • @Nachtfalke:

    Hallo Yoda00,

    es sollte kein Problem sein, die pfSense lediglich als Proxy zu benutzen. Es reicht dafür auch ein Interface vollkommen aus.
    Wenn du wirklich nur die reine Proxy Funktionalität nutzen willst, also keine "Firewall" und kein "NAT", weil das deine Speedport oder deine Fritzboz oder ein anderes Gerät macht, dann würde ich dir empfehlen folgende Option zu setzen:

    System –> Advanced --> Firewall & NAT --> Disable Firewall

    Jetzt musst du dich an der pfsense um keine Firewall-Regeln etc. mehr kümmern.

    Weiterhin musst du den Gateway und DNS konfigurieren.

    System –> General Setup --> DNS Server

    Ich würde folgende Optionen in der pfsense NICHT anhaken:

    System –> General Setup --> Disable DNS Forwarder
    System --> General Setup --> DNS Server Override

    Weiterhin den DNS Forwarder an der pfsense aktivieren:

    Services –> DNS Forwarder --> Enable DNS forwarder

    Ich würde dir empfehlen bei Interfaces "All" zu verwenden.

    Weiterhin der pfsense ein Gateway konfigurieren:

    System –> Routing --> Gateways

    Als Gateway die IP-Adresse wählen, die dein Speedport oder deine Fritzbox haben.
    Weiterhin würde ich dort folgende Optionen aktivieren (anhaken):

    This will select the above gateway as the default gateway.
    Disable Gateway Monitoring

    Als letztes noch das WAN Interface der pfsense konfigurieren - falls nicht sowieso schon geschehen:

    Interfaces –> WAN --> IPv4 address
    IPv4 Upstream gateway (Das Gateway, was zuvor angelegt wurde)

    Folgende Optionen beim WAN Interface noch deaktivieren. Evtl. unnötig/nicht möglich, da du zuvor die Firewall komplett abgeschaltet hast.

    Block private networks and loopback addresses
    Block bogon networks

    Beim Thema squid würde ich folgendes empfehlen - erst einmal ohne squidguard testen:

    PackageProxy Server: General SettingsGeneral

    Aktivieren / Haken setzen (Squid General Settings):

    Enable Squid Proxy
    Allow Users on Interface
    Resolve DNS IPv4 First

    Bei "Proxy Interface(s)" solltest du "WAN" auswählen

    Use "Use Alternate DNS Servers for the Proxy Server" solltest du leer lassen. Dann verwendet er die DNS Server die du weiter oben konfiguriert hast.

    Transparent Proxy settings:
    Ist deaktiviert, also nichts zu tun.

    SSL Man In the Middle Filtering:

    "Enable SSL filtering." aktivieren
    Bei "CA" ein CA-Zertifikat angeben, dem du und deine Clients vertrauen
    Bei "SSL Intercept Interface(s)" solltest du auch "WAN" nehmen

    Danach speichern. Anschließend empfehle ich hier zu prüfen, ob der Squid Proxy verwendet wird:

    Package –> Proxy Server: General Settings --> Real Time

    In deinem Browser musst du nun die IP-Adresse der pfsense (WAN Interface) angeben und als Port 3128. In den meisten Browsern kannst du dann wählen, dass dieser Port auch für "http und https" verwendet werden soll. Das anhaken.

    An deinen Clients im Netz musst du als Gateway deine FritzBox einstellen, damit jedglicher anderer Traffic, der nicht vom Browser kommt, direkt dort hin geroutet wird.
    Traffic der vom Browser kommt (http, https) wird über die Proxy Konfiguration zur pfsense geleitet und von dort wird eine neue TCP Verbindung vom Proxy aufgebaut. Es gibt also keine Probleme wegen "asynchronem Routing".

    Danach sollte es funktionieren.

    PS:
    In diesem Szenario kannst du allerdings nicht verhindern, dass Clients, die KEINEN Proxy eingetragen haben oder diesen ignorieren einfach direkt mit dem Internet kommunizieren können.
    Kann den Leuten hier, die behaupten, dass 1 Interface nicht ausreicht oder NAT benötigt wird nicht oder nur teilweise zustimmen.

    –-- edit ----
    Jenachdem, ob du DHCP an der Fritzbox nutzt oder nicht, empfiehlt es sich den DHCP Server an der pfsense auszuschalten. Ich würde dazu raten, wenn die pfsense wirklich nur proxy sein soll.

    Viele Grüße

    Hi!
    Vielen Dank, es funktioniert endlich.
    Das einzige was ich nicht machen konnte war SSL Filtering aktivieren da ich erst ein CA Script hinzufügen musste, aber keinen Plan hab was ich da eingeben soll  ;D
    Könntest du mir da noch helfen.
    Und ich weiß net wie man DHCP abschaltet, wenn du mir das auch noch sagen könntest :)

    LG und Vielen vielen Dank
    -Yoda00



  • Hallo Yoda00,

    DHCP Server deaktivierst du wie folgt - wenn er überhaupt eingeschaltet ist bei nur einem Interface:

    Services –> DHCP Server --> WAN

    Den Haken bei "Enable DHCP server on WAN interface" entfernen. Ist keiner drin, ist der DHCP Server aus auf der pfsense. Deine Clients enthalten dann von der FritzBox/Speedport eine IP es sei denn du hast diese statisch konfiguriert.

    Beim SSL-Filtering benötigst du eine "CA" (Certificate Authority) welcher du bzw. dein Browser und deine Engeräte vertrauen müssen. Beim SSL-Filtering stellt der Squid-Proxy stellvertretend ein Zertifikat aus. Dieses Zertifikat hat eine Vertrauensstellung zur CA. Jeder, der also der CA vertraut, vertraut auch allen Zertifikaten, die von dieser CA ausgestellt wurden. Das ist wichtig bei verschlüsselten Verbindungen, damit du nicht immer einer Zertifikatsfehlermeldung angezeigt bekommst.

    Dazu musst du noch Folgendes tun:
    1. Eine neue CA auf der pfSense erstellen (Es sei denn du hast bereits eine andere CA, die man importieren kann. Davon gehe ich aber nicht aus)
    2. Die CA in den Browsern deiner Clients importieren als "Vertrauenswürdige Stammzertifizierungsstelle"

    Zertifikat erstellen:

    System –> Certificate Manager --> CAs

    Dort auf "Add" klicken und eine neue CA erstellen.

    Descriptive name: Irgendein Name, dem du deiner CA geben willst. Zum Beispiel "Meine private CA" oder "Yoda00-CA"
    Method: Create an internal certificate authority

    Internal Certificate Authority
    Key length (bits): 2048
    Digest Algorithm: sha256
    Lifetime (days): 3650
    Country Code: DE
    State or Province: Hessen
    City: Frankfurt am Main
    Organization: Yoda00 Company
    Email Address: optional, kann leer gelassen werden
    Common Name: Yoda00-CA (oder was auch immer du toll findest)
    Save

    Danch das CA Zertifikat exportieren um es später auf allen deinen Clients einspielen zu können.

    System –> Certificate Manager --> CAs --> Export CA (Sysmbol rechts neben der CA)

    Die erstellte CA musst du nun im Squid-Proxy als "CA" auswählen. Sollte nun im Pulldownmenü auswählbar sein.

    PS: Würde dort noch alle 3 Punkte bei "Certificate Adapt" markieren. Mittels STRG kann man mehrere Optionen auswählen.

    Nun die exportierte ca.crt in deinem Browser importieren.
    Jenachdem, welchen Browser du nutzt, kann das variieren. Irgendwo solltest du aber eine Möglichkeit finden, Zertifikate zu importieren. Importiere das ca.crt als "Vertrauenswürdige Stammzertifizierungsstelle". Danach solltest du beim Aufruf von https Webseiten keine Fehlermeldung mehr bekommen und das ausgestellt Zertifikat, was du angezeigt bekommst, dass sollte als "Herausgeber" immer deine "Yoda00"-CA" sein, oder wie auch immer du diese genannt hast.

    Viel Erfolg!