VirtualHost zonder dns record

Pagina: 1
Acties:

  • Huupke
  • Registratie: November 2001
  • Laatst online: 03-11-2025
Ik heb een subdomein aangemaakt door in apache conf een VirtualHost bij te maken. Dit werkt prima maar op vele websites staat dat ik ook een DNS c-record moet aanmaken. Waarom werkt het dan toch? En geeft dit performance issues?

i5-13600KF @ 6.0GHz || Domoticz on Pi3+Pi4 || PV: 14940 Wp || WP: 12kW LG


  • Rmg
  • Registratie: November 2003
  • Nu online

Rmg

waarschijnlijk heb je een wildcard dns record, alle *.domein.nl gaan naar het ip van domein.nl en daarom werkt het

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

Mmm ik maak ook alleen a records, of stellen ze voor om voor www een c-name te maken

Ik neem aan dat een cname het makkelijk maakt om een hele set virtual hosts in een keer te verhuizen wanner het nodig is, anders weet ik het ook even niet
CNAME records are specified in RFC 1034. CNAMEs are handled specially in the domain name system, and have several restrictions on their use. When a DNS resolver encounters a CNAME record while looking for a regular resource record, it will restart the query using the canonical name instead of the original name. When the resolver is told to look for CNAME records, the CNAME is returned, rather than restarting the query. The canonical name that a CNAME points to can be anywhere in the DNS, whether local or on a remote server in a different DNS zone.

For example, if there is a DNS zone as follows:

foo.example.com. CNAME bar.example.com.
bar.example.com. A 192.0.2.23
When an A record lookup for foo.example.com is done, the resolver will see a CNAME record and restart the checking at bar.example.com and will then return 192.0.2.23.

Iperf


  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 15:17

CAPSLOCK2000

zie teletekst pagina 888

De conventie is dat bij ieder ip-adres precies één A record hoort. Als je meer namen wil dan moet je CNAMES gebruiken.

This post is warranted for the full amount you paid me for it.


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Wiens conventie precies?

  • Equator
  • Registratie: April 2001
  • Laatst online: 26-02 19:58

Equator

Crew Council

#whisky #barista

Leuke discussie (potentieel) maar niets voor Professional Networking & Servers denk ik :)

Move naar Netwerken

  • Accesteam
  • Registratie: Maart 2009
  • Laatst online: 22-02 23:17
Waarschijnlijk staat je DNS al zo ingesteld dat je een A-Record voor je Parent Domain hebt. En dan een wildcard CNAME voor alle local hostnames/subdomains die referren naar je Parent Domain. Hierdoor wordt dus zowel www.example.tld als vhost1.example.tld verwezen naar hetzelfde IP adres.

Wat Apache vervolgens doet is kijken naar de FQDN (vhost1.example.tld) en aan de hand van je instellingen zoek ie er een site bij. Dus dan gaat ie naar de DocumentRoot van de ServerName/ServerAlias die je bij je Virtual Hosts heb ingesteld :)

Dus ja, als je Virtual Hosts wel gebruiken zul je inderdaad CNAME's moeten aanmaken, maar als je niet van plan bent meerdere IP adressen (voor bijv. meerdere serverts) aan je Parent Domain te koppelen kan je net zo goed een wildcard gebruiken en dan heb je meteen alle subdomeinen die je als Virtual Host kan gebruiken.

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

Accesteam schreef op dinsdag 24 augustus 2010 @ 22:02:
Waarschijnlijk staat je DNS al zo ingesteld dat je een A-Record voor je Parent Domain hebt. En dan een wildcard CNAME voor alle local hostnames/subdomains die referren naar je Parent Domain. Hierdoor wordt dus zowel www.example.tld als vhost1.example.tld verwezen naar hetzelfde IP adres.

Wat Apache vervolgens doet is kijken naar de FQDN (vhost1.example.tld) en aan de hand van je instellingen zoek ie er een site bij. Dus dan gaat ie naar de DocumentRoot van de ServerName/ServerAlias die je bij je Virtual Hosts heb ingesteld :)

