Расширенные правила для файла hosts

Мне нужно добавить правило для всех поддоменов домена. Я полагаю, это должно выглядеть так:

127.0.0.1 *.example.com

Как видите, мне нужно перенаправить все запросы на любой поддомен на example.com на localhost. Ну, я знаю, что это невозможно сделать с файлом hosts. Что еще я могу использовать в этом случае?

1 ответ

Решение

Как вы говорите, вы не можете вставлять символы подстановки в /etc/hosts, Это просто не работает.

Это действительно оставляет вас с одним вариантом: манипулировать фактическим DNS вручную. Есть несколько способов сделать это, но два приходят на ум как лучшие варианты...

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

Или вы можете просто переопределить dnsmasq настройки. Убунту через network-manager уже работает своего рода DNS-прокси в виде dnsmasq и вы можете сказать это, чтобы переопределить различные домены, довольно легко. Вот как я бы маршрут *.thepcspy.com (мой домен) в 127.0.0.1:

echo address=/thepcspy.com/127.0.0.1/ | sudo tee -a /etc/NetworkManager/dnsmasq.d/local
sudo service network-manager restart

Затем для проверки:

$ nslookup thepcspy.com
Server:     127.0.1.1
Address:    127.0.1.1#53

Name:   thepcspy.com
Address: 127.0.0.1

И поддомен:

$ nslookup testing.thepcspy.com
Server:     127.0.1.1
Address:    127.0.1.1#53

Non-authoritative answer:
Name:   testing.thepcspy.com
Address: 109.74.193.118

Чтобы отменить эти изменения, просто отредактируйте (или удалите) /etc/NetworkManager/dnsmasq.d/local и перезапустить network-manager снова.

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