Как указать на имя хоста на IP-адрес

У меня есть рабочий веб-сервер, через который можно назвать http://localhost:9000/. То, что я пытаюсь заархивировать, вместо вызова http://localhost:9000/, Я хотел бы назвать http://repo.sweetsoft/. Я попытался изменить файл hosts следующим образом:

127.0.0.1       localhost
127.0.1.1       sweetsoft
127.0.0.1:9000  repo.sweetsoft

Как Вы видите, я добавил последнюю строку, но она не работает. Что я делаю неправильно?

1
задан 13 October 2019 в 13:08

2 ответа

Существует недоразумение приблизительно hosts файл здесь.

, В первую очередь, файл hosts имеет приоритет по DNS в большинстве операционных систем, можно определить их в операционных системах Linux/Unix и macOS в /etc/hosts и c:\windows\system32\drivers\etc\hosts в Windows.

So, когда Вы добавляете запись в своем файле hosts как:

127.0.0.1  repo.sweetsoft

и попытка открыть http://repo.sweetsoft/ в Вашем браузере, это не отправляет запроса DNS внешнему миру и использует эту запись от Вашего файла hosts.

Имеют в виду, что это только работает на запись (разрешение, что имя или домен адресуют к адресу IPv4) и запись AAAA (разрешение, что имя или домен адресуют к адресу IPv6), и Вы не можете определить TXT или записи MX, например.

, Но номера портов находятся на другом сетевом уровне, файл hosts только понимает имена (как repo.sweetsoft) и IP-адреса, это - уровень 3 и 4 в модели ISO (Сеть/Транспорт), но номера портов находятся в уровне 7 (прикладной уровень).

модель

enter image description here

Check OSI OSI по сравнению с моделью

enter image description here

TCP/IP С тех пор hosts файл или протокол DNS не знают о прикладных уровнях, они понятия не имеют о номерах портов также.

Ваша конфигурация путем добавления 127.0.0.1:9000 к файлу hosts похожа на добавляющие номера портов к DNS записи.

После этого разъяснения, можно устранить эту проблему несколькими способами:

  1. Запуск Вашего приложения на порте 80. Устраняет Вашу проблему и удаляет любую неоднозначность.
  2. Порт передачи 80 для портирования 9000 на машине через порт передачи iptables
# This command will forward all requests destined to port 80 and makes a lot of conflicts, I suggest socat
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 9000
  1. 80 для портирования 9000 на машине через socat:
apt install socat -y
socat TCP-LISTEN:80,fork TCP:127.0.0.1:9000

, Если Вы не можете изменить свой порт приложения, socat будет самым легким путем.

Для повседневного использования, можно записать systemd сервисный файл для выполнения его в фоновом режиме.

1
ответ дан 7 December 2019 в 14:57

Можно пойти с другим подходом:

  1. 127.0.1.1 sweetsoft repo.sweetsoft в /etc/hosts
  2. Прямой repo.sweetsoft:80 и 127.0.0.1:9000 в Вашем сервере HTTP (AFAIK, Apache может сделать его с помощью VirtualHost Ссылка ).

Однако это кажется мне, Вы используете сервер разработки приложений. Используя Apache для проксирования может быть излишество.

0
ответ дан 7 December 2019 в 14:57

Другие вопросы по тегам:

Похожие вопросы: