Author Topic: openVPN  (Read 20717 times)

vovannovig

  • Zen Monk
  • **
  • Posts: 75
  • Karma: +2/-1
    • View Profile
Re: openVPN
« Reply #30 on: January 15, 2013, 07:40:43 pm »
Доброго времени суток.
В сети провайдера (внешней сети) имеются мой Zentyal и сервер баз данных (win2003). к этому серверу подключаются пользователи из локальной сети за моим Zentyal-ом (внутренней сети), а так же несколько пользователь из внешней (все на виндоводы). Все это идет без какого либо шифрования.
Есть вариант организовать на Зенте OpenVPN сервер, а остальные будут подключатся к нему  как клиенты. VPN-канал между БД-сервером и Зентом я поднял, а дальше возникает ряд специфических вопросов.

1)как сделать так, чтоб БД-сервер при подключении к VPN всегда получал один и  тоже IP адрес? Это необходимо для настройки программы БД-клиента. Желательно, но не обязательно, чтоб все VPN-клиенты при конекте получали постоянные адреса.

2)Вопрос про сертификаты. При созданни VPN-сервера я указал конкретный клиентский сертификат. Далее все клиенты будут подключатся по одному сертификату, или каждому клиенты требуется свой сертификат?

3) Licht, А какой протокол используешь, для VPN-канала?
1-Чтобы получал один адрес а графе адреса VPN(в РРТР указывается и так один,а в OpenVPN в основном сеть т.е. /24 подправь...) указать ip/32 (Маска 32 - 1 адрес)
2-Для каждого OpenVPN  соединения надо свой,один корневой и один создавай сертификат клиента т.е. корневой один,а сертификаты клиентов у всех разные.

С маршрутизацией под окном встречал грабли в виду малых прав пользователя под которым запускается и поэтому таблицу маршрутизации автоматически не правит.Вообще все маршутизирует сервер - если указано default gateway то вообще и инет будет с сервера идти,и объявляются сети на сервере - он маршрутизирует!

Russian_Ivan

  • Zen Apprentice
  • *
  • Posts: 12
  • Karma: +2/-0
    • View Profile
Re: openVPN
« Reply #31 on: January 16, 2013, 09:14:51 am »

1-Чтобы получал один адрес а графе адреса VPN(в РРТР указывается и так один,а в OpenVPN в основном сеть т.е. /24 подправь...) указать ip/32 (Маска 32 - 1 адрес)
2-Для каждого OpenVPN  соединения надо свой,один корневой и один создавай сертификат клиента т.е. корневой один,а сертификаты клиентов у всех разные.


В настройках vpn-сервера нельзя выставить ip/32, только ip/30. К тому же,насколько я понимаю, к одному созданному vpn-серверу могут подключится несколько пользователей.При этом они  будут находится в одной виртуальной сети. в настройках есть пункт "Client authorization by common name:" в коментариях к нему написано " If disabled, any client with a certificate generated by Zentyal will be able to connect. If enabled, only certificates whose common name begins with the selected value will be able to connect. " (что я перевел как "Если disabled, то любой клиент с генерированным zentyal-ом сертификатом, может подключится, иначе только клиенты, у которых сертификат совпадает с выбранным."). Получается, что по одному сертификату может подключится любой клиент, если этот сертификат указать в настройках.

Но остается вопрос про постоянный IP-адрес для хотя бы одного клиента. Если я на клиенте укажу статический адрес (скажем 192.168.30.200), а потом перезапущу openvpn GUI, получается странная картина. Сам GUI говорит, что клиент получил ip 192.168.30.2, в "сетевых интерфейсах" в свойствах VPN-интерфейса пишется, что IP-адрес получается автоматически, а закладке "состояние" выдается 192.168.30.200. однако через route print  пропадает путь до компьютеров в моей локальной сети. А если оставить как есть и разрешить DHCP, то все работает как часы, но IP клиента будет 192.168.30.2. и я боюсь, что этот адрес будет зависить, кто из клиентов подключится  раньше.



Licht

  • Zen Apprentice
  • *
  • Posts: 18
  • Karma: +0/-0
    • View Profile
