pfSense: Konfigurieren eines transparenten Squid Web Proxy mit Multi-WAN Links

Wichtiger Hinweis zur pfSense Version 2.1:

04.02.2014: Es scheint das Load Balancing mit aktiviertem Squid bei vielen gar nicht mehr funktioniert. Die Failover-Konfiguration funktioniert jedoch ohne Probleme mit dem Squid Proxy. Siehe pfSense Forum

Um einen Standort mit redundanter Internetanbindung auszurüsten, eignet sich die Firewall-Distribution pfSense 2.x perfekt. Die Distribution unterstützt standardmässig Load Balancing und Failover mit mehreren WAN-Anschlüssen. Mehr dazu findet man im pfSense Wiki unter Multi-WAN.

Wird der Web Proxy Squid nicht auf dem gleichen Host betrieben, sondern hinter der Firewall, bietet auch diese Konfiguration keine grossen Probleme. Den das LoadBalancing und Failover funktioniert gut.

In diesem Beitrag werde ich auf die Konfiguration eingehen, bei der Squid auf dem selben Host läuft. Im Web findet man sehr viele Beiträge zu diesem Thema. Es scheint für diese Lösung keine Standardkonfiguration zu geben. Je nachdem ob man zusätzliche Pakete installiert hat, kann die Konfiguration abweichen. Was bei einer Installation läuft, muss nicht zwangsläufig bei einer anderen funktionieren. Ich werde hier einfach meine Erfahrungen und Ergänzungen vorstellen, die ich beim Sichten der verschiedenen Anleitungen gemacht habe, bis ich eine funktionierende Konfiguration hatte. Dieser Beitrag soll kein vollständiges “Howto” sein, sondern nur die wichtigen Punkte hervorheben, die mir geholfen haben.

Schritt 1: Multi-WAN

Als erster Schritt muss die Multi-WAN Konfiguration, wie in der Anleitung beschrieben, erstellt und ohne Proxy getestet werden. Dabei sollten zusätzlich folgende wichtige Punkte beachtet werden:

Gateways Einstellungen

Anmerkung zur pfSense Version 2.0.3:

Unter “System->Routing->Gateways” sollte kein Gateway als “Default-Gateway” markiert sein. Es scheint als verwendet pfSense standardmässig den Gateway des WAN-Interfaces als “Default-Gateway”. (Beim Versuch das WAN2-Interface als “Default-Gateway” zu definieren funktionierte die Abfrage über Squid nicht mehr.)

Gateways Einstellungen
Gateways Einstellungen

Anmerkung zur pfSense Version 2.1:

Mit der Version 2.1 scheint das Definieren eines “Default-Gateway” auch bei mir wieder zu Funktionieren. Daher sollte unter “System->Routing->Gateways” ein Gateway als “Default-Gateway” markiert werden.

Unter “Diagnostics->Routes” kann die Routingtabelle eingesehen werden und dort findet man auch den Eintrag des “Default-Gateway”.

Routingtabelle
Routingtabelle

Ein weiterer wichtiger Punkt ist die Einstellung “Allow default gateway switching” welche aktiviert werden sollte. So wird beim Ausfall des WAN-Interfaces automatisch ein anderes Interface als “Default-Gateway” eingesetzt. Dies kann unter “System->Advanced->Miscellaneous” geändert werden.

Load Balancing Einstellungen
Load Balancing Einstellungen

DNS-Server Einstellungen

Bei den DNS-Server Einstellungen sollten pro Gateway mindestens ein DNS-Server eingetragen werden. Was auch nicht schaden kann, ist ein öffentlicher DNS-Server der über alle Interfaces erreichbar ist. Hier in diesem Beispiel wurde zusätzlich ein DNS-Server von Google angegeben. Eintragen kann man diese unter “System->General Setup”.

DNS-Server Einstellungen
DNS-Server Einstellungen

Firewall Rules

Zusätzlich zu den Firewall-Regeln die den Datenverkehr über den gewünschten Gateway oder die Gatewaygruppe leiten, muss noch eine eigene Regel für den DNS-Traffic des Squid Proxy erstellt werden.

DNS-Floating Rule
DNS-Floating Rule

Details der Floating-Rule:

  • Interfaces: Wan & Wan2
  • Direction: out
  • Protocol: TCP/UDP
  • Source: any
  • Destination: any
  • Destination Port: 53 (DNS)
  • Gateway: Wan1BalanceWan2 (Definierte Gatewaygruppe)

