URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 95402
[ Назад ]

Исходное сообщение
"openvpn для микротика"

Отправлено mitay , 05-Фев-14 07:49 
debian - openvpn-server (внутренний ip 192.168.2.1)
mikrotik - openvpn-client (внутренний ip 192.168.88.1)
10.15.32.0/24 - openvpn-network

после установки соединения какой-то бред с маршрутами и адресами тунеля:
linux:
tun0 inet addr:10.15.32.1  P-t-P:10.15.32.2  Mask:255.255.255.255
mikrotik:
D 10.15.32.6/32      10.15.32.5      ovpn-out1

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

соответственно роуты:

linux#route -n | grep tun0
10.15.32.0      10.15.32.2      255.255.255.0   UG    0      0        0 tun0
10.15.32.2      0.0.0.0         255.255.255.255 UH    0      0        0 tun0
192.168.88.0    10.15.32.2      255.255.255.0   UG    0      0        0 tun0
mikrotik# ip route print
0 ADS  10.15.32.0/24                      10.15.32.5                0
1 ADC  10.15.32.5/32      10.15.32.6      ovpn-out1                 0
3 ADS  192.168.2.0/24                     10.15.32.5                1
4 ADC  192.168.88.0/24    192.168.88.1    ether2-master-l...        0

пинг с сервера до 192.168.88.1 на клиенте(на ovpn-out1) не слышен tcpdump'ом, т.е. при такой таблице маршрутизации так и должно быть?

пинг с клиента до 192.168.2.1 на сервер приходит, но это от ядра, если слать
пинг от 192.168.88.1 (>ping 192.168.2.1 src-address=192.168.88.1) то он не слышен tcpdump'ом на tun0.

помогите разобраться с ситуацией

конфиг сервера:
port 1194
proto tcp
dev tun0
ca keys/ca.crt
cert keys/gw1.crt
key keys/gw1.key
dh keys/dh1024.pem
server 10.15.32.0 255.255.255.0
client-config-dir /etc/openvpn/ccd
push "route 192.168.2.1 255.255.255.0"
route 192.168.88.0 255.255.255.0
keepalive 10 120
cipher          AES-256-CBC
auth            sha1
tun-mtu         1500
mssfix          1430
user            nobody
group           nogroup
persist-key
persist-tun
log         /var/log/openvpn/openvpn.log
verb 3
mute 10

в ccd для клиента:
ifconfig-push 10.15.32.2 10.15.32.1
iroute 192.168.88.0 255.255.255.0

конфиг клиента:
name="ovpn-out1" mac-address=02:8C:22:0A:E9:4C max-mtu=1430
      connect-to=<white ip> port=1194 mode=ip user="nobody" password=""
      profile=default certificate=cert2 auth=sha1 cipher=aes256
      add-default-route=no


Содержание

Сообщения в этом обсуждении
"openvpn для микротика"
Отправлено ACCA , 06-Фев-14 03:08 
В первый раз настраивать openvpn - штука геморройная.
Давай сначала посадим microtic и debian в одну сеть 192.168.0/16, потом будем играться с остальными.

> конфиг сервера:
> port 1194

[...]
Не видно:

local <white ip>
mode server
proto tcp-server


> proto tcp
> server 10.15.32.0 255.255.255.0

Эти два могут быть синонимами предыдущего в твоей конкретной версии, но у меня не завелось, пока не указал в явном виде. По-моему даже встречал багрепорт.

Учти, что рекомендуют UDP, на TCP приходится уползать не от хорошей жизни, когда точно знаешь, зачем ты это сделал.


> dev tun0
> ca keys/ca.crt
> cert keys/gw1.crt
> key keys/gw1.key
> dh keys/dh1024.pem
> client-config-dir /etc/openvpn/ccd
> push "route 192.168.2.1 255.255.255.0"

