Windows 7 hosts не работает: Если в windows не работает hosts :: Записки молодого админа

Как заблокировать доступ к сайту в Windows с помощью PowerShell

Рассмотрим несколько способов, которые помогут вам запретить доступ к отдельным сайтам, URL и IP адресам в Windows без использования сторонних программ. Обычно блокировку сайтов наиболее эффективно настраивать на уровне сетевого шлюза (роутер, маршрутизатор, Wi-Fi точка доступа, через которую вы выходите в Интернет), или с помощью стороннего ПО (фильтры контента, DNS фильтры и т.д.). В нашем случае мы попробуем заблокировать определенный сайт с помощью встроенных средств Windows 10 и автоматизации PowerShell.

Содержание:

  • Блокировка сайтов в Windows с помощью файла hosts
  • Блокировка сайтов через DNS
  • Блокируем IP адрес сайта в брандмауэре Windows
  • PowerShell: правила блокировки сайтов по имени и IP адресу в брандмауэре Windows

Блокировка сайтов в Windows с помощью файла hosts

Самый известный способ заблокировать определенный сайт в Windows – отредактировать файл hosts. Обычно файл находится в каталоге %windir%\system32\drivers\etc\. Обратите внимание, что у файла hosts нет расширения.

Путь к каталогу с файлом hosts задается в параметре DataBasePath в ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters. По-умолчанию это %SystemRoot%\System32\drivers\etc.

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

Чтобы заблокировать определенный сайт (например, ok.ru), откройте на редактирование файл hosts (с правами администратора) и добавьте в него строки вида:

127.0.0.1 ok.ru
127.0.0.1 www.ok.ru

Сохраните файл и перезагрузите компьютер (или очистите DNS кэш командой:
ipconfig /flushdns
).

После этого при попытке открыть сайт ok. ru в любом браузере будет появляется сообщение “Страница не найдена” / “Страница не доступна”.

Вы можете добавлять новые строки с URL сайтов в файл hosts с помощью такого bat файла:

@echo off
set hostspath=%windir%\System32\drivers\etc\hosts
echo 127.0.0.1 www.facebook.com >> %hostspath%
echo 127.0.0.1 facebook.com >> %hostspath%
exit

Либо можно воспользоваться следующими PowerShell функциями для автоматизации блокировки (разблокировки) определенных сайтов в списке запрещенных доменов в файле hosts.

Function BlockSiteHosts ( [Parameter(Mandatory=$true)]$Url) {
$hosts = 'C:\Windows\System32\drivers\etc\hosts'
$is_blocked = Get-Content -Path $hosts |
Select-String -Pattern ([regex]::Escape($Url))
If(-not $is_blocked) {
$hoststr="127.0.0.1 ” + $Url
Add-Content -Path $hosts -Value $hoststr
}
}

Function UnBlockSiteHosts ( [Parameter(Mandatory=$true)]$Url) {
$hosts = 'C:\Windows\System32\drivers\etc\hosts'
$is_blocked = Get-Content -Path $hosts |
Select-String -Pattern ([regex]::Escape($Url))
If($is_blocked) {
$newhosts = Get-Content -Path $hosts |
Where-Object {
$_ -notmatch ([regex]::Escape($Url))
}
Set-Content -Path $hosts -Value $newhosts
}
}

Теперь чтобы добавить определенный сайт в заблокированные достаточно выполнить функцию:

BlockSiteHosts ("vk. com")

Чтобы разблокировать сайт запустите:

UnBlockSiteHosts ("vk.com")

Блокировка сайтов через DNS

Если ваши клиенты пользуются одним DNS сервером, вы можете аналогичным образом заблокировать определенный сайты с помощью создания DNS записи в этом DNS, указывающей на 127.0.0.1 (или что-то в таком роде). По такому принципу, кстати, работают большинство коммерческих контент фильтров DNS (OpenDNS, SkyDNS, Яндекс.DNS и т.д.).

Блокируем IP адрес сайта в брандмауэре Windows

Также вы можете заблокировать определенные сайты с помощью встроенного Windows Firewall. Главный недостаток такого метода – вы не сможете использовать имя домена или сайта в правиле блокировке. Брандмауэр Windows в качестве источника/назначения позволяет указать только IP адрес или подсеть.

Сначала нужно определить IP адрес сайта, который вы хотите заблокировать. Проше всего это сделать командой nslookup.

nslookup ok.ru

Как вы видите в результатах команды присутствует несколько IP адресов, которые назначены сайту. Вам нужно заблокировать их все.

Теперь нужно запустить панель настройки Windows Firewall (Панель управления \Все элементы панели управления\Брандмауэр Защитника Windows\Дополнительные параметры или firewall.cpl).

