[squid-users] Intercept Squid Proxy with Docker

fourirakbar fourir.akbar at gmail.com
Thu Apr 19 16:05:30 UTC 2018


I'm using Squid version 3.5

My goal is to create a transparent proxy using docker container for each
user, so I don't need to configure manual proxy setting in user.

*So this is what I want:* 
  1. Guest login to the system (done)
  2. After login, system noted ID and IP (done)
  3. In other machine (I call it "server docker"), I create a container with
--name ID and IP and --publish specific port from the guest (done)
  4. Create iptables for the user with specific IP and PORT (done, but I'm
not sure)
  5. If guest want to connect to the internet, guest must be through that
container (not yet)

*Example:*
 ID : 5114100100
 IP CLIENT : 10.151.36.227
 IP server docker : 10.151.36.134
 PORT : 9001

*First step: I create an image*
    docker run -d -it --net bridge --name 5114100100_10.151.36.227 --publish
9001:3128 fourirakbar/debian-squid:version2

*Second step: I create rules with iptables*
    iptables -t nat -A PREROUTING -i wlp3s0 -s 10.151.36.227 -p tcp --dport
80 -j DNAT --to 10.151.36.134:9001
    iptables -t nat -A PREROUTING -i wlp3s0 -s 10.151.36.134 -p tcp --dport
443 -j DNAT --to 10.151.36.134:9001

*first my squid.conf in container*
    visible_hostname X450LD
    http_port 3128
    http_access allow all

*Then, if I set proxy setting manual in browser client (I use firefox)*
    HTTP Proxy 10.151.36.134
    Port 9001

it's working fine
===================================

Now here's the problem:

I want to make in transparent. I tried every tutorial / github other user
and I make squid.conf in container like this:

    acl SUBNETAJK src 10.151.36.0/24 
    acl client1 src 10.151.36.227
    
    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 Safe_ports port 445 # windows update 
    acl CONNECT method CONNECT 
    
    http_port 3128
    http_port 3129 intercept 
    http_access allow SUBNETAJK
    http_access deny all
    http_access deny CONNECT !SSL_ports
    http_access deny !Safe_ports 
    
    never_direct allow all 
    
    cache_mem 64 MB 
    cache_swap_low 98 
    cache_swap_high 99 
    
    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

    shutdown_lifetime 1 second 
    visible_hostname X450LD

*Then I change `--publsh to 3129`. I run again `docker run` like this:*

    docker run -d -it --net bridge --name 5114100123_10.151.36.227 --publish
9001:3129 fourirakbar/debian-squid:version2

And I didn't change rules of iptables. If I do `iptables -t nat -L` in
server docker like this:

    Chain PREROUTING (policy ACCEPT)
    target     prot opt source               destination         
    DOCKER     all  --  anywhere             anywhere             ADDRTYPE
match dst-type LOCAL
    DNAT       tcp  --  10.151.36.227        anywhere             tcp
dpt:https to:10.151.36.134:9001
    DNAT       tcp  --  10.151.36.227        anywhere             tcp
dpt:http to:10.151.36.134:9001
    
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination         
    DOCKER     all  --  anywhere            !127.0.0.0/8          ADDRTYPE
match dst-type LOCAL
    
    Chain POSTROUTING (policy ACCEPT)
    target     prot opt source               destination         
    MASQUERADE  all  --  172.17.0.0/16        anywhere            
    MASQUERADE  all  --  172.18.0.0/16        anywhere            
    MASQUERADE  tcp  --  172.17.0.2           172.17.0.2           tcp
dpt:3129
    
    Chain DOCKER (2 references)
    target     prot opt source               destination         
    RETURN     all  --  anywhere             anywhere            
    RETURN     all  --  anywhere             anywhere            
    DNAT       tcp  --  anywhere             anywhere             tcp
dpt:9001 to:172.17.0.2:3129

When I try to open http website like `elearning.if.its.ac.id` or
`monta.if.its.ac.id`, it got error *unable to forward this request at this
time*

Anyone know how to fix this? I wonder that someone can help me
Thankyou very much

And this is access.log
<http://squid-web-proxy-cache.1019090.n4.nabble.com/file/t377437/accesslog.png> 



--
Sent from: http://squid-web-proxy-cache.1019090.n4.nabble.com/Squid-Users-f1019091.html


More information about the squid-users mailing list