ਉਬੰਟੂ ਸਰਵਰ - ਆਈ ਪੀ ਐਡਰੈੱਸ ਕੌਨਫਿਗਰੇਸ਼ਨ

ਮੈਂ ਵਰਚੁਅਲ ਮਸ਼ੀਨ (ਵਰਚੁਅਲ ਬਾਕਸ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ) ਤੇ ਉਬੰਟੂ ਸਰਵਰ 20.4 ਨੂੰ ਸਥਾਪਤ ਕੀਤਾ ਹੈ.

sudo apt install apache2

ਹਰ ਚੀਜ ਤੋਂ ਜੋ ਮੈਂ ਇੰਟਰਨੈਟ ਤੇ ਵੇਖਿਆ ਹੈ ਅਤੇ ਪੜ੍ਹਿਆ ਹੈ (ਉਦਾਹਰਣ, ਓਬੈਂਟੂ ਸਰਵਰ ਤੇ ਅਪਾਚੇ ਵੈੱਬ ਸਰਵਰ: https://www.youtube.com/watch?v=eS_4o0QT9Ac&ab_channel=HelpfulTechVids , ਅਤੇ ਕਿਵੇਂ ਉਬੰਟੂ ਸਰਵਰ 'ਤੇ ਅਪਾਚੇ ਸਥਾਪਤ ਕਰਨ ਲਈ: https://www.youtube.com/watch?v=Zj-_julzYuo&ab_channel=AlpineSecurity ), ਹਰ ਕੋਈ ਕਹਿੰਦਾ ਹੈ ਕਿ ਬੱਸ ਕਰੋਮ ਖੋਲ੍ਹੋ ਅਤੇ ਲੋਕਲਹੋਸਟ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਅਤੇ ਤੁਸੀਂ ਆਪਣੇ ਅਪਾਚੇ ਸਰਵਰ ਪੇਜ. ਇਹ ਮੇਰੇ ਲਈ ਪ੍ਰਗਟ ਨਹੀਂ ਹੁੰਦਾ ਜਦੋਂ ਮੈਂ ਆਪਣੇ VM ਹੋਸਟ ਤੇ ਅਪਾਚੇ ਪੇਜ ਨੂੰ ਵੇਖਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹਾਂ.

ਮੈਂ ਮਹਿਮਾਨ ਲਈ ਬਹੁਤ ਸਾਰੀਆਂ ਵੱਖਰੀਆਂ VM ਨੈਟਵਰਕ ਸੈਟਿੰਗਾਂ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਹੈ: NAT, ਬ੍ਰਿਜਡ ਅਡੈਪਟਰ, ਹੋਸਟ-ਓਨਲੀ ਅਡੈਪਟਰ. ਕੁਝ ਵੀ ਨਹੀਂ.

ਜਦੋਂ ਮੈਂ ਆਪਣੇ VM ਗੈਸਟ (ਸਥਿਤੀ ਨੂੰ 20.04 ਉੱਤੇ) ਦੀ ਸਥਿਤੀ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹਾਂ:

sudo systemctl status apache2

ਇਹ ਕਹਿੰਦਾ ਹੈ ਕਿ ਅਪਾਚੇ ਸਰਵਰ ਚੱਲ ਰਿਹਾ ਹੈ, ਪਰ ਮੈਂ ਇਸਨੂੰ ਆਪਣੇ ਮੇਜ਼ਬਾਨ ਦੇ ਬ੍ਰਾ browserਜ਼ਰ 'ਤੇ ਨਹੀਂ ਦੇਖ ਸਕਦਾ.

ਪਹਿਲਾਂ ਹੀ ਕਿਸੇ ਨੇ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਮੈਨੂੰ ਇਸ ਨਾਲ ਸੰਬੰਧਿਤ ਪਿਛਲਾ ਪ੍ਰਸ਼ਨ ਦਿਖਾ ਰਿਹਾ ਹੈ: ਮੈਂ ਅਪਾਚੇ (ਵਰਚੁਅਲ ਬਾਕਸ ਗੈਸਟ ਤੇ) ਮੇਜ਼ਬਾਨ ਤੋਂ ਕਿਵੇਂ ਪਹੁੰਚ ਸਕਦਾ ਹਾਂ? , ਪਰ ਹਾਲਾਂਕਿ ਉਹ ਉਪਭੋਗਤਾ ਮਹਿਮਾਨ ਵਿੱਚ ਜਾ ਕੇ ਫਾਇਰਫਾਕਸ ਨੂੰ ਲੋਡ ਕਰ ਸਕਦਾ ਹੈ ਅਤੇ ਵੇਖ ਸਕਦਾ ਹੈ ਕਿ ਉਨ੍ਹਾਂ ਦਾ ਅਪਾਚੇ ਕੰਮ ਕਰ ਰਿਹਾ ਹੈ ਠੀਕ ਹੈ, ਮੈਂ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਮੈਂ ਸਿਰਫ ਟਰਮੀਨਲ ਰਾਹੀਂ ਉਸ sudo systemctl ਸਥਿਤੀ ਅਪਾਚੇ 2 ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵੇਖ ਸਕਦਾ ਹਾਂ ਜੋ ਅਪਾਚੇ ਚੱਲ ਰਿਹਾ ਹੈ. ਪਰ ਮੈਂ Chrome ਜਾਂ ਫਾਇਰਫਾਕਸ 'ਤੇ ਨਹੀਂ ਦੇਖ ਸਕਦਾ. ਇਹ ਲੋਡ ਨਹੀਂ ਹੋਏਗਾ.

ਇਸ ਸਮੇਂ, ਮੇਰੇ ਕੋਲ NAT 'ਤੇ ਮੇਰੇ ਨੈਟਵਰਕ ਸੈਟਿੰਗਜ਼ ਹਨ, ਜੋ ਮੈਨੂੰ ਮੇਰੇ ਮਹਿਮਾਨ ਤੋਂ ਇੰਟਰਨੈਟ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ (ਮੈਂ ਪਿੰਗ google.com ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦਾ ਹਾਂ ਅਤੇ ਜਵਾਬ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦਾ ਹਾਂ). ਪਰ ਮੈਂ ਆਪਣੇ ਹੋਸਟ ਦੇ ਬ੍ਰਾ browserਜ਼ਰ ਤੋਂ 127.0.0.1 ਤੇ ਪਹੁੰਚ ਕਰ ਸਕਦਾ ਹਾਂ.

ਆਈ ਪੀ ਐਡਰ ਲਈ, ਮੈਨੂੰ ਲੂਪਬੈਕ (ਇਨਟ 127.0.0.1) ਅਤੇ enp0s3 ਮਿਲਦਾ ਹੈ, ਪਰ ਇਹ ਕੋਈ ਕੈਰੀਅਰ ਨਹੀਂ, ਲਿੰਕ ਈਥਰ ਹੈ.

- ਸਪਸ਼ਟੀਕਰਨ ਲਈ ਸੰਪਾਦਿਤ

0
задан 9 November 2020 в 07:30

1 ответ

Попытка заставить Apache работать

Привет, LRL! Учитывая ваше описание проблемы, мы обсудим, что мы попытаемся исправить. Я надеюсь, что это помогает!

Соглашения :)

