Думал я, что сабж при использовании pptp vpn невозможен. Оказалось, ошибался. Да, сам ppp-протокол не умеет передавать при соединении маршруты. Однако, при установлении соединения клиентом в туннель посылаются запросы DHCPINFORM, с помощью которых ему можно вернуть практически любой dhcp-option, включая информацию о маршрутах!
Для этого, во-первых, нам потребуется dhcp-сервер. В моем случае имеется уже работающая инфраструктура доступа к ресурсам локальной сети через pptp, поэтому pptpd и dnsmasq уже подняты и выполняют свои функции. В конфигурационный файл dnsmasq.conf добавился следующий блок:
##pptp-vpn
listen-address=192.168.30.1
dhcp-range=pptp,192.168.30.100,192.168.30.120,255.255.255.0,1h
dhcp-option=tag:pptp,vendor:MSFT,2,1i
dhcp-option=tag:pptp,6,192.168.30.1
dhcp-option=tag:pptp,249,192.168.11.0/24,192.168.30.1,192.168.13.0/24,192.168.30.1
где:
listen-address - локальный адрес серверного конца vpn-туннеля (localip в /etc/pptpd.conf)
dhcp-range=pptp,... - объявление нового диапазона с отдельным тегом, дабы не затрагивать настройки других dhcp-зон.
dhcp-option=tag:pptp,vendor:MSFT,2,1i - спецопция для MS dhcp-клиента, говорящая ему делать dhcp-lease при выключении
dhcp-option=tag:pptp,6,192.168.30.1 - указание DNS-сервера
dhcp-option=tag:pptp,249,... - спецопция для MS dhcp-клиента, передающая статические маршруты (если среди клиентов есть Linux\MacOS, следует добавить dhcp-option=121 с аналогичным содержанием)
Далее проверяем корректность внесенных изменений с помощью dnsmasq --test и если все хорошо, перезапускаем демона для применения настроек. DHCP готов к работе.
Чтобы до него долетели DHCPINFORM пакеты от клиентов, в /etc/ppp/pptpd-options добавляется (или раскомментируется) опция proxyarp. Никаких дополнительных настроек не требуется. После перезапуска pptpd можно проверять работоспособность.
В результате при поднятии vpn-туннеля в таблице маршрутизации клиента должны появиться дополнительные маршруты, а ifconfig покажет для соответствующего интерфейса отдельный dns-сервер. Примерно так:
IPv4 таблица маршрута
=========================================================
Активные маршруты:
Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
<.....skip......>
192.168.30.0 255.255.255.0 192.168.30.1 192.168.30.111 21
192.168.30.111 255.255.255.255 On-link 192.168.30.111 276
192.168.11.0 255.255.255.0 On-link 192.168.30.111 21
192.168.11.255 255.255.255.255 On-link 192.168.30.111 276
192.168.13.0 255.255.255.0 On-link 192.168.30.111 21
192.168.13.255 255.255.255.255 On-link 192.168.30.111 276
<.....skip......>
=========================================================
Постоянные маршруты:
Отсутствует