OpenVPN и раздача прав пользователям.
-
Всем доброго.
В организации стоит pfsense, который роутит интернет от двух провайдеров в три внутренние сети.
Нужно:
1. связать сеть удалённого офиса (192.168.3.0/24) с одной из сетей (тут всё вроде ясно pfsense - OpenVPN - push "route 192.168.1.0 255.255.255.0"; route 192.168.3.0 255.255.255.0 - уже настроено)
2. Некоторым пользователям предоставить доступ к оборудованию в сети 192.168.2.0/24
3. Ещё более некоторым пользователям предоставить доступ к почтовому серверу 192.168.1.2, но запретить доступ в сети 192.168.1.0/24 и 192.168.3.0/24
4. Обеспечить доступ к оборудованию в сети 192.168.4.0/24
5. никто не в курсе, OpenVPN на айфонах поднимается? (это свеженькое, если честно - ещё на эту тему не гуглил)После некоторых раздумий решено следующее…
- для пользователей пунктов 2 и 3 завести пользователей и прописать в "Client Specific Overrides" "ifconfig 10.10.40.XXX; route........" кому куда нужно.
- настроить правила трафика, разрешающие трафик с адресов розданных в предыдущем пункте.
Гложут сомнения, на счёт совместимости с п.1 требований.
Я правильно понимаю, что если будет обнаружен пользователь с именем, совпадающем с именем в сертификате клиента то будет запрошен пароль этого пользователя, а если будет узнан только сертификат, то запрос пароля производиться не будет?
Ну и как кто видит правила, например, разрешающее роутинг трафика из сети 192.168.3.0/24 в сеть 192.168.1/24 через VPN клиента с адресом 10.10.40.6/32
и правило, запрещающее клиенту с адресом 10.10.40.10 ходить в сеть 192.168.1.0/24Уточняющие вопросы приветствуются - мож сам лучше пойму чего хочу. И смогу объяснить заказчику чего он хочет :)
-
Ага.
Ну, уточнения… нужно таки поднимать два севера на разных портах - для организации канала между офисами Peer-to-Peer (SSL/TLS) или Remote access (SSL/TLS) (кстати, где можно прочесть в чём разница?), а для доступа прочих - Remote Access (SSL/TLS+User auth).С чем пока не разобрался - если в настройках клиента указать push ifconfig и два адреса то один будет назначен клиенту, а второй будет алиасом для виртуального интерфейса ovpncX. Но если нарисовать правило, куда можно, куда нельзя ходить с этих адресов ничего не получится. Я пытался сделать assign интерфейса - тоже ничего хорошего не получается. Что я делаю не так?
-
openvpn[57795]: ERROR: FreeBSD route add command failed: external program exited with error status: 1
С какого-то момента на сервере завелась такая вот бяда и как с ней бороться я не знаю :(
push "route 192.168.1.0 255.255.255.0"; route 192.168.4.0 255.255.255.0; в advanced configuration сервера. -
@Ave:
openvpn[57795]: ERROR: FreeBSD route add command failed: external program exited with error status: 1
С какого-то момента на сервере завелась такая вот бяда и как с ней бороться я не знаю :(
push "route 192.168.1.0 255.255.255.0"; route 192.168.4.0 255.255.255.0; в advanced configuration сервера.http://forum.pfsense.org/index.php/topic,35815.0.html
-
Я добился устойчивой установки VPN соединений. Со шлюзов (то бишь машин с pfSense) можно просматривать удалённые сети. Броадкасты и мультикасты вполне слышны в разных частях сети (побочный эффект правил "разрешить весь траффик из сети …." на локльном интерфейсе). А вот "правильные" пакеты подхватываются правилом NAT и роутятся уже с внешнего интерфейса.
В процессе чтения документации к pf возник вопрос: pf обрабатывает правила не в порядке следования, а по правилу максимального соответствия. Как заставить его не маскарадить пакеты между сетками?
Кстати, после применения правил итоговый конфиг pf попадает в файл /tmp/config.debug (там, конечно есть немного лишних переменных - их php скрипт вытрясает, но вполне понятно что к чему)
Но от попыток разобраться какое ж всё-таки правило сработает становится малость грустно. -
Всем доброго.
Щастье почти наступило - на стороне VPN клиента сделал assign интерфейса openvpn и добавил правило outbond NAT:
Do not NAT - не выбрано (хотя, по идее оно как раз мне и надо!!!)
Interface - OpenVPN
Protocol - any
Source - 192.168.X.0/24 - подсеть клиента
Destination - 192.168.1.0/24 - подсеть сервера
Translation - interface addressИз клиентской сети стало можно свободно ходить в сеть головной организации. Но в логах отображается адрес виртуального шлюза (в данном случае 10.10.40.X - адрес виртуального интерфейса OpenVPN), а хотелось бы видеть клиента. Помогите сформулировать правило для NAT…
-
Вопрос - вы хотите видеть всю подсеть клиента?
Тогда NAT здесь не подойдет. Необходимо делать все роутингом.
При этом местный роутер должен быть шлюзом для всех компьютеров офиса. -
Угу… все маршруты прописались правильно...
И со шлюза всё правильно отправляется.
А вот из подсети - первым срабатывает NAT. Отправляет пакет на внешний интерфейс и усё, роуты даже не задействуются.
Попробовал в правиле NAT LAN-to-WAN исправить назначение с any на "не подсеть 192.168.1.0/24" - не работает. -
NAT должен прописываться на WAN интерфейсе, а правила роутинга на LAN.
-
Можно на яблоках… уже просто ничего не могу придумать и сижу перебираю варианты.
две сети: 192.168.1.0/24 (со стороны сервера) и 192.168.4.0/24 (со стороны клиента)
Между WAN интерфейсами проброшен туннель 10.10.40.1<-->10.10.40.2 cо стороны сервера и 10.10.40.10<-->10.10.40.9 со стороны клиента.
Маршруты:
на сервере -
10.10.40.0/24 10.10.40.2 UGS 0 233482 1500 ovpns2
10.10.40.1 link#11 UHS 0 0 16384 lo0
10.10.40.2 link#11 UH 0 0 1500 ovpns2
192.168.1.0/24 link#4 U 0 228190654 1500 fxp0
192.168.4.0/24 10.10.40.2 UGS 0 19 1500 ovpns2На клиенте
10.10.40.1/32 10.10.40.5 UGS 0 0 1500 ovpnc1
10.10.40.9 link#9 UH 0 0 1500 ovpnc1
10.10.40.10 link#9 UHS 0 0 16384 lo0
127.0.0.1 link#4 UH 0 67 16384 lo0
192.168.1.0/24 10.10.40.9 UGS 0 6 1500 ovpnc1
192.168.4.0/24 link#1 U 0 241004 1500 sis0
192.168.4.1 link#1 UHS 0 0 16384 lo0На сервере уже есть один VPN клиент, используется для удалённых сотрудников, поэтому интерфейс ovpns2.
После установления соединения с клиентского шлюза можно бродить по сети 192.168.1.0/24
Что нужно прописать в правилах клиента, чтоб народ оттуда мог выбраться только в сеть головного офиса? -
Вот не роутит он и всё тут.
Как определить, какой из шлюзов гасит пакеты - они без NAT не отправляются, или не принимаются? Стоят галки скиывать в лог на всех правилах с обеих сторон, стоит галка кадать в лог пакеты отброшенные дефолтовым правилом. И в логах ничего с обеих сторон. -
Я, к сожалению, не могу понять Вашу схему по описанию.
-
(192.168.4.0/24 удалённая)<–>192.168.4.1 LAN (pfSense) 10.10.40.X ovpnc1
(192.168.1.0/24 сеть офиса)<-->192.168.1.43 LAN (psSense) 10.10.40.1 ovpns2
Я попробовал запустить на клиенте и сервере tcpdump -i ovpnXX -vv
Без преобразования адресов на сервере не ловится ничего. На клиенте пакеты вида localhost.(случайный порт) > localhost.(порт на сервере)... Может, сервер удаляет пакеты по приходу? хотя, вроде правила "пропускать все пакеты" на закладке OpenVPN выставлены.
-
Ситуация немного проясняется.
Если сгребать пакеты со внешнего интерфейса сервера, то он получает положенное количество пакетов (проверено пингом - сколько пакетов отправлено, столько сервер и получил).
Далее, как я понимаю, из-за того, что это уже второй VPN-сервер на шлюзе на него не распространяются правила, определённые на закладке OpenVPN.
Я попытался сделать assign интерфейса на сервере - у меня тут же отвалился клиент, который подключен к другому VPN-серверу.
Немного смущает, что в логах эти пакеты не отображаются как отброшенные.
Как побороть такое?