VPN-подключение IP-устройств

Материал из TekonWiki
Перейти к: навигация, поиск


Введение

В данной статье рассматриваются вопросы настройки VPN-подключения следующих IP-устройств:

Настройка VPN-подключения осуществляется через WEB-интерфейс устройств.

Устройство при этом выполняет роль VPN-клиента и подключается к удаленному VPN-серверу.

В настоящее время поддерживается работа следующих типов протоколов:

  • PPPTP
  • PPPoE
  • а также технологии OpenVPN
Внимание! 
Обновление прошивок устройств с версий  < x.50 с включенным VPN.

Для устройств КИО-2М, КИО-2МД, КУН-IPM всех модификаций (1.х, 2.x, 3.x) версий прошивок < x.50 не допускается обновление прошивки по VPN-интерфейсу.

Обновление устройства по VPN приведет к неработоспособности устройства. Восстановление будет возможно только в ремонтном отделе Текон-Автоматика.

Для обновления прошивки следует использовать только локальный интерфейс.

Если в настройках установлен флажок "Отключить локальный интерфейс (Входящие соединения разрешены только по VPN)", следует снять его, перезагрузить устройство, выполнить обновление прошивки по локальному интерфейсу.

PPTP

Настройка

В самом простом случае в WEB-интерфейсе устройства достаточно указать

  • включить PPTP
  • имя пользователя
  • пароль
  • IP-адрес сервера
  • MTU = 1474

Будьте аккуратны с опцией Отключить локальный интерфейс - т.к. соединение будет разрешено только через защищенный канал. В противном случае доступ к устройству возможен и через VPN и по "исходному IP-адресу". Данную опцию рекомендуется включать после тестовой проверки VPN-подключения.

Диагностика

Для диагностики подключения удобно использовать запрос log.cgi

В открывшемся логе нас интересуют только строки, содержащие pptp [xxx]:.

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

 1 Jan  1 00:00:02 IPCUn daemon.notice pppd[68]: pppd 2.4.7 started by root, uid 0
 2 Jan  1 00:00:02 IPCUn daemon.info pppd[68]: Using interface ppp0
 3 Jan  1 00:00:02 IPCUn daemon.notice pppd[68]: Connect: ppp0 <--> /dev/pts/0
 4 Jan  1 00:00:02 IPCUn daemon.notice pptp[74]: anon log[main:pptp.c:333]: The synchronous pptp option is NOT activated
 5 Jan  1 00:00:03 IPCUn daemon.notice pptp[97]: anon log[ctrlp_rep:pptp_ctrl.c:258]: Sent control packet type is 1 'Start-Control-Connection-Request'
 6 Jan  1 00:00:03 IPCUn daemon.notice pptp[97]: anon log[ctrlp_disp:pptp_ctrl.c:758]: Received Start Control Connection Reply
 7 Jan  1 00:00:03 IPCUn daemon.notice pptp[97]: anon log[ctrlp_disp:pptp_ctrl.c:792]: Client connection established.
 8 Jan  1 00:00:04 IPCUn daemon.notice pptp[97]: anon log[ctrlp_rep:pptp_ctrl.c:258]: Sent control packet type is 7 'Outgoing-Call-Request'
 9 Jan  1 00:00:04 IPCUn daemon.notice pptp[97]: anon log[ctrlp_disp:pptp_ctrl.c:877]: Received Outgoing Call Reply.
