Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Squid, proxy, iptables et shorewall

2 réponses
Avatar
ludovic.thebault
Bonjour,

J'ai mis en place un serveur proxy, squid couplé à squidguard, pour
surveiller un réseau utilisé en partie par une école primaire, mais
aussi par des ados.
Pour l'instant je dois configurer chaque navigateur pour qu'il passe par
le proxy.
J'ai vu que l'on pouvait forcer les connexions vers le proxy gràce à
iptable pour éviter d'avoir à configurer les navigateurs (ce qui reste
un point faible) mais mes compétences s'arrètent là...
Le serveur squid (port 3128) est sur un pc sous mandrake 10.0 avec le
firewall Shorewall, il a pour ip 192.168.1.17, le routeur a pour ip
192.168.1.1

J'ai un peu peur de modifier une config qui marche...
Est-ce que si je rentre cette commande (pour moi c'est du charabia), ça
fonctionnera ?

iptables -t nat -A PREROUTING -s 192.168.1.2/255.255.255.0
-p tcp -m tcp --dport 80 -j REDIRECT --to-port 3128

Merci.

2 réponses

Avatar
Bruno C
"ludo" a écrit dans le message de news:
1h6hpx6.1wrs6dm16zcqrkN%
Bonjour,


Bonjour,

J'ai mis en place un serveur proxy, squid couplé à squidguard, pour
surveiller un réseau utilisé en partie par une école primaire, mais
aussi par des ados.
Pour l'instant je dois configurer chaque navigateur pour qu'il passe par
le proxy.
J'ai vu que l'on pouvait forcer les connexions vers le proxy gràce à
iptable pour éviter d'avoir à configurer les navigateurs (ce qui reste
un point faible) mais mes compétences s'arrètent là...
Le serveur squid (port 3128) est sur un pc sous mandrake 10.0 avec le
firewall Shorewall, il a pour ip 192.168.1.17, le routeur a pour ip
192.168.1.1

J'ai un peu peur de modifier une config qui marche...
Est-ce que si je rentre cette commande (pour moi c'est du charabia), ça
fonctionnera ?

iptables -t nat -A PREROUTING -s 192.168.1.2/255.255.255.0
-p tcp -m tcp --dport 80 -j REDIRECT --to-port 3128


Je verrais plus ça :
iptables -t nat -A PREROUTING -i ethX-s 192.168.1.0/255.255.255.0
-p tcp -m tcp --dport 80 -j REDIRECT --to-port 3128

ou ethX est l'interface sur laquelle ton réseau est relié

Merci.


Avatar
Pascal
Salut,


J'ai mis en place un serveur proxy, squid couplé à squidguard, pour
surveiller un réseau utilisé en partie par une école primaire, mais
aussi par des ados.
Pour l'instant je dois configurer chaque navigateur pour qu'il passe par
le proxy.
J'ai vu que l'on pouvait forcer les connexions vers le proxy gràce à
iptable pour éviter d'avoir à configurer les navigateurs (ce qui reste
un point faible) mais mes compétences s'arrètent là...



Ce n'est pas un point faible si l'accès direct au web sans passer par le
proxy est interdit sur le routeur.

Le serveur squid (port 3128) est sur un pc sous mandrake 10.0 avec le
firewall Shorewall, il a pour ip 192.168.1.17, le routeur a pour ip
192.168.1.1

J'ai un peu peur de modifier une config qui marche...
Est-ce que si je rentre cette commande (pour moi c'est du charabia), ça
fonctionnera ?

iptables -t nat -A PREROUTING -s 192.168.1.2/255.255.255.0
-p tcp -m tcp --dport 80 -j REDIRECT --to-port 3128


Je verrais plus ça :
iptables -t nat -A PREROUTING -i ethX-s 192.168.1.0/255.255.255.0
-p tcp -m tcp --dport 80 -j REDIRECT --to-port 3128

ou ethX est l'interface sur laquelle ton réseau est relié


Comme le proxy et le routeur sont deux machines différentes, je verrais
plutôt quelque chose comme ça sur le routeur :

iptables -t nat -A PREROUTING -i ethX -s ! 192.168.1.17
-p tcp -m tcp --dport 80 -j DNAT --to 192.168.1.17:3128


Sans oublier d'activer la fonction "proxy transparent" dans la
configuration de Squid.

Léger inconvénient de séparer les deux fonctions : Squid ne pourra pas
se baser sur la table de suivi/NAT locale d'iptables pour retrouver
l'adresse IP destination originale puisque le NAT est fait par une autre
machine. Il ne pourra se baser que sur le champ "Host" de la requête
s'il est présent. Les programmes qui n'envoient pas ce champ dans leurs
requêtes HTTP ne fonctionneront pas. Mébon, tous les navigateurs récents
supportent HTTP/1.1 et l'en-tête "Host".