Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Pfsense + Squid + Squidguard +transparent

    Scheduled Pinned Locked Moved pfSense Packages
    7 Posts 3 Posters 8.2k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      albokos
      last edited by

      Hi!

      Very happy to join the community, i'm new to pfsense and according to my small experience it is a great stuff.

      As you have probably guessed, my first post will be about filtering, that is the situation: i'm trying to get filtering working on my network i setted up pfsense with squidguard (only one interface with ip 192.168.2.57), downloads shalla's blacklist configure iexplorer on my test pc and everything works perfectly (filtering the requested pages). the problem is, i got 50 pcs on my network and thinking about going to each PC and putting the proxy settings just freez my back. so i tried to set my proxy to transparent and then problems started, i've tried everything i could imagine, squid seems to simply refuse to work in transparent mode. I hope someone will guide me out of this issue. Hereafter are my configs files:

      SQUID.CONF

      # Do not edit manually !
      http_port 192.168.2.57:3128
      http_port 127.0.0.1:3128
      http_port 127.0.0.1:3128 transparent
      icp_port 0
      
      pid_filename /var/run/squid.pid
      cache_effective_user proxy
      cache_effective_group proxy
      error_directory /usr/local/etc/squid/errors/French
      icon_directory /usr/local/etc/squid/icons
      visible_hostname Smartguard.smart-contactcenter.com
      cache_mgr soko.gazaro@smart-marketing.be
      access_log /var/logproxy/access.log
      cache_log /var/logproxy/cache.log
      cache_store_log none
      logfile_rotate 30
      shutdown_lifetime 3 seconds
      # Allow local network(s) on interface(s)
      acl localnet src  192.168.2.0/255.255.255.0 127.0.0.0/255.0.0.0
      httpd_suppress_version_string on
      uri_whitespace strip
      
      cache_mem 256 MB
      maximum_object_size_in_memory 32 KB
      memory_replacement_policy heap GDSF
      cache_replacement_policy heap LFUDA
      cache_dir ufs /var/squid/cache 3000 16 256
      minimum_object_size 0 KB
      maximum_object_size 4 KB
      offline_mode off
      cache_swap_low 90
      cache_swap_high 95
      
      # No redirector configured
      
      # Setup some default acls
      acl all src 0.0.0.0/0.0.0.0
      acl localhost src 127.0.0.1/255.255.255.255
      acl safeports port 21 70 80 210 280 443 488 563 591 631 777 901  3128 1025-65535 
      acl sslports port 443 563  
      acl manager proto cache_object
      acl purge method PURGE
      acl connect method CONNECT
      acl dynamic urlpath_regex cgi-bin ?
      cache deny dynamic
      http_access allow manager localhost
      
      http_access deny manager
      http_access allow purge localhost
      http_access deny purge
      http_access deny !safeports
      http_access deny CONNECT !sslports
      
      # Always allow localhost connections
      http_access allow localhost
      
      request_body_max_size 0 KB
      reply_body_max_size 0 deny all
      delay_pools 1
      delay_class 1 2
      delay_parameters 1 -1/-1 -1/-1
      delay_initial_bucket_level 100
      delay_access 1 allow all
      
      # Custom options
      redirect_program /usr/local/bin/squidGuard -c /usr/local/etc/squidGuard/squidGuard.conf
      redirector_bypass on
      redirect_children 3
      # Setup allowed acls
      # Allow local network(s) on interface(s)
      http_access allow localnet
      # Default block all to be sure
      http_access deny all
      
      

      SQUIDGUARD.CONF

      # ============================================================
      # SquidGuard configuration file
      # This file generated automaticly with SquidGuard configurator
      # (C)2006 Serg Dvoriancev
      # email: dv_serg@mail.ru
      # ============================================================
      
      logdir /var/squidGuard/log
      dbhome /var/db/squidGuard
      
      # 
      dest blk_BL_adv {
      	domainlist blk_BL_adv/domains
      	urllist blk_BL_adv/urls
      	log block.log
      }
      
      # 
      dest blk_BL_aggressive {
      	domainlist blk_BL_aggressive/domains
      	urllist blk_BL_aggressive/urls
      	log block.log
      }
      
      # 
      dest blk_BL_alcohol {
      	domainlist blk_BL_alcohol/domains
      	urllist blk_BL_alcohol/urls
      	log block.log
      }
      
      # 
      dest blk_BL_anonvpn {
      	domainlist blk_BL_anonvpn/domains
      	urllist blk_BL_anonvpn/urls
      	log block.log
      }
      
      # 
      dest blk_BL_automobile_bikes {
      	domainlist blk_BL_automobile_bikes/domains
      	urllist blk_BL_automobile_bikes/urls
      	log block.log
      }
      
      # 
      dest blk_BL_automobile_boats {
      	domainlist blk_BL_automobile_boats/domains
      	urllist blk_BL_automobile_boats/urls
      	log block.log
      }
      
      # 
      dest blk_BL_automobile_cars {
      	domainlist blk_BL_automobile_cars/domains
      	urllist blk_BL_automobile_cars/urls
      	log block.log
      }
      
      # 
      dest blk_BL_automobile_planes {
      	domainlist blk_BL_automobile_planes/domains
      	urllist blk_BL_automobile_planes/urls
      	log block.log
      }
      
      # 
      dest blk_BL_chat {
      	domainlist blk_BL_chat/domains
      	urllist blk_BL_chat/urls
      	log block.log
      }
      
      # 
      dest blk_BL_costtraps {
      	domainlist blk_BL_costtraps/domains
      	urllist blk_BL_costtraps/urls
      	log block.log
      }
      
      # 
      dest blk_BL_dating {
      	domainlist blk_BL_dating/domains
      	urllist blk_BL_dating/urls
      	log block.log
      }
      
      # 
      dest blk_BL_downloads {
      	domainlist blk_BL_downloads/domains
      	urllist blk_BL_downloads/urls
      	log block.log
      }
      
      # 
      dest blk_BL_drugs {
      	domainlist blk_BL_drugs/domains
      	urllist blk_BL_drugs/urls
      	log block.log
      }
      
      # 
      dest blk_BL_dynamic {
      	domainlist blk_BL_dynamic/domains
      	urllist blk_BL_dynamic/urls
      	log block.log
      }
      
      # 
      dest blk_BL_education_schools {
      	domainlist blk_BL_education_schools/domains
      	urllist blk_BL_education_schools/urls
      	log block.log
      }
      
      # 
      dest blk_BL_finance_banking {
      	domainlist blk_BL_finance_banking/domains
      	urllist blk_BL_finance_banking/urls
      	log block.log
      }
      
      # 
      dest blk_BL_finance_insurance {
      	domainlist blk_BL_finance_insurance/domains
      	urllist blk_BL_finance_insurance/urls
      	log block.log
      }
      
      # 
      dest blk_BL_finance_moneylending {
      	domainlist blk_BL_finance_moneylending/domains
      	urllist blk_BL_finance_moneylending/urls
      	log block.log
      }
      
      # 
      dest blk_BL_finance_other {
      	domainlist blk_BL_finance_other/domains
      	urllist blk_BL_finance_other/urls
      	log block.log
      }
      
      # 
      dest blk_BL_finance_realestate {
      	domainlist blk_BL_finance_realestate/domains
      	urllist blk_BL_finance_realestate/urls
      	log block.log
      }
      
      # 
      dest blk_BL_finance_trading {
      	domainlist blk_BL_finance_trading/domains
      	urllist blk_BL_finance_trading/urls
      	log block.log
      }
      
      # 
      dest blk_BL_fortunetelling {
      	domainlist blk_BL_fortunetelling/domains
      	urllist blk_BL_fortunetelling/urls
      	log block.log
      }
      
      # 
      dest blk_BL_forum {
      	domainlist blk_BL_forum/domains
      	urllist blk_BL_forum/urls
      	log block.log
      }
      
      # 
      dest blk_BL_gamble {
      	domainlist blk_BL_gamble/domains
      	urllist blk_BL_gamble/urls
      	log block.log
      }
      
      # 
      dest blk_BL_government {
      	domainlist blk_BL_government/domains
      	urllist blk_BL_government/urls
      	log block.log
      }
      
      # 
      dest blk_BL_hacking {
      	domainlist blk_BL_hacking/domains
      	urllist blk_BL_hacking/urls
      	log block.log
      }
      
      # 
      dest blk_BL_hobby_cooking {
      	domainlist blk_BL_hobby_cooking/domains
      	urllist blk_BL_hobby_cooking/urls
      	log block.log
      }
      
      # 
      dest blk_BL_hobby_games-misc {
      	domainlist blk_BL_hobby_games-misc/domains
      	urllist blk_BL_hobby_games-misc/urls
      	log block.log
      }
      
      # 
      dest blk_BL_hobby_games-online {
      	domainlist blk_BL_hobby_games-online/domains
      	urllist blk_BL_hobby_games-online/urls
      	log block.log
      }
      
      # 
      dest blk_BL_hobby_gardening {
      	domainlist blk_BL_hobby_gardening/domains
      	urllist blk_BL_hobby_gardening/urls
      	log block.log
      }
      
      # 
      dest blk_BL_hobby_pets {
      	domainlist blk_BL_hobby_pets/domains
      	urllist blk_BL_hobby_pets/urls
      	log block.log
      }
      
      # 
      dest blk_BL_homestyle {
      	domainlist blk_BL_homestyle/domains
      	urllist blk_BL_homestyle/urls
      	log block.log
      }
      
      # 
      dest blk_BL_hospitals {
      	domainlist blk_BL_hospitals/domains
      	urllist blk_BL_hospitals/urls
      	log block.log
      }
      
      # 
      dest blk_BL_imagehosting {
      	domainlist blk_BL_imagehosting/domains
      	urllist blk_BL_imagehosting/urls
      	log block.log
      }
      
      # 
      dest blk_BL_isp {
      	domainlist blk_BL_isp/domains
      	urllist blk_BL_isp/urls
      	log block.log
      }
      
      # 
      dest blk_BL_jobsearch {
      	domainlist blk_BL_jobsearch/domains
      	urllist blk_BL_jobsearch/urls
      	log block.log
      }
      
      # 
      dest blk_BL_library {
      	domainlist blk_BL_library/domains
      	urllist blk_BL_library/urls
      	log block.log
      }
      
      # 
      dest blk_BL_military {
      	domainlist blk_BL_military/domains
      	urllist blk_BL_military/urls
      	log block.log
      }
      
      # 
      dest blk_BL_models {
      	domainlist blk_BL_models/domains
      	urllist blk_BL_models/urls
      	log block.log
      }
      
      # 
      dest blk_BL_movies {
      	domainlist blk_BL_movies/domains
      	urllist blk_BL_movies/urls
      	log block.log
      }
      
      # 
      dest blk_BL_music {
      	domainlist blk_BL_music/domains
      	urllist blk_BL_music/urls
      	log block.log
      }
      
      # 
      dest blk_BL_news {
      	domainlist blk_BL_news/domains
      	urllist blk_BL_news/urls
      	log block.log
      }
      
      # 
      dest blk_BL_podcasts {
      	domainlist blk_BL_podcasts/domains
      	urllist blk_BL_podcasts/urls
      	log block.log
      }
      
      # 
      dest blk_BL_politics {
      	domainlist blk_BL_politics/domains
      	urllist blk_BL_politics/urls
      	log block.log
      }
      
      # 
      dest blk_BL_porn {
      	domainlist blk_BL_porn/domains
      	urllist blk_BL_porn/urls
      	log block.log
      }
      
      # 
      dest blk_BL_radiotv {
      	domainlist blk_BL_radiotv/domains
      	urllist blk_BL_radiotv/urls
      	log block.log
      }
      
      # 
      dest blk_BL_recreation_humor {
      	domainlist blk_BL_recreation_humor/domains
      	urllist blk_BL_recreation_humor/urls
      	log block.log
      }
      
      # 
      dest blk_BL_recreation_martialarts {
      	domainlist blk_BL_recreation_martialarts/domains
      	urllist blk_BL_recreation_martialarts/urls
      	log block.log
      }
      
      # 
      dest blk_BL_recreation_restaurants {
      	domainlist blk_BL_recreation_restaurants/domains
      	urllist blk_BL_recreation_restaurants/urls
      	log block.log
      }
      
      # 
      dest blk_BL_recreation_sports {
      	domainlist blk_BL_recreation_sports/domains
      	urllist blk_BL_recreation_sports/urls
      	log block.log
      }
      
      # 
      dest blk_BL_recreation_travel {
      	domainlist blk_BL_recreation_travel/domains
      	urllist blk_BL_recreation_travel/urls
      	log block.log
      }
      
      # 
      dest blk_BL_recreation_wellness {
      	domainlist blk_BL_recreation_wellness/domains
      	urllist blk_BL_recreation_wellness/urls
      	log block.log
      }
      
      # 
      dest blk_BL_redirector {
      	domainlist blk_BL_redirector/domains
      	urllist blk_BL_redirector/urls
      	log block.log
      }
      
      # 
      dest blk_BL_religion {
      	domainlist blk_BL_religion/domains
      	urllist blk_BL_religion/urls
      	log block.log
      }
      
      # 
      dest blk_BL_remotecontrol {
      	domainlist blk_BL_remotecontrol/domains
      	urllist blk_BL_remotecontrol/urls
      	log block.log
      }
      
      # 
      dest blk_BL_ringtones {
      	domainlist blk_BL_ringtones/domains
      	urllist blk_BL_ringtones/urls
      	log block.log
      }
      
      # 
      dest blk_BL_science_astronomy {
      	domainlist blk_BL_science_astronomy/domains
      	urllist blk_BL_science_astronomy/urls
      	log block.log
      }
      
      # 
      dest blk_BL_science_chemistry {
      	domainlist blk_BL_science_chemistry/domains
      	urllist blk_BL_science_chemistry/urls
      	log block.log
      }
      
      # 
      dest blk_BL_searchengines {
      	domainlist blk_BL_searchengines/domains
      	urllist blk_BL_searchengines/urls
      	log block.log
      }
      
      # 
      dest blk_BL_sex_education {
      	domainlist blk_BL_sex_education/domains
      	urllist blk_BL_sex_education/urls
      	log block.log
      }
      
      # 
      dest blk_BL_sex_lingerie {
      	domainlist blk_BL_sex_lingerie/domains
      	urllist blk_BL_sex_lingerie/urls
      	log block.log
      }
      
      # 
      dest blk_BL_shopping {
      	domainlist blk_BL_shopping/domains
      	urllist blk_BL_shopping/urls
      	log block.log
      }
      
      # 
      dest blk_BL_socialnet {
      	domainlist blk_BL_socialnet/domains
      	urllist blk_BL_socialnet/urls
      	log block.log
      }
      
      # 
      dest blk_BL_spyware {
      	domainlist blk_BL_spyware/domains
      	urllist blk_BL_spyware/urls
      	log block.log
      }
      
      # 
      dest blk_BL_tracker {
      	domainlist blk_BL_tracker/domains
      	urllist blk_BL_tracker/urls
      	log block.log
      }
      
      # 
      dest blk_BL_updatesites {
      	domainlist blk_BL_updatesites/domains
      	urllist blk_BL_updatesites/urls
      	log block.log
      }
      
      # 
      dest blk_BL_urlshortener {
      	domainlist blk_BL_urlshortener/domains
      	urllist blk_BL_urlshortener/urls
      	log block.log
      }
      
      # 
      dest blk_BL_violence {
      	domainlist blk_BL_violence/domains
      	urllist blk_BL_violence/urls
      	log block.log
      }
      
      # 
      dest blk_BL_warez {
      	domainlist blk_BL_warez/domains
      	urllist blk_BL_warez/urls
      	log block.log
      }
      
      # 
      dest blk_BL_weapons {
      	domainlist blk_BL_weapons/domains
      	urllist blk_BL_weapons/urls
      	log block.log
      }
      
      # 
      dest blk_BL_webmail {
      	domainlist blk_BL_webmail/domains
      	urllist blk_BL_webmail/urls
      	log block.log
      }
      
      # 
      dest blk_BL_webphone {
      	domainlist blk_BL_webphone/domains
      	urllist blk_BL_webphone/urls
      	log block.log
      }
      
      # 
      dest blk_BL_webradio {
      	domainlist blk_BL_webradio/domains
      	urllist blk_BL_webradio/urls
      	log block.log
      }
      
      # 
      dest blk_BL_webtv {
      	domainlist blk_BL_webtv/domains
      	urllist blk_BL_webtv/urls
      	log block.log
      }
      
      # 
      rew safesearch {
      	s@(google..*/search?.*q=.*)@&safe=active@i
      	s@(google..*/images.*q=.*)@&safe=active@i
      	s@(google..*/groups.*q=.*)@&safe=active@i
      	s@(google..*/news.*q=.*)@&safe=active@i
      	s@(yandex..*/yandsearch?.*text=.*)@&fyandex=1@i
      	s@(search.yahoo..*/search.*p=.*)@&vm=r&v=1@i
      	s@(search.live..*/.*q=.*)@&adlt=strict@i
      	s@(search.msn..*/.*q=.*)@&adlt=strict@i
      	s@(.bing..*/.*q=.*)@&adlt=strict@i
      	log block.log
      }
      
      # 
      acl  {
      	# 
      	default  {
      		pass !in-addr !blk_BL_adv !blk_BL_chat !blk_BL_dating !blk_BL_downloads !blk_BL_porn !blk_BL_radiotv !blk_BL_sex_education !blk_BL_sex_lingerie !blk_BL_socialnet !blk_BL_spyware !blk_BL_tracker !blk_BL_urlshortener !blk_BL_violence !blk_BL_warez !blk_BL_webphone !blk_BL_webradio !blk_BL_webtv blk_BL_updatesites none
      		redirect http://127.0.0.1:80/sgerror.php?url=blank&msg=&a=%a&n=%n&i=%i&s=%s&t=%t&u=%u
      		rewrite safesearch
      		log block.log
      	}
      }
      

      Pfsense version 2.0.1-RELEASE (i386) FreeBSD 8.1-RELEASE-p6.

      Thanks in advance

      1 Reply Last reply Reply Quote 0
      • N
        Nachtfalke
        last edited by

        If you want to use squid in non-transparent mode and you want to deploy proxy settings to a client search about "WPAD" and "PAC" which helps you that browsers configure automatically for proxy.

        The transparent proxy only works for http traffic.

        In general there is nothing to do to let squid work in transparent mode. Just enable squid to do so and that's all. Perhaps disable squidguard first and try again and/or re-save and re-apply the squidguard settings.

        1 Reply Last reply Reply Quote 0
        • A
          albokos
          last edited by

          Hi!

          Thanks for your answer. Following your advice i've tried and disable squidguard and it does not work better. same thing when i tried to reload the config, so i finally decided to create a PAC file for client auto configuration. That is what i'm working on since this morning.

          I've setted up a tet web server running Wamp and put my Pac file at the server root. Hereafter is my pac file.

          function FindProxyForURL(url, host) {
          
          	return "PROXY 192.168.2.57:3128";
          
          }
          

          a simple on as you can see!!

          When i look at the server log i can see the browser access the file. but i noticed 2 things.

          1- connexion is very slow
          2- The filtering does not work. for exemple i set facebook to be filtered but it is not.

          Tried with iexplorer and chrome

          1 Reply Last reply Reply Quote 0
          • N
            Nachtfalke
            last edited by

            Hi,

            for WPAD and PAC search the forum. I am not familar with this - just read about it here.
            If I remember correct this should be working with pfsense and without any additional webserver.

            1 Reply Last reply Reply Quote 0
            • marcellocM
              marcelloc
              last edited by

              @albokos:

              Do not edit manually !
              http_port 192.168.2.57:3128
              http_port 127.0.0.1:3128
              http_port 127.0.0.1:3128 transparent

              try to edit config and include transparente in front of  192.168.2.57:3128 and killall -HUP squid to force a restart.

              Treinamentos de Elite: http://sys-squad.com

              Help a community developer! ;D

              1 Reply Last reply Reply Quote 0
              • A
                albokos
                last edited by

                Hi!!

                I'm very happy to see so much interest to help me thank you all. concerning my issue this is what i've done:

                1- using the custom parmeters field is setted```
                http_port 192.168.2.57:3128 transparent

                2- I did a```
                killall -HUP squid
                

                3- i tried with iexplorer and filtering still not working.

                I'm digging out the .pac file solution, i've a good one it works when store locally on a pc now i try to set it to be accessible via the pfsense web server.

                1 Reply Last reply Reply Quote 0
                • marcellocM
                  marcelloc
                  last edited by

                  @albokos:

                  I'm digging out the .pac file solution, i've a good one it works when store locally on a pc now i try to set it to be accessible via the pfsense web server.

                  pac proxy configuration has a lot of good points, including filtering ssl urls.

                  good choice.

                  Treinamentos de Elite: http://sys-squad.com

                  Help a community developer! ;D

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post
                  Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.