Bonsoir,
Olivier Guerrier wrote:
>
> Bon/soir/jour,
>
> Soit un routeur Linux multipattes:
> - - une connectée à Internet 82.x.x.x
> - - une connectée à une pseudo DMZ en 192.168.1.x
> - - une connectée à mon LAN en 192.168.0.x
>
> (192.168.0.x et 192.168.3.x ne peuvent pas se parler, c'est voulu)
Qui sont "192.168.3.x" ? Je pense que tu parles de "192.168.1.x" en
fait, non ?
> J'ai un serveur web publique en 192.168.1.2 (port forwarding) et
> plusieurs noms de domaines pointent sur l'IP 82.x.x.x
>
> Je souhaite accéder depuis mon LAN en 192.168.0.x à ce serveur web via
> les noms de domaine, /sans toucher la config des clients/
>
> Je manque d'inspiration sur cette question, j'ai envisagé plusieurs
> solutions de contournement, mais aucune ne me satisfait les méninges.
> Elles sont soit trop lourdes, soit pas propres...
>
> Si vous avez une idée ?
Oui.
Dans ce qui suit, et par soucis de simplification, je considère que
"plusieurs noms de domaines pointent sur l'IP 82.x.x.x" est en fait le
domaine "guerrier.ORG". :)
- Solution 1 : Les machines du LAN interrogent un serveur DNS que tu
contrôles (dans "192.168.0.x" par exemple). Tu reconfigures ce serveur
DNS pour qu'il fasse pointer "guerrier.ORG" sur 192.168.1.2. Le routage
de tes clients de "192.168.0.x" devrait tout naturellement amené tes
machines à envoyer les paquets à ton routeur Linux. Tu n'auras qu'à
rajouter les règles de port forwarding adéquate pour renvoyer le tout
sur "192.168.1.2". Mais tu écris
"(192.168.0.x et 192.168.3.x ne peuvent pas se parler, c'est voulu)",
donc j'imagine que cette solution ne te satisfait pas. Tu peux cependant
contraindre un maximum les règles de FORWARD de ton routeur Linux en
précisant par exemple les ports cibles de "192.168.1.2", les IP des
machines sources de "192.168.0.x", etc ...
- Solution 2 : Tout "192.168.0.x" utilise des DNS externes, OU tu n'as
pas renseigné "guerrier.ORG" dans ton DNS interne. Dans ce cas là,
lorsque tes machines de "192.168.0.x" vont demander l'adresse IP de
"guerrier.ORG", les DNS externes vont renvoyer "82.x.x.x". Il te suffit
donc de configurer ton routeur Linux pour forwared les paquets :
- venant de l'interface réseau LOCALE
- ET venant de "192.168.0.x"
- ET a destination de 82.x.x.x
- ET a destination du port 80
et de les envoyer sur "192.168.1.2". Tout ceci se faisant en écrivant
une simple règle de FORWARD du style :
iptables -A FORWARD -i eth_INTERNE -s 192.168.0.0/24 -d 82.x.x.x -t tcp
--dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -o eth_INTERNE -d 192.168.0.0/24 -s 82.x.x.x -t tcp
--sport 80 -m state --state ESTABLISHED -j ACCEPT
et une règles de NAT :
iptables -t nat -A PREROUTING -i eth_INTERNE -s 192.168.0.0/24 -d
82.x.x.x -t tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80
Là où tu vas être ennuyé, c'est si l'adresse IP 82.x.x.x change souvent
(IP non fixe). Dans ce cas là, tu es bon pour faire un script qui change
tes règles Netfilter à chaque changement de ton adresse IP 82.x.x.x. Si
tu utilises "ppp" pour te connecter à Internet (pppoA pour un modem USB,
ou pppoE pour un modem ADSL), tu peux utiliser le script
"/etc/ppp/ip-up.local" ou "/etc/ppp/ip-up" qui est lancé à chaque
changement de connexion de "ppp". Sur une Debian, le script n'est pas
exactement celui-ci, mais un "man pppd" devrait te permettre de trouver.
> Olivier
>
>
> PS: j'ai volontairement omis de vous décrire les solutions envisagées
> pour ne pas influencer la réflexion, si certains pensent que c'est utile
> je le ferais avec plaisir.
Aucun problème pour moi. Il suffit de faire les déductions qui manque ! :)
Olivier
http://olivieraj.free.fr/fr/linux/information/firewall/fw-03-08.html si
tu manques d'inspiration pour iptables. Mais je ne pense pas que ce soit
le cas !!
--
~~~~~~~ _____/\_____ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Phoenix / _ \/ _ \ Olivier Allard-Jacquin
/ / \ / \ \ Web: http://olivieraj.free.fr/
/___/ / \ \___\ Mail: olivieraj@???
~~~~ ///// ///\\\ \\\\\ ~~~~~~~~~~~~~~~~~~~~~~~ Linux Powered !!