LINUX.ORG.RU
ФорумAdmin

Как соединить две сети

 , ,


1

3

Ищу простое решение вопроса по удаленному доступу к микроконтроллерам на даче из дома. Дома статический белый IP. Роутер на oenWRT сделан из Orange Pi PC (т.е. практически без ограничений по мощности и памяти для различных задач) На даче такой же роутер, но интернет через двух провайдеров с динамическими серыми адресами, сведенные в кучу посредством mwan3. Есть ли возможность как то достучаться до микроконтроллеров на даче с помощью VPN или еще чего то, установленного на роутеры. Покупка статического белого IP у одного из провайдеров будет запасным планом.



Последнее исправление: maxcom (всего исправлений: 1)
Ответ на: комментарий от nebularia

Кажется вроде простым. Но сразу хотел бы уточнить что сам роутер на даче (Orange Pi PC) получает интернет от 3G USB модема и от 4G Wi-Fi роутера. Второй канал основной там безлимитный тариф, а на 3G переключается если отваливается второй канал. Т.е получается что в основное время основной роутер (Orange Pi PC) сидит за 4G Wi-Fi роутером. Прокатит такое? Или надо будет держать 3G канал постоянно включённым?

Andrey-
() автор топика
Ответ на: комментарий от Andrey-

Да, конечно. При отвале VPN просто пойдёт через 3G. Wireguard отлично работает например при переключении с Wi-Fi на мобильный интернет в телефоне, а это по сути то же самое.

nebularia ★★★
()
Ответ на: комментарий от nebularia

Извиняюсь за назойливость, но прогресс идет быстро и за ним не поспеваешь. Wireguard последний раз настраивал ОЧЕНЬ давно, но тогда в нем необходимость отпала и так и не освоил. Сейчас в репозитории вывалились пакеты wg-installer-server и wg-installer-client Сервер ставлю на домашний статический IP, а клиента на дачный серый IP Все верно?

Andrey-
() автор топика
Ответ на: комментарий от Andrey-

Вот тут не подскажу, не знаю как на OpnWRT сейчас. Может быть уже встроено и нужен только luci-app-wireguard.

Но в целом Wireguard не имеет отдельных клиентских и серверных версий, на обеих сторонах один и тот же софт. Возможно это пресеты какие-то.

nebularia ★★★
()
Ответ на: комментарий от Anoxemian

Все течет, все меняется https://downloads.openwrt.org/releases/22.03.2/packages/arm_cortex-a7_neon-vfpv4/packages/ Для версии 22.03.2 ищи на этой странице по wg-installer

А для старой версии 19.07.10 ищи на следующей странице по wireguard https://archive.openwrt.org/releases/19.07.10/packages/arm_cortex-a7_neon-vfpv4/base/

Я сам удивился, так как прошлый раз когда пытался ставить wireguard, то не было отдельно для сервера и клиента.

Вот что мне сейчас на моей версии 22.03.2 выдает по wireguard (не считая яэыковых пакетов luci)

wireguard-tools

kmod-wireguard 5.10.146-1

luci-app-wireguard

uci-proto-wireguard

wg-installer-client

wg-installer-server

wg-installer-server-hotplug-babeld

wg-installer-server-hotplug-olsrd

Надо будет еще разбираться что такое

wg-installer-server-hotplug-babeld

wg-installer-server-hotplug-olsrd

Andrey-
() автор топика
Последнее исправление: Andrey- (всего исправлений: 6)

Ищу простое решение вопроса по удаленному доступу к микроконтроллерам на даче из дома.

У меня так: дома ASUS, на даче Mikrotik. Дома провода, на даче МТС. На домашнем OpenVPN-сервер, на дачном OpenVPN-клиент. В микротик воткнуты модем, видеокамеры и компутер (ну и WiFi для жены/детей/гостей, когда приезжают), запитан отдельной линией с UPS.

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

Из проблем: (1)Они таки теряют связь между собой иногда. Поставил на автоматическую перезагрузку по утрам оба - каждое утро заново договариваются. (2)В режиме онлайн видеокамеры кино с дачи таки плохо показывают, не вывозит МТС-модем FullHD.(3)Главная проблема - лето и выходные. Совсем всё плохо, когда тучи шашлычников с мобилками приезжают.

