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

iptables et nat de port

4 réponses
Avatar
Etienne SOBOLE
Salut

J'ai un meme serveur qui gère iptables et squid!
donc toute les requètes HTTP sont finalement réalisée par squid.

j'ai une règle iptables qui remap tout ce qui arrive sur le port 81 vers une
autre machine sur le port 80.

donc quand moi, derrier mon proxy, je fait une requète sur le port 81,
c'est envoyé vers squid qui execute cette requete.
comme on est en local sur le serveur qui gère les règle de firewall, on ne
passe pas par ma règle PREROUTING et donc on remape pas
Il faut donc une règle du OUTPUT, mais voila, il est spécifié dans la doc
d'iptable que
OUTPUT + DNAT = pas marcher encore si DNAT != localhost

donc comment puis-je faire pour palier a ce problème

en gros la question revient a dire:
depuis le serveur A qui contient iptables
comment faire un :
TELNET www.site.com 81

ou:
www.site.com pointe sur A
mais est en fait hébergé sur un serveur B.

voila...
merci
a+

Etienne

4 réponses

Avatar
You
Etienne SOBOLE wrote:
J'ai un meme serveur qui gère iptables et squid!
donc toute les requètes HTTP sont finalement réalisée par squid.

j'ai une règle iptables qui remap tout ce qui arrive sur le port 81 vers une
autre machine sur le port 80.

donc quand moi, derrier mon proxy, je fait une requète sur le port 81,
c'est envoyé vers squid qui execute cette requete.
comme on est en local sur le serveur qui gère les règle de firewall, on ne
passe pas par ma règle PREROUTING et donc on remape pas
Il faut donc une règle du OUTPUT, mais voila, il est spécifié dans la doc
d'iptable que
OUTPUT + DNAT = pas marcher encore si DNAT != localhost

donc comment puis-je faire pour palier a ce problème

en gros la question revient a dire:
depuis le serveur A qui contient iptables
comment faire un :
TELNET www.site.com 81

ou:
www.site.com pointe sur A
mais est en fait hébergé sur un serveur B.



Salut, je suis pour le moment dans la doc de netfilter et je me suis
souvenu de ta question... Je débute visiblement beaucoup plus que toi,
donc je ne suis pas sûr de répondre exactement à ta question... Mais
bon, je ne vois pas d'autre réponses et puis, si ça peut t'avancer ?


http://www.netfilter.org/documentation/FAQ/fr/netfilter-faq-3.html
La FAQ NetFilter dit:

3.12 Comment construire un proxy transparent avec squid et iptables ?

D'abord, bien sûr, vous avez besoin d'une règle DNAT ou REDIRECT qui
fonctionne. Utilisez REDIRECT seulement si squid tourne sur la même
machine que la machine qui fait NAT. Exemple :

iptables -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.22.33:3128

Après ça, vous devez configurer squid correctement. Nous ne pouvons
donner que des exemples courts ici, allez voir la doc de squid pour plus
d'infos.

Le fichier squid.conf pour squid 2.3 a besoin de quelque chose comme ça :

http_port 3128
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Squid 2.4 a besoin d'une ligne additionnelle :

httpd_accel_single_host off

Avatar
Etienne SOBOLE
"You" a écrit dans le message de news:
bmugqs$qirer$

Salut, je suis pour le moment dans la doc de netfilter et je me suis
souvenu de ta question... Je débute visiblement beaucoup plus que toi,
donc je ne suis pas sûr de répondre exactement à ta question... Mais
bon, je ne vois pas d'autre réponses et puis, si ça peut t'avancer ?

iptables -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.22.33:3128


merci, cela ressoud effectivement (sans doute) mon problème,

Mais ce n'est pas ce que je souhaite faire.
Cette configuration force tout le monde a passer par le proxy!
il est nécessaire dans mon cas que cela reste un choix.

Etienne

Avatar
Pierre BETOUIN
iptables -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.22.33:3128
merci, cela ressoud effectivement (sans doute) mon problème,


Mais ce n'est pas ce que je souhaite faire. Cette configuration force tout
le monde a passer par le proxy! il est nécessaire dans mon cas que cela
reste un choix.

Etienne
À part segmenter ton réseau, je ne vois pas comment tu peux "en

faire un choix".
Soit le routeur "dnate" les paquets sortant vers le port 80, soit il ne le
fait pas.
Tu pourrais segmenter ton réseau, avec un segment qui aurait ce proxying
transparent, et l'autre sur lequel les utilisateurs pourront, soit
utiliser le proxy (en le stipulant dans les confs), soit se connecter
directement (nat -> masquerade).

Tu peux aussi faire du proxying transparant en intégrant une règle
iptables par machine, au lieu du routeur, ce qui pourrait également
régler ton pbl.

--
°°°°°°°°°----------------°°°°°°°°°
Pierre BETOUIN

°°°°°°°°°----------------°°°°°°°°°


Avatar
Etienne SOBOLE
"Pierre BETOUIN" a écrit dans le message de
news:
À part segmenter ton réseau, je ne vois pas comment tu peux "en
faire un choix".
Soit le routeur "dnate" les paquets sortant vers le port 80, soit il ne le
fait pas.


en l'occurence,
je souhaite qu'il DNAT comme tu dis le port 81 sur le port 80.
et c'est justement ce qu'il ne fait pas !!!

le proxy transparent n'est pas une solution Car s'il est transparent comment
depuis ta configuration de navigateur du lui indiquera de ne pas l'utiliser
si tel est le souhait de l'utilisateur.

Tu pourrais segmenter ton réseau, avec un segment qui aurait ce proxying
transparent, et l'autre sur lequel les utilisateurs pourront, soit
utiliser le proxy (en le stipulant dans les confs), soit se connecter
directement (nat -> masquerade).


Hum... ca c'est encore moins possible..

Tu peux aussi faire du proxying transparant en intégrant une règle
iptables par machine, au lieu du routeur, ce qui pourrait également
régler ton pbl.


le plus simple pour règler mon problème est finalement de mettre squid et
les routeurs sur deux machines différentes.
mais malheureusement cela n'est pas non plus possible... dure vie :)

pourquoi ai je tant que contrainte :
1 : Il est hors de question pour moi de toutcher au serveur HTTP sur lequel
je reroute tous ce qui arrive par le port 81
2 : Les règles iptables doivent etre faite une fois pour toutes. je ne
pourrais pas y revenir une fois installée

Pour l'instant j'explore une piste qui reviendrai a configurer une deuxième
IP sur le routeur et faire appeler cette deuxième IP par SQUID. ce qui aura
pour résultat j'espère de faire passer le paquet par le PREROUTING du
firewall. Mais j'avoue que c'est pas terrible comme idée... surtout qu'il
pourrait bien y avoir plusieurs serveur HTTP derriere le routeur (et donc
sur des ports différents)...

Etienne