Доступ из lan в openvpn клиент



  • Здравствуйте. Pfsense работает в качестве шлюза и OpenVPN сервера. На клиенте OpenVPN запущен web-сервер. Мне нужно из ЛС за шлюзом Pfsense попасть на web-интерфейс клиента OpenVPN. При этом пинги с локальной машины на ip vpn-клиента идут, но ни web-морда , ни другие ресурсы недоступны почему-то. Помогите разобраться пожалуйста.



  • Правила на на Open VPN\LAN интерфейсах pfSense?
    Брандмауэр на клиенте? web-сервер\иные ресурсы на клиенте привязаны только к LAN-IP клиента?



  • 1.брандмауэр можно исключить. Скажем так, он выключен. Плюс по белому ip c пробросом на маршрутизаторе все работает.
    2. если правильно понял, то Да. Но лучше уточните, что имеется ввиду.
    Правил особо и нет, кроме стандартных




  • В настройках web-сервер к какому IP привязан сервер?
    Специально проверил. На Windows openvpn клиенте по IP, полученному из туннеля работают RDP, SMB.



  • Тоже попробовал с RDP. Не коннектит. Но пинги тоже идут. Видимо проблема глубже.



  • Доброе.
    Скрин правид Fw на LAN покажите.



  • Скажем так, он выключен

    Все же - выключен или как-бы выключен?
    Для TAP-адаптера включены все службы?



  • Давайте тогда ограничимся пока проблемой с windows клиентом. Брандмауэр выключен. Клиент установлен тот, который скачивается из pfsense. С локальной машины за шлюзом pfsense пинги на клиента openvpn идут. По RDP не коннектит. По белому ip с пробросом порта на клиентском роутере все коннектится.
    Появилась мысль, что сервер криво сконфигурирован. Настраивал через визард с использованием freeradius. Плюс у меня мультиван. Дак вот, может проблема с Server mode. Выбран был автоматически Remote Access (User Auth). Я так понял, что в связке с радиусом другого не дано. Может ли проблема быть в этом? То есть возможно тип сервера другой должен быть? Для моей задачи что больше подходит? Спасибо.



  • @kerby_lime:

    Давайте тогда ограничимся пока проблемой с windows клиентом. Брандмауэр выключен. Клиент установлен тот, который скачивается из pfsense. С локальной машины за шлюзом pfsense пинги на клиента openvpn идут. По RDP не коннектит. По белому ip с пробросом порта на клиентском роутере все коннектится.

    При точно такой же конфигурации (специально смоделировал) ВСЕ ресурсы машины-клиента доступны.
    Приведите скрин настроек сервера, протестуйте размер максимального пакета
    http://www.tp-linkru.com/faq-190.html
    Получаемый клиентом IP не попадает в диапазоны IP LAN офиса или сети, откуда клиент коннектится?

    Подобную ситуацию имел c IPSEC. Пинг в удаленную сеть ходил, все остальное не работало. Меняли MTU, MSS - не помогло ничего, пришлось переходить на OVPN.



  • Где файлы конфигурации взять в pfsense? Пересоздал сервер. Клиент коннектится. Пингов теперь нет на клиента вообще. Сервер пингуется(( rdp не пашет.



  • Server mode. Выбран был автоматически Remote Access (User Auth). Я так понял, что в связке с радиусом другого не дано. Может ли проблема быть в этом? То есть возможно тип сервера другой должен быть? Для моей задачи что больше подходит? Спасибо.
    Server mode выбран правильно.
    С радиусом не связывал, не подскажу, но зависимость от радиуса возможна, попробуйте без него.

    Где файлы конфигурации взять в pfsense?
    /var/etc/openvpn
    /var/etc/openvpn-csc
    Но редактировать их смысла нет, GUI их перезапишет.



  • Попробую без радиуса. Отпишусь потом. Скорее всего уже завтра.



  • Удалил сервер OpenVPN и создал заново. С использованием локальной базы пользователей pfsense. Сервер создавал визардом. Ситуация аналогичная. Коннект есть. Пинг на клиента не идет. На сервер идет. RDP не работает. Сейчас попробую выложить конфиги.
    Конфиг сервера прокомментировал:

    
    dev ovpns1
    dev-type tun
    tun-ipv6 //вот это меня смущает!!!!
    dev-node /dev/tun1
    writepid /var/run/openvpn_server1.pid
    #user nobody
    #group nobody
    script-security 3
    daemon
    keepalive 10 60
    ping-timer-rem
    persist-tun
    persist-key
    proto udp
    cipher AES-128-CBC
    auth SHA256
    up /usr/local/sbin/ovpn-linkup
    down /usr/local/sbin/ovpn-linkdown
    client-connect /usr/local/sbin/openvpn.attributes.sh
    client-disconnect /usr/local/sbin/openvpn.attributes.sh
    local //ip убрал
    tls-server
    server 192.168.160.0 255.255.255.0 //этот адрес точно ни с чем не пересекается
    client-config-dir /var/etc/openvpn-csc/server1
    username-as-common-name
    auth-user-pass-verify "/usr/local/sbin/ovpn_auth_verify user TG9jYWwgRGF0YWJhc2U= false server1 1194" via-env
    tls-verify "/usr/local/sbin/ovpn_auth_verify tls 'OpenVpnCAcrt' 1"
    lport 1194
    management /var/etc/openvpn/server1.sock unix
    push "dhcp-option DNS //убрал"
    push "dhcp-option DNS 8.8.8.8"
    ca /var/etc/openvpn/server1.ca 
    cert /var/etc/openvpn/server1.cert 
    key /var/etc/openvpn/server1.key 
    dh /etc/dh-parameters.2048
    tls-auth /var/etc/openvpn/server1.tls-auth 0
    persist-remote-ip
    float
    topology net30 //вот этот пункт еще интересен
    
    


  • Ми конфиги (Тэг "Code" не поддерживает цвета, оставляю как есть):
    Для клиента использовался дистрибутив, получаемый через пакет Client Export Utility, версии OVPN  клиента - как "старая" 2.3.14-Ix01, так  и новая 2.4.0-Ix01. Работают обе. И да, "старая" 2.3.14-Ix01 требует запуска с правами админа.

    Сервер Remote Access (c комментариями)

    dev ovpns5
    verb 1
    dev-type tun
    tun-ipv6 // просто заглушка для ipv6 
    dev-node /dev/tun5
    writepid /var/run/openvpn_server5.pid
    #user nobody
    #group nobody
    script-security 3
    daemon
    keepalive 10 60
    ping-timer-rem
    persist-tun
    persist-key
    proto udp
    cipher AES-128-CBC
    auth SHA1
    up /usr/local/sbin/ovpn-linkup
    down /usr/local/sbin/ovpn-linkdown
    client-connect /usr/local/sbin/openvpn.attributes.sh
    client-disconnect /usr/local/sbin/openvpn.attributes.sh
    local xxx.xxx.xxx.111 // Внешний “белый” IP WAN 
    tls-server
    server 10.11.11.0 255.255.255.0 [color]//адрес сервера в туннеле[/color]
    client-config-dir /var/etc/openvpn-csc/server5
    username-as-common-name
    auth-user-pass-verify "/usr/local/sbin/ovpn_auth_verify user 'Local Database' true server5" via-env
    tls-verify "/usr/local/sbin/ovpn_auth_verify tls 'ra-ovpns-cert' 1"
    lport ххххх
    management /var/etc/openvpn/server5.sock unix
    push "route 10.0.2.0 255.255.255.0" [color]//push клиентам в LAN[/color]
    push "route 192.168.0.0 255.255.255.0"[color] //push клиентам в сеть за другим OVPN[/color]
    ca /var/etc/openvpn/server5.ca 
    cert /var/etc/openvpn/server5.cert 
    key /var/etc/openvpn/server5.key 
    dh /etc/dh-parameters.1024
    crl-verify /var/etc/openvpn/server5.crl-verify 
    tls-auth /var/etc/openvpn/server5.tls-auth 0
    persist-remote-ip
    float
    topology subnet [color]//В настройках сервера выбрано Topology-subnet[/color]
    reneg-sec 0
    ifconfig-pool-persist /var/games/ips.list 0[color] //путь к файлу для задания клиентам стат. IP[/color]
    
    Client Specific Override для отдельного клиента:
    Лежит в /var/etc/openvpn-csc/server5
    
    [code]push "route 10.0.3.0 255.255.255.0" [color]//push клиенту в сеть филиала за другим OVPN[/color]
    push "route 10.0.4.0 255.255.255.0" [color]//push клиенту в сеть филиала за другим OVPN[/color]
    
    push "route 10.0.5.0 255.255.255.0" [color]//push клиенту в сеть филиала за другим OVPN
    [/color]
    push "route 10.100.100.0 255.255.255.0" [color]//push клиенту в сеть филиала за другим OVPN
    [/color]
    push "route 10.168.1.0 255.255.255.0"[color] //push клиенту в сеть филиала за другим OVPN[/color]
    [b]# ниже - необязательные директивы:[/b]
    push "dhcp-option DOMAIN domain.local"[color] //push клиенту DNS Domain[/color]
    push "dhcp-option DNS 10.0.2.2" [color]//push клиенту AD DNS Servers[/color] 
    push "dhcp-option DNS 10.0.2.10"[color] //push клиенту AD DNS Servers[/color] [/code]
    
    [u]другой OVPN[/u] - иные экземпляры Open VPN серверов на том же pfSense
    


  • ОК, буду пробовать. Отпишусь.

    P.S. Ну заработало сразу как только на сервере добавил push route в локалку за pfsense. Интересно, если я не хочу чтобы клиенты могли лазать в локалке, но сам из локалки доступ к клиентам хочу иметь, это можно организовать?



  • @kerby_lime:

    ОК, буду пробовать. Отпишусь.

    P.S. Ну заработало сразу как только на сервере добавил push route в локалку за pfsense. Интересно, если я не хочу чтобы клиенты могли лазать в локалке, но сам из локалки доступ к клиентам хочу иметь, это можно организовать?

    Для этого у вас есть вкладка    Firewall-Rules-OpenVPN
    Пишите там любые правила.

    P.S.
    Какой-то скромный у вас восторг от решения проблемы.  ;)



  • Восторг есть. Просто это только начало пути так сказать. Огромное спасибо!!!
    Возник по ходу еще один вопрос. В конфиге сервера есть место где указываются пути для  скриптов при коннекте/дисконнекте клиента. Аналогично скриптам ip-up /ip-down в pptp. Чисто теоретически, если мне нужно строить индивидуальные маршруты для клиентов, то здесь можно прописать скрипты в которых будут выполнятся правила iptables. Это возможно? Если переиначить, то могу ли я добиться эффетка push route на сервере, но правилами iptables?
    P.S. iptables - command not found. Печаль-беда. Как тогда быть, если нужны динамические правила маршрутизации? При коннекте клиента чтоб правило отработало, при дисконнекте - удалилось.



  • Доброе.

    Это возможно? Если переиначить, то могу ли я добиться эффетка push route на сервере, но правилами iptables?

    Если это не массово, то непосредственно на клиентах это делать проще. Т.е. , напр., сперва http://skeletor.org.ua/?p=4364, а после - route  непосредст. в конфиге клиента.

    Можно попробовать еще с Client specific overrides поиграться для конкр. клиента.



  • На клиенте - вариант, который мне не подходит по ряду причин. Нужно маршрутизировать на сервере. Хотел заюзать для этого iptables, но чет не нахожу в pfsense такого. Ни в shell, ни в web.



  • Нет их там. Это же BSD.

    Четкое ТЗ давайте.



  • @werter:

    Нет их там. Это же BSD.

    Четкое ТЗ давайте.

    Да, я уже понял, что нету.
    ТЗ:
    Мне нужно одним пользователям ЛС делать проброс на openvpn клиента, другим не делать. Или одним пользователям ЛС разрешать доступ конкретным vpn-клиентам, а другим - к другим. Надеюсь тут понятно. Т.е. ходить пакеты должны строго туда куда я скажу. Правила должны быть динамическими. Срабатывать и удаляться при коннекте и дисконнекте клиента.
    Да, с freebsd дел не имел. Но на debian c pptp такое делал.
    Есть шанс реализации подобного в pfsense? 
    P.S. нагуглил ipfw. Наверно подойдет. Но тем не менее. Поделитесь мыслями. Послушать опытных специалистов всегда полезно.



  • Правилами fw на ЛАН воспользуйтесь.



  • @werter:

    Правилами fw на ЛАН воспользуйтесь.

    Это в web pfsense настроить? Динамики не будет тогда?



  • В конфиге сервера есть место где указываются пути для  скриптов при коннекте/дисконнекте клиента

    Нет. Если имеется в виду поле "Advanced Configuration"в настройках OVPN , то туда вносятся те директивы (команды, опции) которые не вынесены в GUI. При желании в Advanced Configuration можно вбить вообще все настройки, не используя GUI совсем, так сказать Linux way.

    Мне нужно одним пользователям ЛС делать проброс на openvpn клиента, другим не делать. Или одним пользователям ЛС разрешать доступ конкретным vpn-клиентам, а другим - к другим.

    Для этого существуют Client Specific Overrides.
    Именно там в привязке к сертификату (common name) можно очень гибко передавать конкретному клиенту конкретные маршруты и т.д.

    Например, push route "192.168.0.0 255.255.255.0" в Advanced Configuration сервера передаст маршрут 192.168.0.0 255.255.255.0 всем клиентам данного сервера,
    А push route "192.168.0.0 255.255.255.0"  в Client Specific Override для конкретного клиента - только ему.

    Срабатывать и удаляться при коннекте и дисконнекте клиента.
    Именно так и будет.

    iptables во FreeBSD нет. Есть pfctl:
    http://freebsd.ml/команды-управления-pf/
    Настраиваемый из GUI.

    Для совсем тонкого управления кому куда можно\нельзя есть  Firewall-Rules-OpenVPN, единая для всех инстансов OpenVPN на конкретном pfSense.



  • Спасибо! Буду думать. ;)