Toxo2 ★★★★
()
Последнее исправление: Toxo2 (всего исправлений: 2)
Ответ на: комментарий от Toxo2

С дачи домой ходить не проблема. Дома статический белый IP В сети на даче 3 ESP, которые управляют поливом, светом и сигнализацией. Как бы и так все настроено, но хотелось бы иметь доступ. Буду копать wireguard. Поставь на даче второй модем и именно 3G. В выходные как раз 3G может лучше работать. В камерах посмотри поток поскромнее. Хотя если камеры FullHD, то sub потока наверно нет. У меня хики по 5 мп и у них есть потоки 640х360. Для просмотра хватает.

Andrey-
() автор топика
Ответ на: комментарий от Andrey-

luci-app-wireguard

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

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

Или можно вообще для потестить поставить на ПК сначала. Самая сложная часть, пожалуй, будет с AllowedIPs, маршрутами и файерволами.

NyXzOr ★★★★
()
Последнее исправление: NyXzOr (всего исправлений: 2)

Дома статический белый IP. Роутер на oenWRT

Есть ли возможность как то достучаться до микроконтроллеров на даче с помощью VPN или еще чего то, установленного на роутеры.

Да. На даче VPN-клиент, дома сервер. Просто банальная маршрутизация. Единственный момент - если это будет OpenVPN, то там надо чуть поприседать с конфигом OpenVPN, чтобы была видна сеть за VPN-клиентом. Ну и сети домашняя и дачная должны быть разные (диапазоны IP в смысле).

AS ★★★★★
()
Ответ на: комментарий от AS

то там надо чуть поприседать с конфигом OpenVPN

Чего там приседать-то ? Одна строчка в конфиге если речь только про один сервер и один клиент или две если клиентов несколько :)

anc ★★★★★
()
Ответ на: комментарий от anc

Чего там приседать-то ?

Ну надо знать, что с OpenVPN почему-то мало одной системной маршрутизации, и знать, что это описано в документации. И найти там эту самую строчку.

или две если клиентов несколько

Вроде там так же можно сеть указать целиком. Но я эту строчку не помню. :-)

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 2)
Ответ на: комментарий от AS

и знать, что это описано в документации. И найти там эту самую строчку.

Ну это уже другой вопрос :)

или две если клиентов несколько

Вроде там так же можно сеть указать целиком. Но я эту строчку не помню. :-)

Я про
1. iroute в любом случае
2. route тоже
3. А если клиентов несколько то ещё push “route…
Понял, что соврал, строчек таки 2 или 3 :)

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от anc

3. А если клиентов несколько то ещё push “route…

«push route», как раз, задаёт системную маршрутизацию, тут всё понятно. А вот результат работы iroute (да?) какой-то внутренний получается.

AS ★★★★★
()
Ответ на: комментарий от AS

А вот результат работы iroute (да?) какой-то внутренний получается.

Ага, так и есть. Смотрите, на сервере у нас один интерфейс ovpn (например tun0), соответственно для роутинга к клиентам и между ними мы использовать стандартные ip route и т.д. не можем, этим занимается сам демон ovpn. Так вот в случае если за клиентом есть какая-то/какие-то подсети ему об этом надо рассказать, для этого в файлике ccd соответствующего клиента прописываются iroute, одна строка одна подсеть. Например за клиентом clname находятся сети 10.10.10.0/24, 10.17.0.0/24, 192.168.0.0/16. Создаем в каталоге ccd файл с именем clname и в него пишем:

iroute 10.10.10.0 255.255.255.0
iroute 10.17.10.0 255.255.255.0
iroute 192.168.0.0 255.255.0.0
Вот теперь ovpn знает, что пакеты для данных сетей надо отправлять клиенту clname.
Но это знает только ovpn. Другие клиенты про эти маршруты не знают. Поэтому добавляем в конфиг ovpn строчки:
push "route 10.10.10.0 255.255.255.0"
push "route 10.17.10.0 255.255.255.0"
push "route 192.168.0.0 255.255.0.0"
Теперь при соединении клиентов им будут пушится эти маршруты. Клиенту clname правда тоже, но на это можно забить так как просто с ошибкой полетят и все (у него же и так в системе эти маршруты есть). Альтернативой будет прописывать все эти одинаковые push... каждому клиенту в ccd но это же тоскливо, да и менять если что не удобно. Однако если не всем клиентам нужны все сети, придется прописывать избирательно каждому клиенту в ccd.