В секции “Правила для исходящих подключений” создайте новое правило со следующими параметрами:

  • Тип правила: Настраиваемые;
  • Программа: Все программы;
  • Тип протокола: Любой;
  • Область: в секции “Укажите удаленные IP адреса, к которым применяется данное правило” выберите пункт “Указанные IP адреса” -> Добавить. В открывшемся окне укажите IP адреса, IP подсети или диапазон IP адресов сайтов, которые нужно заблокировать.

Нажмите OK-> Далее -> Действие: “Блокировать подключение”.

В окне со списком профилей брандмауэра, к которым применяется это правило оставьте все опции. Осталось указать имя правила и сохранить его.

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

Unable to connect

или

Доступ в Интернет закрыт
Возможно, подключение заблокирована брандмауэром или антивирусным ПО.
ERR_NETWORK_ACCESS_DENIED

В домене AD вы можете распространить на компьютеры пользователей политику блокирующую сайт с помощью GPO. Но еще раз скажем, это нецелесообразно. Фильтровать сайты правильнее на шлюзе доступа в Интернет.

PowerShell: правила блокировки сайтов по имени и IP адресу в брандмауэре Windows

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

New-NetFirewallRule -DisplayName "Block Site" -Direction Outbound –LocalPort Any -Protocol Any -Action Block -RemoteAddress 217.20.147.1, 217.20.141.0/26

Строка “ The rule was parsed successfully from the store” говорит о том, что правило новое правило брандмауэра успешно применено. Вы можете найти его в графическом интерфейсе Windows Firewall.

Чтобы не резолвить имя сайта в IP адреса вручную можно использовать PowerShell командлет Resolve-DnsName для получения IP адресов сайтов.

Resolve-DnsName "ok.ru"| Select-Object -ExpandProperty IPAddress

Таким образом мы можем преобразовать имя домена в IP адреса и сразу добавить запрещающее правило для блокирования доступа к сайту:

$IPAddress = Resolve-DnsName "ok.ru"| Select-Object -ExpandProperty IPAddress
New-NetFirewallRule -DisplayName "Block Site" -Direction Outbound –LocalPort Any -Protocol Any -Action Block -RemoteAddress $IPAddress

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

$SitesToBlock = “lenta.ru”,”mail.ru”,”facebook.com”
$IPAddress = $SitesToBlock | Resolve-DnsName -NoHostsFile | Select-Object -ExpandProperty IPAddress
New-NetFirewallRule -DisplayName "Block Web Sites" -Direction Outbound –LocalPort Any -Protocol Any -Action Block -RemoteAddress $IPAddress

У командлета Resolve-DnsName я добавил параметр –NoHostsFile, чтобы не использовать при проверке файл hosts.

Проверим, что блокирующее правило для исходящего появилось в консоли.

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

Что такое файл hosts в windows для чего он нужен где находится



Содержание

  • 1 Где находится файл hosts
    • 1.1 Как должен выглядеть файл hosts
    • 1.2 Как изменить файл hosts

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

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

Найти файл возможно по адресу: Windows\system32\drivers\etc\hosts.

Открыть содержимое файла hosts можно следующим образом : нажимаем кнопку Пуск, кнопку Выполнить, запускается окно Запуск программы.

В открывшемся поле вводим следующую команду:

notepad %windir%\system32\drivers\etc\hosts

После введения команды в поле окна, нажимаем ОК.

Как должен выглядеть файл hosts

Обычно файл hosts выглядит следующим образом:

 

Встречается, что содержимое файла полностью совпадает с текстом для ОС приведённым выше, но хитрые вредители иногда прописывают зловредные адреса за пределами окна текстового редактора. Нужно всегда проверять, есть в вашем Блокноте полосу прокрутки, которая находится сбоку окна программы, и прокручивать содержимое окна книзу.

Названия доменов, IP-адреса — разделены символами табуляции. Знаком ‘#’ (решётка) начинаются все комментарии. Пустые строки системой игнорируются.

Перенаправление доменов используется теми кто пишет программы и администраторами интрасети, тем самым ускоряя процесс загрузки сайтов. Сопоставляется соответствие IP-адресов этих сайтов соответствующим доменным именам.

Как изменить файл hosts

Редактируя файл hosts можно осуществлять блокировку, фильтрацию рекламы, перенаправляя доменные адреса. Возможно отредактировать изменённый файл вручную, сохранить сделанные изменения, закрыть Блокнот и пробовать открыть заблокированные сайты.

В некоторых случаях после этого потребуется перезагрузка компьютера.  Крайне не рекомендуется папку с файлом hosts перемещать или удалять. Это с большой вероятностью приводит к неработоспособности системы. Замена IP-адреса доменным именем, для Windows не работает, если используется Прокси-Сервер — имена разрешаются на уровне Прокси.

Изменять файл hosts возможно при помощи текстового редактора. Для этого используется программа Блокнот, являющаяся простейшим текстовым редактором, или программа Notepad++. Необходимо, чтобы любой из этих текстовых редакторов быть запущен под администраторской учётной записью. Также были созданы программы автоматизирующие процесс работы с файлом hosts. К ним относятся такие программы как Hosts Commander, Hosts Manager и другие.