У route обратный синтаксис - <сеть> <маска> <gw> [cost]. Напиши, например, так:

     push "route 192.168.0.0 255.255.0.0 vpn_gateway 50"

"vpn_gateway" - волшебное слово для автоподстановки.


> route 192.168.88.0 255.255.255.0

Аналогично:

route 192.168.0.0 255.255.0.0 192.168.2.1 50

Я бы ещё добавил:

ifconfig 192.168.2.1 192.168.2.2
ifconfig-pool 192.168.2.10 192.168.2.254
ifconfig-pool-linear
ifconfig-pool-persist vpn_hosts.lst

чтобы не думалось, кому что присвоилось.

[...]

> в ccd для клиента:
> ifconfig-push 10.15.32.2 10.15.32.1
> iroute 192.168.88.0 255.255.255.0

Переделай на, скажем:

ifconfig-push 192.168.2.10 192.168.2.1
iroute 192.168.88.0 255.255.255.0

(предполагая, что у тебя эта 192.168.88.0 доступна через microtik и там есть какой-нибудь, скажем 192.168.88.9 )


> конфиг клиента:
>  name="ovpn-out1" mac-address=02:8C:22:0A:E9:4C max-mtu=1430
>       connect-to=<white ip> port=1194 mode=ip user="nobody" password=""
>       profile=default certificate=cert2 auth=sha1 cipher=aes256
>       add-default-route=no

Почитай, что пишут про клиентские сертификаты: http://wiki.mikrotik.com/wiki/OpenVPN#Creating_Certificates_...

Клиентский сертификат не нужен только в случае pre-shared key, я не понял, кака оно сделано у тебя. Более детально ничего не скажу - у меня связка Debian-Tomato, при этом включен TLS.


Сделай verb 5 и смотри, что валится в /var/log/syslog

Как только заведётся, ты сможешь пнуть 192.168.2.10 и 192.168.88.9, при этом сам адрес ты не увидишь ни на одном интерфейсе.



"openvpn для микротика"
Отправлено mitay , 06-Фев-14 13:53 
> [...]
> Не видно:
> local <white ip>
> mode server
> proto tcp-server

Конфиги брал с вики микротика:
http://wiki.mikrotik.com/wiki/OpenVPN#Linux

> Учти, что рекомендуют UDP, на TCP приходится уползать не от хорошей жизни,
> когда точно знаешь, зачем ты это сделал.

UDP Mikrotik не поддерживает.

> У route обратный синтаксис - <сеть> <маска> <gw> [cost]. Напиши, например, так:

опечатка, вот так есть: push "route 192.168.2.0 255.255.255.0"

> ifconfig 192.168.2.1 192.168.2.2

У меня на это ругается: us=73317 /sbin/ifconfig tun0 10.15.32.1 netmask 10.15.32.2 mtu 1500 broadcast 255.255.255.253
SIOCSIFNETMASK: Invalid argument
как будто он tap настраивает! почему так?

> Почитай, что пишут про клиентские сертификаты: http://wiki.mikrotik.com/wiki/OpenVPN#Creating_Certificates_...

Так и делал, CA.crt и client.crt mikrotik скушал сразу, а client.key полсе конвертации в client.pem, после последнего напротив client.crt появилось KR (K - dekrypted private key, R - rsa)

> Сделай verb 5 и смотри, что валится в /var/log/syslog

В логе туннель заводится,
Картинка как оно есть:
http://savepic.net/4541699.png

В случае topology sybnet получается: tun0 addr:10.15.32.1  P-t-P:10.15.32.1  
это нормально?
если да, то такое ощущение что проблема в iroute(wireshark, tcpdump, torch),
смотрим логи /var/log/openvpn/openvpn.log
ping с 88.56 до 2.2 - MULTI: bad source address from client [192.168.88.56], packet dropped.
tcpdump на tun0 - тишина
ping с 2.2 до 88.56 - лог ничего не пишет, tcpdump на tun0 только: 192.168.2.2 > 192.168.88.56

