Блог им. Lehik → Настройка vpn в Debian на основе pptpd
Я как-то уже писал про настройку VPN-сервера в Debian на основе OpenVPN, но т.к. у меня до конца не получилось ее реализовать(так и не смог заставить windows-клиентов подключаться, хотя в связке debian-debian vpn работал), я нашел другой способ — через pptp.
Итак начнем.(Основывался на статье )
Сервер Debian 5.0.4. Все делаем из под root'а.
1.
2. Редактируем /etc/pptpd.conf
Как я понял, адреса должны быть в той же сети что и все компы, чтоб клиент мог к ним обращаться, но не должны совпадать с существующими, это я думаю и так понятно.
3. В /etc/ppp/chap-secrets задаем логин и пароль для авторизации
1-ое поле user — это имя пользователя
2-ое pptpd — я так понял это метка, которая объявляется в следующем конфиге
3-е 12345 — пароль
4-е * — ip-адрес, который будет присвоен клиенты с данным именем и паролем, если указана "*" то адрес будет выбран из указанного выше диапазона, но можно указать конкретный адрес из того же диапазона.
4. Редактируем /etc/ppp/pptpd-options
Если кто-то из читателей знает описание опций которые здесь не раскрыты, буду признателен если напишите их в комментариях, а я их добавлю в текст
5.В файл /etc/modules.conf советуют добавить строчку:
но я ничего не добавлял.
6. Если у кого-то не включен форвардинг необходимо включить
и поместить в скрипт, который будет добавлять автоматом при загрузке системы, это я описывать не буду, т.к. я это делал в другом месте, по-моему при настройке iptables. В ссылке выше, автор дает пример, куда можно поместить.
На этом настройка сервера завершена. Перезапускаем ppptpd:
Кому-то возможно придется настраивать firewall, т.к. появится новый интерфейс, скорее всего ppp0
Настройка windows-клиента.
Я опишу это на примере windows 7.
Открываем Центр управления сетями о общим доступом — Настройка нового подключения — Подключение к рабочему месту — подключение с помощью VPN. Вводим ip-адрес(внешний, если подключаетесь через интернет) или DNS-имя компьютера и любое имя для названия подключения. Вводите имя и пароль который указали в конфиге выше(в /etc/ppp/chap-secrets). Ну вот в принципе и все.
P.S. Проблема с которой я столкнулся при подключении windows-клиентом, это что он портит маршруты, которые у вас есть если вы подключаетесь из работающей сети (например с работы) в другую (в удаленный офис). Чтоб старые маршруты остались нетронутыми, а только появился маршрут в новую сеть заходим в свойства VPN-подключения — вкладка сеть — свойства протокола Интернета TCP/IP v.4 — Дополнительно — На вкладке Параметры IP убираем галочку «Использовать основной шлюз в удаленной сети». Отключаем VPN-соединение и подключаем вновь. Все, теперь у Вас нормальные маршруты.
P.P.S. Еще одна проблема при подключении из windows — Иногда не может подключиться с первого раза, приходится несколько раз нажимать «Повторить» (иногда много раз :) )
Настройка linux-клиента. На примере Debian
1. Устанавливаем ppp-клиента.
2. В /etc/ppp/chap-secrets (или mschap-secrets, если используется шифрование mschap/mschap-v2)задаем логин и пароль для авторизации (как на сервере)
3. Создаем файл /etc/ppp/options.pptp.vpn. Вместо слова vpn может использоваться любое слово, которое вам удобно, это будет имя подключения, оно будет еще использоваться в следующих конфигах. Пишем в него:
4. Создаем файл /etc/ppp/peers/vpn и пишем в него
5. При первом подключении можно использовать отладку для вывода сообщений. Делаем это следующей командой
Если будут ошибки, то подключение прервется, у меня сначала были, я их не понимал, но было видно что ругается на MPPE, после чего я проверил чтоб в конфигах и на сервере и на клиенте была строчка require-mppe-128, после чего все подключилось. Если ошибок нет, то вывод просто остановится. Можно будет запустить второй терминал и проверить командой ifconfig -a что появился сетевой интерфейс ppp0, а также проверить наличие маршрута через ppp0 командой route
Если все нормально то подключаться можно командой
а отключаться
Чтоб не было проблем с маршрутами (как я описывал в примере с windows-клиентом) нужно добавить маршрут вручную в подключенную сеть (у меня это сеть 192.168.0.0)
Если после добавления маршрута все работает нормально, машины из удаленной сети видны, то можно добавление этого маршрута автоматизировать. Для этого создайте файл /etc/ppp/ip-up.d/vpn со следующим содержимым
сделайте его исполняемым
Все, теперь при запуске VPN'а у вас будет правильный маршрут. Ну вот на данный момент и все…
Бонус :) Описание опций файлов /etc/pptpd.conf и /etc/ppp/options.pptpd в моей следующей .
Итак начнем.(Основывался на статье )
Сервер Debian 5.0.4. Все делаем из под root'а.
1.
aptitude install pptpd2. Редактируем /etc/pptpd.conf
option /etc/ppp/pptpd-options
stimeout 3 #Какая-то задержка...
localip 192.168.100.x #Устанавливаем локальный ip-адрес,
#который будет у виртуального интерфейса ppp0, можно указать диапазон
remoteip 192.168.100.(x+1)-(x+n) #Устанавливаем диапазон локальных ip-адресов,
#которые будут назначаться клиентам, можно один адресКак я понял, адреса должны быть в той же сети что и все компы, чтоб клиент мог к ним обращаться, но не должны совпадать с существующими, это я думаю и так понятно.
3. В /etc/ppp/chap-secrets задаем логин и пароль для авторизации
# Secrets for authentication using CHAP
# client server secret IP address
user pptpd 12345 *
1-ое поле user — это имя пользователя
2-ое pptpd — я так понял это метка, которая объявляется в следующем конфиге
3-е 12345 — пароль
4-е * — ip-адрес, который будет присвоен клиенты с данным именем и паролем, если указана "*" то адрес будет выбран из указанного выше диапазона, но можно указать конкретный адрес из того же диапазона.
4. Редактируем /etc/ppp/pptpd-options
auth
lock
debug #Включить отладку
name pptpd #Метка
nodefaultroute
refuse-pap #refuse - запрещает/отключает использовать шифрование
refuse-chap
refuse-mschap
require-mschap-v2 #Вроде виды шифрования, chap используют windows-клиенты
require-mppe-128
proxyarp
Если кто-то из читателей знает описание опций которые здесь не раскрыты, буду признателен если напишите их в комментариях, а я их добавлю в текст
5.В файл /etc/modules.conf советуют добавить строчку:
alias ppp-compress-18 ppp_mppe_mppc
но я ничего не добавлял.
6. Если у кого-то не включен форвардинг необходимо включить
echo 1 > /proc/sys/net/ipv4/ip_forward
и поместить в скрипт, который будет добавлять автоматом при загрузке системы, это я описывать не буду, т.к. я это делал в другом месте, по-моему при настройке iptables. В ссылке выше, автор дает пример, куда можно поместить.
На этом настройка сервера завершена. Перезапускаем ppptpd:
/etc/init.d/pptpd restart
Кому-то возможно придется настраивать firewall, т.к. появится новый интерфейс, скорее всего ppp0
Настройка windows-клиента.
Я опишу это на примере windows 7.
Открываем Центр управления сетями о общим доступом — Настройка нового подключения — Подключение к рабочему месту — подключение с помощью VPN. Вводим ip-адрес(внешний, если подключаетесь через интернет) или DNS-имя компьютера и любое имя для названия подключения. Вводите имя и пароль который указали в конфиге выше(в /etc/ppp/chap-secrets). Ну вот в принципе и все.
P.S. Проблема с которой я столкнулся при подключении windows-клиентом, это что он портит маршруты, которые у вас есть если вы подключаетесь из работающей сети (например с работы) в другую (в удаленный офис). Чтоб старые маршруты остались нетронутыми, а только появился маршрут в новую сеть заходим в свойства VPN-подключения — вкладка сеть — свойства протокола Интернета TCP/IP v.4 — Дополнительно — На вкладке Параметры IP убираем галочку «Использовать основной шлюз в удаленной сети». Отключаем VPN-соединение и подключаем вновь. Все, теперь у Вас нормальные маршруты.
P.P.S. Еще одна проблема при подключении из windows — Иногда не может подключиться с первого раза, приходится несколько раз нажимать «Повторить» (иногда много раз :) )
Настройка linux-клиента. На примере Debian
1. Устанавливаем ppp-клиента.
aptitude install pptp-linux
2. В /etc/ppp/chap-secrets (или mschap-secrets, если используется шифрование mschap/mschap-v2)задаем логин и пароль для авторизации (как на сервере)
# Secrets for authentication using CHAP
# client server secret IP address
user pptp 12345 *
3. Создаем файл /etc/ppp/options.pptp.vpn. Вместо слова vpn может использоваться любое слово, которое вам удобно, это будет имя подключения, оно будет еще использоваться в следующих конфигах. Пишем в него:
lock
noauth
refuse-pap
refuse-eap
refuse-chap
refuse-mschap
require-mppe-128
nobsdcomp #Не использовать сжатие (почему незнаю)
nodeflate
persist #Возобновлять подключение при разрыве
4. Создаем файл /etc/ppp/peers/vpn и пишем в него
pty "pptp <имя сервера или ip-адрес> --nolaunchpppd"
name логин #имя пользователя из файла /etc/ppp/chap-secrets
remotename pptp
file /etc/ppp/options.pptp.vpn
ipparam vpn
5. При первом подключении можно использовать отладку для вывода сообщений. Делаем это следующей командой
pon vpn debug dump logfd 2 nodetach
Если будут ошибки, то подключение прервется, у меня сначала были, я их не понимал, но было видно что ругается на MPPE, после чего я проверил чтоб в конфигах и на сервере и на клиенте была строчка require-mppe-128, после чего все подключилось. Если ошибок нет, то вывод просто остановится. Можно будет запустить второй терминал и проверить командой ifconfig -a что появился сетевой интерфейс ppp0, а также проверить наличие маршрута через ppp0 командой route
Если все нормально то подключаться можно командой
pon vpn
а отключаться
poff vpn
Чтоб не было проблем с маршрутами (как я описывал в примере с windows-клиентом) нужно добавить маршрут вручную в подключенную сеть (у меня это сеть 192.168.0.0)
route add -net 192.168.0.0 netmask 255.255.255.192 dev ppp0
Если после добавления маршрута все работает нормально, машины из удаленной сети видны, то можно добавление этого маршрута автоматизировать. Для этого создайте файл /etc/ppp/ip-up.d/vpn со следующим содержимым
#!/bin/sh
route add -net 192.168.0.0 netmask 255.255.255.192 dev ppp0
exit 0
сделайте его исполняемым
chmod 755 /etc/ppp/ip-up.d/vpn
Все, теперь при запуске VPN'а у вас будет правильный маршрут. Ну вот на данный момент и все…
Бонус :) Описание опций файлов /etc/pptpd.conf и /etc/ppp/options.pptpd в моей следующей .
- +10
- Lehik
- 02 сентября 2010, 11:05
И всё, дальше по статье (easy-rsa вроде идёт в том же пакете). Если конектите 2 сервака, то один просто может быть «клиент», то есть конфиги те же, что и для десктопного клиента. В логах обычно всё пишется, если траблы. В windows клиент может работать как прога в трее (по-умолчанию), так и сервисом (нужно галочки при инсталляции проставить). Разницы никакой, просто юзерам будет меньше надоедать.
Ещё по статье по ссылке указанной выше:
— параметр auth MD5 не указывайте, вытрите его вообще (тогда по дефолту будет работать sha1);
— юзайте стандартный порт (по памяти вроде 1194 udp);
— не забывайте открыть этот порт на фаерволах;
— могут быть ещё какие-то твики, от оригинала в статье, изучайте просто вопрос внимательней, что каждый параметр делает, их там немного;
— не забывайте отзывать сертификаты уволившихся людей ), мало ли.
Пакет vpnpptp работает и в Debian, и в Ubuntu и много где еще.
Установлен Debian.
На эту команду aptitude install pptpd консоль выдает сообщение:
166 packages upgraded, 213 newly installed, 25 to remove and 676 not upgraded.
Это так и должно быть или нет?