среда, 15 июня 2016 г.

Ubuntu-сервер в качестве pptp-клиента Windows-2008

Исходные данные: 
Xubuntu 14.04 server (64 разряда), не единственный, но на нем установлен squid и openvpn нужно подключить к внешнему Win-серверу для подготовки и сдачи каких-то там экзаменов (учеников пимерно 20 - 50 и они ходят через squid наружу).  Есть инструкция с картинками про Win7.

  Начнем с инструкции. Суть ее такова. Есть ip-адрес, имя и пароль и еще ip, на который ломиться броузером. Все по умолчанию. В конце скромно сказано, что если нужен параллельный доступ в интернет (default route явно поворачивается в сторону туннеля, то нужно сделать...) - делаем пометку, что скорее всего там целая сеть, маршрут на которую не отдается автоматом, а вместо этого используется default. Нам достаточно сделать доступ для squid-а, и можно обойтись без NAT-а. 

Проверяем на крысах.

Берем рабочую станцию с установленным Network-manager и пробуем в ручном режиме подобрать параметры соединения. Это не слишком сложно. Вот пара картинок, что у нас получилось. Заодно это наикратчайшее руководство по подключения к Win-Server



 Броузером сходили, посмотрели, все хорошо, можно переходить к испытаниям на людях.

Конфигурация pptp-клиента

 Несмотря на некоторую избитость темы, толкового руководства как-то не случилось. Самое подходящее и еще, хоть там и про сервер. Ну и чтение man-ов никто не отменял.

 /etc/ppp/options.pptp приводим к виду.

# Lock the port
lock

# Authentication
# We don't need the tunnel server to authenticate itself
noauth

# We won't do PAP, EAP, CHAP, or MSCHAP, but we will accept MSCHAP-V2
# (you may need to remove these refusals if the server is not using MPPE)
refuse-pap
refuse-eap
refuse-chap
refuse-mschap
Все остальное комментарим.

/etc/chap-secrets содержит

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses

"student" OLIMPOKS "passwordfrominstruction"
Дали разумное имя (OLIMPOKS, оно нужно для идентификации, см. ниже...).

 Собственно опции для этого соединения (имя соединения при вызове будет olimpoks, не путать, оно на нижнем регистре) содержатся в новом файле /etc/ppp/peers/olimpoks

# Olimpoks

pty "pptp 95.181.47.90 --nolaunchpppd"  #тип и адрес сервера
name student                            #логин 
remotename OLIMPOKS                     #имя соединения
require-mppe-128                        #включаем поддержку MPPE
nodefaultroute                          #не создавать маршрут по умолчанию
unit 12                                 #номер ppp интерфейса, число счастливое
persist                                 #переподключаться при обрыве
maxfail 30                              #количество попыток переподключения
holdoff 40                              #интервал между подключениями секунд
file /etc/ppp/options.pptp
ipparam olimpoks-pptp
В последней строке имя скрипта (на самом деле их два up и down, но, как показали испытания, второй нам не нужен, маршруты гибнут вместе с падением интерфейса.

Устраиваем натурные испытания и пишем скрипт.

 Ну испытания состоят из совсем простых действий, запускаем pon olimpoks nodetach, смотрим маршруты и пробуем вручную прописать минимальный набор. В нашем случае достаточно только на хост. Строку с добавлением маршрута один-в-один заталкиваем в скрипт. 
Вот он, /etc/ppp/ip-up.d/olimpoks-pptp - имя из предыдущего файла.  И внутри

#! /bin/bash

route add -host 100.10.1.13 dev ppp12
Та самая строка.

 Пробуем по-взрослому, без nodetach и смотрим маршруты. Все хорошенько проверяем. Осталось для верности повесть табличку "прохода нет". В конфиг firewall-а добавляем пару строк...

#!/bin/bash

# Интерфейсы
export PPP=ppp12


### Для туннеля отдельно все сделаем
# Разрешить входящие пакеты для установленных нами соединений
 iptables -A INPUT -m state --state ESTABLISHED,RELATED -i ${PPP} -j ACCEPT
# Дропаем тупо все остальное
 iptables -A INPUT -i ${PPP} -j DROP
#### Конец туннеля
Пока все!

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

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