Теперь у нас клиенты умеют стучатся до перечисленных выше сетей, но не сама система на которой запущен сервер. Поэтому третья часть марлезонского балета или добавляем маршруты с систему на которой запущен сервер. Добавляем в основной конфиг ovpn:
route 10.10.10.0 255.255.255.0
route 10.17.10.0 255.255.255.0
route 192.168.0.0 255.255.0.0
После старта сервера в таблице роутинга main появятся выше перечисленные маршруты завернутые на интерфейс ovpn(например tun0).

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 2)
Ответ на: комментарий от shaesnow

Вот об этом и речь. Хочется найти минимально простое решение для выбора тунеля. Напомню что белый статический IP у меня дома, а на даче динамических серых IP от сотовых операторов. С дачи домой зайти не проблема, да и сильно не за чем. Если все же использовать wireguard, то может поставить на даче сервер, а дома клиента ?????? В идеале хотелось бы и с телефона заходить в локальную сеть на даче, но не критично.

Andrey-
() автор топика
Ответ на: комментарий от shaesnow

wireguard подойдет если серый IP.

Насколько мне известно, wireguard нужен хотя бы один белый IP. Если есть только серые IP, то либо не Wireguard, либо костылить с пробросами портов (STUN).

NyXzOr ★★★★
()
Ответ на: комментарий от Andrey-

Если все же использовать wireguard, то может поставить на даче сервер, а дома клиента ??????

Не принципиально, Wireguard работает симметрично. Деление клиент-сервер условное. Кто ждёт соединений, тот сервер. Кто создает соединение, того обозвать клиентом. Потому что он с серым IP и к нему не достучаться. Если указан Endpoint и PersistentKeepalive (поддерживание соединения), то можно считать, что это клиент.

При этом два условных сервера без проблем (при наличии белых адресов) можно соединить между собой и как тогда считать, кто из них клиент, а кто сервер?

В идеале хотелось бы и с телефона заходить в локальную сеть на даче, но не критично

Wireguard, OpenVPN, Zerotier, Tailscale - всё это можно поставить и на телефон.

NyXzOr ★★★★
()
Последнее исправление: NyXzOr (всего исправлений: 1)
Ответ на: комментарий от NyXzOr

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

Я все верно понимаю?

Andrey-
() автор топика
Ответ на: комментарий от Andrey-

Да, верно. В веб-интерфейсе OpenWRT при добавлении пиров нужная для этого галочка называется «Маршрутизировать разрешенные IP-адреса» (Route Allowed IPs).

А интерфейс можно просто добавить в зону LAN. О том что можно так делать цитата: «Assign VPN interface to LAN zone to minimize firewall setup.» https://openwrt.org/docs/guide-user/services/vpn/wireguard/server

NyXzOr ★★★★
()
Последнее исправление: NyXzOr (всего исправлений: 2)
Ответ на: комментарий от shaesnow

зачем ему wireguard если у него белый IP? wireguard подойдет если серый IP. что то другое ему нужно.

Невозможно связать две сети посредством VPN, если нет хотябы одного реального IP. Он может быть на одной из сторон, может быть вообще на отдельно взятом VPS где-нибудь, но должна быть доступная точка, куда будут цепляться клиенты из-за NAT. И это вообще никак не относится к выбору технологии VPN.

AS ★★★★★
()
Ответ на: комментарий от shaesnow

Как я уже писал в первом посте, покупка статического IP будет запасным планом. Как я уже понял настройка на новых версиях Openwrt (сейчас у меня 22.х.х) стала отличаться от предыдущих версий. Может общими усилиями и по мере наличия времени сделаем некое руководство по установке wireguard на новые версии Openwrt Первое что делаем это устанавливаем пакеты wireguard-tools

