Host configuration in linux

Correct /etc/hosts configuration in ubuntu 18.04

Hello i want to have three virtual severs in my localhost Virtual machine Ubbuntu 18.04. Id like one localhost -> /var/www/html one onlyoffice.eduardo.com -> /var/www/onlyoffice ( document server) another one to nextcloud.eduardo.com -> /usr/share/nginx/nextcloud16 1 — Which etc/hosts would be better:

127.0.0.1 localhost 127.0.0.1 onlyoffice.eduardo.com 127.0.0.1 nextcloud.eduardo.com 
127.0.0.1 localhost onlyoffice.eduardo.com nextcloud.eduardo.com 

I suppose that it would look for the name in order when i put http://onlyoffice.eduardo.com for example. 2 — Would it better to have different ips:

127.0.0.1 localhost 127.0.0.2 onlyoffice.eduardo.com 127.0.0.3 nextcloud.eduardo.com 

Any other files should i touch ? The general idea is to have the nextcloud, document server ( onlyoffice) in same place. Id alsolike to connect nextcloud onlyoffice app to http://onlyoffice.eduardo.com So id have to conf somehow in sites-avalaible and sites-enabled.. Id prefer to use nginx instead of apache. Thanks My work so far: https://drive.google.com/open?id=1I2ZiRUKqmm8u5U5TsqyoOKUvfTwY-SPA Thanks in advance

Please include in your question what have you tried so far. Most probably you need to include your appache/nginx configuration. Also you have to be aware that virtual hosts with names configured in /etc/hosts will work only from hosts where you configure hosts file in that way

1 Answer 1

The reason to configure the various hostnames to /etc/hosts is to allow the local web browser (client) to know which IP address to connect to reach the respective hostname, nothing else.

If you configure the web server to bind each virtual host to a different 127.0.0.* IP address, then you must also use associate the hostnames with the respective IP addresses. Otherwise the client won’t be able to connect to the right virtual host. This would be IP-based virtual hosting.

But the webserver won’t need /etc/hosts at all, since it will be able to look at the headers of the HTTP request and see which hostname was actually used in the request. Even using just one port and one IP address, it will be able to present different content according to the hostname used in the request, if configured to do so. This is known as name-based virtual hosting.

Both Apache and nginx will be able to handle either method; it’s just a matter of deciding which one to use. The name-based method will require less IP addresses, which makes it the most widely-used one in public webservers, since static IP addresses are a limited resource.

In /etc/hosts , the «all names in the same line» makes it unambiguous that the first listed name is the primary one and the rest are aliases — sort of similar to using the CNAME records in DNS. If a client does both a forward and a reverse lookup, e.g. for HTTPS certificate verification purposes, this format is the most likely to pass the reverse lookup check without causing security warnings.

Читайте также:  Ip route add linux example

If you use «multiple lines with the same IP address» in /etc/hosts , and perform a reverse lookup, only the first line with the matching IP will be returned.

In Linux, the nslookup command will often explicitly query DNS only. To test the complete hostname resolution process just like an application would do, you should use getent hosts . With this command, you can verify the effect of different /etc/hosts configurations for yourself.

In StackExchange, the standard process would be one question per question post. Based on the title and the majority of contents of your post, this question was about /etc/hosts . If you need help on configuring your webserver, you should post another question for that, rather than attempt to stretch this one into an extended discussion.

Источник

Файл hosts в Linux

Система доменных имен DNS используется для определения, какой IP принадлежит к нужному домену в сети интернет. Когда какой-либо программе понадобится обратиться к сайту по его доменному имени, операционная система отправляет к DNS-серверу запрос, чтобы узнать, по какому IP ей дальше передавать пакеты. Но так происходит не всегда. Например, когда мы обращаемся к домену localhost, то всегда запрос отправляется нашему локальному компьютеру.