Предыдущая статьяУвеличить кеш браузера

Следующая статьяКак открыть порт Windows 7

ЕЩЁ БОЛЬШЕ НОВОСТЕЙ




окон. Что может привести к тому, что поиск DNS проигнорирует запись файла hosts?

У меня возникла проблема с разрешением DNS, которая влияет на производительность моего локально размещенного веб-сайта при просмотре его на моем локальном компьютере. Если я прикрепляю DNS-суффикс своей сети к имени своего локального компьютера, когда я перехожу по URL-адресу в своем браузере, у сайта ужасное время загрузки (в 100+ раз медленнее), чем без DNS-суффикса.

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

 127.0.0.1 myMachine.MyDnsSuffix
 

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

Кроме того, когда я запускаю nslookup в домене myMachine.MyDnsSuffix , я замечаю, что он использует DNS-сервер моей сети для поиска IP-адреса. Может ли это быть связано с моей проблемой, или я просто неправильно понимаю, как работает nslookup?

  • окна
  • система доменных имен
  • windows-xp
  • хосты
  • nslookup

Я считаю, что nslookup используется для проверки самого DNS-сервера, а не для использования вашего файла HOSTS. http://support.microsoft.com/kb/200525, кажется, указывает на это.

Попробуйте просто пропинговать. Разрешается ли ping myMachine.MyDnsSuffix на петлевой адрес, который вы указали в файле HOSTS?

8

Поиск DNS не использует файл hosts. Всегда.

2

Хорошо, новый подход. Давайте очистим ваш IP-кэш и кэш NETBIOS. ipconfig /flushdns и nbtstat -R . Затем запустите анализатор пакетов, такой как Wireshark, и сделайте пинг, пока он работает.

Из перехвата пакета мы хотим увидеть,
А) Отправляется DNS-запрос, и если да, то какое имя он запрашивает.
B) Если есть запрос NETBIOS. Возможно, это имя разрешается через NETBIOS вместо правильного DNS.

Если мы не видим ничего из вышеперечисленного, несмотря на то, что вы очищаете кеш, то, вероятно, имя извлекается либо с хостов, либо с lmhosts.

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

Я понимаю, что это маловероятно, но в записи файла hosts нет слов, связанных с Microsoft, таких как MSDN, Microsoft или MSN, не так ли? Microsoft написала dnsapi.dll, чтобы игнорировать записи файла hosts, соответствующие определенным именам. Например, если я добавлю следующую запись, Windows пропустит ее и разрешит оба имени хоста в записи с помощью DNS:

 127.0.0.1 www.microsoft.com www.mysite.com
 

2

При использовании полного DNS-имени ваш браузер пытается пройти через ваш прокси-сервер — clicky для IE.

Файл hosts или порядок разрешения имен не имеют ничего общего с этой проблемой, и гноящаяся рана на заднице человечества, то есть файл hosts, должна быть вынута обратно и с шумом расстреляна.

2

Мой хост-файл не работает в Windows 10

Это сумасшествие, до сих пор у меня никогда не было этой проблемы. .. Мне нравится использовать файл hosts для блокировки определенных веб-сайтов. Но по какой-то причине мой файл hosts не блокирует ни один сайт. Я просмотрел этот пост (файл hosts работает неправильно) и перепробовал большинство, если не все из этих вещей, но я все еще не могу использовать файл hosts для блокировки веб-сайтов. Что-нибудь еще я могу сделать, чтобы исправить это? Я использовал файлы hosts в течение многих лет и никогда не сталкивался с этой проблемой.

Примечание. Я только что получил этот компьютер (восстановленный), так что, может быть, они сделали какие-то странные настройки перед отправкой? Я бы так не думал, но решил упомянуть об этом.

Вот как у меня есть записи в файле hosts… может я что-то упускаю?

 127.0.0.1 localhost
127.0.0.1 веб-сайт.com
127.0.0.1 www.website.com
127.0.0.1 сайт2.com
127.0.0.1 www.website2.com
 
  • hosts-файл

4

Простого изменения файла hosts недостаточно. Вам также необходимо очистить кеш DNS.

Откройте командную строку и введите:

 ipconfig /flushdns
 

Теперь проверьте, работает ли он, пропинговав один из доменов, предпочтительно тот, который вы недавно изменили:

 ping www.website2.com
 

и посмотрите, возвращает ли он 127.0.0.1

Если ping не работает, то, вероятно, права доступа к hostfile неверны. Неправильные разрешения для файла hosts могут вызвать произвольную блокировку файла hosts, что не позволит Windows правильно прочитать его и заполнить кэш DNS. Исправьте права доступа к hostfile, затем еще раз выполните команду ipconfig /flushdns.

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

3

Странно, должно быть, что-то не так с этим конкретным файлом hosts, я до сих пор понятия не имею, что это было…

Я перешел к: https://support.

Читайте также: