Заставили тут меня на работе заниматься производственным онанизмом поднимать PPTP-клиент из Linux на Microsoft-овский сервер. В последний раз я это делал так давно, что уже и забыл о таких проклятьях как ppp и pptp. И даже как-то пропустил новость о том, что начиная с 2.6.13 в линуксовом ядре появилась поддержка MPPE. Так что пришлось разбираться во всём заново, и как водится, походить по граблям. А именно.
- Почему-то оно наотрез отказалось работать в синхронном режиме (Synchronous HDLC). Раньше всегда так запускал, было нормально. А в этот раз измучался, по всем симптомам полагая что не проходит авторизация. В-общем, опции "sync" из параметров pppd и pptp пришлось убрать.
- Если в имени пользователя присутствует обратный слэш ("\"), то его во всех конфигах необходимо дублировать. Это касается как опций pppd, так и chap-secrets. Некстати, в логах pppd тоже будут мелькать логины с двойными слэшами. Это нормально, на самом деле на другую сторону уйдёт всё как надо.
- Если в пароле присутствуют символы помимо букв и цифр, то его нужно заключать в кавычки ("").
- Коль скоро на виндовом сервере (его админю не я) настроено принудительное включение шифрования MPPE-128, то для аутентификации подходят только протоколы CHAP и MSCHAP-v2. А раз так, то в конфигах pppd необходимо явно указать "refuse-eap", иначе не взлетит (фиг знает почему).
- Если после поднятия интерфейса требуется прописать статические маршруты, то надо это делать скриптами в "/etc/ppp/ip-up.d", проверяя переменную окружения "PPP_IPPARAM", а не в "/etc/network/interfaces". Ибо скрипты настройки сети ничего не знают про внутреннюю кухню pppd, в том числе и IP / имена интерфейсов.
И на будущее, примерные конфиги для всего это безобразия "как есть".
I. "/etc/ppp/peers/some_peer"
II. "/etc/ppp/chap-secrets"
III. "/etc/network/interfaces"
IV. "/etc/ppp/ip-up.d/some.script"
Как-то так.