Schritt 2: Squid Konfiguration

Wurde die Multi-WAN Konfiguration erfolgreich getestet (Unterbruch simulieren der verschiedenen WAN’s, surfen funktioniert noch), kann mit der Konfiguration des Proxy-Server’s angefangen werden.

Dazu werden unter “Services->Proxy Server” die Interfaces ausgewählt bei denen die HTTP-Abfrage über den Proxy Server laufen sollen. Anmerkung: In manchen Anleitungen steht, man soll das “Loopback” Interface auch auswählen. Dies wird jedoch in dieser Konfiguration nicht verwendet, sondern führt nur zu Fehler bei den Proxy abfragen.

Squid Einstellungen Interfaces
Squid Einstellungen Interfaces

Als letzte Einstellung muss unter “Custom Options” die Zeile “tcp_outgoing_address 127.0.0.1;” eingetragen werden. Mit diesem Befehl schickt Squid sämtliche TCP-Anfragen wieder zurück an pfSense, wo dann die Pakete an den richtigen Gateway verschickt werden.

Squid Einstellung Custom Options
Squid Einstellung Custom Options

Zum Schluss

Nach diesen Einstellungen sollten nun alle HTTP-Anfragen die über den Squid Web Proxy gehen, auch vom Load Balancing und Failover Mechanismus von pfSense profitieren. Diese Konfiguration habe ich nun seit einiger Zeit im Einsatz und es scheint gut zu funktionieren.

Bei Webapplikationen welche die Anmeldeinformationen an eine IP knüpfen, kann das Load Balancing zu Probleme führen. Nach dem Anmelden wird man kurze Zeit später wieder abgemeldet. Das ist immer dann der Fall, wenn die Verbindung neu über einen anderen Gateway geht. Um diese Problematik zu minimieren, kann man eigene Floating-Rules definieren oder man verwendet die Option “Use sticky connections”. Diese Option sorgt dafür, dass eine bestehende Verbindung immer über denselben Gateway geleitet wird. Aktivieren kann man sie unter “System->Advanced->Miscellaneous”. (Siehe Screenshot “Load Balancing Einstellungen”)

Nützliche Links

pfSense: Erweitern mit Zusatzpaketen (Erweiterungen)
pfSense doc: Multi-WAN
Google Public DNS
pfSense 2.0.2 Multiwan will filter ssl (squid+squidGuard+Lightsquid)
PDF: Set-up transparent Squid Web Proxy with failover on multi-WAN links
default gateway switching concern
New HOWTO: pfSense Squid Web Proxy with multi-WAN links
pfSense Multi-WAN – How to really make it work
Öffentliche Nameserver in der Schweiz

