LINUX.ORG.RU
ФорумAdmin

Несколько странных вопросов о OpenVPN

 , ,


0

1

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

Ах да, мой минимальный use case такой: нужно соеденить 2 клиента/PC (допускаю что 1 из них на шиндовсе; во избежания казусов в будущем), у которых есть инет, но нет белого IP.

Пока что остановился на связке udp+tun. Все работает (в тестовом режиме), клиенты подключаются к сервачку, пакетики ходят. Все довольны. Но..

Вопросы:

  • для каждой (под)сети нужен свой порт. ну как-то так
    port            1194
    server          10.0.0.0 255.255.255.128
    
    Вопрос: это что же получается что на одном хосте я не запущу одновременно больше чем ~2**16-2**10 «впн сетей»? Или все-таки есть какой то trick? А может можна юзать только один порт? а то держать все открытым наружу как то стремно..
  • для каждой (под)сети нужен свой tunX. Здесь говорится что все должно быть OK. Но у меня опять чтото не вяжется
    vs tmp # ifconfig | grep -A1 tun
    tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
              inet addr:10.254.254.129  P-t-P:10.254.254.130  Mask:255.255.255.255
    --
    tun1      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
              inet addr:10.0.0.1  P-t-P:10.0.0.2  Mask:255.255.255.255
    vs tmp # 
    
    Вопрос: так можна как нибуть обойтись одним tun-девайсом или нет? Если нет, то есть ли какой-то лимит на количество этих «нод»?
  • Допустим у меня в «сети» есть 2 клиента + «сервер».
    Вопрос: сколько таких «сетей» потянет например Amazon Extra Large Instance? Может нужно что-то «подкрутить» в конфиге OpenVPN (и не только OpenVPN) чтобы выжать максимум?
  • В процессе гугления нашел такой конфиг. В нем все включено.
    Вопрос: какие видите +/- этого подхода?
  • Сервер как правило получает первые 2 IP в соответстующей сети (10.0.0.1, 10.0.0.2).
    Вопрос: есть ли смысл это менять? Если да — то как (гугл не колется)?
  • В сети есть куча вопросов об auto reconnect после обрыва связи. Как я понял есть вариант с пингом и жонглирование keepalive/ping/ping-restart и тому подобными опциями?
    Вопрос:а у Вас есть годная success story по этому вопросу?
  • У меня в тесте сервер в обоих конфигах юзает тот же ключ
    vs openvpn # grep -e ^key -e ^cert -e ^crl cm*
    cm1.conf:cert                   certs/vpn.cert
    cm1.conf:key                    keys/vpn.key
    cm1.conf:crl-verify             crl/crl.pem
    cm2.conf:cert                   certs/vpn.cert
    cm2.conf:key                    keys/vpn.key
    cm2.conf:crl-verify             crl/crl.pem
    vs openvpn # 
    
    Вопрос: это правильно или нужно генерить отдельные ключи?
  • Допустим ноут с настроеным OpenVPN и ключами (без пароля(-ей)) попадает в руки плохому, технически обученному человекузлобному хакеру. Ключи все еще валидны так как хозяину ноута пофих на ключи ведь у него пропал ноут.
    Вопрос: что он может сделать с остальной инфрастуктурой (одна сетка уже ему доступна)?

Буду благодарен за любые подсказки.

PS1: тестовый конфиг сервера
PS2: просьба сильно, не пинать я еще? не сетевик/админ.

★★★★★

Последнее исправление: Klymedy (всего исправлений: 9)

это что же получается что на одном хосте я не запущу одновременно больше чем ~2**16-2**10 «впн сетей»?

На первый взгляд как то так. Но это не нужно.

есть ли смысл это менять?

Смотря для чего. В общем случае - нет.

auto reconnect после обрыва связи
у Вас есть годная success story по этому вопросу?

бред какой-то.

это правильно или нужно генерить отдельные ключи?

Для теста сойдет. И в принципе работоспособно. Но ты должен понимать, что потеря ключа - потеря всех серверов.

что он может сделать с остальной инфрастуктурой (одна сетка уже ему доступна)?

дело не в vpn. То же самое - приди ты в банк и воткнись в розетку. После потери ноута положено отозвать серт.

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

Но это не нужно

мне нужно. как нибуть можна добится больше чем озвученное число?

бред какой-то.

почему бред?

Для теста сойдет. И в принципе работоспособно. Но ты должен понимать, что потеря ключа - потеря всех серверов.

это понятно. перефразирую вопрос: если я нагенерю отдельные ключи для каждого сервера openvpn повысит ли это безопаснось? а как скажется на производительности/загруженности сервера?

После потери ноута положено отозвать серт.