На другом OpenVPN-сервере в логе есть такое:
OPTIONS IMPORT: reading client specific options from: ccd/okro
Здесь же нет такой строчки в логах, как сервер заставить присовокупить iroute?

В случае topology net30 получается:
tun0 addr:10.15.32.1  P-t-P:10.15.32.2  
ovpn-out1: 10.15.32.6/32      network 10.15.32.1 (видимо следствие ifconfig)
В случае topology p2p получается:
tun0 addr:10.15.32.1  P-t-P:10.15.32.2  
ovpn-out1: 10.15.32.6/32      network 10.15.32.1 (аналогично)
остальное поведение аналогичное.

Конфиг сейчас:
local <white ip>
mode server
port 1194
proto tcp-server
dev tun
tls-server
ca keys/ca.crt
cert keys/gw1.crt
key keys/gw1.key
dh keys/dh1024.pem

server 10.15.32.0 255.255.255.0
ifconfig 10.15.32.1 10.15.32.2

client-config-dir /etc/openvpn/ccd
push "route 192.168.2.0 255.255.255.0 10.15.32.1"
route 192.168.88.0 255.255.255.0 10.15.32.2
topology p2p
keepalive 10 120
cipher          AES-256-CBC
auth            sha1
tun-mtu         1500
mssfix          1430
user            nobody
group           nogroup
persist-key
persist-tun
log         /var/log/openvpn/openvpn.log
log-append  /var/log/openvpn/openvpn.log
status /var/log/openvpn/vpngate-status.log
verb 5
mute 10


"openvpn для микротика"
Отправлено ACCA , 06-Фев-14 20:03 
>> ifconfig 192.168.2.1 192.168.2.2
> У меня на это ругается: us=73317 /sbin/ifconfig tun0 10.15.32.1 netmask 10.15.32.2 mtu
> 1500 broadcast 255.255.255.253
> SIOCSIFNETMASK: Invalid argument
> как будто он tap настраивает! почему так?

Покопай туда, так не должно быть:
    grep CONFIG_TUN /boot/config-`uname -r`

да и вообще -
    dpkg -l openvpn

Есть ещё вопросы про p2p и server.


[...]
> В логе туннель заводится,
> Картинка как оно есть:
> http://savepic.net/4541699.png

Это хрен его знает - то ли завелось, то ли он локальный конфиг показывает.


> В случае topology sybnet получается: tun0 addr:10.15.32.1  P-t-P:10.15.32.1
> это нормально?

Нет, они должны быть разными, ты это задаёшь в
   ifconfig 10.15.32.1 10.15.32.2


> если да, то такое ощущение что проблема в iroute(wireshark, tcpdump, torch),
> смотрим логи /var/log/openvpn/openvpn.log
> ping с 88.56 до 2.2 - MULTI: bad source address from client
> [192.168.88.56], packet dropped.

32.2 вообще никому не доступен, это затычка для P-t-P API. При попытке сунуться туда от клиента должен проходить ICMP redirect на 32.1.


> На другом OpenVPN-сервере в логе есть такое:
> OPTIONS IMPORT: reading client specific options from: ccd/okro
> Здесь же нет такой строчки в логах, как сервер заставить присовокупить iroute?

Он у тебя не узнал клиента, потому и ничего не прочитал. Этот самый okro - CN из клиентского сертификата.


> Конфиг сейчас:
> local <white ip>
> mode server
> port 1194
> proto tcp-server
> dev tun
> tls-server

Для этого нужен ещё один ключ -
     tls-auth keys/ta.key

> ca keys/ca.crt
> cert keys/gw1.crt
> key keys/gw1.key
> dh keys/dh1024.pem
> server 10.15.32.0 255.255.255.0

Про server я не помню - по-моему topology subnet подразумевает это же.


