Связь двух сетей через интернет

Связываем две локальные сети с помощью Wireguard VPN на выделенном сервере

Эта статья — продолжение Настройка маршрутизации в сети с неподконтрольным роутером. Итак имеем домашнюю локальную сеть, роутер от провайдера без возможности прошивки и почти без возможности настройки. Ставим в локальной сети сервер. Настраиваем на сервере Wireguard VPN и связываем две локальные сети. Другая локальная сеть — маршрутизатор Xiaomi Mi Router 3G с прошивкой Padavan и установленным Entware.

В принципе инструкций по настройке Wireguard — масса. Но меня долго смущал дополнительный частный диапазон адресов для wireguard. Лично я долго не мог понять, да и сейчас не понимаю, зачем нужно каждому wg устройству назначать адрес из частного диапазона. Могу понять зачем это нужно для одного клиента — ему же нужен какой-то адрес. Но зачем это нужно для связывания двух разных сети — непонятно. У специалистов настройка wireguard вообще не вызывает никаких проблем, но я не они. Кстати мне больше всего понравилась инструкция на сайте keenetic — по ней я все и делал. Возможно данная статья кому-то поможет.

  • Локальная сеть — 192.168.2.0/24
  • Роутер — 192.168.2.1
  • Сервер в локальной сети — 192.168.2.4, ethernet интерфейс — enp1s0
  • Другая локальная сеть (за xiaomi mi router) — 192.168.3.0/24
  • wireguard device network (частный диапазон IP адресов из которого назначаются адреса wireguard интерфейсам) — 10.253.1.0/24
    • сервер wireguard address — 10.253.1.2
    • android клиент — 10.253.1.10
    • xiaomi mi router wireguard address — 10.253.1.3

    Dnsmasq

    Чтобы все работало в локальной сети необходимо добавить два новых маршрута, которые мы анонсируем через DHCP, чтобы трафик в другую локальную сеть и wireguard device network шел через наш сервер: /etc/dnsmasq.d/dhcp.conf

    На клиенте, который использует DHCP для получения IP адреса и конфигурации это должно выглядеть так:

    # ip route
    default via 192.168.2.1 dev enp3s0 proto dhcp metric 100
    10.252.0.0/14 via 192.168.2.4 dev enp3s0 proto dhcp metric 100
    192.168.2.0/24 dev enp3s0 proto kernel scope link src 192.168.2.30 metric 100
    192.168.3.0/24 via 192.168.2.4 dev enp3s0 proto dhcp metric 100

    Для Windows клиента таблицу маршрутизации можно посмотреть командой route print.

    Видим, что трафик для соседней LAN (192.168.3.0/24) и wg private interace (10.252.0.0/14) маршрутизируется через наш сервер (192.168.2.4). Строго говоря wg private interace у меня 10.253.1.0/24, но подсеть 10.254.0.0/16 используется для других нужд и тоже маршрутизируется через сервер, поэтому я написал одно более общее правило вместо двух.

    Wireguard сервер

    Ставим на сервер пакет wireguard: sudo apt install wireguard .

    Генерируем пару ключей (открытый + закрытый) для сервера:

    cd /etc/wireguard
    wg genkey > private-key
    wg pubkey > public-key < private-key

    Запускаем wireguard sudo systemctl start wg-quick@wg0.service .

    Включаем автозапуск для wireguard sudo systemctl enable wg-quick@wg0.service .

    В ubuntu все работает — создается интерфейс wg0, создаются маршруты.

    Проверить статус можно командой ` wg showconf wg0 `, ` wg show `, маршруты командой ` ip route `.

    В настройках роутера пробрасываем wireguard порт до нашего сервера.

    Android client

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

    Padavan + Entware

    Для работы Entware на прошивке Padavan нужна USB флешка. Как ставить entware написано в padavan wiki.

    Ставим пакет wireguard-go: ` opkg install wireguard-go `. Теоретически можно использовать утилиту ` wg-quick ` для настройки интерфейса и маршрутизатора, но у меня оно почему-то правильно не заработало. В принципе wg-quick — это простой bash скрипт, можно было и разобраться что именно не работает, но разбираться я не стал.

    Итак настраиваем wireguard вручную как написано на официальном сайте. Создаем файл конфигурации /opt/etc/wireguard/wg0.conf. Я закоментировал строчку «Address=. » конфигурации wg0.conf из секции [Interfaces]. Это потому что по какой-то причине ` wg setconf ` ее не принял, ну и ладно, настроим адрес вручную (командой ip address add dev wg0 10.253.1.3/24 ).

    wireguard-go wg0
    ip address add dev wg0 10.253.1.3/24
    wg setconf wg0 /opt/etc/wireguard/wg0.conf
    ip link set up dev wg0
    ip route add 192.168.2.0/24 dev wg0 src 192.168.3.1
    iptables -t filter -A INPUT -i wg0 -j ACCEPT
    iptables -t filter -A FORWARD -i wg0 -j ACCEPT

    Маршрут ` ip route add 10.253.1.0/24 dev wg0 src 10.253.1.3 ` добавился сам, поэтому ручками добавляем только маршрут для 192.168.2.0/24 .

    Переопределяем iptables policy по умолчанию для цепочек INPUT, FORWARD таблицы filter — у меня значения по-умолчанию были DROP, с ними маршрутизация из локальной сети 192.168.2.0/24 в 192.168.3.0/24 (в мою локальную сеть) не работала.

    Все эти команды для запуска и остановки wireguard сохраняем в /opt/etc/init.d/S50wireguard — теперь должно автоматически запускаться при старте маршрутизатора.

    Настройка iptables

    После некоторых обновлений конфигурации маршрутизатора (например обновление правил белых/черных списков по mac адресу — web интерфейс маршрутизатора -> Advanced settings -> Firewall -> MAC Filter) маршрутизатор с прошивкой padavan сбрасывает правила iptables. Чтобы все продолжало работать в прошивке есть файлик `/opt/etc/init.d/S10iptables` (softlinkg) -> `/opt/bin/update_iptables.sh`, который запускается после обновления конфигурации. В него заносим все правила iptables — у меня там правила для wireguard и правила, которые я настроил для прозрачного использования tor в локальной сети, который настроил по этой инструкции.

    Доступ к роутеру из VPN

    Поскольку на неподконтрольном роутере нашей основной сети таблицу маршрутизации мы настроить не можем, то не можем и получить к нему доступ из VPN напрямую. Чтобы получить web доступ к роутеру можно добавить nginx reverse proxy configuration. Можно поставить на любой хост из основной локальной сети — но логично поставить на сервер. Например на порту 8081. Ссылку на файл конфигурации надо добавить в директорию /etc/nginx/sites-enabled — обычно сам файл настроек помещают в /etc/nginx/sites-available/ а в sites-enabled создают символическую ссылку` ln -s /etc/nginx/sites-available/local ./ `.

    Перезагружаем конфигурацию nginx на сервере: ` sudo systemctl reload nginx `.

    Источник

    Как безопасно соединить две сети через интернет?

    Допустим, есть два офиса. Оба места имеют свои собственные быстрые подключения к и нтернету. Как объединить эти две сети так, чтобы каждый компьютер мог видеть другой компьютер?

    Нужен ли контроллер домена, или необходимо сделать это с помощью рабочих групп?

    Очевидным решением кажется VPN, но можно ли реализовать VPN только на маршрутизаторах? Могут ли компьютеры в сети не иметь соответствующей конфигурации?

    Ответ 1

    1. Минимизация трафика через VPN .
    2. Безопасность VPN (т. е . использование правильного типа VPN) .
    3. Интеграция систем через VPN (например, межподсетевой просмотр сети).

    Ответ 2

    Стандартным решением является использование VPN между двумя маршрутизаторами, и вы настраиваете маршрутизацию так, чтобы весь трафик между локальными сетями проходил через VPN. Домены/рабочие группы на самом деле совсем не связаны. Более важной информацией будет то, какой тип маршрутизаторов установлен на обоих сайта х и могут ли они создавать L2TP, PPTP или другие зашифрованные туннел и и ли на них установлена стандартная ОС, например Linux, на которую можно установить программное обеспечение. Существует множество маршрутизаторов, которые уже поддерживают VPN-соединения. Даже некоторые домашние маршрутизаторы могут это делать, если вы установите пользовательскую прошивку. Вы можете создать VPN между вашими серверами, хотя правильная маршрутизация может быть немного сложной. Мне очень нравится OpenVPN в качестве решения, если у меня есть система, которая его поддерживает. Существует множество других хороших VPN-решений.

    Очевидным решением кажется VPN, но можно ли реализовать VPN только на маршрутизаторах? Могут ли компьютеры в сети быть без соответствующей конфигурации?

    Это полностью зависит от того, какой у вас тип маршрутизатора. Если ваш маршрутизатор – это компьютер под управлением Linux, то да. Если ваш маршрутизатор – это недорогой широкополосный маршрутизатор, то, возможно, ваше текущее оборудование может это сделать. Если ваше текущее оборудование не может этого сделать, вы, конечно, можете купить маршрутизаторы, которые это сделают.

    Клиентам не нужно ничего знать о VPN.

    Ответ 3

    Хотя «открытые» предложения – это здорово, если вы задаете этот вопрос, я полагаю, что вы вряд ли добьетесь успеха в их реализации.

    Избавьте себя от многих проблем и приобретите два маршрутизатора с возможностью VPN от таких производителей, как Linksys, Netgear, D-Link или даже Sonicwall. Их очень легко настроить, и они надежно соединят две сети.

    После этог о б удут ли компьютеры «видеть» друг друга – во многом зависит от используемой сети и того, как трафик проходит через VPN. Windows Workgroups – это широковещательные системы, которые могут мешать «сетевому соседству», показывая все доступные системы. Использование файлов «lmhosts» может помочь в разрешении имен. Обычно для этого используются домены, а также доверительные отношения между доменами, если они разные. Благодаря центральной регистрации компьютеров (Active Directory и DNS ) о ни могут «находить» друг друга без настройки разрешения имен на каждой машине.

    Ответ 4

    VPN-туннели. Я предпочитаю VPN на основе аппаратного обеспечения, на уровне маршрутизатора. Существует множество маршрутизаторов, от очень дешевых до очень дорогих. На дешевой стороне находятся Linksys, DLINK, а на другой стороне – Cisco, sonicwall и другие.

    Дорогие маршрутизаторы позволяют больше конфигураций для маршрутизации и так далее.

    Вот в чем загвоздка. ваша VPN эффективна лишь настолько, насколько эффективны линии, поддерживающие туннели. Единственное – не пытайтесь загрузить групповую политику с контроллера домена на клиента, находящегося на другом конце света, по линии 512 КБ.

    Также старайтесь контролировать широковещательный трафик по всей сети, если оба сайта будут иметь разные подсети.

    Ответ 5

    Такая конфигурация используется уже много лет. Создайте VPN между сайтами. Затем включите протокол динамической маршрутизации для обмена сетевой информацией между сайтами. По моему опыту, маршрутизаторы будут иметь некий виртуальный канал Point-to-Point между собой, возможно, туннель GRE или L2TP. Протоколы динамической маршрутизации обращаются с этим соединением как с любым другим интерфейсом. Существуют некоторые специфические для конкретного производителя/реализации вопросы настройки конфигурации VPN – обратитесь к документации, организации поддержки производителя или опишите, какие продукты вы используете. Один ключевой момент, связанный с проектированием сети , – вам нужно рассматривать все сайты как часть одной большой сети. Например, вы не можете настроить все удаленные сайты на подсеть 192.168.1.0. Скорее, вы сможете заставить такой «кошмар» работать с помощью NAT и очень запутанной конфигурации маршрутизации, но гораздо проще спроектировать все сайты как часть одного сетевого пространства.

    Мы будем очень благодарны

    если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

    Источник

    Читайте также:  Прога проверки скорости интернета
Оцените статью
Adblock
detector