1

(Этот пост состоит из двух частей: верхняя часть - это то, что я пробовал, нижняя половина - это то, что я на самом деле пытаюсь сделать.)

Новый ноутбук, Mint 16 (который использует NetworkManager), и я пытаюсь просто использовать Wi-Fi +DHCP для подключения к Интернету. Это отлично работает. Но я также занимаюсь веб-разработкой, запускаю Apache и т.д. И хочу иметь множество виртуальных хостов. Я думал, что это просто вопрос добавления статических IP-адресов, но происходит нечто очень странное.

Допустим, маршрутизатор Wi-Fi дает мне 10.1.2.3, и я вижу, что под wlan0 используется либо ifconfig либо ip address show . Я также вижу eth0 без каких-либо IP-адресов, и lo с 127.0.0.1. Все хорошо в этой точке. Но тогда я делаю:

ip address add 10.1.2.61/8 scope global dev eth0 label eth0:61

(Я уже настроил виртуальный хост Apache по этому адресу.) Переход на http://10.1.2.61/ кажется, работает. Пинг работает. Но что определенно сломало, так это Интернет. Например, когда я что-то гуглю, у меня очень много времени, прежде чем он отвечает. Или это не отвечает вообще. (Извините, я не совсем сузился, когда это один или другой.)

Я также попробовал с:

ip address add 10.1.2.61/8 scope global dev lo label lo:61

Снова это работает (пинг работает), и снова это ломает интернет.

Я подтвердил, что /etc/resolv.conf не затрагивается. Выходные данные route -n не меняются, когда я использую dev lo , и когда я использую dev eth0 я вижу там запись eth0, но запись wlan0 все еще в порядке.

Когда я удаляю добавленный IP-адрес (ip address del 10.1.2.61 dev eth0), интернет снова начинает работать.

Я не привязан к такому подходу. Я потратил много времени, читая документы NetworkManager, но, похоже, он не охватывал этот сценарий. Что казалось странным.

Актуальная цель

  • Иметь на этом ноутбуке несколько виртуальных хостов Apache, к каждому из которых я могу получить доступ с помощью URL-адреса (будь то IP-адрес, например http://10.1.2.61/ или имя http://mytestsite/)
  • URL должен быть постоянным, чтобы я мог добавить его в закладки. Например, http://mytestsite/some/site/part.html)
  • Пусть он все еще работает как в моей локальной сети (где я управляю маршрутизатором и DHCP), так и вне ее (когда я не работаю).
  • В моей локальной сети я бы хотел, чтобы тестовые сайты были видны другим устройствам, подключенным к тому же маршрутизатору Wi-Fi. (Это необязательное требование: это единственный бит, который, я не уверен, возможен ... Я полагаю, что если я запустил все виртуальные хосты с DHCP-адреса wlan0, он работает, но я не вижу, как настроить Apache и /etc /hosts, когда я не знаю, какой DHCP-адрес я получу заранее, и что это может измениться в любое время, когда я перехожу из сети в сеть.)

2 ответа2

1

Помимо последнего имеющегося у вас требования, вы должны иметь возможность делать все это с IP-адресами в диапазоне локальных хостов. Если вы настроили свою систему на использование нескольких IP-адресов в диапазоне 127.0.0.0/8 (используя псевдонимы), вы можете привязать свой Apache к этим IP-адресам:

В /etc/network/interfaces:

auto lo lo:1 lo:2
iface lo inet loopback

iface lo:1 inet loopback
ipaddress 127.0.0.11
netmask 255.0.0.0

iface lo:2 inet loopback
ipaddress 127.0.0.12
netmask 255.0.0.0

Перезапустите сетевой стек и отредактируйте файл /etc/hosts и конфигурацию Apache соответственно с именами ваших сайтов.

Для последнего требования вы можете настроить обратный прокси-сервер Apache. Прокси-сервер может прослушивать все интерфейсы, поэтому интерфейс DHCP будет автоматически включен. Затем вы можете переслать URL-адреса интерфейсам, прослушивающим 127.0.0.x.

1

Локально проще для вас на вашем ноутбуке, вы можете просто поместить несколько разных имен в /etc/hosts и заставить apache прослушивать все ip-адреса.

У Apache есть 3 основных способа определить, какой виртуальный хост использовать для обслуживания сайта.

  • айпи адрес
  • номер порта
  • имя хоста, которое клиент использует для доступа к сайту

Чтобы сделать ваше последнее требование полупрактичным, нужно, чтобы ваши сайты прослушивали свои собственные номера портов, чтобы другие люди на вашей рабочей сети, когда, скажем, вы получили IP-адрес 10.2.1.54, могли получить доступ к таким вещам, как

http://10.2.1.54    default site
http://10.2.1.54:81 site 1
http://10.2.1.54:82 site 2
http://10.2.1.54:83 site 3
http://10.2.1.54:84 site 4
etc

Они не смогут добавить в закладки эти сайты, но вы можете добавить в закладки

http://127.0.0.1 default site
http://127.0.0.1:81 site 1
http://127.0.0.1:82 site 2
http://127.0.0.1:83 site 3
http://127.0.0.1:84 site 4

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

Посмотрите на сайте http://httpd.apache.org/docs/2.2/vhosts/examples.html несколько примеров того, как записать это в конфигурацию apache. Обратите внимание на использование * в разных местах

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .