LINUX.ORG.RU
ФорумAdmin

Как запретить трафик между VPN клиентами SoftEther VPN сервера?

 , , , ,


0

3

Например, OpenVPN имеет опцию client-to-client.

Если опция client-to-client включена, то сервер OpenVPN передает клиент-клиент пакеты внутри, не отправляя их на уровень IP хоста (т.е. к ядру). Сетевой стек хоста вообще не видит эти пакеты:

           .-------------------.
           | IP Layer          |
           '-------------------'

           .-------------------.
           | TUN device (tun0) |
           '-------------------'

           .-------------------.
           | OpenVPN server    |
           '-------------------'
             ^           |
          1  |           v  2   
 .----------------.  .----------------.
 | Client a       |  | Client b       |
 '----------------'  '----------------'

Если же опция client-to-client выключена, то пакеты от клиента к другому клиенту должны пройти через IP слой (iptables, таблицу маршрутизации и т.д.) хоста сервера OpenVPN:

           .-------------------.
           | IP Layer          |  (4) routing, firewall, NAT, etc.
           '-------------------'      (iptables, nftables, conntrack, tc, etc.)
              ^          |
          3   |          v  5
           .-------------------.
           | TUN device (tun0) |
           '-------------------'
             ^           |
          2  |           v  6  
           .-------------------.
           | OpenVPN server    |
           '-------------------'
             ^           |
          1  |           v  7  
 .----------------.  .----------------.
 | Client a       |  | Client b       |
 '----------------'  '----------------'

Остается только заблокировать клиент-клиентские пакеты, используя iptables:

iptables -I FORWARD -i tun0 -o tun0 -j DROP


В случае SoftEther VPN сервера я пытаюсь блокировать клиент-клиентские пакеты, используя iptables:

iptables -I FORWARD -i tap_soft -o tap_soft -j DROP

Но клиенты по прежнему обмениваются пакетами без проблем.

Как запретить трафик между клиентами SoftEther VPN сервера? При этом каждый VPN клиент должен иметь возможность обмениваться пакетами с VPN сервером.

Имеется ли у SoftEther VPN сервера опция, которая аналогична опции client-to-client у OpenVPN сервера?

оффтоп Что бы все так описывали проблемы. четко и подробно. /оффтоп
По теме, не знаю, надо в код лезть. Но на всякий случай уточню, это родной «SoftEther» ? А то он и в ovpn умеет и другие vpn.

anc ★★★★★
()

Если я не ошибаюсь, это называется SecureNAT. У меня, когда я включал все это дело, клиенты были изолированы друг от друга.

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

это родной «SoftEther»?

SoftEther - это мультипротокольный VPN сервер, он умеет такие VPN:

* L2TP
* L2TP over IP/sec
* OpenVPN
* SoftEther VPN
* и другие

В моем случае к нему подключаются клиенты L2TP over IP/sec и OpenVPN, если Вы об этом.

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

Это tap?

Да, на хосте SoftEther VPN сервера именно tap адаптер, но OpenVPN клиенты на своих хостах могут иметь и tun адаптер.

Тогда ebtables

Хотелось бы все-таки выключить/выключить какую-то опцию, чтобы использовался IP Layer операционной системы, а не IP Layer VPN сервера.

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

это называется SecureNAT

У меня все это построено через Local Bridge, и включение SecureNAT еще больше отдалит все это дело от ядра ОС и, к тому же, сильно увеличит нагрузку на ЦП и ОЗУ.

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

Тогда ebtables.

Попробовал вот так:

apt-get install -y ebtables
ebtables -P FORWARD DROP
ebtables -I FORWARD -i tap_soft -o tap_soft -j DROP

Не помогло. Пакеты от клиента к клиенту все равно проходят.

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

Ваш вопрос правда интересный и в целом востребованный. К сожалению ответа на него больше предложить не могу :( Кроме как покорырять исходники softether. По отдельности оно все решаемо, а вот в составе softether... Если найдете решение отпишите. Может на будущее кому-то понадобиться.

anc ★★★★★
()

До конца не понятно, чего надо в конечном итоге сделать. Если задача стоит в том, что бы клиенты просто в инет через vpn ходили, и были изолированы друг от друга, надо просто securenat включить без всяких бриджей. Просто создали новый виртуальный хаб, завели пользователей, включили snat, настроили dhcp и все.

looper
()
12 февраля 2020 г.
Ответ на: комментарий от solipse

А если попробовать в конфиге uint deny_routing 1

В программе SoftEther VPN Server Manager в Description сказано:

If you set this option to non-zero value, then any VPN Sessions in Routing Mode will not be granted to establish, regardless of the setting of existing security policy of the user. No one will be able to connect to the Virtual Hub for routing purpose.

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

Но я все-равно попробовал, и ответ - нет. Это не помогло.

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

До конца не понятно, чего надо в конечном итоге сделать. Если задача стоит в том, что бы клиенты просто в инет через vpn ходили, и были изолированы друг от друга, надо просто securenat включить без всяких бриджей. Просто создали новый виртуальный хаб, завели пользователей, включили snat, настроили dhcp и все.

На хосте с VPN сервером есть приватный веб-сайт. В конечном итоге необходимо чтобы:

  • К VPN серверу могло подключаться множество VPN клиентов по разным VPN протоколам.
  • Приватный веб-сайт должен быть доступен внутри VPN сети для всех VPN клиентов.
  • Весь трафик VPN клиентов не должен проходить через VPN сервер.
  • VPN клиенты не должны знать о существовании друг-друга и не должны иметь возможность обмениваться трафиком между собой.
  • SecureNAT недопустим из-за высокой нагрузки на ЦП и ОЗУ. Я про это выше писал.
pospelov
() автор топика
Ответ на: комментарий от anc

поковырять исходники softether

Открыли его исходники, но они на чистом C - это слишком сложно для нас.

pospelov
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.