10 Jan  1 00:00:04 IPCUn daemon.notice pptp[97]: anon log[ctrlp_disp:pptp_ctrl.c:916]: Outgoing call established (call ID 0, peer's call ID 17002).
11 Jan  1 00:00:06 IPCUn daemon.notice pptp[97]: anon log[ctrlp_disp:pptp_ctrl.c:980]: PPTP_SET_LINK_INFO received from peer_callid 0
12 Jan  1 00:00:06 IPCUn daemon.notice pptp[97]: anon log[ctrlp_disp:pptp_ctrl.c:983]:   send_accm is 00000000, recv_accm is FFFFFFFF
13 Jan  1 00:00:06 IPCUn daemon.warn pptp[97]: anon warn[ctrlp_disp:pptp_ctrl.c:986]: Non-zero Async Control Character Maps are not supported!
14 Jan  1 00:00:06 IPCUn daemon.notice pppd[68]: CHAP authentication succeeded
15 Jan  1 00:00:10 IPCUn daemon.notice pppd[68]: MPPE 128-bit stateless compression enabled
16 Jan  1 00:00:11 IPCUn daemon.notice pppd[68]: local  IP address 192.168.7.11
17 Jan  1 00:00:11 IPCUn daemon.notice pppd[68]: remote IP address 192.168.7.10
18 ...

Где,

  • в 16 строке указан IP-адрес, полученный устройством
  • в 17 - IP-адрес VPN-сервера, к которому было осуществлено подключение

И далее периодически в логе могут возникать сообщения

1 Jan  1 00:01:03 IPCUn daemon.notice pptp[97]: anon log[logecho:pptp_ctrl.c:696]: Echo Request received.
2 Jan  1 00:01:03 IPCUn daemon.notice pptp[97]: anon log[ctrlp_rep:pptp_ctrl.c:258]: Sent control packet type is 6 'Echo-Reply'
3 Jan  1 00:02:03 IPCUn daemon.notice pptp[97]: anon log[logecho:pptp_ctrl.c:696]: Echo Request received.
4 Jan  1 00:02:03 IPCUn daemon.notice pptp[97]: anon log[ctrlp_rep:pptp_ctrl.c:258]: Sent control packet type is 6 'Echo-Reply
5 ...

В случае проблем с подключением, будет отображена та или иная ошибка

Например:

 1 May 23 14:33:16 unost pppd[165]: Using interface ppp0
 2 May 23 14:33:16 unost pppd[165]: Connect: ppp0 <--> /dev/pts/0
 3 May 23 14:33:16 unost pptp[303]: anon log[main:pptp.c:333]: The synchronous pptp option is NOT activated
 4 May 23 14:33:16 unost pptp[309]: anon log[ctrlp_rep:pptp_ctrl.c:258]: Sent control packet type is 1 'Start-Control-Connection-Request'
 5 May 23 14:33:16 unost pptp[309]: anon log[ctrlp_disp:pptp_ctrl.c:758]: Received Start Control Connection Reply
 6 May 23 14:33:16 unost pptp[309]: anon log[ctrlp_disp:pptp_ctrl.c:792]: Client connection established.
 7 May 23 14:33:17 unost pptp[309]: anon log[ctrlp_rep:pptp_ctrl.c:258]: Sent control packet type is 7 'Outgoing-Call-Request'
 8 May 23 14:33:17 unost pptp[309]: anon log[ctrlp_disp:pptp_ctrl.c:877]: Received Outgoing Call Reply.
 9 May 23 14:33:17 unost pptp[309]: anon log[ctrlp_disp:pptp_ctrl.c:916]: Outgoing call established (call ID 0, peer's call ID 0).
10 May 23 14:33:11 unost pptp[220]: anon log[ctrlp_disp:pptp_ctrl.c:952]: Call disconnect notification received (call id 0)
11 May 23 14:33:11 unost pptp[220]: anon log[ctrlp_error:pptp_ctrl.c:206]: Result code is 1 'Lost Carrier'. Error code is 0, Cause code is 0
12 May 23 14:33:11 unost pptp[220]: anon log[call_callback:pptp_callmgr.c:84]: Closing connection (call state)
13 May 23 14:33:11 unost pppd[165]: Modem hangup
14 May 23 14:33:11 unost pppd[165]: Connection terminated.
15 ...

Для диагностики проблем подключений по PPTP для новый концентраторов КУН-IP8, КУН-IP4 (для КУН-IPM данный способ не работает) удобно поступать следующим образом:

  1. отключить опцию PPTP
  2. включить доступ по SHH в меню Контроль доступа
  3. перезагрузить устройство
  4. подключиться по SHH с помощью, например Putty

Далее в консоли набрать

$ pppd call pptp debug nodetach

И наблюдать более подробный лог, например:

 1 using channel 1
 2 Using interface ppp0
 3 Connect: ppp0 <--> /dev/pts/1
 4 sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xe38a189e> <pcomp> <accomp>]
 5 sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xe38a189e> <pcomp> <accomp>]
 6 sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xe38a189e> <pcomp> <accomp>]
 7 sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xe38a189e> <pcomp> <accomp>]
 8 sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xe38a189e> <pcomp> <accomp>]
 9 sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xe38a189e> <pcomp> <accomp>]
10 sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xe38a189e> <pcomp> <accomp>]
11 sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xe38a189e> <pcomp> <accomp>]
12 sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xe38a189e> <pcomp> <accomp>]
13 sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xe38a189e> <pcomp> <accomp>]
14 Script pptp 185.41.42.22 --nolaunchpppd finished (pid 543), status = 0x0
15 Modem hangup
16 Connection terminated.

- ошибка, приведенная в примере, связана с отсутствием прохождения GRE-пакетов на маршрутизаторе, за которым установлен КУН-IP.