Re: openVPN
« Reply #32 on: January 21, 2013, 12:46:18 pm »
ip у клиента будет все время один и тот же, какой именно можно глянуть в /etc/openvpn/***.d/***-ipp.txt
как добавить маршрут к сети которая находиться за клиентом:
в папке /etc/zentyal/hooks/ лежат шаблоны, при помощи их можно выполнить дополнительные настройки. Для OpenVPN сделал добавление маршрута скриптом после старта сервиса, т.е. берем файл template.postservice копируем его под именен openvpn.postservice делаем исполняемым.
для примера:
:~# cat /etc/zentyal/hooks/openvpn.postservice
ip r add 192.168.1.0/24 via 192.168.160.2 dev tap0

Russian_Ivan

  • Zen Apprentice
  • *
  • Posts: 12
  • Karma: +2/-0
    • View Profile
Re: openVPN
« Reply #33 on: January 24, 2013, 10:14:32 am »
Путем проб и ошибок  я частично разобрался в этом вопросе. Вот инструкция для чайников вроде меня.
1) Создать на каждого клиента отдельный сертификат. Например:
"VPN-client-1"
"VPN-client-2"
"VPN-client-DB"
2) Создать еще один сертификат, в данном примере "VPN-client".
3) При создании VPN-сервера (с именем "vpn-server" ;)) выбрать использовать клиентский сертификат (Client authorization by common name) "VPN-client", а при создании новых клиентов (Download client bundle) выбирать сертификат с именами, удовлетворяющими условию "VPN-client*", где *-любой набор символов, разрешенный при создании новой лицензии (например "VPN-client-1"). Клиент с сертификатом "VPN_cl" подключится к конкретному VPN-серверу уже не сможет.
4) После подключения VPN-клиентов к Zeyntyal,  в настройках  VPN-сервера снять галочку Enable, и сохранить изменения. (Без этого не обойтись, иначе все дальнейшие изменения не сохранятся) После этого залезть в файл /etc/openvpn/vpn-server.d/vpn-server-ipp.txt и там указать какой ip-адрес присвоить клиенту с определенным сертификатом. Можно и самому в ручную вписать еще не подключившихся клиентов. В этом примере файл выглядит так:
VPN-client-1, 192.168.160.101
VPN-client-2, 192.168.160.102
VPN-client-DB, 192.168.160.100
5)Теперь можно запустить VPN-сервер и вы увидите, что все клиенты получили указанные вами ip-адреса.
6) Те, кто использует OpenVPN-installer под Windows и хочет, чтоб подключение к VPN было в автозагрузке, могут сделать так. Создаем в "\Documents and Settings\All Users\Главное меню\Программы\Автозагрузка" ярлык OpenvpnGUI (как правило можно скопировать с Рабочего стола). Вместо папки "All Users" можно указать папку определенного пользователя, если вы не хотите давать другим доступ к этому VPN-каналу. Далее открываем свойства этого ярлыка, и в строчке Объект дописать "--connect" и имя вашего *.ovpn файла (или путь к этому файлу, если вы его не положили в папку "OpenVPN\config"). В моем случае это выглядит так:
"C:\Program Files\OpenVPN\bin\openvpn-gui-1.0.3.exe" --connect vpn-server-client.ovpn
7)При выборе протокола для vpn-канала следует руководствоваться качеством канала. Для хорошего канала можно использовать UDP, для плохого только TCP.
В моем случае сеть через которую я пробрасывал VPN-канал поддерживает скорость 100Мбит/с, а VPN подключение открывается всего на 10Мбит/с (независимо от выбранного протокола).

demin

  • Zen Apprentice
  • *
  • Posts: 2
  • Karma: +0/-0
    • View Profile
Re: openVPN
« Reply #34 on: January 29, 2013, 09:49:55 am »
спс....блин так же делала всё равно локальные машины клиента openvpn не видят внутреннюю сеть сервера openvpn. А сервер openvpn и клиент видят внутренние сети друг друга....В чем может быть проблема??????
так и не решили свою проблему? у меня подобная проблема( делал все что советовали в теме, но машина за сервером впн так и не видят сеть клиента( помогите пожалуйста! у меня такое ощущение, что на сервере не применяются правила фаервола через веб интерфейс.

mravil

  • Zen Samurai
  • ****
  • Posts: 410
  • Karma: +27/-4
  • В чужую сеть со своим протоколом не лезь!
    • View Profile
Re: openVPN
« Reply #35 on: January 30, 2013, 05:45:24 am »
спс....блин так же делала всё равно локальные машины клиента openvpn не видят внутреннюю сеть сервера openvpn. А сервер openvpn и клиент видят внутренние сети друг друга....В чем может быть проблема??????
так и не решили свою проблему? у меня подобная проблема( делал все что советовали в теме, но машина за сервером впн так и не видят сеть клиента( помогите пожалуйста! у меня такое ощущение, что на сервере не применяются правила фаервола через веб интерфейс.

решено у нее, работает.
Еще раз распишу, что и как, на этом вот примере:
net0 - сеть 192.168.10.0/24, шлюз на Zentyal_0 c ip 192.168.10.1
net1 - сеть 192.168.20.0/24, шлюз на Zentyal_1 c ip 192.168.20.1
Задача: объединить сети net0 и net1.
начнем с поднятия туннеля, с этим проблем быть не должно, создаем Zentyal-to-Zentyal OpenVPN соединение по мануалу http://doc.zentyal.org/en/vpn.html#configuration-of-a-openvpn-server-with-zentyal.
теперь у нас в Zentyal_0 добавлен и поднят интерфейс tap0 с ip 192.168.160.1, на Zentyal_1 при подключении появляется tap0 с ip 192.168.160.2.
первое, что нужно проверить, есть ли пинг между 192.168.160.1 и 192.168.160.2. Если есть продолжаем:
на Zentyal_0:
Code: [Select]
route add -net 192.168.20.0 netmask 255.255.255.0 gw 192.168.160.2
на Zentyal_1
Code: [Select]
route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.160.1

Также необходимо на Zentyal_0 создать правило, позволяющие сети net1 ходить в сеть net0. Для этого в подменю фаервола "Правила фильтрации из внешних сетей во внутренние сети" (Filtering rules from external networks to internal networks) создаем правило:
Decision:    Accept
Source:    Source IP 192.168.20.0/24
Destination:    Any
Service:    Any
Description: Allow net1

Аналогично для второй сети

Licht

  • Zen Apprentice
  • *
  • Posts: 18
  • Karma: +0/-0
    • View Profile
Re: openVPN
« Reply #36 on: January 30, 2013, 09:44:00 am »
спс....блин так же делала всё равно локальные машины клиента openvpn не видят внутреннюю сеть сервера openvpn. А сервер openvpn и клиент видят внутренние сети друг друга....В чем может быть проблема??????
так и не решили свою проблему? у меня подобная проблема( делал все что советовали в теме, но машина за сервером впн так и не видят сеть клиента( помогите пожалуйста! у меня такое ощущение, что на сервере не применяются правила фаервола через веб интерфейс.

решено у нее, работает.
Еще раз распишу, что и как, на этом вот примере:
net0 - сеть 192.168.10.0/24, шлюз на Zentyal_0 c ip 192.168.10.1
net1 - сеть 192.168.20.0/24, шлюз на Zentyal_1 c ip 192.168.20.1
Задача: объединить сети net0 и net1.
начнем с поднятия туннеля, с этим проблем быть не должно, создаем Zentyal-to-Zentyal OpenVPN соединение по мануалу http://doc.zentyal.org/en/vpn.html#configuration-of-a-openvpn-server-with-zentyal.
теперь у нас в Zentyal_0 добавлен и поднят интерфейс tap0 с ip 192.168.160.1, на Zentyal_1 при подключении появляется tap0 с ip 192.168.160.2.
первое, что нужно проверить, есть ли пинг между 192.168.160.1 и 192.168.160.2. Если есть продолжаем:
на Zentyal_0:
Code: [Select]
route add -net 192.168.20.0 netmask 255.255.255.0 gw 192.168.160.2
на Zentyal_1
Code: [Select]
route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.160.1

Также необходимо на Zentyal_0 создать правило, позволяющие сети net1 ходить в сеть net0. Для этого в подменю фаервола "Правила фильтрации из внешних сетей во внутренние сети" (Filtering rules from external networks to internal networks) создаем правило:
Decision:    Accept
Source:    Source IP 192.168.20.0/24
Destination:    Any
Service:    Any
Description: Allow net1

Аналогично для второй сети

Один нюанс... в случае рестарта сервера команды на добавление маршрута ввести повторно

demin

  • Zen Apprentice
  • *
  • Posts: 2
  • Karma: +0/-0
    • View Profile
Re: openVPN
« Reply #37 on: January 31, 2013, 06:00:57 am »
спс....блин так же делала всё равно локальные машины клиента openvpn не видят внутреннюю сеть сервера openvpn. А сервер openvpn и клиент видят внутренние сети друг друга....В чем может быть проблема??????
так и не решили свою проблему? у меня подобная проблема( делал все что советовали в теме, но машина за сервером впн так и не видят сеть клиента( помогите пожалуйста! у меня такое ощущение, что на сервере не применяются правила фаервола через веб интерфейс.

решено у нее, работает.
Еще раз распишу, что и как, на этом вот примере:
net0 - сеть 192.168.10.0/24, шлюз на Zentyal_0 c ip 192.168.10.1
net1 - сеть 192.168.20.0/24, шлюз на Zentyal_1 c ip 192.168.20.1
Задача: объединить сети net0 и net1.
начнем с поднятия туннеля, с этим проблем быть не должно, создаем Zentyal-to-Zentyal OpenVPN соединение по мануалу http://doc.zentyal.org/en/vpn.html#configuration-of-a-openvpn-server-with-zentyal.
теперь у нас в Zentyal_0 добавлен и поднят интерфейс tap0 с ip 192.168.160.1, на Zentyal_1 при подключении появляется tap0 с ip 192.168.160.2.
первое, что нужно проверить, есть ли пинг между 192.168.160.1 и 192.168.160.2. Если есть продолжаем:
на Zentyal_0:
Code: [Select]
route add -net 192.168.20.0 netmask 255.255.255.0 gw 192.168.160.2
на Zentyal_1
Code: [Select]
route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.160.1

Также необходимо на Zentyal_0 создать правило, позволяющие сети net1 ходить в сеть net0. Для этого в подменю фаервола "Правила фильтрации из внешних сетей во внутренние сети" (Filtering rules from external networks to internal networks) создаем правило:
Decision:    Accept
Source:    Source IP 192.168.20.0/24
Destination:    Any
Service:    Any
Description: Allow net1

Аналогично для второй сети
все сделал, так и не работает. надо попробовать наверное зентил переустановить. такое ощущение, что фаервол не отрабатывает правила(

tunsa

  • Zen Samurai
  • ****
  • Posts: 350
  • Karma: +15/-1
    • View Profile
Re: openVPN
« Reply #38 on: February 05, 2013, 06:53:44 am »
спс....блин так же делала всё равно локальные машины клиента openvpn не видят внутреннюю сеть сервера openvpn. А сервер openvpn и клиент видят внутренние сети друг друга....В чем может быть проблема??????
так и не решили свою проблему? у меня подобная проблема( делал все что советовали в теме, но машина за сервером впн так и не видят сеть клиента( помогите пожалуйста! у меня такое ощущение, что на сервере не применяются правила фаервола через веб интерфейс.

Mravil введу маленькую поправочку! Хочу вам сказать через тунель не работает ( сеть начинает пропадать и работает нестабильно)!
Сделала по схеме Сервер-Клиент
Что я сделала
1 офис ( сеть 192.168.5.0/24 шлюз 192.168.5.100-внутреняя сеть офиса 1). Для того чтобы  настроить Openvpn. Сделаем офис 1 сервером OpenVPN, адрес сервера VPN (192.168.160.1). Далее
2 офис (сеть 192.168.10.0/24 шлюз 192.168.10.10 -внутреняя сеть офиса 2). Офис 2 у меня клиент Openvpn (подкладываю сертификаты созданные на сервере офиса 1), адрес VPN  клиента   (192.168.160.2).
Если всё сделали правильно то сервер и клиент видят друг друга, а точнее 192.168.160.1 пингует 192.168.160.2 и наоборот.

2 этап. Моя задача была в том, чтобы  офис 1 и офис 2 видели друг друга и были в одной локальной сети!
В офисе 1 в терминале пишем  sudo route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.160.2
В офисе 2 в терминале пишем  sudo route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.160.1

Далее если сети 192.168.5.0/24, 192.168.10.0/24 стали видеть друг друга то вы всё сделали правильно.
Потом нужно прописать sudo route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.160.2 ( в /etc/rc.local в офисе1 прописываем для того, чтобы после перезагрузки маршруты не слетели!!!)
                                 sudo route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.160.1 ( в /etc/rc.local в офисе2 )

Объяснила как работает openvpn у меня в офисах. Может вам это поможет!!!
Вот ещё видео про сертификаты vpn http://www.youtube.com/watch?v=C32TrXOLzQ4
И ещё как написал Mravil прописать правило!
« Last Edit: February 05, 2013, 06:56:17 am by tunsa »

Artless

  • Zen Apprentice
  • *
  • Posts: 12
  • Karma: +0/-0
    • View Profile
Re: openVPN
« Reply #39 on: February 06, 2013, 12:16:12 am »
У меня тоже не работает. Шлюзы пингуют соседа и сеть за ним, открывают сетевые папки, а машины за ними нет. Маршруты добавлены, В правилах фильтрации разрешения стоят (Служба - Любой), а пинга и расшареных папок нет, НО сайт сети 1 в сети 2 открываеться, как такое возможно?
« Last Edit: February 06, 2013, 01:25:40 am by Artless »

mravil

  • Zen Samurai
  • ****
  • Posts: 410
  • Karma: +27/-4
  • В чужую сеть со своим протоколом не лезь!
    • View Profile
Re: openVPN
« Reply #40 on: February 06, 2013, 03:35:29 am »
У меня тоже не работает. Шлюзы пингуют соседа и сеть за ним, открывают сетевые папки, а машины за ними нет. Маршруты добавлены, В правилах фильтрации разрешения стоят (Служба - Любой), а пинга и расшареных папок нет, НО сайт сети 1 в сети 2 открываеться, как такое возможно?

Блокируются ICMP пакеты, поэтому пинг не идет

Artless

  • Zen Apprentice
  • *
  • Posts: 12
  • Karma: +0/-0
    • View Profile
Re: openVPN
« Reply #41 on: February 06, 2013, 05:08:43 am »
В фаерволе уже вообще все открыл, безрезультатно. Наверно немаловажно, что сервер 2.2, а клиент 3.0, В версии 2.2 есть служебная вкладка фаервола, в 3-ем уже нет, м.б. какое-то правило не применяеться

tunsa

  • Zen Samurai
  • ****
  • Posts: 350
  • Karma: +15/-1
    • View Profile
Re: openVPN
« Reply #42 on: February 06, 2013, 06:16:48 am »
В фаерволе уже вообще все открыл, безрезультатно. Наверно немаловажно, что сервер 2.2, а клиент 3.0, В версии 2.2 есть служебная вкладка фаервола, в 3-ем уже нет, м.б. какое-то правило не применяеться


Файрвол мне не помог, маршруты всё равно пришлось руками прописывать! Попробуйте прописать в файрволе конкретное правило между внутренними сетями, разрешить из одной в другую сеть ходить (и прямо пропишите подсети). Кстати какая версия zentyal?
« Last Edit: February 06, 2013, 06:29:03 am by tunsa »

tunsa

  • Zen Samurai
  • ****
  • Posts: 350
  • Karma: +15/-1
    • View Profile
Re: openVPN
« Reply #43 on: February 06, 2013, 06:28:01 am »
У меня тоже не работает. Шлюзы пингуют соседа и сеть за ним, открывают сетевые папки, а машины за ними нет. Маршруты добавлены, В правилах фильтрации разрешения стоят (Служба - Любой), а пинга и расшареных папок нет, НО сайт сети 1 в сети 2 открываеться, как такое возможно?

Попробуйте удалить все маршруты и очистить файл rc.local, перезагрузить, а потом заново маршруты прописать....Бывает глюк

Artless

  • Zen Apprentice
  • *
  • Posts: 12
  • Karma: +0/-0
    • View Profile
Re: openVPN
« Reply #44 on: February 09, 2013, 03:39:26 am »
С маршрутами все в порядке было, это я в первую очередь проверил.
В 3.0 фаервол не добавил запись iptables -t nat -A POSTROUTING -o tap0 -j MASQUERADE.
т.е.

1) Создание туннеля
2) Маршруты
3) Фаервол
4) Маскарадинг