Авторизация

ВЫХОД В ИНТЕРНЕТ ЧЕРЕЗ ДОМАШНИЙ МАРШРУТИЗАТОР И VPN

единая точка выхода в сеть Интернет через систему доступа VPNKI

Уровень сложности конфигурации – 4,5 из 5. / Время на прочтение и реализацию – 1-2 часа.

 

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

Для чего?

Во-первых, в этом случае, вы сможете контролировать трафик своих устройств на одном маршрутизаторе. Сможете создавать единые правила в одном месте.

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

В-третьих, вы сможете пользоваться услугами вашего домашнего провайдера так, как будто находитесь в его сети. И вам могут удаленно стать доступны его услуги, которые обычно доступны только из дома – всякие игровые серверы, серверы SIP телефонии и прочее.

Для этого нам предстоит сделать следующее:

  • Настроить туннели VPNKI.
  • Настроить устройство, например Android или компьютер с Windows.
  • Настроить домашний маршрутизатор.
  • Проверить что все работет.

Представим себе следующую схему – у вас есть подключение к домашнему провайдеру и туннель к VPNKI, установленный с домашнего маршрутизатора.

 

Выход в Интернет через домашний маршрутизатор и VPN, маршрут

 

Второй туннель у вас установлен с компьютера или смартфона Android. Допустим с них вы хотите выходить в Интернет через домашний маршрутизатор.

Самое важное в этой схеме - показать где и как должны быть настроены «маршруты по умолчанию». Вот они – выделены красным цветом.

Что же, начнем ...

 

Шаг 1. Настроим VPN туннели VPNKI

Отключите все соединения.

В разделе «Мои настройки» - «Дополнительно» - «Маршрут по умолчанию» выберите туннель, который будет вести к вашему домашнему маршрутизатору. Речь идет о туннеле user101. Теперь этот туннель будет являться «маршрутом по умолчанию» для всего вашего трафика сети VPN. Эта установка будет применяться на сервере VPNKI в тот момент, когда туннель user101 будет подключаться. Эта настройка будет удаляться с сервера VPNKI тогда, когда туннель user101 разрвет свое соединение.

 

vpnki default gateway

 

 

После выбора «маршрута по умолчанию» на сайте VPNKI установите VPN соединение с вашего домашнего маршрутизатора. Затем зайдите на страницу «Инструменты» - «Инструменты» и нажмите там кнопку «Таблица маршрутов».

Вы должны будете увидеть новый маршрут, который звучит как default via 172.16.100.100 dev ppp143. Этот маршрут прописывается в системе автоматически, как только осуществляется подключение указанного туннеля.

 

vpnki default gateway ip route

 

Что же, теперь весь «неизвестный» трафик пойдет в этот туннель.

Под словом «неизвестный» мы имеем ввиду «явно не указанный» в таблице маршрутов сервера VPNKI. Это означает, что весь трафик, направляющийся внутри ваших туннелей в сеть Интернет, будет смаршрутизирован в ваш домашний туннель user101.

Теперь давайте перейдем к настройке вашего домашнего устройства.

 

 

Шаг 2. Настройка Android или компьютера с OpenVPN

Мы будем использовать подключение OpenVPN и здесь вам нужно будет сделать две вещи.

Скачайте файл-профиль .ovpn со страницы сайта VPNKI и настроить соединение. Это можнос делать по основной инструкции настройки соединения OpenVPN. Однако, предстоит внести некоторые коррективы в этот файл для того чтобы.

- настроить VPN туннель как «маршрут по умолчанию» для вашего устройства.

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

Для этого внесите две новые строки в файл .ovpn и добавьте туда две строки непосредственно перед тегом <cа>.

 
dhcp-option DNS 8.8.8.8
redirect-gateway autolocal
 

Первая строка заставит ваше устройство обращаться к DNS серверу Google для разрешения имени сайта. Вторая строка указывает на создание маршрута по умолчанию при поднятии туннеля к VPNKI. 

Теперь давайте проверим. Установите соединение с Android и … у вас должен будет пропасть доступ в Интернет. Точнее, теперь ваш смартфон будет искать Интернет внутри сети VPNKI. Однако это будет неуспешно, так как мы не выполнили шаг №3.

В дополнение, вы можете выполнить команду traceroute 8.8.8.8 с вашего Андроида и увидеть, что пакеты доходят лишь до адреса 172.16.0.1 (сервер VPNKI). Или (см.схему в начале статьи) до адреса 172.16.100.100, который принадлежит вашему домашнему маршрутизатору.

Теперь можно приступить к шагу №3 – выпустить трафик из туннеля VPN через домашний маршрутизатор к вашему провайдеру. Это, пожалуй, самый сложный шаг.

 

 

Шаг 3. Настройка маршрутизатора

Реализация этого пункта существенно зависит от типа вашего домашнего маршрутизатора.

