Eu instalei o proxy squid para filtrar o tráfego de saída do docker. Especificamente, criei um ambiente jupyterhub com docker para isolar cada usuário e fornecer a eles seu ambiente virtual.
Agora eu gostaria de filtrar o tráfego de saída para que eles possam acessar apenas determinados domínios e o serviço instalado localmente com o docker do jupyterhub.
Chamar o proxy com cURL funciona bem. Ele permite apenas os domínios inseridos e nos faz acessar o serviço local do jupyterhub. Indo abri-lo a partir da interface web, porém, ocorre este erro:
Habilitei o serviço o ip 172.17.0.1 e a porta 8081 e o teste cUrl está funcionando.
Como posso corrigi-lo?
algumas configurações:
config.json (~/.config.json):
{
"proxies":
{
"default":
{
"httpProxy": "http://127.0.0.1:3128",
"httpsProxy": "http://127.0.0.1:3128",
"noProxy": "127.0.0.0/8"
}
}
}
squid.conf (/etc/squid/squid.conf):
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 localnet src 172.17.0.1/32
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 443 # https
acl CONNECT method CONNECT
#### 23/06/2021 #############
acl jupyterhub_port port 8081
acl jupyterhub_addr dst 172.17.0.1
http_access allow jupyterhub_port jupyterhub_addr
# 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
###### 18/06/2021
acl whitelist dstdomain .python.org .pypi.org .pythonhosted.org .pypa.io .yahoo.com
http_access allow whitelist
# And finally deny all other access to this proxy
http_access deny all
# Squid normally listens to port 3128
http_port 3128
# Leave coredumps in the first cache dir
coredump_dir /var/spool/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
curl através de proxy:
curl http://172.17.0.1:8081/hub/api --proxy 127.0.0.1:3128
{"version": "1.4.1"}
No final, meu arquivo de configuração estava certo ;) Acabei de cometer o erro de especificar no config.json (~/.config.json) localhost em vez do endereço ip LAN (o docker é um ambiente externo):