Обратите внимание, что мы будем ссылаться на apache2 как на процесс, службу или демон взаимозаменяемо. Мы лично придаем им следующее значение:

  • Процесс : работающая программа/фрагмент кода плюс его данные. Все, что работает на компьютере, от браузера до ядра, является процессом.
  • Служба : процесс, который предлагает некоторые средства, такие как диспетчер очереди печати или база данных.
  • Daemon : процесс, который не предназначен для прямого взаимодействия с пользователем, будь то через терминал, графический интерфейс пользователя (GUI)...

Тогда apache — это процесс, как и любой другой, который предлагает HTTP-сервер как служба, который ведет себя как демон, поскольку мы настраиваем его с помощью файлов *.conf, но не взаимодействуем с ним, пока он работает обычным образом. Некоторые люди не согласятся с нашей точкой зрения, но именно ее мы будем использовать в дальнейшем обсуждении.

А теперь приступим к делу!

Не забудьте розетки!

Сначала убедитесь, что демон HTTP действительно прослушивает. Поскольку вы могли без проблем запустить ip addr, это означает, что у вас установлен пакет iproute2. Этот набор представляет собой набор инструментов, которые позволяют вам получать информацию о вашем сетевом стеке, а также настраивать его. Подробнее об этом можно прочитать здесь, а также посмотреть, как они соотносятся со старыми аналогами net-tools.Одним из инструментов iproute2 в комплекте является ss, который позволит вам проверять статистику сокетов. Вы можете обратиться к справочной странице с помощью man ss, но, короче говоря, вам нужно запустить ss -lt. Этот вызов использует следующие параметры:

  • -l: список только прослушиваемых сокетов. Это избавит вашу систему от тонны сокетов, открытых для множества задач.
  • -t: список только портов TCP. Как показано в конце раздела 1.4 в HTTP/1.1 RFC, этот протокол прикладного уровня работает на транспортном протоколе TCP. Следовательно, мы можем просто избавиться от сокетов, использующих различные базовые протоколы, и сделать вывод еще меньше.

