Vraag Is het mogelijk om een ​​hostnaam in Linux te alias?


Is het mogelijk om een ​​hostnaam in Linux te alias?

Het is door jmillikin op verschillende Ubuntu-forums als volgt gevraagd:


Is het mogelijk om een ​​hostnaam alias te maken? Een beetje zoals / etc / hosts, maar met andere hostnamen dan IP-adressen. Dat is met sommigen bestand zoals dit, zou je "fakehost1" kunnen pingen, en het zou opnieuw in kaart worden gebracht naar "realhost", en dan "realhost" zou worden omgezet naar een IP-adres.

# Real host        # Aliases
realhost           fakehost1 fakehost2 fakehost3

Iemand heeft over ssh geantwoord, maar niet over ping, etc. Mijn hoofd doel is om het te gebruiken als een alias voor een omverwerping server. In mijn geval, realhost bevindt zich onder een dynamisch IP-adres. Dus de alias "/ etc / hosts" werkt niet. ik wil toegang tot mijn Subversion-server als svn://my_svnserver/my_repos in plaats van svn://realhost/my_repos.


75
2017-09-14 15:56


oorsprong


Ik vermoed dat ik misschien iets mis. Zeg je dat je / etc / hosts er niet uit kunt zien als 10.0.3.4 some.host.org another.domain.com Je moet een referentie gebruiken voor een of andere programmatische reden? - jim_m_somewhere


antwoorden:


Voor degenen die geen account hebben op de forums (of niet willen inloggen):

als uw belangrijkste probleem niet is om te pingen maar naar ssh, kunt u uw creëren of bewerken   ~ / .ssh / config regels als deze toe te voegen:

Host fakehost1
  Hostname real-hostname

Host fakehost2
  Hostname real-hostname2

Host fakehost3
  Hostname real-hostname3

46
2017-08-26 20:21



Het onderdeel Hostname moet op een nieuwe regel staan. Hier is een goede tutorial over hoe je een configuratiebestand als dit kunt maken: mattryall.net/blog/2008/06/ssh-favourite-hosts - Code Commander
goede oplossing, bedankt. Maar natuurlijk zou een betere oplossing zijn om cnames op dns te gebruiken - Iurii


Linux ondersteunt aliasing door de HOSTALIASES env-variabele in te stellen.

echo "fakehost realhost" > /etc/host.aliases
echo "export HOSTALIASES=/etc/host.aliases" >> /etc/profile
. /etc/profile

dan kunt u

ping fakehost

N.B. ping vereist dat u dit als root instelt, maar u kunt het doen als elke gebruiker voor elke toepassing die als die gebruiker wordt uitgevoerd. ping suids naar root.


28
2018-03-21 18:41



werkte niet voor mij op Ubuntu 12.04 :( - Dimitry K
De HOSTALIASES werken alleen voor uitvoerbare bestanden waarvoor de setuid-vlag niet is ingesteld. Dus het zal niet werken voor ping (tenzij je al root bent bij het uitvoeren van ping). Ik veronderstel dat dit wordt gedaan om te voorkomen dat setuid-uitvoerbare bestanden in contact komen met een andere host dan het had bedoeld. - Boris
Werkt ook niet voor krul - Benubird
het zal zelden in het verwachte resultaat belanden. HOSTALIASES werkt alleen voor toepassingen die getaddrinfo (3) of gethostbyname gebruiken (3) - Dit betekent dat het zal werken voor applicaties die de hostname exploderend proberen op te lossen door een specifieke systeemoproep: het is nooit het geval. zien unix.stackexchange.com/questions/10438/...  dus de enige oplossing is lokale dns (dnsmasq) - Nadir
Het lijkt erop dat dit trucje is verouderd. De gethostbyname * (), gethostbyaddr * (), herror () en hstrerror () -functies zijn achterhaald. Als uw systeem lokaal DNSMasq uitvoert, kunt u hier een alias voor gebruiken voor elke resolutie die DNS gebruikt. - teknopaul


U kunt dit instellen op uw DNS-server, CNAME-records zorgen ervoor dat een machine bekendstaat bij meer dan één hostnaam. Dus voeg op deze manier CNAME-records toe aan uw DNS-server:


fakehost1 IN CNAME realhost 
fakehost2 IN CNAME realhost 
fakehost3 IN CNAME realhost 


23
2017-09-14 16:04



Bedankt, ik zal het morgen proberen na het opzetten van mijn lokale dns-server.
een lichtgewicht DNS-server om te proberen zou zijn dnsmasq (het dient ook DHCP). - sybreon


Ik doe dit vaak met omgevingsvariabelen. Ik weet dat dit alleen werkt voor de opdrachtregel, maar het is waar ik het meest naar hostnaamaliassen verlang (ik werkte met verschillende supercomputeraccounts, allemaal met lange URL's). Hier is een voorbeeld, als u BASH gebruikt. In ~ / .bashrc:

export fakehost = "long.ass.annoying.url.org"

dan in een frisse schil:

ssh christopher @ $ fakehost


16
2017-07-23 16:15





De enige manier om dit te doen is als u uw eigen lokale dns-server hebt.


8
2017-09-14 16:02



Ja, nu lijkt het de enige oplossing. Bedankt. Ik kan niet up-enen omdat ik niet genoeg reputatie heb.
Als het steeds veranderende IP-adres van een DSL- of inbelverbinding het probleem is, is dyndns een betere oplossing, IMHO. - Sven♦
Nee, het is geen betere oplossing. Zodra de server een hostnaam heeft die door iets anders wordt afgehandeld, zijn alle OP-behoeften een CNAME voor de eerste hostnaam. DYNDNS en dergelijke vertrouwen op de host die de dns-server informeert dat het IP-adres is gewijzigd. - theotherreceive


Het gebruik van /etc/hosts.aliases is een standaardkenmerk van de bind resolver-bibliotheken. Het is robuuster dan het toevoegen van items aan / etc / hosts en kan worden gebruikt als je CNAMES niet aan je DNS kunt toevoegen (er geen toegang toe hebt).

Over het algemeen is de beste werkwijze om CNAMES in de DNS te gebruiken met de juiste SEARCH gedefinieerd in /etc/resolv.conf.

Het bijwerken van / etc / hosts is niet erg robuust, omdat ingangen moeten worden gesynchroniseerd met IP-wijzigingen. Dit werkt alleen echt op kleine schaal of wanneer u een naamservice gebruikt om de hosts-kaart te distribueren (bijvoorbeeld via LDAP).

Een andere oplossing kan DNSMasq zijn http://en.wikipedia.org/wiki/Dnsmasq


4
2017-10-28 03:44



Ik heb geprobeerd /etc/hosts.aliases in CENTOS 6 te gebruiken, maar deze functie lijkt niet te werken. Ik kan ook geen documentatie vinden over het gebruik of het bestaan ​​ervan. Waar zou ik moeten zoeken? - mdpc


U hebt een dyndns-server nodig die uw huidige IP-adres toewijst aan een hostnaam. U vertelt deze server over uw huidige IP-adres wanneer u zich aanmeldt en zal uw hostnaamrecord bijwerken.


4
2017-09-14 16:05