Всему причиной файл hosts. Если вы раньше пользовались Windows, то, наверное, уже слышали о таком файле. Там чаще всего он использовался для того, чтобы быстро заблокировать доступ к какому-либо ресурсу. Но применение его гораздо шире. В этой статье мы рассмотрим, как настроить файл hosts в Linux, а также какие возможности он нам предоставляет.

Разрешение доменных имён в Linux

Прежде чем мы перейдём к самому файлу hosts, нужно разобраться, как происходит поиск IP-адреса для доменного имени в Linux. Я говорил, что операционная система сразу же отправляет запрос DNS-серверу, но это не совсем так. Существует определённый порядок поиска, согласно которому он выполняется. Этот порядок установлен в конфигурационном файле /etc/nsswitch.conf

Здесь нас интересует строчка hosts. В ней в порядке очередности записаны службы, которые используются для поиска IP-адреса для доменного имени. Пункт files означает использование файла /etc/hosts, а dns — сервиса доменных имён интернета. Если files расположена перед hosts, это означает, что сначала система попытается найти домен в /etc/hosts, а уже потом по DNS. По умолчанию дело обстоит именно так.

Настройка файла hosts в Linux

Нужный нам файл находится в директории /etc/. Для его открытия можно использовать любой текстовый редактор как в командной строке, так и в графическом интерфейсе, только открывать его нужно с правами суперпользователя. Например, с помощью vim:

Синтаксис файла довольно простой. В нём находится несколько строчек с доменными именами и IP-адресами, которые нужно для них использовать. Каждая из них выглядит вот так:

ip_адрес домен алиас

Обычно первая же строчка создаёт правило для перенаправления всех запросов к домену localhost на локальный IP-адрес — 127.0.0.1:

Также в этом файле по умолчанию размещаются перенаправления для имени вашего компьютера и для IPv6-адресов. Вы можете создать свои настройки для любого нужного домена. Для этого нужно добавить строчку в конец файла. Например, направим все запросы к домену losst.pro на ip 127.0.0.1:

Обратите внимание, что здесь указывается только домен, без протокола. Префикс http или https указывать не нужно, иначе ничего работать не будет. А вот для поддомена www нужно создавать отдельную запись или записывать его в виде алиаса. Например:

Читайте также:  Настроить сервер ntp linux

127.0.0.1 losst.pro www.losst.pro

Теперь при запросе домена losst.pro будет открываться наш локальный IP. Чтобы вернуть доступ к оригинальному ресурсу, достаточно убрать добавленную строчку. Но вы можете использовать не только локальный адрес, но и любой другой. Это очень удобно, если вы только зарегистрировали домен и доменная зона ещё не успела обновиться, а вы уже хотите работать с новым сайтом. Просто добавьте данные в /etc/hosts и работайте как обычно.

Выводы

В этой небольшой статье мы разобрали, как выполняется настройка DNS через файл hosts Linux. Как видите, с его помощью вы можете блокировать доступ к нежелательным ресурсам, например, к которым программы не должны получить доступ, а также использовать его в работе веб-мастера.

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

How to Setup Local DNS Using /etc/hosts File in Linux

DNS (Domain Name System or Service) is a hierarchical decentralized naming system/service that translates domain names into IP addresses on the Internet or a private network and a server that provides such a service is called a DNS server.

This article explains, how to setup a local DNS using the hosts file (/etc/hosts) in Linux systems for local domain resolution or testing the website before taking live.

For example, you may want to test a website locally with a custom domain name before going live publicly by modifying the /etc/hosts file on your local system to point the domain name to the IP address of the local DNS server you configured.

The /etc/hosts is an operating system file that translate hostnames or domain names to IP addresses. This is useful for testing websites changes or the SSL setup before taking a website publicly live.

Attention: This method will only work if the hosts have a static IP address. Therefore ensure that you have set static IP addresses for your Linux hosts or nodes running other operating systems.

For the purpose of this article, we will be using the following domain, hostnames and IP addresses (use values that apply to your local setting).