это понятно. но допустим этого по какой-то причине еще не случилось. чем физическому серверу/инфрастуктуре это грозит (в худшем случае)?

ZuBB ★★★★★
() автор топика

zgen, mky, если не сложно мож посоветуете чтонить по вопросам которые меня интересуют

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

мне нужно. как нибуть можна добится больше чем озвученное число?

не путай теорию с практикой. хочешь ответ - иди читай книжки.

почему бред?

потому что этой проблемы нет, либо я не в курсе о такой, что openvpn сам не реконнектится, либо я не понял эту проблему.

если я нагенерю отдельные ключи для каждого сервера openvpn повысит ли это безопаснось?

да.

а как скажется на производительности/загруженности сервера?

никак.

чем физическому серверу/инфрастуктуре это грозит (в худшем случае)?

это вопрос не в контексте vpn.

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

мне нужно. как нибуть можна добится больше чем озвученное число?

не путай теорию с практикой. хочешь ответ - иди читай книжки.

неужели так тежело ответить «это не возможно в принципе» или «возможно[, иди гугли 'openvpn x+y+z']»

еще я немного перефразировал вопрос №1.

для каждой (под)сети нужен свой порт. ну как-то так

port            1194
server          10.0.0.0 255.255.255.128
Вопрос: это что же получается что на одном хосте я не запущу одновременно больше чем ~2**16-2**10 «впн сетей»? Или все-таки есть какой то trick?

>>>>>А может можна юзать только один порт? а то держать все открытым наружу как то стремно..

По тому что выделено болдом можеш дать ответ по типу «да/нет»?

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

нужен свой tunX

Нужен, как иначе, P-t-P сетевое соединение, сетевой интерфейс нужен. Ограничение на число tun-интерфейсов, наверное, есть, нужно смотреть исходники ядра. Конечно, можно написать свой OpenVPN сервер, который не создаёт tun-интерфейсы, а сам маршрутизирует и фильтрует трафик между VPN-клиентами.

сколько таких «сетей» потянет например Amazon Extra Large Instance

Сложный вопрос. Вобще openvpn в userspace, для достижения максимальной производительности, ИМХО, нужно всё засовывать в ядро. Но, правильнее, на мой взгляд, сразу строить схему с возможностью масштабирования, чтобы легко можно было увеличивать кол-во аппаратных серверов с OpenVPN-серверами.

для каждой (под)сети нужен свой порт

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

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

прежде всего спасибо за ответ.

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

как и написано в ОП

мой минимальный use case такой: нужно соеденить 2 клиента/PC (допускаю что 1 из них на шиндовсе; во избежания казусов в будущем), у которых есть инет, но нет белого IP.

умножьте этот case на 1000 (для начала). любые два соедененные компа не должны видеть других компов (тоесть подсети пересекатся не должны)

почему не хочется держать открытыми upd-порты?

мне как не админу немного стремно открыть все порты от 1к до 65к. Как айтишник я почти уверен что должен быть другой выход из данной ситуации

Конечно, можно написать свой OpenVPN сервер, который не создаёт tun-интерфейсы, а сам маршрутизирует и фильтрует трафик между VPN-клиентами.

писать свой OpenVPN не вариант :)

Ограничение на число tun-интерфейсов, наверное, есть, нужно смотреть исходники ядра.

Я пытался искать в сырцах, но пока безуспешно. Потом еще посмотрю/погуглю

Нужен, как иначе, P-t-P сетевое соединение, сетевой интерфейс нужен.

А нельзя никак извратится и заюзать только одну ноду (tun0, например) для всех подсетей? Может это возможно если использовать tap?

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

это я понимаю. но как строить такую схему пока что идей почти ноль.

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

А нельзя никак извратится и заюзать только одну ноду (tun0, например) для всех подсетей?

Это же «mode server». Поизучайте внимательно страничку http://openvpn.net/index.php/open-source/documentation/howto.html . Посмотрите примеры http://openvpn.net/index.php/open-source/documentation/examples.html . Особенно то что касается multi-client сервера (http://openvpn.net/index.php/open-source/documentation/howto.html#examples).

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

а как она называется? или хотя бы часть ее «имени»

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

спасибо, посмотрю

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

пусть это практика или обучение!

не распарсил

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

Вы о client-to-client

# Uncomment this directive to allow different
# clients to be able to "see" each other.
# By default, clients will only see the server.
# To force clients to only see the server, you
# will also need to appropriately firewall the
# server's TUN/TAP interface.

Мне как раз нужно что бы клиенты могли достучатся один до одного. (см ОП)

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

Конечно, можно написать свой OpenVPN сервер, который не создаёт tun-интерфейсы, а сам маршрутизирует и фильтрует трафик между VPN-клиентами.

писать свой OpenVPN не вариант :)

