Vagrantfile
Note de lecture générée automatiquement
Le vrai fichier est
scripts/virtualisation/Vagrantfile(Obsidian n’affiche pas les scripts eux-mêmes). Ne modifie pas cette note : modifie le script, puis relancepython3 generer_vues_obsidian.pydans le dossierscripts.
- À quoi il sert : Labo proxy Squid (2 VM)
- Lancer (dans le dossier
scripts/virtualisation/) :vagrant up(dans ce dossier) - Fiche : V04 - Vagrant
- Retour : 00 - Tous les scripts
Code
# -*- mode: ruby -*-
# =============================================================================
# Vagrantfile — Labo proxy : 1 serveur Squid (+ Apache pour la page de blocage)
# et 1 client, sur un réseau privé 192.168.56.0/24.
# vagrant up → crée et configure les 2 VM
# vagrant ssh proxy → se connecter au proxy
# vagrant ssh client → se connecter au client (déjà configuré pour le proxy)
# vagrant destroy -f → tout supprimer
# Fournisseur : VirtualBox par défaut (ou : vagrant up --provider=libvirt)
# =============================================================================
Vagrant.configure("2") do |config|
config.vm.box = "debian/bookworm64"
# ---------------------------------------------------------------- PROXY ---
config.vm.define "proxy" do |proxy|
proxy.vm.hostname = "squid-proxy"
proxy.vm.network "private_network", ip: "192.168.56.10"
proxy.vm.provider "virtualbox" do |vb|
vb.memory = 1024
vb.cpus = 1
end
proxy.vm.provision "shell", inline: <<-SHELL
set -e
export DEBIAN_FRONTEND=noninteractive
apt-get update -q
apt-get install -y -q squid apache2 curl
printf ".facebook.com\n.tiktok.com\n" > /etc/squid/blacklist_domaines.txt
printf "youtube\\\\.com/shorts\n" > /etc/squid/blacklist_urls.txt
cat > /etc/squid/squid.conf <<'CONF'
http_port 3128
acl reseau_local src 192.168.56.0/24
acl ports_ssl port 443
acl ports_surs port 80 443
acl CONNECT method CONNECT
acl domaines_interdits dstdomain "/etc/squid/blacklist_domaines.txt"
acl urls_interdites url_regex -i "/etc/squid/blacklist_urls.txt"
http_access deny !ports_surs
http_access deny CONNECT !ports_ssl
http_access deny domaines_interdits
http_access deny urls_interdites
http_access allow reseau_local
http_access deny all
deny_info http://192.168.56.10/bloque.html domaines_interdits
deny_info http://192.168.56.10/bloque.html urls_interdites
cache_dir ufs /var/spool/squid 500 16 256
CONF
echo '<!doctype html><meta charset="utf-8"><h1>Accès bloqué</h1><p>Site interdit par la politique de sécurité.</p>' > /var/www/html/bloque.html
squid -k parse
systemctl restart squid
SHELL
end
# --------------------------------------------------------------- CLIENT ---
config.vm.define "client" do |client|
client.vm.hostname = "squid-client"
client.vm.network "private_network", ip: "192.168.56.11"
client.vm.provider "virtualbox" do |vb|
vb.memory = 512
vb.cpus = 1
end
client.vm.provision "shell", inline: <<-SHELL
apt-get update -q && apt-get install -y -q curl
cat > /etc/profile.d/proxy.sh <<'PROXY'
export http_proxy="http://192.168.56.10:3128"
export https_proxy="http://192.168.56.10:3128"
export no_proxy="localhost,127.0.0.1"
PROXY
SHELL
end
end