Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Jun 2016 11:33:24 +0000
From:      "C. L. Martinez" <carlopmart@gmail.com>
To:        freebsd-questions@freebsd.org
Subject:   Re: Problems with pf rules for intercept squid proxy
Message-ID:  <20160629113324.GA10436@beagle.bcn.sia.es>
In-Reply-To: <2822287D-FE6F-4A4B-995A-639B696911DF@FreeBSD.org>
References:  <20160628130759.GA13226@beagle.bcn.sia.es> <2822287D-FE6F-4A4B-995A-639B696911DF@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue 28.Jun'16 at 19:37:37 +0200, Kristof Provost wrote:
>=20
>=20
> On 28 Jun 2016, at 15:07, C. L. Martinez wrote:
> >  I have some problems with my pf rules on a FreeBSD 10.3 host that acts
> > as a squid intercept proxy. My actual pf rules are:
> >=20
> > rdr pass on $vpnif proto tcp from $int_network to any port http -> lo0
> > port 5144
> > rdr pass on $vpnif proto tcp from $int_network to any port https -> lo0
> > port 5145
> >=20
> >  At first stage it seems that these rules works, but don't. Traffic is
> > redirected to squid, but squid denies all connections:
> >=20
> >  1467111934.502      1 172.22.55.1 TCP_DENIED/403 4221 GET
> > http://www.osnews.com/ - HIER_NONE/- text/html
> >=20
> >  Using same squid.conf's file under an OpenBSD test machine, squid works
> > without problems. For this reason, I don't think there is some problem
> > with my squid's config. The only difference between this OpenBSD host
> > and FreeBSD are the pf rules.
> >=20
> You may have a different squid version, or they may be patched differentl=
y.
> Your redirect rules are working, as demonstrated by the fact that squid g=
ets
> a request, and replies to it.
>=20
> Note that pf does not change your HTTP payload, it only affects TCP. In
> other words: if Squid sees the connection (and it does) it=E2=80=99s a Sq=
uid
> problem.
>=20
> Also note that you=E2=80=99re redirecting on FreeBSD, but using divert-to=
 on
> OpenBSD.
> This may be triggering different behaviour from Squid. The man page says
> that with divert-to:
>=20
> 	The packets will not be modified, so getsockname(2) on the socket will
> return
> 	the original destination address of the packet.
>=20
> That might be affecting an ACL in Squid.
>=20
> Regards,
> Kristof

Thanks Kristof. I am using squid installed from pkg under a FreeBSD 10.3, f=
ully updated:

Squid Cache: Version 3.5.19
Service Name: squid
configure options:  '--with-default-user=3Dsquid' '--bindir=3D/usr/local/sb=
in' '--sbindir=3D/usr/local/sbin' '--datadir=3D/usr/local/etc/squid' '--lib=
execdir=3D/usr/local/libexec/squid' '--localstatedir=3D/var' '--sysconfdir=
=3D/usr/local/etc/squid' '--with-logdir=3D/var/log/squid' '--with-pidfile=
=3D/var/run/squid/squid.pid' '--with-swapdir=3D/var/squid/cache' '--without=
-gnutls' '--enable-auth' '--enable-build-info' '--enable-loadable-modules' =
'--enable-removal-policies=3Dlru heap' '--disable-epoll' '--disable-linux-n=
etfilter' '--disable-linux-tproxy' '--disable-translation' '--disable-arch-=
native' '--enable-eui' '--enable-cache-digests' '--enable-delay-pools' '--d=
isable-ecap' '--disable-esi' '--enable-follow-x-forwarded-for' '--enable-ht=
cp' '--enable-icap-client' '--enable-icmp' '--enable-ident-lookups' '--enab=
le-ipv6' '--enable-kqueue' '--with-large-files' '--enable-http-violations' =
'--without-nettle' '--enable-snmp' '--enable-ssl' '--with-openssl=3D/usr' '=
LIBOPENSSL_CFLAGS=3D-I/usr/include' 'LIBOPENSSL_LIBS=3D-lcrypto -lssl' '--e=
nable-ssl-crtd' '--disable-stacktraces' '--enable-ipf-transparent' '--enabl=
e-ipfw-transparent' '--enable-pf-transparent' '--with-nat-devpf' '--enable-=
forw-via-db' '--enable-wccp' '--enable-wccpv2' '--with-heimdal-krb5=3D/usr'=
 'CFLAGS=3D-I/usr/include -O2 -pipe  -fstack-protector -fno-strict-aliasing=
' 'LDFLAGS=3D-L/usr/lib  -pthread  -fstack-protector' 'LIBS=3D-lkrb5 -lgssa=
pi -lgssapi_krb5 ' 'KRB5CONFIG=3D/usr/bin/krb5-config' '--enable-auth-basic=
=3DDB SMB_LM MSNT-multi-domain NCSA PAM POP3 RADIUS fake getpwnam NIS' '--e=
nable-auth-digest=3Dfile' '--enable-external-acl-helpers=3Dfile_userip time=
_quota unix_group' '--enable-auth-negotiate=3Dkerberos wrapper' '--enable-a=
uth-ntlm=3Dfake smb_lm' '--enable-storeio=3Daufs diskd rock ufs' '--enable-=
disk-io=3DDiskThreads DiskDaemon AIO Blocking IpcIo Mmapped' '--enable-log-=
daemon-helpers=3Dfile' '--enable-url-rewrite-helpers=3Dfake' '--enable-stor=
eid-rewrite-helpers=3Dfile' '--prefix=3D/usr/local' '--mandir=3D/usr/local/=
man' '--infodir=3D/usr/local/info/' '--build=3Damd64-portbld-freebsd10.1' '=
build_alias=3Damd64-portbld-freebsd10.1' 'CC=3Dcc' 'CPPFLAGS=3D' 'CXX=3Dc++=
' 'CXXFLAGS=3D-O2 -pipe -fstack-protector -fno-strict-aliasing ' 'CPP=3Dcpp=
' --enable-ltdl-convenience

 According to this options, intercept is enabled ... Then, I don't understa=
nd why it doesn't works ...

--=20
Greetings,
C. L. Martinez



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20160629113324.GA10436>