Dus ja, als je Virtual Hosts wel gebruiken zul je inderdaad CNAME's moeten aanmaken, maar als je niet van plan bent meerdere IP adressen (voor bijv. meerdere serverts) aan je Parent Domain te koppelen kan je net zo goed een wildcard gebruiken en dan heb je meteen alle subdomeinen die je als Virtual Host kan gebruiken.
Leg dan eens uit waarom ?
Ik heb meerdere virtual host draaien zonder cname.
Wildcard ? als ik iets randoms invul valt hij niet terug op het default domein hoor maar dan krijg je
•Internet connectivity has been lost.
•The website is temporarily unavailable.
•The Domain Name Server (DNS) is not reachable.
•The Domain Name Server (DNS) does not have a listing for the website's domain.
•There might be a typing error in the address.
•If this is an HTTPS (secure) address, click Tools, click Internet Options, click Advanced, and check to be sure the SSL and TLS protocols are enabled under the security section
Lijkt me dat die dan gewoon niet gevonden wordt


Ik snap dat het vanuit het oogpunt van een migratie van een cname 10x handiger is.

Iperf


  • Accesteam
  • Registratie: Maart 2009
  • Laatst online: 22-02 23:17
Hmm, maar je kan bij je Web Server (dus Apache) ook een wildcard instellen...

code:
1
2
3
4
5
6
7
<VirtualHost *:80>

ServerName example.com

DocumentRoot /var/www

</VirtualHost>


Zoiets.. Waarschijnlijk zullen dan al die random subdomeinen uitkomen in /var/www. Maar verder staan de VirtualHosts en de DNS apart van elkaar. Het is onmogelijk dat Virtual Hosts ineens wel naar een IP adres linken als ze ingesteld zijn, en anders niet.

Doe maar is ping randomsubdomein.jouwdomein.nl in command-prompt.

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

mm doe ik iets fouts met de wildcard ?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# --------------------------- fishtest.domein ---------------

<Directory "D:/WebDomains/fishtest.domein">
Order Deny,Allow
Allow from all
</Directory>


<VirtualHost *:80>
    ServerAdmin webmaster@fishtest.domein
    DocumentRoot "D:/WebDomains/fishtest.domein"
    ServerName fishtest.domein
    ServerAlias fishtest.domein
    ErrorLog "logs/fishtest.domein-error.log"
    CustomLog "logs/fishtest.domein-access.log" common
    DirectoryIndex index.php
</VirtualHost>


# ---------------------------- fishmail.domein --------------------


<Directory "D:/WebDomains/fishmail.domein">
Order Deny,Allow
Allow from all
</Directory>


<VirtualHost *:80>
    ServerAdmin webmaster@fishmail.domein
    DocumentRoot "D:/WebDomains/fishmail.domein"
    ServerName fishmail.domein
    ServerAlias fishmail.domein
    ErrorLog "logs/fishmail.domein-error.log"
    CustomLog "logs/fishmail.domein-access.log" common
</VirtualHost>



het werkt wel zoals bedoelt

ping
C:\Documents and Settings\dell>ping blaataap.domein
Ping request could not find host blaataap.domein. Please check the name and
try again.
C:\Documents and Settings\dell>ping fishtest.domein

Pinging fishtest.domein [85.*] with 32 bytes of data:

Reply from 85.*: bytes=32 time<1ms TTL=64
Reply from 85.*: bytes=32 time=3ms TTL=64
Reply from 85.*: bytes=32 time<1ms TTL=64
Reply from 85.*: bytes=32 time=2ms TTL=64

Ping statistics for 85.*:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 3ms, Average = 1ms

C:\Documents and Settings\dell>
dit stuk was toch gewoon de adapters waarop die mag luisteren ?
<VirtualHost *:80>
Btw, dit wordt wel bijna een topic hijack zo.... we streven naar hetzelde doel toch ?

[ Voor 4% gewijzigd door Fish op 24-08-2010 22:31 ]

Iperf


  • Rmg
  • Registratie: November 2003
  • Nu online

Rmg

fish schreef op dinsdag 24 augustus 2010 @ 22:27:
mm doe ik iets fouts met de wildcard ?


het werkt wel zoals bedoelt

dit stuk was toch gewoon de adapters waarop die mag luisteren ?

[...]


Btw, dit wordt wel bijna een topic hijack zo.... we streven naar hetzelde doel toch ?
er moet een wildcard op je dns... anders resolvt ie niet

nu zorg je er alleen voor dat apache op alle interfaces op poort 80 luistert

[ Voor 62% gewijzigd door Rmg op 24-08-2010 22:51 ]


  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

als ik een a record heb waarom heb ik dan een wildcard nodig ?

Het werkt compleet zoals bedoelt
Er wordt gesteld dat het niet zou werken zonder cname, terwijl het bij mij gewoon werkt zonder cname

[ Voor 52% gewijzigd door Fish op 24-08-2010 22:53 ]

Iperf


  • Accesteam
  • Registratie: Maart 2009
  • Laatst online: 22-02 23:17
Als je bij die *:80 een ip-adres zou invullen fixed ie dacht ik op dat IP adres. Maar met je Vhost configuratie is in ieder geval niets mis hoor :)

Maar is .domein een placeholder voor je parent domein (bijv. example.com), of is .domein je top-level domein (zoals .com en .net) voor in een lokale omgeving? En pas je je .host-file aan of heb je echt een dns-servertje draaien?

Ik probeer overigens alleen maar je vraag zo goed mogelijk te beantwoorden :) Mocht je het hierbij willen laten vind ik het ook prima hoor :P

  • Rmg
  • Registratie: November 2003
  • Nu online

Rmg

fish schreef op dinsdag 24 augustus 2010 @ 22:51:
als ik een a record heb waarom heb ik dan een wildcard nodig ?

Het werkt compleet zoals bedoelt
Er wordt gesteld dat het niet zou werken zonder cname, terwijl het bij mij gewoon werkt zonder cname
Een * A IN xxx.xxx.xxx.xxx record?

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

code:
1
2
3
4
5
6
7
8
9
10
11
12
$ORIGIN   domein-a.
@         IN SOA   ns1.nederhost.nl. hostmaster.nederhost.nl.
                   (2010081502 14400 3600 604800 600)
lala      IN A     83.*
localhost IN A     127.0.0.1

@         IN A     85.*
@         IN MX    40 fishmail.domain-b. ; mail
sabnzb    IN A     85.*
secure    IN A     85.*
webmail   IN A     85.*
www       IN A     85.*


wanneer iets anders (onzin) e.g. "ping blaat.domein-a "ping/probeer te resolven zal vind hij deze ook niet vinden. wat ook de bedoeling is
Wat bij mij er op duid dat dat de wildcard niet actief is en dus ook geen verplicht alternatief voor een ontbrekende c-name

[ Voor 13% gewijzigd door Fish op 24-08-2010 23:15 ]

Iperf


  • Accesteam
  • Registratie: Maart 2009
  • Laatst online: 22-02 23:17
Ik heb in mijn Zone file voor CNAME:

code:
1
2
$ORIGIN example.com
*    IN     CNAME    @


Dit voorbeeld zou dus (theoretisch :p) alle sub-domeinen van example.com doorverwijzen naar example.com (of het IP ervan), de @ verwijst dus naar het domein zelf ($ORIGIN). En vervolgens zou Apache dan weer uit de HTTP Request moeten afleiden welke Virtual Host ie moet pakken.

Maargoed, komt er dus op neer dat zodra je een Virtual Host aanmaakt op een subdomein hij wel ping-able en reachable wordt?...