Domain: tecmint.lan Host 1: ubuntu.tecmint.lan 192.168.56.1 Host 2: centos.tecmint.lan 192.168.56.10

Understanding Name Service Switch in Linux

Before moving any further, you should understand a few things about another important file that is /etc/nsswitch.conf. It provides Name Service Switch functionality which controls the order in which services are queried for name service lookups.

The configuration is based on order; if files is before dns it means the system will query the /etc/hosts file before checking DNS for name service requests. But if DNS is before files then the domain lookup process will consult DNS first before any other appropriate services or files.

In this scenario, we want to query the “files” service. To check the order, type.

$ cat /etc/nsswitch.conf OR $ grep hosts /etc/nsswitch.conf

Check Name Service Switch

Configure DNS Locally Using /etc/hosts File in Linux

Now open the /etc/hosts file using your editor of choice as follows

Then add the lines below to the end of the file as shown in the screen shot below.

192.168.56.1 ubuntu.tecmint.lan 192.168.56.10 centos.tecmint.lan

Next, test if everything is working well as expected, using the ping command from Host 1, you can ping Host 2 using it domain name like so.

$ ping -c 4 centos.tecmint.lan OR $ ping -c 4 centos

Ping Domain Locally

On the Host 2, we have setup Apache HTTP server. So we can also test if the name translation service is working as follows by going to URL http://centos.tecmint.lan.

Читайте также:  Копирование файла консоли linux

Check Domain Locally

Important: To use the domain names on any host on the network, you must configure the above settings in its /etc/hosts file.

What does this mean, in the above example, we only configured the hosts file of Host 1 and we can only use the domain names on it. To use the same names on Host 2, we have to add the addresses and names to its hosts file as well.

Lastly, you should use host command or nslookup command to test if the name translation service is actually working, these commands only query DNS and overlook any configurations in /etc/hosts and /etc/nsswitch.conf files.

You may also like to read these following related articles.

That’s it! Do share any additional thoughts or questions about this topic with us, via the comment section below.

Aaron Kili is a Linux and F.O.S.S enthusiast, an upcoming Linux SysAdmin, web developer, and currently a content creator for TecMint who loves working with computers and strongly believes in sharing knowledge.

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Install Dnsmasq on CentOS

Install Bind DNS Server on RHEL 8

Setup Cache-Only DNS in RHEL and CentOS 7

Install PowerDNS and PowerAdmin in CentOS

Setup Cahing DNS Server in CentOS 7

Cache Only DNS Setup in CentOS

3 thoughts on “How to Setup Local DNS Using /etc/hosts File in Linux”

Linux does provide the bind RPM package to allow an administrative domain to configure and maintain its own DNS service, but frequently the size of the local network is only a few hosts and makes justifying the effort of maintaining a DNS service unwarranted. Reply

Please refer to https://unix.stackexchange.com/questions/421491/what-is-the-purpose-of-etc-hosts . Reply

Hello Aaron, I’m sad to say that in above article you did not describe DNS at all. You instead described how to configure local name resolution on a Linux host through /etc/hosts. In this scenario, DNS is not involved at all. Think of OS name resolution like an umbrella. In nsswitch.conf the sysadmin configures what name resolution services for this system should be. Files usually come first (means /etc/hosts), DNS is one of them – it usually follows files but there are a lot more different name resolution services and strategies available. “getent hosts ” query the OS to resolve according to configured name resolution services in that order (and usually checks /etc/hosts firsts and then maybe DNS, but always does what’s written in nsswitch.conf behind “hosts:”) “host” explicitly asks DNS service to resolve. This won’t resolve hostnames that only /etc/hosts can resolve – to demonstrate the difference. Please read the man pages of “getent” and “hosts“. I suggest completely overhaul this article or take it off-line. Greetings,
Joerg Reply

Источник

Оцените статью
Adblock
detector