воскресенье, 20 мая 2012 г.

Настройка PPP сервера в Debian\OpenVZ

Для подключению к дому у меня был настроен OpenVPN. Он очень хорош, но для подключения с windows необходимо ставить openvpn, ПРАВИЛЬНО прописать клиентский конфиг и совершить прочие сложные вещи, которые в гостях у друга на компьютере сделать не получится. На замену был выбран PPP сервер, который и был поднят на домашнем сервере удаленного доступа (да и практика не помешает).

Пока о настройке маршрутизации речи не идет. Только установка PPP сервера с минимальными модификациями, чтобы работало.

Для начала необходимо подготовить аппаратную ноду. Читаем Оригинал на Wiki OpenVZ.

Т.к. в OpenVZ используется один экземпляр ядра на ноду и контейнеры, необходимо загрузить PPP модули ядра и поставить их на автоматическую загрузку в ноде(я прописал в rc.local):

HN # modprobe ppp_async
HN # modprobe ppp_deflate
HN # modprobe ppp_mppe

Далее конфигурируем контейнер:

HN # vzctl set [VEnumber] --features ppp:on --save
HN # vzctl set [VEnumber] --devices c:108:0:rw --save

Перезагружаем или запускаем контейнер, чтобы применить изменения. Здесь у меня возникли сложности, т.к. через эту же виртуалку я подключался к системе, а конфигурировать и перезагружать удаленный файрволл - к поездке. Я достаточно быстро вспомнил, что на аппаратной ноде настроен screen и операции вроде service shutdown && service start не оборвутся на половине из-за разрыва ssh сессии. Создаем внутри контейнера устройство PPP:

VZ # mknod /dev/ppp c 108 0
VZ # chmod 600 /dev/ppp

Подготовка платформы завершена. Далее необходимо поставить и настроить софт. Идем на сайт Poptop. Здесь всё очень просто.

apt-get install pptpd

Правим конфиги. Всего их три: конфиг pptpd, конфиг ppp и авторизация (chap-secrets). В конфиге авторизации, кстати, можно задать, какой IP будет выдан каждому клиенту PPP.

Для начала конфиг /etc/pptpd.conf. Для начала работы необходимо только настроить пул IP адресов, который будет использоваться:

localip 172.16.17.1
remoteip 172.16.17.2-31

Далее правим /etc/ppp/pptp-options. Можно добавить логирование для упрощения первоначальной отладки:

logfile "/var/log/pptpd.log"

И настроить протоколы авторизации и шифрования (пока вроде ФСБ не запрещает):

mtu 1300
mru 1300

# Encryption
# Debian: on systems with a kernel built with the package
# kernel-patch-mppe >= 2.4.2 and using ppp >= 2.4.2, ...
# {{{
refuse-pap
refuse-chap
refuse-mschap
# Require the peer to authenticate itself using MS-CHAPv2 [Microsoft
# Challenge Handshake Authentication Protocol, Version 2] authentication.
require-mschap-v2
# Require MPPE 128-bit encryption
# (note that MPPE requires the use of MSCHAP-V2 during authentication)
require-mppe-128
# }}}

UPD: mtu\mru мне пришлось дописать после того, как экспериментальным путем было выяснено, что при пинге пакетом в 1400 байт происходит разрыв соединения.

Почти всё. Перезапускаем демон pptpd и настраиваем авторизацию в /etc/ppp/chap-secrets. Перезагрузка демона после изменения файла не требуется, т.к. файл перечитывается при попытке авторизации. Формат записей очень простой:

client        server  secret                  IP addresses

Если не ошибаюсь поле server используется при исходящем соединении для определения удаленного узла. Ставим туда *.

Всё должно работать без дополнительных настроек (возможно за исключением файрвола).

Хочется отметить, что при создании PPP соединения windows по умолчанию ставить удаленный узел как default gateway, поправить можно в настройках ipv4

Комментариев нет:

Отправить комментарий