Forward dns zone to lan adress
-
Bonjour,
Je suis nouveau dans pfSense et j'ai une configuration à mettre en place qui est la suivante:
Nous avons des zones dns (monsiten.mondomaine.com) qui sont redirigé depuis notre FAI sur notre pfsense.
Nous voulons pour toutes requêtes monsite1.mondomaine.com les rediriger sur une adresse ip et un port donné en LAN (par exemple 192.168.1.20:5001).
Pareil pour monsite2.mondomaine.com les rediriger sur une adresse ip et un port donné en LAN (par exemple 192.168.1.20:5002).J'ai regardé dns forward et régle NAt je n'arrive pas à trouver la bonne configuration.
Merci
-
L'usage du formulaire nous permettrait de comprendre ce que vous voulez faire. Pour l'instant ce n'est pas clair.
Si il s'agit simplement de rendre accessible monsite1.domaine.com depuis internet et que votre FAI gère le dns qui désigne une de vos ip publiques vers Pfsense c'est juste une règle de nat à créer. Pfsense vous proposera de créer automatique la règle de filtrage associée qui convient. Le dns forwarder rn'as rien à faire dans ce scénario. A condition que ce soir le bon. Mais vos explications sont succintes je n'en suis pas certain. Si vous n'avez qu'une seule ip publique nous avons un problème tout à fait différent que Pfsense ne peut résoudre car c'est un problème de couche 7 alors que Pfsense est un firewall qui traite les couches 2 (un peu) et surtout 3 et 4. Dans cette hypothèse la solution s'appelle reverse proxy ou reconfiguration de votre serveur web.
Remplissez le formulaire et tout ira mieux.
Par ailleurs mettre des serveurs web accessibles depuis internet dans le lan est une très mauvaise idée. Si un serveur est compromis, tout votre réseau y passe. Le cloisonnement des flux est une règle de base d'hygiène informatique. -
Bonjour,
Merci de vos explications. Afin de rendre plus clair ma demande, qu'appelez vous le 'formulaire' ?
Cdtl -
https://forum.pfsense.org/index.php?topic=79600.0
-
Contexte :
Je suis nouveau dans pfSense et j'ai une configuration à mettre en place pour mon entreprise en mode SAAS qui est la suivante:
Nous avons des zones dns (monsiten.mondomaine.com) qui sont redirigé depuis notre FAI sur notre pfsense.
Nous voulons pour toutes requêtes monsite1.mondomaine.com les rediriger sur une adresse ip et un port donné en LAN (par exemple 192.168.1.20:5001).
Pareil pour monsite2.mondomaine.com les rediriger sur une adresse ip et un port donné en LAN (par exemple 192.168.1.20:5002).Besoin :
Deux besoins distincts :
-Une zone dns clients.mondomaine.com (clients.mondomaine.com est à nous) est redirigée sur l'ip publique de pfSense. Mon but est de rediriger cette requète sur un serveur WEB (que nous mettrons plus tard en publique) en LAN (par exemple 192.168.1.20.-Nous avons un programme qui doit pouvoir discuter avec un serveur en TCP sur un port donné (PAS 80) pour un client donné. Par exemple lorsque pfsense voit arrivé la requète client1.mondomaine.com ( client1.mondomaine.com est à nous) il doit la rediriger sur un serveur en LAN par exemple 192.168.1.50:5000.
Par exemple lorsque pfsense voit arrivé la requète client2.mondomaine.com ( client2.mondomaine.com est à nous) il doit la rediriger sur un serveur en LAN par exemple 192.168.1.50:5050.Schéma :
WAN (modem/routeur/box) : A disposition plusieurs IP publique et une seule utilisée pour le WAN pfsense (ip failover aussi). Le LAN est en réseau 192.168.1.0. PfSense fournit le dhcp et le dns pour le LAN.
LAN : Le LAN est en réseau 192.168.1.0. PfSense fournit le dhcp et le dns pour le LAN. Pas de vlan. Dns forwarder non actif.
DMZ : LAN.
WIFI : pas de wifif
Autres interfaces : PfSense fournit le dhcp et le dns pour le LAN.
Règles NAT : Pour l'instant seule
Règles Firewall : Pour l'instant le temps de configurer nos serveurs en LAN, tout est ouvert. WAN <-> LAN.
Packages ajoutés : aucun
Autres fonctions assignées au pfSense : aucun
Question : Aucune des règles NAT effectuées n'arrive a me rediriger quelque soit les deux besoins.
Logs et tests : rien dns cette section.
Est-il possible de faire comprendre à pfSense que lorsque qu'on fait une requète avec un nom de domaine précis (rediriger sur lui bien sur) il doit faire tel ou tel action?
Cdtl
-
Est-il possible de faire comprendre à pfSense que lorsque qu'on fait une requète avec un nom de domaine précis (rediriger sur lui bien sur) il doit faire tel ou tel action?
Il faut vous tirer les vers du nez …
Que veut dire faire une requête ? J'imagine que dans votre esprit il s'agit d'une demande d'url au moyen du protocole http.
Encore une fois Pfsense est un firewall traitant principalement les flux réseau des couches 3 et 4 (modèle OSI çà vous parle ?). Ce que vous appelez une requête semble être une url demandée en http (je suppose). Http c'est de l'applicatif, donc couche 7. Pfsense ne s'occupe pas de la couche applicative.
La réponse est non si le problème est bien celui que je pense avoir compris. Rien n'est moins sûr d'ailleurs.
Encore une fois c'est le travail d'un reverse proxy, ou le choix d'une configuration de serveur Web pour héberger (et gérer) monsite1.domaine.com et mondite2.domaine.com. Dans le monde Apache on appelle cela un serveur virtuel (virtual host). Le port peut ne pas être 80.
Si ce n'est pas de l'http, le reverse proxy basique ne peut rien pour vous. Mais nous ne savons pas !
Si vous utilisez plusieurs ip publique il suffit d'en mettre deux sur wan et de faire un nat sur chacune vers les serveurs situés dans le lan. -
Alors je vais être plus explicite:
Dans le cas client1.mondomaine.com la requête est évidemment en http et va porter sur un server web (il s'agit d'un portail pro et non pour tout le monde) en LAN. Donc a priori j'ai trouvé la solution.Ce qui me pose problème c'est le second cas.
La requête se fait via le protocole TCP (une application qui utilise TCP ) donc protocole couche 4.
Nous avons un serveur applicatif qui écoute sur le port 5000 par exemple dans le LAN. Ce que nous voulons c'est atteindre ce serveur (depuis Internet) via un nom de connexion client1.mondomaine.com (puis client2.mondomaine.com sur le port 5001 etc) en sachant que la résolution de nom client1.mondomaine.com porte sur l'ip publique du pfSense.Ce que l'on cherche à faire c'est utiliser l'url de connexion pour se diriger vers le port afférent.
WAN : client1.mondomaine.com:* –> LAN : 192.168.1.40:5000
WAN : client2.mondomaine.com:* --> LAN : 192.168.1.40:5001
etcHors ca ne concerne pas le reverse proxy et nous sommes bien dans le domaine pfSense de couche 4.
Ai-je été plus clair?
-
A force de questions, cela devient plus clair. Mais il vous manque quelques notions essentielles.
Si on écoute le trafic réseau sur une carte ethernet,
si fait 'ping google.fr', on va trouver des paquets 'ICMP echo request' et 'ICMP reply' (de réponse) entre l'ip du PC et une ip correspondante à 'google.fr',
et … aucune trace (textuelle) de 'google.fr' !En effet, ping, comme la totalité des commandes générant du trafic internet, converti l'adresse 'nom' en adresse 'ip' pour générer les paquets ip :
=> il n'y a que des adresses ip dans les entêtes de paquets !Or, pour le protocole http (et https), et seulement pour ce (s) protocole(s), à l'intérieur des paquets échangés, il est copié la requête http réelle.
D'où le travail du (reverse) proxy ou du serveur web, capable d'analyser l'intérieur du paquet et d'agir selon le domaine indiqué.
Quand on cherche un hébergement web, on peut souvent lire 'serveur mutualisé' : eh bien c'est exactement ça :
- plein de domaines www.XXXX pointe sur la même ip du serveur,
- le serveur web (apache ou iis) analyse l'intérieur du paquet, décode le domaine recherché,
- le serveur affiche, en conséquence, le 'bon' site web.
cf Christian CALECA ...
De facto, pour d'autres protocoles ... ça ne fonctionne pas ! Exemple, FTP, SMTP, ...
Mais comme vous ne parlez pas du protocole cible ...
En fait, comme bien souvent et pour d'autres, vous pensez solution avant de pensez besoin, et donc vous ignorez les conséquences de tel ou tel besoin.
-
Si tes besoins sont basics et que ton fournisseur d'accès te permet d'avoir plusieurs IP, tu peux faire ça avec le load-balancer de pfSense en définissant un pool par serveur interne (qui à ne mettre qu'un serveur par pool) et un virtual server par IP externe (en configurant des virtual IP sur ton interface externe)
Bien sûr ça ne marche que pour un nombre limité d'IP.
La solution standard étant le reverse proxy, comme expliqué plus haut.
-
Bonjour,
Je ne parle pas de protocole http(s) je parle bien de connexion tcp d'un client (une application qui construit un paquet TCP et l'envoie sur un server en LAN) sur internet qui se doit se connecter sur un serveur en LAN. Hors nous avons plusieurs client et nous voulons donc pour chaque client qu'ils utilisent une url clientx.domaine.com (ou une ip) soit rediriger sur un serveur (le même) en LAN mais avec un port différent.On ne parle pas de reverse proxy car il ne s'agit pas de http ni de load balancer car ce n'est pas un problème de charge à proprement parler.
C'est un besoin d'une grande simplicité qui ne concerne que la couche 4.
-
Je reprends mon explication, que vous ne semblez pas avoir bien suivi, :
- un paquet ne comporte QUE des adresses ip dans les entêtes, et aucunement un nom de domaine,
- seul http (et https), inclut dans le protocole le nom de domaine (dans le contenu du paquet).
De facto, avec http, il est aisé de faire du 'mutualisé'.
-
Jdh, je n'ai pas besoin de 'bien suivre' vos explications car elles ne me concernent pas (ou vous n'avez pas bien compris ma demande).
La solution dont je parle fonctionne parfaitement en réseau local. Mon soucis est un NAT simple entre WAN et LAN. Que ce soit en url ou ip peut importe, notre application doit se connecter sur une ip dans le LAN avec un port différent suivant la source d'entrée.
Hors cela ne passe pas et c'est pour cela que j'ai demandé de l'aide aux .. experts pfSense dont je ne fais pas partie (encore). -
Clairement vous n'indiquez toujours pas votre protocole : de quel protocole s'agit-il ?
-
TCP de bout en bout. J'ai fait un test d'envoi de paquet TCP entre mon application (donc celle qui ira chez different clients) et mon serveur en LAN. Evidemment il n'y arrive pas (d'ou l'objet de mon post). Mais en faisant un tcpdump sur mon pfSense on voit clairement que ce paquet reste au niveau du pfSense…
Je ne sais pas si je peux poste un .cap ici. -
Jdh, je n'ai pas besoin de 'bien suivre' vos explications car elles ne me concernent pas (ou vous n'avez pas bien compris ma demande).
Elles vous seraient pourtant profitables.
Que ce soit en url ou ip peut importe,
Un nat en url ? ha ….
Prenons le problème autrement.
Pour votre application TCP de bout en bout (au fait http c'est aussi du tcp de bout en bout ...), quel est le port d'écoute de votre serveur ? C'est peut être 5001 mais vérifions. Lorsque depuis wan votre application cliente souhaite atteindre le serveur, quel port est indiqué dans le champ port destination de l'entête TCP ?
Même question pour l'autre application qui fait de l'http sur un port différent de 80. Avec des réponses claires nous pourrons vous dire quoi faire -
Désolé, il me semble que certaines réalités sur les échanges de paquets IP entre clients et serveurs vous soient inconnues.
Cette connaissance me paraissant totalement nécessaire, je ne vais pas encombrer plus.A tout hasard, un lien qui explique certaines choses bien mieux que moi : http://irp.nain-t.net/doku.php/
-
c'est maintenant un peu plus clair mais ta manière de poser la question prêtait à confusion.
lorsque ton client va chercher à joindre un service du tu exposes "via pfSense", il va s'appuyer sur un fqdn et un port
le fqdn est résolu via un DNS publique et à un fqdn correspond (pour simplifier) une seule adresse IP (il pourrait y en avoir plusieurs mais c'est un autre débat)Donc la formulation "rediriger une zone DNS" n'as pas vraiment de sens.
Ensuite, ton client va arriver sur une des IP publiques de pfSense et, maintenant que je comprends mieux, il s'agit uniquement de faire un forward vers un serveur interne qui répond sur un port différent.
Tu peux faire ça avec une simple règle de forward ou faire ça avec le service de load balancing vers un pool qui ne contient qu'un seul serveur. Les deux vont fonctionner, la deuxième solution n'ayant du sens que si tu souhaites un jour ajouter d'autres serveurs internes pour le même service. -
Merci chris4916, enfin un qui a compris et qui semble avoir de bonnes notions d'échange entre paquets.
J'ai en parallèle trouvé la solution si cela vous intéresse :j'ai ajouter plusieurs zone dns (depuis mon FAI) qui sont redirigées sur un ensemble d'alias IP (attention, il faut mettre la même MAC que celle du Pfsense). Chaque zone correspond donc à une ip publique enregistrées comme alias sur le pfsense. Ensuite, il me suffit de NATer ces IP destination sur le server en LAN avec chacun son port.
On arrive donc à une solution simple pour rediriger une zone dns sur un serveur/port en LAN.Je dois encore vérifier quelques règles de sécurité mais cette solution fonctionne correctement.
Cordialement
-
je ne sais pas ce que tu appelles "zone dns" mais ce que tu décris, dans le dns, c'est un enregistrement de type A ou CNAME, pas une zone.
Par ailleurs, je ne comprends pas ton histoire de MAC ? Tu parles des IP alias que je te décrivais dans mon premier messages ?Si c'est le cas, au vocabulaire près ;) oui c'est la solution.
Si je la reformule, il s'agit de faire correspondre à une entrée DNS (publique) de type A ou CNAME une IP (éventuellement virtuelle) coté pfSense pour ensuite faire un forward ;)
C'était ma première réponse 8) mais comme souvent, le problème, c'est le glossaire ;) -
Risible …
Au revoir ... ou pas
Je répète : pfsense (et n'importe quel firewall) NE VOIT PAS arriver une requête 'client1.mondomaine.com', il voit juste arriver des paquets dont l'ip destination est l'ip WAN.
Si vous avez 'client1' jusqu'à 'client10', et que vous possédez 10 adresses ip (autant), une règle 'port forward' par adresse ip fait l'affaire (et c'est 'admin très débutant').
Si vous n'avez qu'une seule adresse ip, c'est juste mort (même quand le génial chris4196 a tout compris).