Ошибка HTTP 403 запрещена при настройке виртуального хоста в первый раз в El Capitan 10.11

Некоторые догадки ниже, так что будьте бдительны. Однако это очень типичная установка, которая сбивает с толку многих людей, которые начинают с объединения маршрутизации, фильтрации пакетов (брандмауэр) и NAT (преобразование сетевых адресов).

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

Internet <-A-> SOHO Router <-B-> Server/workstation <-C-> VM

Ваш DNS-сервер находится в сети B, которая находится по адресу 192.168.1.0/24.

Я предполагаю, что ваш интернет-маршрутизатор SOHO 192.168.1.1 и установлен в качестве шлюза по умолчанию для сети. Это будет чрезвычайно распространенная установка.

Вы сами утверждаете, что DNS-сервер находится по адресу 192.168.1.2, а мостовой интерфейс сервера — 192.168.1.10. За этим у вас есть сеть 10.9.9.0/24.

Ваша установка iptables будет пересылать все пакеты на интерфейс. На практике вы отправляете все пакеты из одной сети в другую, даже локальные пакеты. Это важное отличие.

В конфигурации pf вы не пересылаете все пакеты на интерфейс. Вы указали сеть em1:сеть.У нас нет полной конфигурации, но я предполагаю, что у вас действительно есть хорошая и рабочая базовая конфигурация. Что вас кусает, так это недостающие маршруты.

Когда вы отправляете пакет из сети 10.9.9.0/24, он достигает сети 192.168.1.0/24. У вашего сервера есть доступ к этой сети, поэтому вы напрямую доберетесь до своего DNS. Но DNS-сервер в сети B понятия не имеет, как получить доступ к нелокальной сети C 10.9.9.0/24. Затем все ответы будут отправлены на «маршрутизатор по умолчанию», который, как я полагаю, является вашим маршрутизатором SOHO. Этот маршрутизатор также знает только, где найти сеть 192.168.1.0/24 (а не 10.9.9.0/24), и обычно направляет все на ваш внешний интернет-канал. В этом случае вы используете правильные частные адреса, поэтому вместо этого пакет будет отброшен, поскольку частные адреса не маршрутизируются в Интернете.

«Правильным» решением было бы настроить маршрут на вашем SOHO-маршрутизаторе, который указывает ему направлять пакеты для 10.9.9.0/24 на 192.168.1.10. Приличный маршрутизатор позволит вам сделать это. Многие дешевые маршрутизаторы SOHO, к сожалению, этого не делают. В этом случае вы можете добавить маршрут на свой DNS-сервер, чтобы проверить его.

  • Причина, по которой это работает для вас с iptables, заключается в том, что ответный пакет виден на интерфейсе eth0, и все пакеты пересылаются. Весь трафик в сети B отправляется в сеть C (и наоборот). Сюда входит трафик, который мог/должен был оставаться локальным. Фактически вы настроили сетевой мост.
  • Причина, по которой это не работает для вас с вашей первой настройкой pf, заключается в том, что вы указали, какую сеть вы ожидаете увидеть. Только одна машина в сети B знает, где найти сеть C. Это 192.168.1.10, так как он имеет интерфейс в сети C. По сути, вы установили базовый брандмауэр. Фильтрация готова, но вы пока ничего не фильтруете. Но маршрутизация отсутствует.
  • Причина, по которой это работает во второй конфигурации pf (ваш собственный ответ), заключается в том, что вы выполняете преобразование сети 10.9.9.0/24 в адресное пространство 192.168.1.0/24. Весь трафик из сети C 10.9.9.0/24 в сеть B будет исходить из 192.168.1.10. NAT следует избегать, когда это возможно, и использовать его только в крайнем случае.

Если вам не нужна/не нужна фильтрация пакетов, я бы посоветовал вам не использовать брандмауэр. То, что вы пытаетесь сделать, должно обрабатываться простой маршрутизацией.

1
21.05.2016, 16:01
1 ответ

Проверьте журнал ошибок Apache. Если вы обнаружите сообщения, в которых говорится «клиент отклонен конфигурацией сервера», значит, у вас нет соответствующего блока , позволяющего Apache обслуживать файлы из /Users/crmpicco/Sites/crmpicco.co. uk / .

Если в журнале ошибок упоминается (13) Permission denied , то это означает, что ОС останавливает Apache, обслуживающий файлы из этого каталога (а не саму конфигурацию Apache), и вам следует посмотреть разрешения всех каталогов в путь. Помните, что Apache должен иметь возможность пройти весь путь, а не только последний компонент.

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

0
28.01.2020, 01:17

Теги

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