[ Voor 17% gewijzigd door Accesteam op 24-08-2010 23:24 ]


  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

nee de virtual host maken een domein niet pingable, wel a de records (router beantwoord deze)
Ik wil ook helemaal geen wildcard, laten we dat even voorop stellen
Accesteam schreef op dinsdag 24 augustus 2010 @ 22:55:
Als je bij die *:80 een ip-adres zou invullen fixed ie dacht ik op dat IP adres. Maar met je Vhost configuratie is in ieder geval niets mis hoor :)

Maar is .domein een placeholder voor je parent domein (bijv. example.com), of is .domein je top-level domein (zoals .com en .net) voor in een lokale omgeving? En pas je je .host-file aan of heb je echt een dns-servertje draaien?

Ik probeer overigens alleen maar je vraag zo goed mogelijk te beantwoorden :) Mocht je het hierbij willen laten vind ik het ook prima hoor :P
Ik heb een dns draaien ja (via nederhost). domein staat idd voor mijn parent domein, geen tld , sorry.
we zitten in ieder geval op een lijn wbt de vhost :)

[ Voor 3% gewijzigd door Fish op 24-08-2010 23:29 ]

Iperf


  • mookie
  • Registratie: Juni 2002
  • Laatst online: 15-06-2025

mookie

Heerlijk Helder

dns en apache virtual host (of eigenlijk dus host headers zoals het voor alle webservers beter bekend staat) hebben niets met elkaar te maken, maar je hebt ze beide nodig als je meerdere websites achter 1 IP adres hangt.

DNS zet namen om in adressen.
A record zet een naam om in een IP adres
C-name record zet een naam om in een andere naam (en vervolgens dus weer in een IP adres)
Een domein kan ook een adres hebben. Daarom kun je gewoon naar tweakers.net gaan en hoef je niet www.tweakers.net in te typen. Volgens mij ondersteunen alle DNS servers dit.
De meeste DNS servers (maar zeker niet alle) ondersteunen een wildcard record (een *.domein.tld) record.
Dat is een gewoon A record dat naar een IP adres wijst.

Als men een A record opvraagt dat niet bestaat zou normaal gesproken de DNS server dit gewoon moeten melden. Met zo'n wildcard record zal de DNS server echter gewoon antwoorden dat dikkeluldriebier@domein.nl gewoon bestaat, ook al is dat niet.

Ik ben er vrij zeker van dat niemand bij tweakers ooit dikkeluldriebier.tweakers.net heeft gedefinieerd.
Toch kan ik hem pingen.

Pinging dikkeluldriebier.tweakers.net [213.239.154.35] with 32 bytes of data:
Reply from 213.239.154.35: bytes=32 time=28ms TTL=59

Tweakers heeft dus een wildcard record aangemaakt.
Microsoft heeft dat niet:

ping dikkeluldriebier.microsoft.com
Ping request could not find host dikkeluldriebier.microsoft.com. Please check the name and try again.

Hoe dan ook, DNS zorgt ervoor dat je bij een IP adres uitkomt (of juist niet als dat adres niet bestaat en er is geen wildcard record)

Daarnaast ondersteunen webservers "host headers" die ervoor zorgen dat je meerdere websites achter in 1 IP adres kunt hosten.
In het get/post request staat in de header de URL die de gebruiker in de browser heeft ingetypt.
De webserver pakt die op en kijkt naar de virtual hosts (in apache) en aan de hand daarvan bepaalt hij welke website hij moet laten zien.

Wat betreft de virtual hosts in apache, het is mogelijk om 1 default in te stellen voor het geval iemand een naam intypt die niet gedefinieerd is, maar je kunt dat ook weglaten en dan krijg je een "page cannot be displayed".
Daarnaast kun je gewoon de correcte virtual hosts definieren en apache zal de correcte websites laten zien.

Hieronder een kleine voorbeeld config van apache:

NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/default"
ServerName iets
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/website1"
ServerName www.domeinnaam1.nl
ServerAlias domeinnaam1.nl *.domeinnaam1.nl
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/website2"
ServerName www.domeinnaam2.nl
ServerAlias domeinnaam2.nl *.domeinnaam2.nl
</VirtualHost>


NameVirtualHost *:80 zorgt ervoor dat ongeacht het IP adres van je server als het maar op poort 80 binnenkomt apache zal kijken naar virtual hosts.
Als je 2 adressen hebt en slechts op 1 adres virtual hosts wil maak je er NameVirtualHost IPAdress1:80 van


<VirtualHost *:80> betekent wederom elk IP adres op je server, als het maar poort 80 is.
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/default" is waar de website staat
ServerName iets het belangrijkste hier is dat je iets achter servername typt (als het maar geen naam is die je echt wilt gebruikt)
</VirtualHost> einde van deze virtual host definitie

Deze definitie moet bovenaan staan en zorgt ervoor dat als men iets intypt wat niet is gedefinieerd men naar een standaard website gaat.
Een soort van wildcard virtualhost.

De andere definities spreken volgens mij voor zich.

DNS en virtual hosts staan dus eigenlijk los van elkaar, alhoewel je in deze situaties (meerdere websites achter 1 IP adres) wel in lijn met elkaar moet instellen.

En terzijde, pingen heeft al helemaal niets met beide te maken, met die uitzondering dat als je een naam pingt dat er eens een dns lookup wordt gedaan naar die naam om het adres te achterhalen.
Vervolgens zal ping wat data via het ICMP protocol naar het IP adres sturen om te kijken of aldaar een echo kan worden verzonden. Maar als er aan de andere kant geen echo verstuurd kan worden (ICMP is helemaal niet geladen,of een firewall houdt het tegen) dan kan zowel DNS als host headers (virtual hosts) nog steeds prima werken.

En op je initiele vraag:

Ik heb een subdomein aangemaakt door in apache conf een VirtualHost bij te maken. Dit werkt prima maar op vele websites staat dat ik ook een DNS c-record moet aanmaken. Waarom werkt het dan toch? En geeft dit performance issues?

Het werkt omdat een cname gewoon wordt doorgezet naar een andere naam (wederom een cname of uiteindelijk een A record) en uiteindelijk kom je bij een IP adres uit.
Je eigen PC hoeft niet telkens de volgende naam uit de cname op te halen, de DNS server doet dat intern en zal altijd meteen een IP adres teruggeven (of niet als je geen wildcard hebt en het record bestaat niet).
Dus ja het is trager (want de DNS server moet door meer slagen heen om het adres te achterhalen) maar deze vertraging is praktisch te verwaarlozen.
Als je meerdere A records aanmaakt, of 1 A record en meerdere cnames die naar dat A record gaan maakt in theorie niet uit.
1 A record en meerdere cnames is makkelijk omdat je bij het verhuizen van de server naar een ander adres slechts enkel het A record hoeft te wijzigen.
Anderzijds zou dat vervelend kunnen zijn als je b.v. 2 servers gaat gebruiken om de load op te delen.
Dan moet je wel meerdere A records hebben.

Ikzelf gebruik altijd enkel A records (en je kunt prima meerdere verschillende A records hebben die toch naar hetzelfde IP adres wijzen).

[ Voor 20% gewijzigd door mookie op 25-08-2010 01:02 ]

mookie


  • Huupke
  • Registratie: November 2001
  • Laatst online: 03-11-2025
Ok, helemaal duidelijk en dus volgens mijn verwachting. Als alle subdomeinen via de wildcard al bij mij aankomen is het daarna nog alleen maar een kwestie om ze te routen naar de juiste directory via apache, vandaar dat het al meteen werkte.
Thanks!

i5-13600KF @ 6.0GHz || Domoticz on Pi3+Pi4 || PV: 14940 Wp || WP: 12kW LG

Pagina: 1