> ifconfig 10.15.32.1 10.15.32.2
> client-config-dir /etc/openvpn/ccd
> push "route 192.168.2.0 255.255.255.0 10.15.32.1"
> route 192.168.88.0 255.255.255.0 10.15.32.2

route 192.168.88.0 255.255.255.0 10.15.32.1


> topology p2p

У меня стоит -
   topology subnet

Возможно, что server ... и topology p2p противоречат друг другу.


> cipher          AES-256-CBC
> auth            sha1

При включеном tls-server надо бы tls-auth. И вот что про --auth пишут:

   If OpenVPN receives a packet with a bad HMAC it will drop the packet.

>[оверквотинг удален]
> mssfix          1430
> user            nobody
> group           nogroup
> persist-key
> persist-tun
> log         /var/log/openvpn/openvpn.log
> log-append  /var/log/openvpn/openvpn.log
> status /var/log/openvpn/vpngate-status.log
> verb 5
> mute 10


"openvpn для микротика"
Отправлено mitay , 20-Фев-14 06:30 
>> На другом OpenVPN-сервере в логе есть такое:
>> OPTIONS IMPORT: reading client specific options from: ccd/okro
>> Здесь же нет такой строчки в логах, как сервер заставить присовокупить iroute?
> Он у тебя не узнал клиента, потому и ничего не прочитал. Этот
> самый okro - CN из клиентского сертификата.

Спасибо за помощь, дело было в этом. Микротик закэшировал старый сертификат, надо было пересоздать клиента...

Теперь другая проблема, фрагментация при передаче за туннель:
схема: 192.168.1.0/24-----------gw-debian-----tunnel-----mikrotik-----------192.168.3.0/24
wireshark: TCP segment of a reassembled PDU

192.168.1.52:\>ping 192.168.3.23 -f -l 1372
Обмен пакетами с 192.168.3.23 по с 1372 байтами данных:
Ответ от 192.168.3.23: число байт=1372 время=2мс TTL=126

192.168.1.52:\>ping 192.168.3.23 -f -l 1373
Обмен пакетами с 192.168.3.23 по с 1373 байтами данных:
Требуется фрагментация пакета, но установлен запрещающий флаг.

Если запускать на копирование два файла параллельно - то у каждого скорость по 1200 кбайт/с, если один копируется - то 900 кбайт/с.

Узлы не могут договориться об MTU? Куда копать?


"openvpn для микротика"
Отправлено ACCA , 21-Фев-14 02:10 
> 192.168.1.52:\>ping 192.168.3.23 -f -l 1372
> Обмен пакетами с 192.168.3.23 по с 1372 байтами данных:
> Ответ от 192.168.3.23: число байт=1372 время=2мс TTL=126
> 192.168.1.52:\>ping 192.168.3.23 -f -l 1373
> Обмен пакетами с 192.168.3.23 по с 1373 байтами данных:
> Требуется фрагментация пакета, но установлен запрещающий флаг.

У меня другой ping, у него для размера -s, а -l - число пакетов. Вполне может быть, что это твой ping запрещает фрагментацию. Запусти traceroute ... --mtu, посмотри, что он напишет.

> Если запускать на копирование два файла параллельно - то у каждого скорость
> по 1200 кбайт/с, если один копируется - то 900 кбайт/с.
> Узлы не могут договориться об MTU? Куда копать?

Про MTU договариваются станции с раутерами. Учти такие штуки, как TCP sliding window, Floyd algorithm и VPN padding.

Погоняй tcpflow, причём в обоих режимах - TCP и UDP. "Копирование файла" - какое-то женское понятие.


"openvpn для микротика"
Отправлено mitay , 07-Мрт-14 08:57 
> Про MTU договариваются станции с раутерами.

Спасибо, установил tun-mtu 1628 (1500+(1500-1372)) и вроде фрагментации больше не наблюдается

Ничего криминального в этом нет?
Или теперь фрагментируются tcp пакеты туннеля и я этого не вижу на конечных станциях?