Для подключению к дому у меня был настроен 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
Комментариев нет:
Отправить комментарий