Для остановки нажать Ctrl+z

Далее можно по необходимости (в зависимости от отображаемой ошибки) можно поменять параметры, например: логин/пароль в WEB-интерфейсе, нажать сохранить, и не перегружая устройства повторить ввод команды pppd call ...

Анализ возможных ошибок и их причины см. в статье:

  1. PPTP Client Diagnosis HOWTO http://pptpclient.sourceforge.net/howto-diagnosis.phtml

PPPoE

Настройка

В самом простом случае в WEB-интерфейсе устройства достаточно указать

  • включить PPPoE
  • имя пользователя
  • пароль
  • IP-адрес сервера
  • MTU = 1492

Диагностика

Практического тестирование работы PPPoE подключений на объектах нашими специалистами на данный момент не проводилось.

Настройка и диагностика OpenVPN

Проверено с концентраторами КУН-IP8, КУН-IP4 и контроллером КИО-8(4)L. 

Настройка

Для начала нужно скачать программу OpenVPN версии 2.3.16-I001. Инструкция проверена только на данной версии.

В случае проблем с поиском на основном сайте загрузить указанную версию можно также с нашего сайта 

Установочный файл запускаем от имени администратора. При установке ставим галочки на всех компонентах.

Openvpn1.JPG

Далее указываем папку установки программы (рекомендуется оставить по умолчанию).

Openvpn2.JPG

Нажимаем „install”. После программа установится, не потребовав перезагрузки.

Далее приступаем к подготовке OpenVPN-сервера для его настройки.

Прежде всего нужно зайти в папку C:\OpenVPN:

  • создать папку с названием ssl ,
  • создать папку с названием tmp,
  • создать текстовый файл verify.txt, следующего содержания
@echo off
exit 0

  • переименовать verify.txt в verify.bat

Далее переходим в папку C:\OpenVPN\easyrsa и переименовываем файл vars.bat.sample в vars.bat

Запускаем командную строку с правами администратора и вводим команду

cd c:\OpenVPN\easy-rsa 

и нажимаем enter.

Далее вводим команду

vars.bat 

и нажимаем enter

Openvpn5.JPG

Далее запускаем

clean-all.bat
Openvpn6.JPG

Запускаем

build-ca.bat 

Во всех параметрах нажимаем enter, не вводя никаких значений.

Openvpn3.JPG

Далее запускаем

build-dh.bat
Openvpn4.JPG

Далее запускаем команду

build-key-server.bat vpn

, где vpn – это примитивное название нашего OpenVPN сервера.

Это же название нужно будет ввести в параметр "common name" и нажать enter, в остальных полях нажимать enter без ввода каких либо значений, а на два последних вопроса ответить yes.

Openvpn7.JPG

После выполненных команд в папке C:\OpenVPN\easy-rsa должна появится папка keys с созданными нами ключами сервера.

Openvpn8.JPG

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

buildkey.bat client1

, где client1 — это логин нашего первого клиента. Параметр "common name" так же указываем, как client1. На последние два вопроса отвечаем так же yes

Openvpn9.JPG

Аналогично добавляем client2, client3 и т.д.

Приступаем к конфигурации сервера OpenVPN. Заходим в папку key, копируем от туда файлы

  • dh1024.pem,
  • ca.crt,
  • vpn.crt,
  • vpn.key

в папку ssl.

Далее переходим в папку cofig и создаем там текстовый файл vpn.txt

Открываем этот файл и копируем в него следующий текст

port 1194
proto udp
dev tun
dh C:\\OpenVPN\\ssl\\dh1024.pem
ca C:\\OpenVPN\\ssl\\ca.crt
cert C:\\OpenVPN\\ssl\\vpn.crt
key C:\\OpenVPN\\ssl\\vpn.key
server 10.0.0.0 255.255.255.0
ifconfig-pool-persist C:\\OpenVPN\\ipp.txt
client-to-client
keepalive 10 120
persist-key
persist-tun
status C:\\OpenVPN\\log\\openvpn-status.log
log C:\\OpenVPN\\log\\openvpn.log
verb 3
mssfix 1350
auth-user-pass-verify C:\\OpenVPN\\verify.bat via-file
client-cert-not-required
username-as-common-name
tmp-dir C:\\OpenVPN\\tmp
script-security 2

Сохраняем и переименовываем его в vpn.ovpn

Далее нам нужно, что бы сервер присваивал клиентам фиксированные ip-адреса, а не динамические, т.к. программа Scada не умеет работать по DHCP.

Пускай наша сеть будет 10.0.0.1-10.0.0.255.