В статье я покажу реализацию функционала на примере устройства Dlink DIR-825 (c утилитами busybox). Этот маршрутизатор один из множества, но я уверен, что вы справитесь с любым, если поймете оcновные принципы.

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

Если вы настраиваете Dlink, то сохраните "Резервную копию" на компьютер в разделе «Конфигурация».

 

vpnki dlink backup

 

Итак, сделать нам нужно три вещи:

  • настроить маршрутизацию.
  • создать разрешения на передачу трафика из VPN интерфейса в сеть провайдера.
  • выполнить NAT для этого трафика.

 

Давайте подробнее пройдем по этим пунктам.

 

Шаг 3.1. Настройка маршрутизации

На самом деле, вероятнее всего, все маршруты уже есть в вашем домашнем маршрутизаторе... Ведь ваше устройство работает.

Нужно только проверить.

Домашняя сеть – на WiFi или на проводном интерфейсе.

VPN сеть VPNKI – на интерфейсе PPTP, L2TP или Tun (в зависимости от протокола подключения – PPTP, L2TP, OpenVPN).

Соединение к провайдеру и «маршрут по умолчанию» у вас ведут к Интернет провайдеру.

Необходимо убедиться, что все эти маршруты имеются и двигаться дальше.

 

Как убедиться?

 

Подключитесь при помощи telnet на адрес Dlink. Порт стандартный - 23. Логин и пароль, такие же, как и на Web интерфейсе.

Выполните команду ifconfig. В ней вы увидите длинное перечисление всех сетевых интерфейсов устройства. По их адресам вы вполне поймете назначение. В моем случае.

  • eth1 – это интерфейс к провайдеру.
  • br0 – объединенный интерфейс домашней сети, который включает в себя проводную и беспроводную домашнюю сеть.
  • ppp0 – интерфейс к сети VPNKI.

Теперь выполните команду ip route и просто посмотрите на маршруты в вашем устройстве. При корректной настройке соединения к VPNKI у вас должен быть маршрут к адресу 172.16.0.1 (первая строка) и маршрут к сети 172.16.0.0/32 (предпоследняя строка). Оба эти маршрута должны вести в туннельный интерфейс ppp0.

vpnki dlink ip route

 

 

 

 

Шаг 3.2. Создание разрешения на передачу трафика из VPN интерфейса в сеть провайдера

Это непростой пункт, но, с другой стороны, может быть ничего и не потребуется делать.

Тем не менее, сначала нужно кое-что пояснить.

Вероятнее всего, в вашем домашнем маршрутизаторе функционирует какая-то версия *nix системы. Наиболее часто встречается busybox – максимально обрезанный линукс. Он заточен под задачи маршрутизации. Обычно, в таких системах функцию межсетевого экрана выполняет программа iptables. Это мощное и гибкое средство, однако, для новичка это сущий ужас. Увы, нам без него никак не обойтись, но я постараюсь изложить очень немного и максимально просто.

 

Немного про iptables.

 

Когда ваше устройство получает сетевой пакет на любом из интерфейсов, то в дело вступает iptables. Очень приблизительно схема его работы приведена здесь.

 

iptables

 

Входящий пакет обрабатывается правилами PREROUTING.

Затем, если пакет должен быть смаршрутизирован, то его отдают в набор правил под названием FORWARD. Затем пакет обрабатывается правилами POSTROUTING и выходит в сетевой интерфейс. Уже обработанным так, как нам надо.

Если пакет должен быть обработан какой-либо программой самого устройства. Например какая-то локальная служба или сервис, то пакет поступает в набор правил INPUT. Затем пакет поступает приложению, а на выходе обрабатывается правилами OUTPUT.  

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

Стоит отметить, что пакет, подвергаемый обработке NAT на приеме (например, когда вы «выставляете наружу порты устройства»), называется Destination NAT (Destination IP address translation), эта функция транслирует адрес и порт получателя (адрес провайдера на внешнем интерфейсе вашего маршрутизатора) в ваш внутренний адрес и порт. Это осуществляется в наборе правил PREROUTING.

А в трафике, выходящем к провайдеру, обычно транслируется адрес источника – он заменяется на адрес провайдерского интерфейса. Эта процедура называется SNAT (Source IP address translation) и выполняется она в наборе правил POSTROUTING.

 

 

Теперь давайте посмотрим, как все это устроено в вашем маршрутизаторе.

Для этого подключимся к Dlink по telnet и выполнить команду:

 iptables -n -L -v --line-numbers 

В выводе вы увидите много различных строк. В частности, там будут фигурировать ранее перечисленные нами группы правил INPUT, PREROUTING, FORWARD, POSTROUTING и куча других. На данный момент времени нас будет интересовать группа правил FORWARD. Давайте выведем только их командой.

 iptables -L FORWARD -v --line-numbers 

В результате мы увидим следующую картину:

vpnki dlink iptables forward 1

 

Здесь важны два момента.

