Использование подстановочных знаков в именах в файле хостов Windows


54

Есть ли способ создать подстановочный домен в файле хостов Windows.

Я пробовал это

xxx.xxx.xxx.xxx * .somedomain.com

Это не работает, может быть, какой-то другой синтаксис я должен использовать?

Я работаю на Windows 7


1
я просто ответил на вопрос о том делать это с Dnsmasq на ServerFault (не на окнах, очевидно, но на маршрутизаторе под управлением DD-WRT / OpenWRT это выполнимо)
шарлатан Кихота

В XP SP2 включена кастрация основного файла - securityfocus.com/archive/1/431032/30/0/threaded Предполагаемая причина - люди используют его для блокировки рекламы во время просмотра. Это предположение, насколько я знаю, что Microsoft никогда не раскрывала, почему они это сделали и почему они с тех пор переносят это на все. Если вы можете установить прокси-сервер между вашим ПК и Интернетом, то вы можете поставить блок на то, что вам нужно.
bvaughn

Ответы:


61

Нет. Файл hosts не очень умен, вы должны перечислить каждый поддомен индивидуально (включая www и no-www)


16

Ответ на очень похожий вопрос StackOverflow работал хорошо для меня.

http://mayakron.altervista.org/support/browse.php?path=Acrylic&name=UserManual

Поддержка подстановочных знаков на XP в hostsfile. Наслаждаться.

По сути, эта программа Acrylic работает как DNS-прокси для вашей локальной машины. Просто укажите подключение по локальной сети на 127.0.0.1, затем отредактируйте файл AcrylicHosts.txt очень похоже на обычный файл hosts - только с подстановочными знаками!


2
Acrylic прекрасно работает, но может сбить вас с толку, если вы пытаетесь получить доступ к машине с динамическим IP-адресом. У меня есть машины, подключенные к моей домашней сети, и я использую динамический DNS, чтобы установить IP для доменного имени. Я использую Acrylic на своем ноутбуке, и я ушел на несколько дней, в то время как мой ip изменился, но Acrylic запомнил его как старый ip, и я не смог получить доступ к сайту. Но запуск программы «Очистка данных акрилового кэша» решил эту проблему.
leeand00

К сожалению, акрил не поддерживает псевдонимы DNS, что делает его бесполезным для меня.
Spero

11

Dnsmasq - это то, что вам нужно, но он не очень хорошо работает в Windows. Поэтому я написал альтернативу для Windows под названием DNSAgent .

Вы можете использовать регулярные выражения в правилах. Есть также некоторые расширенные функции, такие как настройка кэша TTL, DNS-сервер нестандартного порта, мутация указателя сжатия и т. Д. Открытым исходным кодом под лицензией MIT.


1

во-первых, я согласен с phoshi, что в hosts-файле окон не возможно делать то, что вы хотите (ни в unix).

во-вторых, вы должны получить контроль над результатом запроса в днс. Одним из вариантов является использование вашего собственного dns-разрешения на вашем маршрутизаторе (dnsmasq, dnscache + tinydns, bind, что угодно, см. комментарий кряка) и настройка его или использование dns-resolver на окнах, которыми вы можете управлять по своему усмотрению.

см здесь для получения списка ДНС-резольверами, проверьте столбец «подстановочные», может быть PowerDNS или MaraDNS или posadis является то , что соответствует вашим потребностям.


-1

Это другой синтаксис: xxx.xxx.xxx.xxx somedomain.com

Несколько примеров, чтобы объяснить это:

  • 127.0.0.1 .com эта строка будет блокировать все исходящие запросы, заканчивающиеся на .com
  • 127.0.0.1 somesite.com заблокирует все исходящие запросы, заканчивающиеся на somesite.com
  • 12.2.3.1 www.dns.com приведет все исходящие запросы, заканчивающиеся на www.dns.com, к 12.2.3.1.

Вы блокируете / ведете все URL второго (третьего, четвертого ...) уровня с помощью URL верхнего (второго, третьего ...) уровня в файле hosts.


Учитывая последнее предложение, я предполагаю, www.example.comчто не блокируется первой строкой, а только при добавлении 127.0.0.1 example.com?
Арджан

9
moonfern, я не согласен с твоим списком. 127.0.0.1 somesite.com НЕ БУДЕТ блокировать все исходящие DNS-запросы, заканчивающиеся на somesite.com, все, что он будет блокировать, - это somesite.com , а не www.somesite.com или subdomain.somesite.com или тому подобное.

1
Это определенно не относится к Windows, moonfern.
Оуэн Блэкер

-3

Если вы хотите заблокировать каждый поддомен в somedomain.com, подумайте, не опустить ли «*». достигнет того, что вы хотите.

Редактирование вашего примера:

xxx.xxx.xxx.xxx somedomain.com

«Подумай, не ...» довольно двусмысленно. Что именно вы рекомендуете в качестве решения?
fixer1234 10.09.16

Пожалуйста, внимательно прочитайте вопрос. Ваш ответ не отвечает на оригинальный вопрос.
Дэвид Постилл

1
fixer1234 - Я не знаю, какую проблему постер хочет решить, в то время как они спрашивают, как будто явный подстановочный знак решит ее «Подумайте, ...» предлагает что-то, что может работать Это легко попробовать и требует немного символов. Я знаю, что это работает в некоторых случаях. Поскольку у меня недостаточно контекста, чтобы понять проблему, я не могу рекомендовать решение. Дэвид Постилл - я считаю, что мой ответ адресован и относится к первоначальному вопросу. Но, возможно, ваш собственный ответ будет работать лучше.
SquarePowder
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.