Как выбрать страну из которой выходить в Internet?

Русский

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

По умолчанию tor использует все узлы, которые имеют флаг "Valid"("Проверенный" либо "Действительный") в каталоге узлов. Это название флага рождает много недопонимания и вопросов, например Valid означает Проверенный, а как узлы проверяются? И так далее... На самом деле - с точки зрения автора - гораздо правильнее было бы назвать данный флаг Useable, что означает "Допустимый к использованию". Этот флаг получают все узлы, которые собственно просто можно использовать - то есть они находятся в сети более некоторого времени(обычно от получаса) и не занесены в чёрные списки вредоносных или неправильно работающих узлов. Такое поведение системы более чем логично: если узел "рабочий", то со временем его статистика работы(скорость, доступность портов извне, время в сети) сама за него расскажет о его качестве, и на основании этой информации из директории другие узлы будут уже сами решать как с ним работать и какие из его ролей использовать в их конкретных случаях. Но возникает ещё одно последствие такой схемы: те узлы, через которые осуществляется выход во внешний по отношению к сети тор мир - то есть в сеть Internet - они тоже выбираются исходя из таких же базовых критериев. И это - абсолютно нормально. В общем случае.

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

  • Исключение медленных узлов - это весьма неплохо помогает в большинстве случаев ускорить работу сети. Например, сидя в подмосковье наивно полагать, что связь с узлом из Москвы и из Зимбабве(например) будет одинаково быстрой и стабильной. Да, связь с узлом тор - будет, скорее всего, но - скорости и стабильность соединений буду различаться на порядок и различия будут видны невооруженным взглядом даже без замеров. Поэтому идея отфильтровать по географическим группам список узлов является абсолютно логичной и уместной.
  • Исключение стран, нарушающих международные права человека на анонимность в сети - это самозащита. Даже до принятия ООН резолюций о том, что право на анонимность и право на доступ к информации в сети являются фундаментальными международными правами человека было очевидно. И в прямом виде эти права защищаются как международными конвенциями, так и конституциями отдельных государств в рамках защиты права на частную жизнь. Рисковать можно далеко не всегда - поэтому нередко выбрать страны для тор, через которые траффик не пойдёт ни коим образом в любом чувствительном виде - это тоже необходимая опция. И она есть.
  • Необходимость выйти в интернет с определенной страны - некоторые ресурсы по тем или иным причинам могут быть доступны только из определенных стран и регионов. Фильтрация доступа ТОЛЬКО по стране и региону IP-адреса - это маразм и признак недалёкого ума тех, кто это делает: мир глобален. Как один из примеров, который наблюдал автор статьи, иностранец, живущий в своей стране семьёй уже три поколения, приехал в РФ и не смог получить доступ к содержимому под своей учётной записью, проверенной по его пасспорту и мобильному местному телефону у него дома. Вот для борьбы с таким идиотизмом и появляется необходимость указать из какой страны выходить из сети tor в сеть Internet.
  • Особенности тарификации провайдера - у всех могут быть "дешевый трафик" и "дорогой трафик"(или, как его ещё называют, "иностранный трафик"). Цены могут отличаться на порядок, или просто на одну группу адресов - безлимитный интернет, а на другую - лимит по трафику в месяц, а потом очень высокие цены помегабайтно.

В любом случае, не только в вышеперечисленных, возникает необходимость так или иначе отсортировать узлы тор, через которые будет вестись работа. И вот как это делается:

  • Убираем узлы, через которые трафик не должен ходить - Директива ExcludeNodes. Через эти узлы не пойдёт никакой трафик.
  • Выбираем откуда выходить во внешний мир - Директива ExitNodes. Через эти узлы будет выпускаться внешний трафик и только через них
  • Выбираем откуда входить в сеть тор - Директива EntryNodes. Через эти узлы будет осуществляться вход в сеть тор и только через них

Все эти директивы, даже будучи правильно указанными в конфигурации tor будут работать только если в настройках тор также указана директива "StrictNodes 1" - то есть "строго соблюдать указания в отношении выбора узлов"

Как это работает? Фильтрацию узлов всегда осуществляет только непосредственно тот узел, в настройках которого указаны конкретные фильтры. Напрямую эти фильтры нигде не афишируются и не публикуются, но если например Вам отказал в подключении быстрый узел - то, скорее всего, Вы не прошли его фильтры. Как указываются фильтры? Списком через запятую без пробелов(желательно, во избежание глюков). Можно указать как конкретные узлы по их хэшам, так и географические группы по странам по двухбуквенному обозначению страны по ISO. В том числе именно для этого в дистрибутиве тор есть база данных GeoIP. В дистрибутиве тор по умолчанию идёт бесплатная версия базы, свободно распространяемая в сети, но если Вы хотите повысить точность определения - Вы можете вместо бесплатной базы вставить платную. Названия стран необходимо заключать в фигурные скобки, например так: {us}. Есть ещё один момент, который внимательный читатель уже видит в упор - а почему нельзя указать промежуточный узел или узлы? Ответ заключается в самом принципе работы тора - он должен быть непредсказуемым для того, чтобы быть устойчивым к цензуре. Естественно, те узлы, что попадут в ExcludeNodes не будут использоваться нигде, в том числе и в качестве средних узлов, но также явно как и входные и выходные узлы их выбрать нельзя.