Первый момент, это режим работы (политика) группы правил, именуемый policy. Этот режим может быть ACCEPT, а может быть DROP. В нашем случае, во второй строке картинки мы видим policy ACCEPT, что означает, что трафик, который не попал ни в одно из описанных в группе правил, будет пропущен. Если бы policy был бы DROP, то трафик, не описанный правилами ниже, будет сброшен. Ну и стоит отдельно упомянуть, что правила применяются к пакету по порядку, начиная с самого верхнего правила.

В качестве примера, давайте взглянем на самое первое правило с номером 1.

В нем сказано:

  • сбрасывать трафик (DROP),
  • протокола tcp,
  • поступившего с входного интерфейса (in) - br0,
  • следующего в любой выходной интерфейс (out) – any,
  • c любым IP адресом источника (source) – anywhere,
  • с IP адресом назначения (destination) – 192.0.2.1,
  • если порт получателя равен 80 (tcp dpt:www)

Небольшой комментарий. Как мы помним, интерфейс br0 это общий интерфейс домашней сети (bridge0). В нее входит ваше проводное подключение и ваш домашний WiFi. То есть фактически, это правило сбросит трафик если вы, находясь в домашней сети, наберете в строке браузера http://192.0.2.1 .

Ну и обратите внимание на счетчики трафика. В первом правиле счетчики пакетов равны 0, что означает, что межсетевой экран не зафиксировал трафик, который бы попадал под это правило.

Надеюсь, что вам стало понятнее.

Второй момент касается правила №3. Это правило, которое мешает нашему DLink быть настоящим маршрутизатором. В нем счетчик пакетов равен 76 и это означает, что это правило уже что-то не пропустило через себя. Вот что в нем написано:

  • сбрасывать трафик (DROP),
  • любого протокола (any),
  • поступившего с входного интерфейса (in) – eth1,
  • следующего в любой выходной интерфейс, кроме br+ (out) – !br+, (плюс означает любой br...)
  • c любым IP адресом источника (source) – anywhere,
  • с IP адресом назначения (destination) – anywhere

То есть это правило говорит о том, что трафик, идущий из сети провайдера (eth1) попадет в домашнюю сеть (br0), но НЕ попадет в интерфейс ppp0. Вот какая засада. Это дело нужно исправить.

Нужно удалить это правило. Если его удалить, то вроде бы никакие правила ниже не должны влиять на прохождение трафика между интерфейсами ppp0, br0 и eth1. А как мы помним, если никакие правила трафику не мешают, то согласно политике ACCEPT для всей группы, трафик будет передан.

Удаляем это чудесное правило №3 командой.

 iptables -D FORWARD 3 

И вновь посмотрим на результат:

 iptables -L FORWARD -v --line-numbers 

 vpnki dlink iptables forward 4

 

Что же, теперь старое правило 3 исчезло. Хочется верить, что все заработает, но остался последний пункт нашей настройки.

 

 

 

Шаг 3.3. Настройка трансляции NAT

Это самый последний пункт. Дело в том, что ваш маршрутизатор настроен так, чтобы делать трансляцию адресов домашней сети. Это его базовый функционал и, вероятнее, всего он делает это при помощи того же самого функционала iptables. На этот раз, подобная функция будет называться MASQUERADE (маскарадинг). Маскарадинг делает трансляцию адресов источника (SNAT) в адрес внешнего интерфейса к провайдеру. Только вот для трафика от каких адресов это происходит? Это происходит для трафика с адресов домашней сети. Но будет ли это происходить для трафика с адресов сети VPNKI?

Давайте посмотрим, как трансляция настроена у нас.

 iptables -v -t nat -L POSTROUTING --line-numbers 

 

vpnki dlink iptables nat 1

 

О чудо, вторая строка говорит о том, что:

  • Будем менять адрес источника (MASQUERADE).
  • Для трафика, поступившего с любого интерфейса (any).
  • Следующего в интерфейс к оператору связи (eth1).
  • Если адрес источника трафика любой, кроме 109.173.70.136.
  • Если адрес получателя трафика любой (anywhere).

То есть наш трафик, который идет из домашней сети br0 или из интерфейса VPNKI ppp0 будет подвергаться трансляции адресов и уходить в Интернет.

 

Шаг 4. Проверка

Зайдите на сайт VPNKI в раздел «Инструменты» - «Инструменты» и выполните пинг адреса 87.250.250.242 (ya.ru) . Если все настроено верно, то вы увидите успешный пинг, который теперь идет через ваш домашний маршрутизатор.

 

vpnki default gateway check

 

Осталась последняя проверка

Выполните подключение со смартфона Android при помощи соединения OpenVPN и зайдите на сайт https://www.whatismyip.com/.

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

Ура, я надеюсь, что у вас все получилось.

 

Если что-то не получилось или что-то неверно описано, то задавайте вопросы на форуме https://vpnki.ru/questions/support-forum/blog-news.