Я установил довольно простой сервер L2TP / IPsec с xl2tpd, у которого есть пул IP-адресов в xl2tpd.conf, настроенный для клиентов VPN. Теперь мне нужно назначить определенный IP-адрес VPN-клиенту, если этот клиент использует определенное имя пользователя с правильным паролем. Проблема в том, что pppd настроен на запуск помощника auth для аутентификации пользователей в домене Active Directory, поэтому я не могу использовать файл chap.secrets, чтобы указать IP-адрес для соединения, установленного с заданным именем пользователя. Более того, pppd получает предлагаемые (?) IP-адреса из пула xl2tpd, таким образом, адрес выделяется перед аутентификацией, и, похоже, он игнорирует ipcp-accept-remote
директива в файле параметров, которая технически позволяет L2TP-клиенту указать желаемый IP-адрес, или я бы просто установил статический IP-адрес в настройках клиента. Клиент в Windows 7.
Как я могу заставить pppd назначать определенный IP-адрес соединению после того, как оно было аутентифицировано в Windows AD?
Изменить: похоже, что с настроенным помощником NTLM auth pppd никогда не использует файл chap-secrets, поэтому все, что я ввожу, просто не используется. Так разве это невозможно?
Короче говоря, нет ничего невозможного, просто нужно больше или другие инструменты. Мне удалось настроить сервер RADIUS, использовать freeradius, чтобы не мешать работе с Windows, но, вероятно, сервер MS-RADIUS с его msRADIUSFramed-IP-Address
атрибут тоже подойдет. Настроил пул для «обычных» пользователей, назначил его через файл пользователя DEFAULT
настройте, затем настройте оба типа аутентификации (требуется дополнительное тестирование, в любом случае ntlm_auth поверх mschap работает), а затем перешел к сопоставлению имени пользователя, чтобы назначить IP-адреса непосредственно в конфигурации freeradius. Тупой, но работающий.
Набор хаков: во-первых, я не смог правильно заполнить Stripped-User-Name
атрибут, поэтому пошел с mschap:User-Name
должен быть передан в ntlm_auth, в противном случае вызов / резонанс формируется против полного имени вместо сокращенного имени, и ntlm_auth сразу выдает ошибку, поскольку winbind не ожидает полных имен. Maaaybe, я должен заставить его работать правильным образом, но winbindd склонен к сбоям, когда UPN начинают вызывать, а серверная часть sssd не использует NTLM для аутентификации mschap-sequence. Во-вторых, я переехал files
перед mschap
в последовательности авторизации, чтобы иметь оба типа пользователей - локально и доменно. В-третьих, я сначала протестировал все с помощью PAP, и при переходе на mschap я обнаружил, что mschap сообщает ntlm_auth, что он не может читать vs winbindd. Мне не удалось заставить radiusd правильно запускать ntlm_auth как ограниченный пользователь (вне времени), и вместо этого я запустил radiusd как root. (Пожалуйста, сделайте это правильно, когда вы будете создавать производственный сервер RADIUS, аутентифицирующий по домену!) Но RADIUS прослушивает только 127.0.0.1, поэтому ожидается, что безопасность не ухудшится.