OVPN трафик между клиентами

Тема в разделе "Вопросы начинающих", создана пользователем ea100, 17 июл 2015.

  1. ea100

    ea100 Новый участник

    Добрый день.
    Настраивал свои устройства и знакомился с RouterOS по вашему сайту.
    Большое спасибо за то, что пишете статьи с решениями.

    Есть нерешенная задача (неделю бьюсь):
    Сервер OVPN (mikrotik RB751G-2HnD):
    белый IP на wan
    сеть 192.168.44.0\24

    Клиент 01 (mikrotik mAP):
    серый IP на wan
    сеть 192.168.41.0\24
    сеть ovpn 192.168.40.0\24

    Клиент 04 (устройство iOS)

    Задача, чтобы клиент 04 смог попадать в сеть клиента 01.
    Клиент 01 отлично пингует устройства в сети сервера.
    Клиент 04 тоже пингует устройства в сети сервера.
    Сервер пингует устройства сети клиента 01.
    Клиент 04 не пингует устройства сети клиента 01.

    Выдержки из конфигураций.
    Сервер:
    /interface ovpn-server
    add name=ovpn-client01 user=client01
    add name=ovpn-client04 user=client04
    /ppp profile
    add local-address=192.168.40.1 name=ovpn-profile remote-address=ovpn-pool use-encryption=required
    /interface ovpn-server server
    set certificate=cert_2 cipher=blowfish128,aes128,aes192,aes256 default-profile=ovpn-profile enabled=yes netmask=30 require-client-certificate=yes
    /ip firewall filter
    add chain=input comment=ovpn dst-port=1194 protocol=tcp
    add chain=input comment=Ping protocol=icmp
    add chain=forward log-prefix=ping protocol=icmp
    add chain=input comment="Established connections" connection-state=established
    add chain=forward connection-state=established
    add chain=input comment="Related connections" connection-state=related
    add chain=forward connection-state=related
    add action=drop chain=input comment="Invalid connections" connection-state=invalid
    add action=drop chain=forward connection-state=invalid
    add chain=input comment=UDP protocol=udp
    add chain=forward protocol=udp
    add chain=forward comment="Access to Internet from local network" in-interface=bridge-local src-address=192.168.44.0/24
    add chain=input comment="ovpn traffic" in-interface=ovpn-client01
    add chain=forward in-interface=ovpn-client01
    add action=drop chain=input comment=BOGOM in-interface=eth1 src-address-list=BOGON
    add action=drop chain=input comment="All other"
    add action=drop chain=forward
    /ip firewall nat
    add action=masquerade chain=srcnat comment="default configuration" out-interface=eth1
    add action=log chain=dstnat in-interface=ovpn-client04
    /ip route
    add distance=1 dst-address=192.168.41.0/24 gateway=ovpn-client01
    /ppp secret
    add local-address=192.168.40.5 name=client01 password=*** profile=ovpn-profile remote-address=192.168.40.6 service=ovpn
    add local-address=192.168.40.17 name=client04 password=*** profile=ovpn-profile remote-address=192.168.40.18 service=ovpn
    add disabled=yes local-address=192.168.40.9 name=client02 remote-address=192.168.40.10 service=ovpn
    add disabled=yes local-address=192.168.40.13 name=client03 remote-address=192.168.40.14 service=ovpn

    Клиент 01:
    /interface ovpn-client
    add certificate=cert_2 cipher=aes256 connect-to=*.*.*.* mac-address=* name=ovpn-client password=*** user=client01
    /ip firewall filter
    add chain=input comment="Allow Ping" protocol=icmp
    add chain=forward protocol=icmp
    add chain=input comment="Accept established connections" connection-state=established
    add chain=forward connection-state=established
    add chain=input comment="Accept related connections" connection-state=related
    add chain=forward connection-state=related
    add action=drop chain=input comment="Drop invalid connections" connection-state=invalid
    add action=drop chain=forward connection-state=invalid
    add chain=input comment="Allow UDP" protocol=udp
    add chain=forward protocol=udp
    add chain=forward comment="Access to Internet from local network" in-interface=bridge-local src-address=192.168.41.0/24
    add chain=input comment="ovpn traffic" in-interface=ovpn-client
    add chain=forward in-interface=ovpn-client
    add action=drop chain=input comment=BOGON in-interface=eth1 src-address-list=BOGON
    add action=drop chain=input comment=All
    add action=drop chain=forward
    /ip firewall nat
    add action=masquerade chain=srcnat comment="default configuration" out-interface=eth1
    /ip route
    add distance=1 dst-address=192.168.44.0/24 gateway=ovpn-client


    Клиент 04 (iOS):
    verb 3
    remote *.*.*.* 1194
    client
    tls-client
    dev tun
    proto tcp
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    float
    pkcs12 clien04.p12
    client-to-client
    route 192.168.41.0 255.255.255.0
    route 192.168.44.0 255.255.255.0
    auth-user-pass


    Думается мне, что не хватает одной строчки настройки ната в конфигурации сервера.
    Подскажите куда смотреть, пожалуйста.
     
  2. Илья Князев

    Илья Князев Администратор Команда форума

    Попробуйте на клиенте 1
    add distance=1 dst-address=192.168.40.0/24 gateway=ovpn-client
    Вообще при роутенге, на стороне сервера маршруты на клиента правильно прописывать в поле routes в /ppp secret
    Тогда при подключении интерфейса маршрут автоматически добавится в таблицу маршрутизации.
     
  3. ea100

    ea100 Новый участник

    Илья, спасибо. Помогло. Пинг пошел от клиента 4 до устройств за клиентом 1.
    Но только пинг. Видимо, правило для файрвола надо добавить. Буду разбираться.

    >> Вообще при роутенге, на стороне сервера маршруты на клиента правильно прописывать в поле routes в /ppp secret

    Я тоже думал так упростить себе жизнь, но вики.микротик вот что пишет:
    "Routes that appear on the server when the client is connected. The route format is: dst-address gateway metric (for example, 10.1.0.0/ 24 10.0.0.1 1). Several routes may be specified separated with commas. This parameter will be ignored for OpenVPN."
     
  4. 10000volt

    10000volt Участник

    Подождите, пинг пошел значит tcp-ip пакеты идут. Если не видно клиентов других сетей но есть пинг - не идут широковещательные пакеты до удаленной сети.
    Попробуйте зайти по ip адресу удаленного компьютера. Если зайдет - проблема именно в этом.
    OVPN работает в двух режимах, IP (уровень 3 сетевой модели OSI) и ETHERNET (уровень 2 OSI). Переключите оба конца OVPN в ETHERNET режим.
     
  5. ea100

    ea100 Новый участник

    Илья, снова к вам вопрос. :rolleyes:
    Попытка пробросить порт на устройство в сети ovpn-клиента через белый ip сервера ovpn.

    Если проброс на устройство в сети сервера, то всё отлично.
    /ip firewall nat print
    chain=dstnat action=dst-nat to-addresses=192.168.44.90 to-ports=80 protocol=tcp in-interface=eth1-wan dst-port=4444

    Если проброс на аналогичное устройство в сети ovpn-клиента client1, то не работает.
    /ip firewall nat print
    chain=dstnat action=dst-nat to-addresses=192.168.41.90 to-ports=80 protocol=tcp in-interface=eth1-wan dst-port=5555

    При это в ip firewall connections client1 появляется строка в момент запроса: Src.Address 213.87.162.31:27700 Dst. Address 192.168.41.96:80 TCP State sun received
    213.87.162.31 это ip смартфона, с которого пытаюсь извне достучаться. Запрос через браузер 1.1.1.1:5555. Откуда 27700 мне непонятно.

    Трафик между клиентами и сервером и между клиентами ходит отлично.

    Илья, подскажите, пожалуйста, куда смотреть?
     
  6. Илья Князев

    Илья Князев Администратор Команда форума

    Скорее всего у вас ситуация такова. Сервер прокинул пакет до клиента, но у того свой шлюз по умолчанию.
    На стороне клиента надо в mangle prerouting
    1. Маркируем соединение как-то, если in-interface=ovpn-client
    2. Маркируем маршрут, если connection-name=тому что мы задали в (1)
    далее в /ip route добавляем, что-то типа
    /ip route add gateway=ovpn-client(или локальный адрес сервера) route-mark=то что задано в (2)
    Т.е. добиваемся того, чтобы пакет придя по VPN, ушел назад туда же.
     
  7. ea100

    ea100 Новый участник

    Не получилось.
    /ip firewall mangle
    chain=prerouting action=mark-connection new-connection-mark=vpn_conn passthrough=yes dst-address=192.168.41.90 in-interface=ovpn-client // без dst-address=192.168.41.90 вообще перестали работать маршруты через oven канал
    chain=prerouting action=mark-routing new-routing-mark=vpn_route_in passthrough=yes connection-mark=vpn_conn

    /ip route
    gateway=ovpn-client@main routing-mark=vpn_route_in distance=1 dst-address=0.0.0.0/0

    Пробовал маркировать весь трафик устройства 192.168.41.90 и отправлять через ovpn канал на шлюз сервера - тоже не помогло.
    Может ошибка где-то?
     
  8. Илья Князев

    Илья Князев Администратор Команда форума

    Код:
    /ip firewall mangle
    Нам достаточно маркировать соединение по интерфейсу.
    Код:
    chain=prerouting action=mark-connection new-connection-mark=vpn_conn passthrough=yes  in-interface=ovpn-client
    Здесь правильно
    Код:
    chain=prerouting action=mark-routing new-routing-mark=vpn_route_in passthrough=yes connection-mark=vpn_conn 
    Логично еще на output то же самое навесить
    Код:
    chain=output action=mark-routing new-routing-mark=vpn_route_in passthrough=yes connection-mark=vpn_conn
    Код:
    /ip route
    gateway=ovpn-client routing-mark=vpn_route_in distance=1 dst-address=0.0.0.0/0
    Откуда у вас конструкция @main взялась непонятно. Она здесь не нужна.