kmod-wireguard 5.10.146-1

luci-app-wireguard

uci-proto-wireguard

wg-installer-server

У нас еще пара пакетов, которые по всей видимости надо установить на сервер

wg-installer-server-hotplug-babeld

wg-installer-server-hotplug-olsrd

Там находятся скрипты запуска, которые устанавливаются в /etc/hotplug.d/net

99-mesh-babeld и 99-mesh-olsrd

Для начала надо понять надо ли их ставить, оба или один, если один то какой и за что они отвечают.

99-mesh-babeld имеет следующе содержание

#!/bin/sh

check if wireguard

if [ «${DEVTYPE}» != «wireguard» ]; then exit 0 fi

check if correct naming

slicedint=$(echo «$INTERFACE» | cut -c1-3) if [ «${slicedint}» != «wg_» ]; then exit 0 fi

if [ «${ACTION}» = «add» ]; then ubus call babeld add_interface ‘{«ifname»:’"«$INTERFACE»"‘}’ fi

99-mesh-olsrd имеет дополнительное условие, видимо связанное с каким то удалением

#!/bin/sh

check if wireguard

if [ «${DEVTYPE}» != «wireguard» ]; then exit 0 fi

check if correct naming

slicedint=$(echo «$INTERFACE» | cut -c1-3) if [ «${slicedint}» != «wg_» ]; then exit 0 fi

if [ «${ACTION}» = «add» ]; then ubus call olsrd add_interface ‘{«ifname»:’"«$INTERFACE»"‘}’ fi

if [ «${ACTION}» = «remove» ]; then ubus call olsrd del_interface ‘{«ifname»:’"«$INTERFACE»"‘}’ fi

Если кто знает, разъясните, а пока буду искать в сети

Andrey-
() автор топика
Ответ на: комментарий от Andrey-

У нас еще пара пакетов, которые по всей видимости надо установить на сервер

Мне хватает этого примерно для тех же целей. Правда, у меня роутер не из Orange.

opkg list-installed | grep wireguard
kmod-wireguard - 5.10.161-1
luci-app-wireguard - git-23.018.72712-6d712c3
luci-i18n-wireguard-ru - git-22.316.76227-771eb78
luci-proto-wireguard - git-22.327.45657-14403fe
wireguard-tools - 1.0.20210424-3
NyXzOr ★★★★
()
Ответ на: комментарий от NyXzOr

С какими характеристиками железо? У меня есть старая железка с опенврт с 128 мб флешь и 128 памяти проц 700 MHz так там то же пакеты wireguard разделены на сервер и клиента

Andrey-
() автор топика
Ответ на: комментарий от Andrey-

У меня тоже есть эти пакеты в репозитории. Не знаю для чего они. Наверно, для автоматизированной настройки через ssh.

Smartbox Turbo+

NyXzOr ★★★★
()
Последнее исправление: NyXzOr (всего исправлений: 2)
Ответ на: комментарий от NyXzOr

Пока не буду ставить эти пакеты. Часто пишут что надо задавать адреса типа 10.0.0.1/24 Но тут пишут про адрес 192.168.9.1/24 https://openwrt.org/docs/guide-user/services/vpn/wireguard/server

У меня и дома и на даче адрес роутера 192.168.0.1 Сделать дома 192.168.0.1 на даче 192.168.1.1 или и так сойдет? Сеть для wg делать 192.168.2.1 или 10.0.0.1 ?

Andrey-
() автор топика
Ответ на: комментарий от Andrey-

Дано: роутер1 дома с белым адресом 22.33.44.55, за ним сеть 192.168.10.0/24; роутер2 на даче с серым адресом, за ним сеть 192.168.20.0/24; андроид-смартфон мобильным интернетом; отдельный ПК_work не за этими роутерами (например, на работе). Настройка через веб-интерфейс.

  1. Настройка на роутере1:

1.1. Устанавливаем luci-app-wireguard.

1.2. Создаем интерфейс wireguard на роутере1, генерируем пару ключей. Публичный ключ копируем куда-нибудь, его нужно будет передать на клиентов: роутер2, телефон, ПК_work.