Для совместимости с Windows, OpenVPN сервер работает по следующему принципу: сервер устанавливает соединение точка-точа с подключенным к нему клиентом и выделяет для этого пару адресов из подсети с префиксом /30, первый адрес он присваивает себе, а последний — клиенту.

Исходя из этого, имеем следующий список возможных пар клиентских адресов сети 10.0.0.0:

[ 5, 6] [ 9, 10] [ 13, 14] [ 17, 18]
[ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]
[ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]
[ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]
[ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]
[101,102] [105,106] [109,110] [113,114] [117,118]
[121,122] [125,126] [129,130] [133,134] [137,138]
[141,142] [145,146] [149,150] [153,154] [157,158]
[161,162] [165,166] [169,170] [173,174] [177,178]
[181,182] [185,186] [189,190] [193,194] [197,198]
[201,202] [205,206] [209,210] [213,214] [217,218]
[221,222] [225,226] [229,230] [233,234] [237,238]
[241,242] [245,246] [249,250] [253,254]

, где 5 и 6 — пара, которая может быть выделена, например: для подключения первого клиента — client1.

Для фиксирования IP-адреса за определенным клиентом, создаем в папке C:\OpenVPN текстовый ipp.txt

В этом файле мы пишем:

<логин клиента>,<ip-адрес-сети>. 

Т.е. для нашего первого клиента запись будет выглядеть так

client1,10.0.0.4 

Такая запись, с логином и соответствующим ему адресом, должна быть для каждого клиента, зарегистрированном в OpenVPN-сервере.

Пример файла ipp.txt

client1,10.0.0.4
client2,10.0.0.8
client3,10.0.0.12
client4,10.0.0.16
client5,10.0.0.20
client6,10.0.0.24
client7,10.0.0.28
client8,10.0.0.32
client9,10.0.0.36
client10,10.0.0.40

Конфигурационные файлы сервера готовы, теперь приступаем к запуску OpenVPN-сервера. Для это нужно зайти в свойства ярлыка OpenVPN GUI и в параметре «объект» дописать --connect “vpn.ovpn”

Openvpn10.JPG

Нажимаем применить и запускаем ярлык с правами администратора. После этого в трее появляется значок OpenVPN GUI. Через несколько секунд он становиться зелёного цвета, это означает, что сервер запущен.

Далее приступаем к настройке клиентов, в нашем случае это КУН-IP8 (КУН-IP4) или КИО-8(4)L.

Заходим в web-конфигуратор и переходим на страничку Конфигурация сети — OpenVPV.

Нас интересуют следующие поля:

  • IP адрес сервера - это ,собственно, IP-адрес интерфейса Пульта ПК
  • порт сервера - оставляем по умолчанию 1194
  • имя пользователя - логин клиента(client1)
  • пароль - пароль сервером проверяться не будет, но функции «пустого пароля» нет, по этому вводим любые значения, например 123, и подтверждаем
  • подтверждение пароля - вводим тот же пароль
  • CA сертификат - файл ca.crt. Открываем его блокнотом или иным текстовым редактором и копируем его содержимое в поле CA сертификат
Openvpn11.JPG

Сохраняем изменения и перезагружаем устройство.

В логах сервера можно посмотреть статистику подключения, в трее нужно кликнуть на значок OpenVPN GUI 2 раза левым кликом.

В логе видим, что с client1 установлено соединение через пару адресов 10.0.0.6, 10.0.0.5. Теперь устройство доступно по нашей vpn сети по адресу 10.0.0.6.

Openvpn12.JPG

Для нормальной работы OpenVPN-сервера в настройках брандмауэра Windows должны присутствовать исключения для OpenVPN Deamon и OpenVPN GUI.

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

Заходим в меню Пуск - панель управления — Администрирование — Службы, выбираем OpenVPNService, открываем свойства и меняем тип запуска с «вручную» на «автоматически», при этом программа OpenVPN GUI работать не будет, так как одновременно не могут работать и служба и OpenVPN GUI.

Для просмотра состояния подключения OpenVPN-сервера в этом случае следует открыть текстовый файл openvpn.log ,находящийся в C:\OpenVPN\log.

Дополнительно

Для надёжности в настройках OpenVPN IP-устройств рекомендуется ставить галочку - Отключить локальный интерфейс: (Входящие соединения будут разрешены только по VPN!). После этого устройство будет доступно только по сети VPN. Однако нужно иметь ввиду, что, если по какой-нибудь причине OpenVPN-сервер выйдет из строя и его настройки будут утеряны, то придётся вручную сбрасывать на заводские настройки каждое устройство vpn сети.