# New to FreeBSD, Squid experiencing request loops



## orientalsniper (Aug 24, 2014)

Hello all, I'm having the same problem as this guy:

http://squid-web-proxy-cache.101909...-one-nic-access-denied-problem-td4664881.html
When I try to access a website I get a Access Denied by Squid message and in the access.log I see I'm getting a forwarding loop error.

But we have different network setup and he's using Ubuntu.

I'm running 2 VM's: 1 for pfSense and the other for FreeBSD (nginx + squid)

I have the following network:
WAN1 + WAN2 in pfSense
10.0.0.1/24 (LAN1 in pfSense)
10.1.0.1/24 (LAN2 in pfSense)
10.2.0.1/24 (LAN3 in pfSense) ----> (connecting to nginx+squid[10.2.0.2] VM)

My squid.conf (3.4):

```
#
# Recommended minimum configuration:
#

# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
#acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
#acl localnet src fc00::/7 # RFC 4193 local private network range
#acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl whatismyip dstdomain whatismyip.cc
http_access allow whatismyip

acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
acl WORK-PC srcdomain 10.1.0.3

#
# Recommended minimum Access Permission configuration:
#
# Deny requests to certain unsafe ports
http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

# Only allow cachemgr access from localhost
http_access allow localhost manager
http_access deny manager

# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
#http_access deny to_localhost

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#

# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost

# And finally deny all other access to this proxy
#http_access deny all

# Squid normally listens to port 3128
http_port 10.2.0.2:3128 intercept

# Uncomment and adjust the following to add a disk cache directory.
cache_dir ufs /var/squid/cache/squid 100 16 256

# Leave coredumps in the first cache dir
coredump_dir /var/squid/cache/squid

#
# Add any of your own refresh_pattern entries above these.
#
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern .		0	20%	4320
cache_effective_user squid
cache_effective_group squid
check_hostnames off
unique_hostname squidcache
dns_nameservers 8.8.8.8
tcp_outgoing_address	127.0.0.1
```

I think I have to do port forward in FreeBSD, I could do it easily in pfSense, but I'm confused and have no idea which one Squid/FreeBSD use: ipfw(), pf(), ipf(). Can I get some help?


----------



## obsigna (Aug 25, 2014)

orientalsniper said:
			
		

> ...
> I think I have to do port forward in FreeBSD, I could do it easily in pfSense, but I'm confused and have no idea which one Squid/FreeBSD use: ipfw(), pf(), ipf(). Can I get some help?


This depends on the respective --enable_*_transparent configuration parameter, that you used when building Squid. I can speak only for --enable_ipfw_transparent. In this case the ipfw(8) firewall rule would be:

```
/sbin/ipfw -q add XYZ fwd 127.0.0.1,3128 tcp from 10.0.0.0/8 to any dst-port 80
```
Here XYZ should be a reasonable rule number that fits well into the sequence of the other ipfw rules.

Note, it is best to restrict the intercepting http_port directive to the loopback interface only, and Squid may complain about a missing none intercepting http_port directive. Therefore, you might want to add a second one without the intercept option (even if you would never use it):

```
http_port 10.2.0.2:3127
http_port 127.0.0.1:3128 intercept
```


----------

