это не действует как шлюз, а как локальная сеть через Интернет?
Почти все программное обеспечение VPN может действовать таким образом. На самом деле, это обычно по умолчанию. Просто не настраивайте сервер для предоставления маршрута по умолчанию, и все - вы получаете VPN, который работает только для его конкретной подсети.
Тем не менее, если вы хотите сетку:
Обычная рекомендация - Tinc (возможно, даже ветка 1.1). Кажется, что он способен устанавливать произвольные топологии сетки с ретрансляцией на уровне IP или Ethernet (режим коммутации). Широковещание поддерживается (многоадресные пакеты обрабатываются как широковещательные).
ZeroTier находится где-то посередине: он пытается использовать прямые соединения всякий раз, когда это возможно (даже пробивая через NAT), но в противном случае возвращается к ретрансляции через супер узлы. Можно разместить свой собственный контроллер и суперузел, хотя это редко требуется. Поддерживается многоадресная и широковещательная рассылка (с ограничениями).
Тогда есть OpenVPN, который является довольно строго клиент-серверным. (Он имеет флаг «клиент-клиент», но не имеет возможности пробивать NAT). Регулярное сервер OpenVPN звучит как было бы прекрасно работать для вас, но если вы установите его в режиме крана (в отличие от чана по умолчанию), то он будет передавать произвольный трафик Ethernet вместо того , чтобы ограничиваться IP.
(Все вышеперечисленное работает в Linux, FreeBSD и Windows.)
Наконец, в зависимости от операционной системы, существует множество легких, вручную настроенных типов туннелей - такие , как GRE или L2TP. Они становятся несколько громоздкими по мере роста сети, так как вам приходится настраивать каждую двухточечную связь вручную (без дырок, без шифрования, если вы не добавляете IPsec), но ... они в основном являются канальной сетью ,
Обратите внимание, что, вероятно, не существует какого-либо программного обеспечения, поддерживающего все платформы, поэтому в некоторых случаях вам просто нужно маршрутизировать пакеты между 2 или 3 сетями. Например, вы можете запустить Tinc на ПК, но подключиться через OpenVPN с iPhone. Это нормально, если на сервере OpenVPN есть маршрут для подсети Tinc, и наоборот. (То же самое касается маршрутизации между "локальной сетью через Интернет" и вашей обычной локальной сетью.)