Универсальный узел .NET
Шаблоны рабочей службы создают универсальный узел .NET HostBuilder. Этот универсальный узел можно использовать в сочетании с другими типами приложений .NET, такими как консольные приложения.
Узел — это объект, который инкапсулирует все ресурсы приложения и функциональные возможности времени существования, такие как:
- Внедрение зависимостей
- Ведение журнала
- Параметр Configuration
- завершение работы приложения;
- Реализации IHostedService
После запуска узла он вызывает IHostedService.StartAsync в каждой реализации IHostedService, зарегистрированной в коллекции размещенных служб контейнера службы. В приложении рабочей службы для всех реализаций IHostedService , которые содержат экземпляры BackgroundService, вызываются соответствующие методы BackgroundService.ExecuteAsync.
Основной причиной включения всех взаимозависимых ресурсов приложения в один объект является управление жизненным циклом: контроль запуска и корректного завершения работы приложения. Это достигается с помощью пакета NuGet Microsoft.Extensions.Hosting.
Файл hosts, для чего он нужен и как с ним работать
Создание узла
Узел обычно настраивается, собирается и выполняется кодом в классе Program . Метод Main :
- Вызывает метод CreateDefaultBuilder() для создания и настройки объекта построителя.
- Вызывает метод Build() для создания экземпляра IHost.
- Вызывает метод Run или RunAsync для объекта узла.
Шаблоны рабочей службы .NET генерируют следующий код для создания универсального узла:
IHost host = Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => < services.AddHostedService(); >) .Build(); host.Run();
Параметры построителя по умолчанию
- В качестве корня содержимого задает путь, возвращенный методом GetCurrentDirectory().
- Загружает конфигурацию узла из:
- Переменные среды с префиксом DOTNET_ .
- аргументы командной строки.
- appsettings.json;
- appsettings..json;
- диспетчер секретов, когда приложение выполняется в среде Development ;
- Переменные среды.
- аргументы командной строки.
- Консоль
- Отладка
- EventSource
- Журнал событий (только при запуске в Windows)
Метод ConfigureServices позволяет добавлять службы в экземпляр Microsoft.Extensions.DependencyInjection.IServiceCollection. Позже эти службы можно будет сделать доступными через внедрение зависимостей.
Платформенные службы
Следующие службы регистрируются автоматически.
- IHostApplicationLifetime
- IHostLifetime
- IHostEnvironment
IHostApplicationLifetime
Внедрите службу IHostApplicationLifetime в любой класс для выполнения задач после запуска и корректного завершения работы. Три свойства этого интерфейса представляют собой токены отмены, которые служат для регистрации методов обработчика событий запуска и завершения работы приложения. Этот интерфейс также включает метод StopApplication().
Ниже приведен пример реализации IHostedService , которая регистрирует события IHostApplicationLifetime :
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; namespace AppLifetime.Example; public sealed class ExampleHostedService : IHostedService < private readonly ILogger _logger; public ExampleHostedService( ILoggerlogger, IHostApplicationLifetime appLifetime) < _logger = logger; appLifetime.ApplicationStarted.Register(OnStarted); appLifetime.ApplicationStopping.Register(OnStopping); appLifetime.ApplicationStopped.Register(OnStopped); >public Task StartAsync(CancellationToken cancellationToken) < _logger.LogInformation(«1. StartAsync has been called.»); return Task.CompletedTask; >public Task StopAsync(CancellationToken cancellationToken) < _logger.LogInformation(«4.
StopAsync has been called.»); return Task.CompletedTask; >private void OnStarted() < _logger.LogInformation(«2. OnStarted has been called.»); >private void OnStopping() < _logger.LogInformation(«3. OnStopping has been called.»); >private void OnStopped() < _logger.LogInformation(«5. OnStopped has been called.»); >>
Шаблон рабочей службы можно изменить, чтобы добавить в него реализацию ExampleHostedService .
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using AppLifetime.Example; using IHost host = Host.CreateDefaultBuilder(args) .ConfigureServices((_, services) => services.AddHostedService()) .Build(); await host.RunAsync();
Приложение запишет следующий образец выходных данных:
// Sample output: // info: ExampleHostedService[0] // 1. StartAsync has been called. // info: ExampleHostedService[0] // 2. OnStarted has been called. // info: Microsoft.Hosting.Lifetime[0] // Application started.Press Ctrl+C to shut down. // info: Microsoft.Hosting.Lifetime[0] // Hosting environment: Production // info: Microsoft.Hosting.Lifetime[0] // Content root path: ..app-lifetimebinDebugnet6.0 // info: ExampleHostedService[0] // 3. OnStopping has been called. // info: Microsoft.Hosting.Lifetime[0] // Application is shutting down. // info: ExampleHostedService[0] // 4. StopAsync has been called. // info: ExampleHostedService[0] // 5. OnStopped has been called.
IHostLifetime
Реализация IHostLifetime контролирует, когда узел запускается и останавливается. Используется последняя зарегистрированная реализация. Microsoft.Extensions.Hosting.Internal.ConsoleLifetime — это реализация IHostLifetime по умолчанию. Дополнительные сведения о принципах времени существования, на которых основано завершение работы, см. в разделе Завершение работы узла.
IHostEnvironment
Внедряет службу IHostEnvironment в класс, чтобы получить сведения о следующих параметрах.
- IHostEnvironment.ApplicationName
- IHostEnvironment.ContentRootFileProvider
- IHostEnvironment.ContentRootPath
- IHostEnvironment.EnvironmentName
Конфигурация узла
Конфигурация узла используется для настройки свойств реализации IHostEnvironment.
Конфигурация узла доступна в HostBuilderContext.Configuration через метод ConfigureAppConfiguration. При вызове метода ConfigureAppConfiguration в configureDelegate передаются HostBuilderContext и IConfigurationBuilder . Для configureDelegate используется определение Action . Контекст построителя узла предоставляет свойство Configuration , которое является экземпляром IConfiguration . Он представляет конфигурацию, созданную на основе узла, тогда как IConfigurationBuilder представляет собой объект построителя, используемый для настройки приложения.
После вызова ConfigureAppConfiguration элемент HostBuilderContext.Configuration заменяется на app config.
Чтобы добавить конфигурацию узла, вызовите ConfigureHostConfiguration в IHostBuilder . Метод ConfigureHostConfiguration может вызываться несколько раз с накоплением результатов. Узел использует значение, заданное последним для данного ключа.
В следующем примере создается конфигурация узла:
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using IHost host = Host.CreateDefaultBuilder(args) .ConfigureHostConfiguration(configHost => < configHost.SetBasePath(Directory.GetCurrentDirectory()); configHost.AddJsonFile(«hostsettings.json», optional: true); configHost.AddEnvironmentVariables(prefix: «PREFIX_»); configHost.AddCommandLine(args); >) .Build(); // Application code should start here. await host.RunAsync();
Конфигурация приложения
Конфигурация приложения создается путем вызова метода ConfigureAppConfiguration в IHostBuilder . Метод ConfigureAppConfiguration может вызываться несколько раз с накоплением результатов. Приложение использует значение, заданное последним для данного ключа.
Конфигурация, созданная с помощью ConfigureAppConfiguration , доступна в HostBuilderContext.Configuration для последующих операций и как служба через внедрение зависимостей. Конфигурация узла также добавляется к конфигурации приложения.
Дополнительные сведения см. в статье Конфигурация в .NET.
Завершение работы узла
Процесс размещенной службы можно остановить следующими способами:
- Если кто-то не вызывает Run или HostingAbstractionsHostExtensions.WaitForShutdown, приложение завершает работу обычным образом после выполнения Main .
- Аварийное завершение работы приложения.
- Принудительное завершение работы с помощью SIGKILL (или CTRL + Z ).
Все эти сценарии не обрабатываются непосредственно кодом размещения. Владелец процесса должен работать с ними так же, как и при использовании любого приложения. Есть несколько дополнительных способов остановки процесса размещенной службы:
- Если используется класс ConsoleLifetime , он прослушивает следующие сигналы и пытается корректно отключить узел:
- SIGINT (или CTRL + C );
- SIGQUIT (или CTRL + BREAK в ОС Windows, CTRL + в ОС Unix);
- SIGTERM (отправляется другими приложениями, например docker stop ).
Эти сценарии обрабатываются встроенной логикой размещения, в частности классом ConsoleLifetime . ConsoleLifetime пытается обработать сигналы завершения работы SIGINT, SIGQUIT и SIGTERM, чтобы обеспечить корректное завершение работы приложения.
До выхода .NET 6 не существовало способа корректной обработки SIGTERM кодом .NET. Чтобы обойти это ограничение, класс ConsoleLifetime подписывался на событие System.AppDomain.ProcessExit. При порождении события ProcessExit класс ConsoleLifetime сообщал узлу о необходимости остановиться и заблокировать поток ProcessExit , ожидая остановки узла. Это позволит выполнять код очистки в приложении, например IHost.StopAsync , и код после HostingAbstractionsHostExtensions.Run метода Main .
Это вызывало другие проблемы, так как событие ProcessExit порождается не только в результате SIGTERM. Оно также порождается в результате вызова Environment.Exit кодом в приложении. Метод Environment.Exit не является корректным способом завершения работы процесса в модели приложения Microsoft.Extensions.Hosting . Он порождает событие ProcessExit , а затем завершает процесс. Конец метода Main не выполняется. Фоновые и основные потоки завершаются, а блоки finally не выполняются.
Так как ConsoleLifetime блокировка ProcessExit при ожидании завершения работы узла, это поведение привело к взаимоблокировкам из Environment.Exit также блокировок, ожидающих вызова ProcessExit . Кроме того, так как при обработке SIGTERM была предпринята попытка корректного завершения процесса, ConsoleLifetime присваивает свойству ExitCode значение 0 , которое затирает код выхода пользователя, переданный в метод Environment.Exit .
В .NET 6 сигналы POSIX поддерживаются и обрабатываются. Это позволяет ConsoleLifetime корректно обрабатывать SIGTERM и больше не участвовать в процессе при вызове Environment.Exit .
Для .NET 6+ ConsoleLifetime больше не имеет логики для обработки сценария Environment.Exit . Приложения, вызывающие Environment.Exit и требуемые для выполнения логики очистки, могут подписаться на ProcessExit самостоятельно. Размещение больше не будет пытаться корректно останавливать работу узла в этом сценарии.
Если приложение использует размещение, а вы хотите корректно остановить узел, вы можете вызвать IHostApplicationLifetime.StopApplication вместо Environment.Exit .
Процесс завершения работы размещения
На следующей схеме показано, как сигналы обрабатываются в коде размещения. Большинству пользователей не нужно понимать этот процесс. Но разработчикам, которым требуется глубокое понимание, это может помочь приступить к работе.
После запуска узла, когда пользователь вызывает Run или WaitForShutdown , для IApplicationLifetime.ApplicationStopping регистрируется обработчик. Выполнение в WaitForShutdown приостанавливается, ожидая порождения события ApplicationStopping . Возврат к методу Main не выполняется сразу, и приложение продолжает выполняться до возврата Run или WaitForShutdown .
Если в процесс отправляется сигнал, он инициирует следующую последовательность:
- Управление передается от ConsoleLifetime в ApplicationLifetime для порождения события ApplicationStopping . Это дает сигнал WaitForShutdownAsync разблокировать код выполнения Main . В то же время обработчик сигналов POSIX возвращается с Cancel = true , так как этот сигнал POSIX был обработан.
- Код выполнения Main снова начинает выполняться и сообщает узлу выполнить метод StopAsync() , что, в свою очередь, останавливает все размещенные службы и порождает все другие остановленные события.
- Наконец, WaitForShutdown завершает работу после выполнения кода для очистки приложения (если имеется) и корректного завершения метода Main .
См. также раздел
- Внедрение зависимостей в .NET
- Ведение журнала в .NET
- Конфигурация в .NET
- Службы рабочей роли в .NET
- Веб-узел ASP.NET Core
- В репозитории github.com/dotnet/runtime должны быть созданы универсальные ошибки узла
Источник: learn.microsoft.com
Как удалить вирусные настройки из системного файла hosts
Host — системный текстовый файл, предназначенный для трансляции доменных имён в указанные сетевые адреса, или IP. Он является своего рода специальной сетевой надстройкой, но может применяться как в благих, так и в злонамеренных целях. Существует определённая категория вирусов, модифицирующая файл hosts для того, чтобы заблокировать доступ к определённым веб-ресурсам (например, к офсайтам антивирусных компаний) или перенаправить пользователя на вредоносные либо рекламные страницы.
Поведение и симптомы вирусов «hosts»
Проникают вирусы, как и другие их «сородичи», через заражённые инсталляторы программ, специальные загрузочные скрипты на веб-страницах и прочие хакерские уловки. Довольно часто установка «инфекции» маскируется под системные ошибки. На экране появляется окно с сообщением, что якобы выявилась ошибка при выполнении какого-либо скрипта или команды. Озадаченный пользователь, растерявшись, жмёт «OK» (других кнопок нет!) и собственноручно открывает «двери» зловреду в операционную систему. Файл под названием hosts мгновенно видоизменяется, и начинается для пользователя череда неприятностей…
С виду система работает стабильно — не тормозит, не зависает. Но только стоит пользователю открыть веб-браузер, все «хвори» выползают наружу. А проявляют они себя следующим образом:
- при попытке зайти в соцсеть или какой другой популярный интернет-ресурс появляется ошибка «Страница недоступна»;
- домен (название) сайта не соответствует действительности: например, при наборе в адресной строке vk.com открывается страница с множеством рекламных баннеров или другой сайт, ничего общего не имеющий с соцсетью.
Многие пользователи, завидев на экране одну из этих картин, совершенно не придают ей значения. Успокаивают себя мыслями «это что-то там у них на сервере случилось», «сегодня интернет плохой» и всё в таком духе…
Хорошо, если так. А если файл инфицирован? Тогда проблема не исчезнет сама собой и через час, и через десять. Нужно действовать: удалить из hosts вирусные модификации, проще говоря, придать ему прежний вид.
Лечение файла hosts
Как найти и какой программой открыть?
Перед тем, как удалить вирус hosts, нужно сначала до него добраться. Откройте последовательно директории в указанном порядке (для Windows 7 и XP):
Диск С (или другой диск, на котором находится ОС) → Windows → System32 → drivers → etc
Именно в директории «etc» и находится host. Но не спешите его убирать с компьютера! Он не удаляется, а лечится, и легко. И потом, возможно, вам ещё не раз и не два сослужит хорошую службу (см. последнюю главу этой статьи).
Host не имеет расширения, но содержит текстовую информацию. Поэтому его можно без проблем открыть системным приложением «Блокнот» и, соответственно, восстановить подобающим образом.
Давайте сделаем это.
1. Находясь в папке «etc», кликните по файлу hosts правой кнопкой.
2. В контекстном меню выберите «Открыть» или «Открыть с помощью».
3. В списке программ, которыми можно открыть файл, кликните «Блокнот» и нажмите «OK».
В «Блокноте» отобразится содержимое hosts. Его необходимо просмотреть, проанализировать и удалить все вирусные надстройки.
Как проверить?
В чистом, то есть в «здоровом», hosts, кроме строчек, начинающихся с символа «#», больше ничего нет. За редким лишь исключением, когда некоторые доверенные программы оставляют в нём свои настройки.
Но, когда произошла вирусная атака, необходимо быть особо бдительным.
- Строчка с IP-адресом и доменным именем сайта (VK.com, ok.ru и др.) выполняет переадресацию на другой сайт.
- Строчка, начинающаяся с 127.0.0.1, блокирует доступ к сайту.
Если таковые обнаружатся, однозначно их нужно удалять.
Как очистить?
1. Удерживая левую кнопку мыши, выделите курсором все записи, внесённые вирусом.
2. Кликните правой кнопкой по записям. Нажмите в меню «Удалить».
3. Сохраните файл, чтобы изменённые настройки вступили в силу. Вверху окна «Блокнота» нажмите: Файл → Сохранить.
4. Закройте «Блокнот». Перезагрузите ОС. Откройте браузер и проверьте доступ к сайтам.
Дополнительные меры и профилактика
К сожалению, может случиться и так, что вирус все ваши старания по очистке hosts может свести на «нет» (сайты по-прежнему отрываться не будут). Но, тем не менее, руки опускать не стоит.
Дополнительно выполните следующую процедуру:
1. Проверьте разделы диска (системный обязательно!) лечащей утилитой Dr.Web CureIt!, Free Anti-Malware или Virus Removal Tool (Kaspersky).
Предварительно установите в настройках сканирования антивирусной программы проверку загрузочных секторов (MBR), памяти, выявление руткитов и включите высокий уровень детектирования (обнаружения) вирусов.
2. Обновите сигнатурные базы основного антивируса, защищающего ПК от вторжений зловредов постоянно. Также проверьте его основные настройки.
Например, в антивирусе Avira защите hosts уделяется особое внимание. В его настроечной панели имеется специальная настройка «защитить хост-файл».
Чем полезен hosts?
Hosts входит в группу пользовательских настроек и незаменим при решении следующих задач:
Блокировка сетевого соединения — программное приложение — сервер/сайт
Многие программы периодически обращаются к своим «родным» ресурсам для обновления, отправки данных. Для пользователя такой режим работы не всегда удобен: тратится траффик, затормаживается загрузка страниц, нет контроля загрузки данных.
Минуя все программные настройки и правила фаервола, ограничить доступ им можно непосредственно в hosts, добавив следующую строчку:
127.0.0.1 (например, 127.0.0.1 adobe.com)
Осуществления контроля над посещением веб-ресурсов
Аналогичным образом блокируется и доступ к определённым сайтам: порнографическим, сомнительным, соцсетям и др. Всё зависит от цели ограничения — родительский контроль, офисные или учебные ПК.
У host есть приоритет над DNS-серверами (сервисами, присваивающими доменным именам IP-адреса), поэтому ПК изначально будет следовать его указаниям при создании сетевого подключения.
Следите за файлом host, правильно настраивайте его, и с вашим ПК будет всё «OK». Приятного пользования интернетом!
Источник: zavod-mc.ru
Что действительно делает параметр —net = host в команде Docker?
Я немного новичок в Docker. Я не смог найти четкого описания того, что делает эта опция в команде docker run в глубокой и немного смущенной ситуации.
Можем ли мы использовать его для доступа к приложениям, запущенным в док-контейнерах, без указания порта? Например, если я запускаю веб-приложение, развернутое через образ докера в порту 8080 с помощью параметра -p 8080:8080 в команде запуска докера, я знаю, что мне придется обращаться к нему через порт 8080 в контейнерах Docker ip / theWebAppName. Но я не могу придумать, как работает опция —net=host .
Ravindu Nirmal Fernando 10 Апр 2017 в 09:37
2 ответа
Лучший ответ
После установки докера у вас есть 3 сети по умолчанию:
docker network ls NETWORK ID NAME DRIVER SCOPE f3be8b1ef7ce bridge bridge local fbff927877c1 host host local 023bb5940080 none null local
Я пытаюсь сохранить это простым. Поэтому, если вы запустите контейнер по умолчанию, он будет создан внутри сети моста (docker0).
$ docker run -d jenkins 1498e581cdba jenkins «/bin/tini — /usr. » 3 minutes ago Up 3 minutes 8080/tcp, 50000/tcp friendly_bell
В докер-файле jenkins открыты порты 8080 и 50000 . Эти порты открыты для контейнера в его мостовой сети. Таким образом, все внутри этой мостовой сети может получить доступ к контейнеру через порт 8080 и 50000 . Все в мостовой сети находится в закрытом диапазоне «Subnet»: «172.17.0.0/16», . Если вы хотите получить к ним доступ извне, вы должны сопоставить порты с -p 8080:8080 . Это отобразит порт вашего контейнера на порт вашего реального сервера (хост-сеть). Таким образом, доступ к вашему серверу в 8080 будет направлен в вашу сетевую сеть через порт 8080 .
Теперь у вас также есть сеть хоста. Который не контейнеры контейнеров сети. Поэтому, если вы запустите контейнер в сети хоста, он будет выглядеть так (это первый):
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1efd834949b2 jenkins «/bin/tini — /usr. » 6 minutes ago Up 6 minutes eloquent_panini 1498e581cdba jenkins «/bin/tini — /usr. » 10 minutes ago Up 10 minutes 8080/tcp, 50000/tcp friendly_bell
Разница с портами. Ваш контейнер теперь находится внутри вашей хост-сети. Поэтому, если вы откроете порт 8080 на своем хосте, вы сразу получите доступ к контейнеру.
$ sudo iptables -I INPUT 5 -p tcp -m tcp —dport 8080 -j ACCEPT
Я открыл порт 8080 в своем брандмауэре, и когда я сейчас подключаюсь к своему серверу через порт 8080 , я получаю доступ к своим jenkins. Я думаю, что этот блог также полезен для лучшего понимания.
lvthillo 10 Апр 2017 в 07:54
Параметр —net=host используется для того, чтобы программы внутри контейнера Docker выглядели так, как будто они работают на самом хосте, с точки зрения сети. Это позволяет контейнеру получить больший доступ к сети, чем он может получить.
Обычно вы должны перенаправлять порты с хост-машины в контейнер, но когда контейнеры совместно используют сеть хоста, любая сетевая активность происходит непосредственно на хост-машине — так же, как если бы программа работала локально на хосте, а не внутри контейнер.
Хотя это означает, что вам больше не нужно открывать порты и сопоставлять их с портами контейнеров, это означает, что вы должны отредактировать свои файлы Docker для настройки портов, которые слушает каждый контейнер, чтобы избежать конфликтов, поскольку вы не можете иметь два контейнера, работающих на одном и том же хост-порт. Однако настоящая причина этого варианта — запуск приложений, которым требуется доступ к сети, которые трудно перенаправить в контейнер на уровне порта.
Например, если вы хотите запустить DHCP-сервер, вам необходимо иметь возможность прослушивать широковещательный трафик в сети и извлекать MAC-адрес из пакета. Эта информация теряется в процессе переадресации порта, поэтому единственный способ запустить DHCP-сервер в Docker — запустить контейнер как —net=host .
Вообще говоря, —net=host нужен только тогда, когда вы запускаете программы с очень специфическими, необычными сетевыми потребностями.
Наконец, с точки зрения безопасности, контейнеры Docker могут прослушивать множество портов, даже если они объявляют (выставляют) только один порт. Обычно это нормально, поскольку вы перенаправляете только один ожидаемый порт, однако если вы используете —net=host , вы получите все порты контейнера, прослушивающие хост, даже те, которые не указаны в списке. в Dockerfile. Это означает, что вам необходимо внимательно проверить контейнер (особенно если он не ваш, например, официальный, предоставленный программным проектом), чтобы убедиться, что вы случайно не предоставили дополнительные услуги на машине.
Источник: question-it.com
Зачем и как блокировать сайты с помощью файла Hosts в Windows
Hosts является одним из самых важных файлов операционной системы Windows. Его основной функцией является сопоставление ip-адресов c доменными именами, содержащимися в буквенных выражениях. По своей сути, данный файл является аналогом современных DNS-адресов.
Операционная система делает запрос через DNS-сервера и браузеру приходит ответ о возможности открытия сайта или запрете на это действие. Стоит упомянуть, что именно таким образом (через провайдеров) Роскомнадзор формирует списки интернет-ресурсов, запрещенных для посещения российскими пользователями.
Рисунок 1: Пример файла hosts в Windows 10
Зачем блокировать сайты с помощью файла Hosts в Windows?
Любой браузер изначально обращается за данными именно к файлу hosts. Это позволяет вносить в него информацию о потенциально нежелательных интернет-ресурсах, доступ к которым должен быть запрещен.
Это может делаться по самым разнообразным причинам. Например, таким образом можно ограничить просмотр запрещенного контента для детей, порнографии, и вредоносных сайтов.
Файл hosts является своеобразным инструментом администрирования ресурсов компьютера, связанных с интернетом. При вводе определенного запроса в браузере, программа обращается к DNS-серверам провайдера. Так происходит не всегда. Информация о разрешенных ресурсах может храниться в оперативной памяти или данном файле.
Совершенно очевидно, что браузеру проще и быстрее получить данные из локального места хранения. Именно поэтому файл hosts так важен.
Также зараженный вирусами компьютер может блокироваться при обращении к оригинальным DNS серверам. По этой причине доступ к вредоносному программному обеспечению и опасным сайтам будет открыт. Вирусный код просто будет подменять результаты запросов на свои собственные.
Как блокировать сайты с помощью файла Hosts в Windows
Пошаговое руководство будет выглядеть следующим образом:
- Необходимо найти сам файл hosts на компьютере. Он располагается по адресу: C:WINDOWSsystem32driversetchosts. Рассмотрим работу с файлом hosts на примере операционной системы Windows 10. Для этого необходимо найти и открыть программу « Блокнот » от имени администратора.
Рисунок 2: Программа «Блокнот»
Открыть файл hosts по указанному выше адресу. Необходимо активировать отображение всех типов файлов, если изначально указанная папка окажется пустой.
Рисунок 3: Директория файла hosts
Остается открыть сам файл.
- Внесение изменений . Блокировка сайтов осуществляется путем внесения в файл hosts следующих цифр: 127.0.0.1 (они обозначают локальный адрес файла на компьютере или ноутбуке). Далее через пробел (между локальным адресом и буквенным доменным именем) вписываются сами адреса сайтов без указания http/https (их можно скопировать в адресной строке браузера). Все новые данные вносятся в самом конце файла — внизу справа от значка #.
Локальный адрес также называется loopback-адрес и служит для отсылки запросов ПК или ноутбука самому себе. Адрес един для операционных систем Mac, Linux и Windows.
При внесении данного адреса рядом с физическим адресом интернет-ресурса, запрос операционной системы будет приходить сам себе, исключая открытие сайта, указанного после него в файле hosts.
Рисунок 4: Внесение нежелательных сайтов в файл hosts
- На заключительном этапе измененный файл hosts остается сохранить и закрыть программу «Блокнот».
Рисунок 5: Сохранение внесенных изменений
Большинство антивирусных программ распознает изменения в файле hosts и воспринимает их как потенциальную угрозу. Практически любая антивирусная программа автоматически восстанавливает первоначальные значения файла hosts. Для того чтобы купировать этот момент, необходимо предварительно внести файл hosts в список исключений используемого антивирусного программного обеспечения.
Что делать если нужно вернуть все как было изначально?
В данном случае есть два варианта развития событий. Можно просто скачать готовый файл hosts для конкретной операционной системы, найдя его в интернете на свой страх и риск. Вторым вариантом является восстановление значения файла hosts по умолчанию.
Для Windows 7-10. Необходимо открыть «Блокнот», воспользовавшись поиском и внести туда данные из оригинального источника. Файл следует сохранить («Сохранить как») и прописать название hosts с расширением old. Адрес оригинального файла выглядит так: %WinDir%System32DriversEtc. Именно в эту папку необходимо сохранить новый файл hosts с заменой на старый.
Вывод
Подводя итоги, хочется предупредить об изменении важных программных файлов. Это может повлечь за собой негативные последствия, в частности, переустановку операционной системы. Если не удается найти другие варианты блокировки информации, представленной во всемирной паутине, то изменение системного файла hosts будет единственно верным вариантом. Лучшим решением в этой ситуации будет сохранить информацию из первоначального файла hosts в другом месте, чтобы в случае необходимости безболезненно осуществить его восстановление до первоначального вида.
Источник: www.internet-technologies.ru