В системе, на которую мы только что установили apache2, вывод приведенной выше команды был следующим:

foo@coruscant~$ ss -lt
State           Recv-Q          Send-Q                   Local Address:Port                      Peer Address:Port          Process          
LISTEN          0               4096                     127.0.0.53%lo:domain                         0.0.0.0:*                              
LISTEN          0               5                            127.0.0.1:ipp                            0.0.0.0:*                              
LISTEN          0               511                                  *:http                                 *:*                              
LISTEN          0               5                                [::1]:ipp                               [::]:*

Поскольку на нашей машине существует сокет, нас интересует Локальный адрес:порт, в котором перечислены прослушиваемые сокеты виртуальной машины. Вы увидите, что третья строка содержит значение *:http. Это просто показывает, что наш сокет прослушивает все сетевые интерфейсы, подключенные к машине (мы могли бы запустить сервер с 2 сетевыми адаптерами ( N сеть I интерфейс Cards) например) и что он привязан к порту 80 по умолчанию для HTTP, как вы могли видеть в RFC, на который я ссылался выше. Просто из любопытства вы можете попробовать запустить ss -ltn, чтобы запретить ss назначать специальные имена хорошо известным портам.Вы увидите *:80 вместо *:http в значении, которое мы обсуждали. В любом случае, мы видим, что сокет HTTP запущен и работает, и что наша машина будет принимать трафик, отправленный на порт 80. Если ваш вывод не показал, что этот порт открыт, попробуйте восстановить Apache с помощью sudo systemctl перезапустить apache2 как это условие для обслуживания клиентов веб-сервером.

Для полноты картины вы также можете запустить nmap на своей машине. Nmap — это сетевой сканер, который может предоставить много информации о хосте. Вы можете прочитать его справочную страницу, поскольку это довольно мощный инструмент, но вы можете просто запустить nmap -A -p 80 localhost из виртуальной машины для сканирования HTTP-порта. Результаты сканирования дадут вам знать, открыт порт или нет. -A позволяет обнаружить версию, но замедляет процесс, поэтому вы можете попробовать запустить nmap -p 80 localhost, и вы также узнаете, открыт ли порт или нет. Как вы могли догадаться, опция -p 80 ограничивает сканирование портом HTTP. Обратите внимание: если у вас не установлен nmap, вам нужно запустить sudo apt install nmap, чтобы получить его. Также рекомендуется запустить sudo apt update перед установкой, чтобы получить последнюю версию. Несмотря на то, что этот второй вариант выполним, он может быть излишним для рассматриваемой проблемы. Тем не менее, мы подумали, что было бы неплохо упомянуть об этом :).Мы прикрепляем вывод моей виртуальной машины, чтобы вы знали, чего ожидать:

