Bonjour,
J'ai un domaine (louve.dyndns.org). et j'aimerais savoir si il est possible de donner acès a deux serveurs http depuis ce domaine.
Par exemple, jaimerais que http://jupiter.louve.dyndns.org:80/(...) redirige la requête sur le PC appelé jupiter (10.0.0.1) sur mon réseau local.
De même pour d'autres ordinateurs.
Peut être est-ce possible avec les hôtes virtuels ... ou autre.
Ce serait bien aussi avec d'autres protocoles (ssh ?). Mais j'ai des doutes.
Problématique supplémentaire. Mon serveur DNS, dans la zone louve.dyndns.org, devra renvoyer l'IP de la paserelle pour les gens exterieurs. Et l'IP locale pour mon réseau local. Je suppose.
Comment faire ?
Et si je veux faire avec DNS dynamique mis a jour avec dhcpd ? (je n'ai pas encore réussi).
Vive ZeroConf (=rendezvous=bonjour) et IPv6.
Merci
Mildred
# re
Posté par LaBienPensanceMaTuer . Évalué à 2.
Pareil
En effet, en utilisant les vhost apache ainsi que le mod_rewrite et le mod_proxy, c'est très facile.
Renseigne toi un peu.
En grosn pr l'url jupiter.louve.dyndns.org/pouet tu vas dire à apache qu'il réécrive l'url en 10.0.0.1/pouet et qu'il aille lui meme chercher le contenu pr le servir au client.
Tout est dans la doc d'Apache.
Utilise bind 9 qui implémente le système de zone.
Tu définis une zone "lan" qui répondra au requête provenant du réseau 192.168.0.0/24 et une autre "wan" pour le reste.
Encore une fois, RTFM.
J'ai pas fait encore, je ne peux donc pas t'aider. Mais je me souviens avoir vu de la doc sur le net, donc encore une fois, RTFM.
[^] # Re: re
Posté par doublehp (site web personnel) . Évalué à -2.
En AUCUN CAS un routeur IPv4 ne pourra envoyer sur 1.2 lus requettes pour soleil, et 1.3 les requettes pour lune, si tu n as qu une seule IP publique.
Le plus tordu que j ai fait, c est de rouler deux Bind9 sur la meme machine, les deux resolvant les meme noms, un pour mon IP publique, l autre pour le local. Si c est la passerelle elle meme qui fait ca, suffit de dirque a chaque conf de n ecouter qu une seule interface, mais tout deux ecoutant le 53.
Si c est une machine locale dedie, je pense qu il est possible de faire du IPTABLES REDIRECT au cas ou la source est la passerelle, et regiriger sur un autre port. Donc un bind sur 53 qui resoud localement, et un sur 10053, plus un IPTABLES qui redirige sur le port 10053 toutes les requettes DNS venant de l ip locale du routeur.
[^] # Re: re
Posté par LaBienPensanceMaTuer . Évalué à 3.
C'est pour cette raison que je conseille au mossieur de configurer son Apache en reverse proxy.
En effet *.dyndns.org pointera sur la même ip, mais ce sera apache qui en fonction de l'host (vhost) ira chercher les pages sur le disque dur ou ira demander à un serveur en interne pr le reservir au client.
Ta bidouille en plus d'être sale ne sert à rien grace que mecanisme de zone intégré à bind 9 (cf mon premier post).
Lis un peu la doc tu verras ...
Je crois qu'en fait tu n'as pas saisi ce qu'il voulait faire (à moins que ce soit moi).
# \_o<
Posté par doublehp (site web personnel) . Évalué à 0.
je vais abreger 'dyndns.org' a 'd.o'. Mes machines auront aussi des noms courts. 'p' pour la passerelle, 's' pour le server web local.
j aborde le probleme sous l ordre chronologique ou je construit la solution, qui est aussi l ordre dans lequel les requettes sont resolues.
1: mettre en place une passerelle p, capable de mettre a jour elle meme son ip PUBLIQUE pour le nom p.d.o . Elle seule peut metre a jour ce nom, aucune autre du ton reseau local ne peut le faire. Si tu as un routeur hard, et qu il ne supporte pas cette fonction, lache l affaire. Je peux techniquement contourner le probleme, mais c est tres complique, et peu fiable.
2: acheter un domaine moi.com, qui devra etre resolu et gere par une entite disposant d une IP fixe. Je crois que Gandi et www.granitecanyon.com peuvent faire cetto operation simple. Quand tu enregistre ton domaine, tu met alors l IP de Gandi ou Granite comme resolveur de moi.com.
3: mettre en place un 'CNAME' sur la regle:
IN domain moi.com
soleil CNAME p.d.o
lune CNAME p.d.o
quand un client tape un nom de site, ce nom doit etre resolu. Dans notre cas, ce nom est un alias vers un autre - oui c est authorise -. Le navigateur cherche donc soleil.moi.com, et passe la requette de resolution a son system hebergeur (la couche IP du dit system). La couche IP fera un dig, la reponse du dig sera donnee par Granite, et dira que c est un CNAME vers p.d.o. La meme couche IP ira alors chez dyndns, et demandra la resolution pour p.d.o. Dyndns donnera ton IP courante.
IL EST IMPOSSIBLE DE FAIRE RESOUDRE UN NOM POUR UNE IP LOCALE SI TON FOURNISSEUR D ACCES NE TE FOURNIS QU UNE SEULE IP PUBLIQUE. - pas de contournement possible.
Le navigateur client as desormais ton IP publique.
La, il peut se passer deux choses.
-A- tu peux mettre tous tes sites web sur un server dedie, et configure apache pour gerer des vhosts, c est le plus simple.
4: la machine p ecoute le port 80, et redirige toutes les requettes entrantes vers l ip LOCALE du dit server dedie. C est une stupide regle IPTABLE, de la forme
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2
ou ppp0 est le nom de l interface publique de la passerelle, et 192.168.1.2 l ip locale du server dedie.
5: le server dedie local est un apache classique, ecoutant sur le port 80. Apache doit alors gerer les vhosts. Un exemple vaut mieux que mille mots, je te colle ce que j ai:
Listen 80
Listen 443
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot "/var/www/paste"
ServerName paste.doublehp.org
RewriteEngine on
RewriteRule \/([0-9]*)$ /pastebin\.php\?show\=$1 [NE]
<Directory "/var/www/paste">
DirectoryIndex pastebin.php
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/coco"
ServerName coco.doublehp.org
RewriteEngine on
<Directory "/var/www/coco">
DirectoryIndex
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</VirtualHost>
NameVirtualHost *:443
<VirtualHost *:443>
DocumentRoot "/var/www/pipo"
ServerName pipo.doublehp.org
<Directory "/var/www/pipo">
DirectoryIndex
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</VirtualHost>
(et il est toujours impossible de coller du texte formatte sur ce site ****** )
il est possible de faire different, mais ÇA ^^ c est ce qui marche chev moi. Certaines personnes mettent
<VirtualHost 192.168.1.2:443>
ce qui pose probleme des que tu change l ip locale de la machine. J ai la deux sites web sur port 80, et un sur 443 (evidement, pour le 443 il faut la regle IPTABLES qui va bien sur le routeur.)
Ne tamuse pas a visiter les 3 sites, seul paste existe vraiment, les deux autres, j ai du changer leur nom dans cet exemple, car ces sites doivent rester secrets.
-B- tu veux avoir un site web par machine locale. CELA EST PROBLEMATIQUE. Car la passerelle n as qu une seule IP, et le nom etant gere sur une couche OSI different de l IP, la passerelle ne sais pas a quelle machine le client veut parler. Je peux contourner ca.
4: on commence par IPTABLES:
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 81 -j DNAT --to-destination 192.168.3.2:80
5: tu met en place 192.168.1.2 avec un apache classique, qui ne gere qu un seul site. ce site est accessible via le nom ordinaire http://soleil.moi.com/(...)
6: tu met en place sur 192.168.1.3 un apache classique, sur port 80, et ce site sera accessible via l adresse http://lune.moi.com:81/(...)
une requette sur http://lune.moi.com/(...) aboutira evidement sur 192.168.1.2, et au mieux, si tu te misere dans apache, tu pourra afficher une page d erreur, ou si tu est TRES DOUE, faire une redirection web sur lune.moi.com:81
Une requette web sur soleil.moi.com:81 aboutira evidement sur 192.168.1.3.
La solution B est evidement moins esthetique, car oblige a specifier le port 81 SYSTEMATIQUEMENT pour le site lune ... et tous les sites autres que soleil.
**************************************************************
Si tu n y connais rien aux reseaux, ne tente rien d exotique, et applique une de mes deux solutions.
Entre autre, il est impossible de demander a ta passerelle de faire la difference entre deux requettes web de domaines differents, CAR TU AS UNE SEULE IP PUBLIQUE.
[^] # Re: \_o<
Posté par doublehp (site web personnel) . Évalué à 0.
[^] # Re: \_o<
Posté par Mathieu Millet (site web personnel) . Évalué à 1.
Par contre, j'ai trouvé ton approche assez pédagogique.
Mais, je corrigerai un point et j'en rajouterai un autre.
Pour avoir un site Web par machine locale (personnellement, j'en vois pas trop l'intérêt, mais bon, là n'est pas la question), tu peux installer sur la passerelle, Apache (ou Squid par ailleurs - mais pour les trucs un peu tordus, Apache est quand même plus adapté) en mode reverse-proxy (grâce à mod_rewrite - Attention aux URLs "en dur" dans les pages) en gérant des virtualHost et/ou des sous-répertoires.
De plus, le mécanisme de VirtualHost N'est PAS disponible avec HTTPS (SSL ou TLS) ! En effet, les VirtualHost sont gérés au niveau du protocole HTTP. Or avant de pouvoir "utiliser" HTTP dans une communication HTTPS, il faut passer par la "couche" SSL qui elle ne supporte pas les VirtualHost.
Conclusion : pour avoir sur une seule machine, plusieurs sites Web avec SSL écoutant sur le port 443 par défaut, il faut plusieurs adresses IP (ce qui n'est pas obligatoire en HTTP grâce au VirtualHost).
[^] # Re: \_o<
Posté par doublehp (site web personnel) . Évalué à 1.
De plus, le mécanisme de VirtualHost N'est PAS disponible avec HTTPS (SSL ou TLS) ! En effet, les VirtualHost sont gérés au niveau du protocole HTTP. Or avant de pouvoir "utiliser" HTTP dans une communication HTTPS, il faut passer par la "couche" SSL qui elle ne supporte pas les VirtualHost.
Conclusion : pour avoir sur une seule machine, plusieurs sites Web avec SSL écoutant sur le port 443 par défaut, il faut plusieurs adresses IP
je voudrais pas te contredire, parce vu comment t est sur de toi, j ai peur de te froisser, mais compare un peu
http://test1.doublehp.org/(...)
http://test2.doublehp.org/(...)
https://test1.doublehp.org/(...)
https://test2.doublehp.org/(...)
http://saturn.doublehp.org/(...)
https://saturn.doublehp.org/(...)
bon ... le DNS de test1 est pas encore propage, je pense que c est une question de minutes ... mais j ai deja 4 sites HTTPS sur la meme machine ... je te laisse examiner les dig/DNS
comment j ai fait ?
<VirtualHost *:443>
DocumentRoot "/var/www/test1"
ServerName test1.doublehp.org
<Directory "/var/www/test1">
DirectoryIndex
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "/var/www/test2"
ServerName test2.doublehp.org
<Directory "/var/www/test2">
DirectoryIndex
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "/var/www/localhost/htdocs"
ErrorLog logs/ssl_error_log
<IfModule mod_log_config.c>
TransferLog logs/ssl_access_log
SSLEngine on
[...]
</VirtualHost>
EH ZUT ... mes autres HTTPS sont pas limites a SSL2 seulement, ... bon faut que je customise
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
dans chaque vhost, mais ca change rien au probleme.
Bref, dans la theorie, je sais pas ou t as pecho ton truc, mais dans la pratique, j ai deja 4 vhosts HTTPS (plus les http) sur la meme IP, qui plus est dynamique ....
(ouai je dis4, et j en donne que3, mais y en a un 4e que je peux pas citer, mais si vous voulez un https://dlfp.doublehp.org/(...) d ici 1h, vous demandez)
[^] # Re: \_o<
Posté par doublehp (site web personnel) . Évalué à 0.
Vu comment c est mal barre pour test1, je pense que son DNS ne sera propage que dans 4h :(, il vous reste test2 et saturn pour jouer. Vous aurez test1 demain.
N importe qui peut aussi faire un CNAME d un nom qui lui appartiens, vers saturn, et je lui met en place un HTTP et un HTTPS differents dans la journee. Juste un message prive avec ce que je dois mettre dans les pages ... si vous doutez que ca peut aussi marcher avec autre chose que mon domaine.
[^] # Re: \_o<
Posté par Mathieu Millet (site web personnel) . Évalué à 1.
Donc tous tes sites test1, test2, ... ont tous pour certificat saturne... et le navigateur t'affiche un bon message d'avertissement qui fait bien peur à l'Internaute moyen.
C'est pour ça que je dis que les mécanismes de VirtualHost ne sont pas disponibles en SSL.
[^] # Re: \_o<
Posté par doublehp (site web personnel) . Évalué à 0.
[^] # Re: \_o<
Posté par Mathieu Millet (site web personnel) . Évalué à 1.
Sinon, bien évidement, j'avais fait abstraction
Pour la petite histoire, il est possible d'indiquer dans le certificat de ton serveur, plusieurs "alternate cn" (je ne me rappelle plus le nom exact de l'attribut), mais c'est pas super génial, notamment car :
- Tous les navigateurs ne supportent les "alternate cn" dans les certificats X.509v3
- Le fait de rajouter un site nécessiterait de recertifier ton certificat serveur (enfin plus exactement, ta csr).
[^] # Re: \_o<
Posté par doublehp (site web personnel) . Évalué à 0.
Je suis contre cette solution, car elle necessite d utiliser un mod_rewrite d une machine vers les autres.
c est techniquement possible, mais alors tout le reseau ne repose plus sur la stabilite du routeur mais la stabilite du routeur ET du premier apache
ce qui oblige de rendre tout le reseau depnedant de DEUX ordinateurs ... et quand je vois la fragilite de nos machines (disques durs, alims, cartes meres ... ), enfin les PC sont comme les machines a laver: garentis un an, puis apres faut que ca lache. FAire dependre tous les sites webs de deux machines augmente donc au carre les probabilites que 'down time'
Alternatives:
- utiliser un routeur diskless, qui soit capable d embarquer en ramdisk un apache uniquement pour le mod_rewrite (mais je pense qu on est toujours oblige de se miserer avec les ports publics)
- il y aurait une soluthion avec le mod_rewrite et un seul port 80, si le apache central recupere les pages webs sur les sous apaches. Je n aimes pas, ca oblige toujours un apache dont tout le monde depend.
- des apaches dans des vservers (les vhosts kernel land) ... comme le font les societes Ikoula et Free. mais on sort du journal puisque l on a une seule machine.
# re
Posté par LaBienPensanceMaTuer . Évalué à 2.
Tu peux aussi venir me trouver sur irc.freenode.net en query (ce sera pr demain maintenant).
# eth0:0
Posté par neil . Évalué à 1.
après quoi il suffit de mettre en place un serveur DNS de base, djbdns est très agréable et simple à configurer, sur la première interface (eth0) et un deuxième DNS qui sert juste pour le local, dnsmasq est un très petit serveur qui convient parfaitement pour ça :
où /etc/resolv.conf.dnsmasq contient les serveurs DNS génériques utilisés (à la /etc/resolv.conf qui lui contient le DNS local sur 192.168.0.2), xxx.xxx.xxx.xxx est l'adresse publique du réseau qui sera remplacé par 192.168.0.1 sur le réseau local. Reste à configurer les hôtes locaux pour qu'ils effectuent les requêtes DNS sur 192.168.0.2.
# pound
Posté par gc (site web personnel) . Évalué à 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.