12 Gedanken zu „pfSense: Konfigurieren eines transparenten Squid Web Proxy mit Multi-WAN Links“

  1. Hi Thomas,

    ich habe eine kurze Frage: Wie deaktiviere ich das default-Gateway? Wenn ich den Haken entferne bleibt mein erstes Gateway trotzdem default. Ich komme nicht ohne ein default-Gateway aus den Settings. Hast Du einen Tipp?

    Grüße

    1. Hallo

      Wenn du die aktuellste pfSense Version 2.1 hast, sollte das Definieren eines “Default-Gateway” funktionieren. Habe vor Kurzem die neue Version installiert und kann jetzt auch WAN2 als “Default-Gateway” markieren und die Abfragen über Squid werden beantwortet. Daher versuch zuerst ein Gateway als “Default-Gateway” zu definieren.

      Einen “Default-Gateway” brauchst du immer, nur hat das Markieren in der vorherigen Version, zumindest in meiner Konfiguration, unter “System->Routing->Gateways” nicht wirklich geklappt und nur zu Problemen geführt. Daher habe ich geschrieben, dass ich den “Haken” entfernt habe.

      Und wie sieht es bei dir aus? Funktioniert es?

      Grüsse

    1. Hallo Chris

      Ja es funktioniert auch in der Version 2.1. Hast du den bei den “Firewall Rules” eine Regel definiert, welche sämtlichen Netzwerkverkehr (Bsp. LAN) über deine erstellte “Gateway Group” leitet? (Siehe Schritt 1 Multi-WAN)

      Grüsse
      Thomas

    1. Hallo Chris

      Also wenn ich dich richtig verstehe, funktioniert grundsätzlich das “Failover / Loadbalancing” solange du nicht den Proxy (Squid) verwendest?
      Wenn du eine Leitung offline nimmst (Stecker ziehst), hast du immer noch Internetzugriff und im Dashboard wird dir ein Interface als offline angezeigt?

      Wie sieht den deine Konfiguration aus?
      -> Squid Version
      -> Gateway Groups
      -> Loadbalancing oder Failover?
      -> Firewall Rules die den Traffic weiterleiten

      Um dir Helfen zu können, brauche ich halt doch ein paar Infos mehr 🙂

      Grüsse
      Thomas

  2. Hallo Thomas,
    sorry fürs späte Melden. Habe jetzt nochmal neu installiert.
    Squid-Version ist die 2.79 aus den Packages.
    Gateway Group ist angelegt und Loadbalancing funktioniert auch.
    – Eine Lan Regel: LAN net –> pfsenseIP:3128
    – keine WAN1 oder WAN2 Regeln
    – Floating: TCP/UDP * * * 53 GWGROUP

    Sobald ich den Proxy nutze, geht der ganze Traffic über WAN1

    MfG
    Chris

    1. Hallo Chris

      Ich verstehe deine LAN-Regel nicht ganz.
      Du willst also aus dem LAN nur traffic zu deinem Proxy erlauben??

      Eigentlich solltest du eine Regel haben, die dein Traffic zuerst einmal an deine GWGROUP schickt. Sonst wird
      ja dein Traffic gar nicht “Loadbalanced”:

      Proto Source Gateway
      IPv4 TCP/UDP LAN net GWGROUP

      Dann aktivier in der Proxy-Konfiguration mal den “Transparent proxy mode”.
      Und kontrollier, wie im Schritt 2 beschrieben, dass du im Feld “Custom Options” “tcp_outgoing_address 127.0.0.1;” eingetragen hast.

      Was passiert nun wenn du auf eine Webseite mit IP-Anzeige gehst und diese wiederholt aktualisierst ?

      Grüsse
      Thomas

    1. Hallo Chris

      Die IP die angezeigt wird, sollte aber dann schon eine von dir sein.
      Wenn du zwei Leitungen hast solltest du auch 2 IP’s haben.
      Kann natürlich auch sein, dass dein Provider auch einen Proxy zwischen geschaltet hat.

      Im Moment fehlen mir einfach die Informationen um dir helfen zu können. Ich kenne ja deine Infrastruktur nicht. Du kannst mir gerne eine Email schicken, mit einem Beschrieb deiner pfSense Infrastrukur und Screenshots der Einstellungen, damit diese nicht im Blog Veröffentlicht sind.

      Bei interesse kannst du mir im Kontakt Formular schreiben, werde dir dann die Email schicken.

      Ansonsten können Sie dir im pfSense Forum auch weiterhelfen.

      Grüsse
      Thomas

      1. Hallo Thomas,
        erstmal Danke für Deine Hilfe.
        Laut div. Threads im pfsense Forum soll in der 2.1 MultiWAN und Squid nicht funktionieren, bei einigen aber scheinbar wieder doch. Sind sogar grade ein paar aktualiesierte Threads ganz oben.
        So richtig schlau wird man da nicht draus.
        Ich hab das jetzt erstmal zurückgestellt und wenn ich Zeit hab, versuch ichs mit der 2.03 und MultiWAN/Squid
        Hast Du eigendlich die 2.1 mit MultiWAN neu aufgesetzt oder Deine 2.03 geupdatet? Vielleicht funktioniert es deshalb bei Dir.?

        MfG
        Chris

        1. Hallo Chris

          Ich habe jetzt mal einen Hinweis im Artikel angefügt, dass es mit der pfSense Version 2.1 und aktiviertem Squid Proxy Probleme mit dem Load Balancing gibt. Zu deiner Frage: Ich habe meine Version 2.0.3 Upgraded und kurze Zeit später lief nichts mehr. Habe dann eine Neuinstallation vorgenommen und ein Backup der Konfiguration eingespielt. Ich würde bei der Version 2.1 bleiben solange du nicht zwingend den Proxy brauchst. Hoffe es wird bald eine Lösung gefunden, die für alle funktioniert.

          Gruess
          Thomas

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.