foo@coruscant~$ nap -A -p 80 localhost
Starting Nmap 7.80 ( https://nmap.org ) at 2020-11-09 11:46 GMT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
Other addresses for localhost (not scanned): ::1

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.43 seconds

Правильно ли настроен apache?

Теперь, когда мы знаем, что порт HTTP работает нормально, давайте взглянем на файл конфигурации apache. Как и в случае с другими службами, конфигурация apache находится в папке /etc.Вам просто нужно перейти к /etc/apache2 и просмотреть различные интересующие вас текстовые файлы. В нашем случае мы хотим проверить, включен ли сайт по умолчанию. Для этого нам просто нужно запустить cat /etc/apache2/sites-enabled/000-default.conf. Это должно вывести что-то вроде следующего:

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    #ServerName www.example.com

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Строка, которая нас больше всего интересует, это , которая говорит нам, что мы действительно настроили сервер на порту 80 и прослушиваем все интерфейсы. Более того, в строке DocumentRoot /var/www/html указано, что это каталог, который мы будем просматривать для обслуживания веб-страниц. Если вам интересно, вы можете запустить cat /var/www/html/index.html. Этот index.html — это сайт, который обслуживает apache, когда мы подключаемся к нему!

Если файл /etc/apache2/sites-enabled/000-default.conf не существует, вам нужно запустить a2ensite 000-default.conf, чтобы включить сайт. Обратите внимание, что перед этой последней командой может потребоваться sudo в зависимости от того, как вы настроили разрешения своего сервера. Сценарий a2ensite просто создаст символическую ссылку (подобную тем, которые мы делаем с помощью ln -s внутри /etc/apache2/sites-enabled на файл в /etc/apache2/sites-available. Таким образом, вы можете определить несколько «сайтов» и использовать только часть из них в любой момент времени. Если вы запустите файл /etc/apache2/sites -enabled/000-default.conf вы действительно увидите, что это просто символическая ссылка: P.

Значит, дело в конфигурации сети...

Теперь мы уверены в трех вещах:

  1. apache2 работает.
  2. Он прослушивает порт 80.
  3. Сайт по умолчанию включен.

Пожалуйста, имейте в виду, что все сетевые команды, которые мы будем включать, должны выполняться на виртуальной машине, не на хосте, если только мы явно не укажем, что хотим запустить команду на хосте.

Это означает, что ошибка, скорее всего, связана с настройкой сети между вашим хостом и виртуальной машиной. Прежде всего, вы не можете использовать режим NAT при настройке сети виртуальной машины. Из-за самой природы NAT вы не сможете получить доступ к своему серверу, если не перенаправите порт на нем на сервер вручную. Мы никогда не делали этого с VirtualBox и даже не знаем, возможно ли это, поэтому мы просто будем избегать этого.

Я лично рекомендую настроить его с переходным адаптером. Это заставит вашу виртуальную машину присоединиться к любой локальной сети, к которой подключен ваш хост-компьютер, как если бы это была полностью независимая машина с точки зрения топологии сети. Это как если бы ваш хост и виртуальная машина были соединены мостом, который является устройством уровня 2, которое не учитывается протоколом IP, который находится на 3-м уровне. Вы можете видеть, что если вы настроите свою виртуальную машину таким образом, ее шлюз будет таким же, как и у вашего хоста. Вы можете проверить это, запустив ip route | голова -n 1 | awk '{print $3}' в обоих и видите, что вы получаете тот же IP-адрес, который предположительно является IP-адресом вашего маршрутизатора доступа в вашей локальной сети.Предыдущая команда просто печатает таблицу маршрутов с ip route, получает первую строку, которая является маршрутом по умолчанию с head -n 1, и печатает третье слово, которое является адресом шлюза с awk '{print $3}'. Символ вертикальной черты | перенаправит вывод команды слева на ввод команды справа, чтобы мы могли использовать несколько скоординировано. Это "UNIXy" способ ведения дел на случай, если вы захотите заняться археологией компьютерных наук :P.

Если оба ПК имеют один и тот же шлюз, вы должны иметь возможность пинговать один с другого и наоборот. Для этого вам нужно знать IP-адрес вашей виртуальной машины в локальной сети. Вы можете получить его, запустив ip addr и проверив IP-адрес, назначенный вашей сетевой карте. Как вы сказали, имя интерфейса enp0s3 появилось, вы должны увидеть рядом с ним адрес IPv4. Допустим, этот адрес X.X.X.X, тогда, если вы запустите ping X.X.X.X со своего хоста, вы должны получить ответ. Если по какой-либо причине нет IP-адреса, связанного с интерфейсом enp0s3, просто найдите IP-адрес в вашей подсети, связанный с другим: я не могу догадаться, как вы настроили свой сервер...

Если вы не не получите ответа, вам нужно будет пройти настройку сети виртуальных машин и убедиться, что все настроено правильно. Если у вас есть подключение к Интернету с виртуальной машины, интерфейс, отличный от loopback, должен иметь назначенный IP-адрес, поэтому вы должны использовать его.Если после вышеизложенного это все еще не работает, пожалуйста, прикрепите полный вывод ip-адрес на сервере, а также полную конфигурацию сети для вашей виртуальной машины, например, на скриншоте.

Если, с другой стороны, проверка связи прошла успешно, вам просто нужно открыть браузер на хост-компьютере и ввести http://X.X.X.X, и вы увидите страницу приветствия apache :P. Я пробовал это только из виртуальной машины, которая работала на моей машине, поэтому вы можете столкнуться с некоторыми проблемами «эта страница не защищена» из-за HTTP в зависимости от того, как вы указываете URL-адрес в браузере. Если вы явно включаете http в URL-адрес, у вас не должно возникнуть никаких проблем. Тем не менее, эти проблемы выходят за рамки вопроса, поэтому, если они возникнут, рассмотрите возможность открытия нового.

Удачи!

Надеюсь, ответ был полезен! Если есть что-то неясное или если вы обнаружите какой-либо тип / ошибку, пожалуйста, не стесняйтесь редактировать ответ или вернуться ко мне, чтобы помочь вам в дальнейшем. Тем не менее, я хотел бы попросить вас предоставить вывод ip addr, если вам нужна дополнительная помощь, поскольку я все еще не знаю, какова сетевая настройка вашего сервера.

Я уверен, что вы исправите это в кратчайшие сроки! :P

0
ответ дан 9 November 2020 в 12:43

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

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