pptpd и решение проблемы маршрута по умолчанию |
[исправить] |
Суть вопроса:
Имеем настроенный на linux pptp сервер для подключения внешних клиентов к
ресурсам внутренней сети. При установлении соединения с pptp сервером на машине
windows клиента поднимается маршрут по умолчанию с более высоким приоритетом,
чем маршрут через основное подключение. Вследствие чего перестает работать
связь с Интернет, со всеми вытекающими последствиями. Если же в свойствах pptp
соединения отключить галочку с пункта "Использовать основной шлюз в удаленной
сети", то пропадает связь до ресурсов в удаленной сети. Возможности передать
маршруты в рамках соединения клиент-сервер через pptpd нет.
Решение:
Используем мапирование адресных пространств сетей. Будем транслировать то
пространство, которое является локальным для интерфеса windows клиента после
установки соединения.
Например, имеем адресное пространство удаленной(по отношению к клиенту) сети
192.168.0.0/24, а адрес интерфейса pptpd:
# grep localip /etc/pptpd.conf
localip 10.50.11.1
Настраиваем трансляцию адресного пространства:
# iptables -t nat -A PREROUTING -d 10.50.11.0/24 -j NETMAP --to 192.168.0.0/24 -m comment --comment "For_PPTPD_clients"
После чего с клиентской машины есть связь и с интернет, и с ресурсами удаленной
сети через адреса 10.50.11.x. Неудобство с применением IP можно обойти через
настройку dns с использованием отдельной зоны для клиентов pptpd сервера.
Необходимо отметить, что есть еще другой путь решения проблемы - через
настройку отдельного dhcp на стороне сервера и использования option
ms-classless-static-routes code, option rfc3442-classless-static-routes code. Встретил
здесь. Может быть он более
правильный, но мне приведенное решение показалось более красивым и простым.
PS: Не забудьте разрешить соединения через цепочку FORWARD, если используется
политика "Запрещено все, что не разрешено".
|
|
|
|
Раздел: Корень / Администратору / Сетевая подсистема, маршрутизация / PPP, PPTP, PPPOE |