1.3. Задаем ListenPort, например, 44444 и IP адрес интерфейса 172.16.30.1/27 (можно придумать любой из предназначенных для локальных сетей).

1.4. На вкладке firewall settings назначаем зону lan

1.5. На вкладке Peer нужно добавить пиры для каждого устройства, т.е. 3

1.6. Первый пир будет для роутера2, генерируем ключи, сгенерированный приватный и публичный ключ нужно передать на роутер2. AllowedIPs задаем 172.16.30.2/32, 192.168.20.0/24. Ставим галочку Route Allowed IPs.

1.7. Второй пир для смартфона аналогично, но AllowedIPs будет 172.16.30.3/32.

1.8. Третий пир для ПК_work аналогично, но AllowedIPs будет 172.16.30.4/32.

1.9. Сохраняем, идем в настройки Firewall, там нужно на wan открыть порт UDP 44444.

  1. Настройка на роутере2:

2.1. Устанавливаем luci-app-wireguard.

2.2. Создаем интерфейс wireguard на роутере2, вставляем приватный и публичный ключ из шага 1.6.

2.3. Вписываем IP Addresses 172.16.30.2/27, порт можно оставить пустым, будет назначен случайный.

2.4. На вкладке firewall settings назначаем зону lan

2.5. На вкладке Peer нужно добавить пир роутера 1. Вставляем Public Key из шага 1.2. Задаем AllowedIPs 172.16.30.0/27, 192.168.10.0/24. Ставим галочку Route Allowed IPs. Задаем Endpoint Host 22.33.44.55. Задаем Endpoint Port 44444. Задаем рекомендованное Persistent Keep Alive 25.

NyXzOr ★★★★
()
Последнее исправление: NyXzOr (всего исправлений: 2)
Ответ на: комментарий от NyXzOr
  1. Настройка на смартфоне:

3.1. Ставим официальный клиент

3.2. Жмем +, Создать с нуля.

3.3. Приватный ключ берем с шага 1.7.

3.4. Адреса 172.16.30.3/27.

3.5. Публичный ключ из шага 1.2.

3.6. Постоянное соединение 25 или 30.

3.7. Конечная точка 22.33.44.55:44444

3.8. Разрешенные IP-адреса 172.16.30.0/27, 192.168.10.0/24, 192.168.20.0/24

  1. Настройка на ПК_work (windows)

4.1. Ставим официальный клиент

4.2. Добавить пустой туннель (ctrl+N)

4.3. Вставляем примерно такой конфиг:

[Interface]
PrivateKey = из шага 1.8
Address = 172.16.30.4/27

[Peer]
PublicKey = из шага 1.2
AllowedIPs = 172.16.30.0/27, 192.168.10.0/24, 192.168.20.0/24
Endpoint = 22.33.44.55:44444
PersistentKeepalive = 30

Про ключи:

Можно заранее сгенерировать ключи в онлайн сервисах или командой wg genkey и wg pubkey. Зная приватный ключ можно сгенерировать публичный ключ. Зная публичный ключ не сгенерировать приватный. В мобильном и ПК приложении при вставке приватного ключа публичный ключ появляется автоматически.

Ещё есть такая утилита https://github.com/warner/wireguard-vanity-address для генерации «именных» ключей - для openwrt не очень нужно, так как можно добавлять описание пиров.

NyXzOr ★★★★
()
Последнее исправление: NyXzOr (всего исправлений: 1)
Ответ на: комментарий от Andrey-

Для проверки работы можно пинговать адреса самого VPN из сети 172.16.30.0/27. Также нужно смотреть настройки файерволов устройств (windows) в сетях 192.168.10.0/24, 192.168.20.0/24 - позволяют ли они доступ из других сетей, возможно временно отключить файерволл.

NyXzOr ★★★★
()
Ответ на: комментарий от NyXzOr

В общем сервер настроил пока только на вход с телефона. Перезапускаю интерфейс и доступ с телефона есть. Через несколько минут пропадает. Как я понимаю если приложение на телефоне закрыть, то и туннель закрывается. Зачем тогда ставить 25 или 30 ? 3.6. Постоянное соединение 25 или 30.

Andrey-
() автор топика