Не то, чтобы писать, а, скорее править существующий. Там есть «mode server», в этом случае не создаётся много tun-интерфейсов и если включить «client-to-client», то трафик будет ходить между клиентами не выходя из tun-интерфейса. Но, между всеми клиентами, нельзя будет сделать только попарную видимость. Потестируйте «mode server».

это я понимаю. но как строить такую схему пока что идей почти ноль.

Мне пока что вобще не понятно, как вы собрались строить свою схему, получается, что клиенты у вас настраиваются заранее кто с кем будет работать в паре?

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

И для тестирования linux клиенту можно назначить много разных ip-адресов и с каждого поднимать свой openVPN-тунель. Написание скриптов для автоматизации этого процесса и генерации тестового трафика улучшит ваши знания.

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

Мне пока что вобще не понятно, как вы собрались строить свою схему, получается, что клиенты у вас настраиваются заранее кто с кем будет работать в паре?

да. причем даже не настраиваются, а наперед известно кто и с кем будет работать. И «состав» пар скорее всего не будет изменятся никогда.

Там есть «mode server», в этом случае не создаётся много tun-интерфейсов и если включить «client-to-client», то трафик будет ходить между клиентами не выходя из tun-интерфейса. Но, между всеми клиентами, нельзя будет сделать только попарную видимость. Потестируйте «mode server».

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

  • сделать openvpn в openvpn`не (2й - только client-to-client) для соединения «пар»
  • как-то запретить видеть участникам пар другие компы.

Со 2м не подскажете?

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

не раньше, чем завтра - прости, не соображаю уже такие простыни читать.

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

Как правильно сказали, юзать надо server, разрешить всем клиентам видеть друг-друга, а затем попарно ограничить fw'ом на интерфейсе

zgen ★★★★★
()

"хочу свой сервер Hamachi с OpneVPN и сертификатами" :-)

когда-то я натыкался на такую штуку как n2n, возможно это то что надо

Spider_xp
()
Ответ на: комментарий от ZuBB

Много подсетей вам в любом случае не надо, вам нужно сделать так, чтобы клиенту всегда выдавался один и тот же ip-адрес. Если 100-1000 подключений, то mode p2p и правила в iptables + rp_filter. Там потестировать, определить границы и на каждую 1000 (условно) подключений свой отдельный аппаратный сервер.

Если хочется много-много подключений на одном сервере, то mode server и разбиратся со встроенным в OpenVPN фильтром пакетов. Но могут всплыть различные ограничения в системе, допустим число файловых дескрипторов. Вот пример использования фильтра http://backreference.org/2010/06/18/openvpns-built-in-packet-filter/ я сам никогда этот фильтр не использовал, так что особо подсказать не смогу.

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

прежде всего спасибо за ответ

попарно ограничить fw'ом на интерфейсе

примером или ссылкой поделитесь пожалуйста

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

спасибо за идеи. направление понял.

еще вопрос: насколько будут нагружать систему 500 правил для

iptables + rp_filter

?

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

примером или ссылкой поделитесь пожалуйста

Не вполне понял, примером чего, простите? Документацию к iptables выложить, или что?

iptables -A INPUT -i tunX -P DROP
iptables -A INPUT -i tunX -s x.x.x.x -d y.y.y.y -j ACCEPT

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

не сразу распарсил что fw == firewall

ZuBB ★★★★★
() автор топика

zgen, mky с Вашего позволения еще один вопрос:
учитывая что у меня

  • будут клиентские компьютеры и с windows в том числе (win xp и новее) и нужна стабильная работа openvpn под оффтопиком
  • будет множество клиентских подключений к серверу
  • архитектура допускает использование и tun и tap (КМК)

будет ли разница в нагрузке на систему при использовании tap? (сейчас я использую tun)

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

rp_filter это то, что через /proc/sys/net. Фильтрует пакеты отдельно от iptables, чтобы не было «левых» src-ip адресов, не должен заметно нагружать. 500 правил не должны создать перегрузки, особенно если в начале будет "--ctstate --ESTABLISHED -j ACCEPT"

По поводу windows ничего определённого сказать не могу, очень давно её не админил и никогда не устанавливал openvpn тунель с ней. tap, ИМХО, будет нагружать больше, так как требует передачу ethernet-заголовков. С другой стороны, на сайте openVPN написано, что tun вызывает netsh команду в винде и «some problems have been reported with this command on Win2K at lower service packet levels.» И, возможно, у вас в винде возникнут проблемы в ихнем фаейрволом, там, насколько я знаю, система любит запретить входящие соединения (разрешить только пакеты, приходящие в ответ на соединение, инициализированное самой виндой) и это может возникнуть при установки обновлений или нового антивируса...

mky ★★★★★
()
Последнее исправление: mky (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.