Построение VPN на базе Mandriva Linux 2007 и PoPToPПример построения виртуальной частной сети (VPN) с сервером PoPToP на базе Mandriva Linux 2007.    Сервер – Mandriva Linux 2007, ядро 2.6.17. Имеет две сетевых карты, одна – подключение к Интернет (eth1, IP=85.140.0.1), вторая – к локальной сети (eth0, IP=192.168.0.158). Локальная сеть 192.168.0.0/24, DNS сервер IP=192.168.0.9, WINS сервер IP=192.168.0.9 Для организации VPN, в данном случае, применяется туннельный протокол точка-точка (PPTP), использующий методы проверки подлинности на уровне пользователей протокола Point-to-Point Protocol (PPP) и методы шифрования данных Microsoft Point-to-Point Encryption (MPPE). Первый (ppp-2.4.3) входит в дистрибутив Mandriva Linux и может быть установлен с помощью rpmdrake. Второй в дистрибутив не входит и может быть взят по ссылке с сайта poptop.org. На январь 2007 г. там имеются ссылки на : текущую версию – 1.3.0 (current stable version), и экспериментальную версию - 1.3.2 Какую из них выбрать – решайте сами. Я экспериментальную версию испытывать не стал.     Следующим шагом выполняем установку PoPToP – сервера: Распакуем пакет pptpd-1.3.0.tar.gz tar zxvf pptpd-1.3.0.tar.gz Переходим в полученный каталог : cd pptpd-1.3.0 Конфигурируем под свои нужды ./configure –with-bcrelay Параметр –with-bcrelay позволяет сконфигурировать сервер с использованием перенаправления broadcast – пакетов из локальной сети к VPN-клиенту, что позволяет получить полноценную сеть, но увеличивает трафик. По возможности, попробуйте обойтись без него. В моем случае, из-за наличия у клиента какой-то тупой программы, пришлось включить в конфигурацию bcrelay. Далее, как обычно выполняем: make make install Теперь остается только подправить конфигурационные файлы etc/pptpd.conf и /etc/ppp/options.pptpd, а также файлы с именами и паролями пользователей VPN - /etc/ppp/chap-secrets # $Id: pptpd.conf,v 1.8 2004/04/28 11:36:07 quozl Exp $ # # Sample Poptop configuration file /etc/pptpd.conf # # Changes are effective when pptpd is restarted. ############################################################################### # Указываем, где искать файл options.pppd option /etc/ppp/options.pptpd # TAG: debug # #debug # # TAG: stimeout # Таймаут в секундах на установление соединения. По умолчанию - 10 # # stimeout 10 # # TAG: noipparam # Параметры IP мы определяем сами # # #noipparam # TAG: logwtmp #Можно использовать для регистрации подключений и отключений клиентов в журнале #/var/log/wtmp. Если используется, то нужно скопировать модуль pptpd-logwtmp.so из #каталога /pptpd-1.3.0/plugins в каталог /var/lib/pptpd # Для вывода данных журнала можно использовать # utmpdump /var/log/wtmp | grep ppp #logwtmp # # TAG: bcrelay < if >; # Перенаправление бродкастов с интерфейса LAN в туннель # bcrelay eth0 # TAG: localip # TAG: remoteip # Определяет диапазон IP адресов на каждом конце туннеля. # # Можно использовать единичные IP, разделенные запятой или диапазоны через “-“ # или их комбинации # # 192.168.0.234,192.168.0.245-249,192.168.0.254 # # Нельзя: # # 1. использовать пробелы между запятыми и тире. # 2. отсекать цифры в диапазонах , 234-8 –это неверно, должно быть 234-238 # # каждому клиенту желательно выделить свой IP. Число подключений не может быть больше, чем # число адресов в выделенном диапазоне IP. #localip при подключении будет присваиваться ppp и может быть одним и тем же для всех #клиентов # # # В нашем случае: localip 192.168.0.159 remoteip 192.168.0.220-253 # по умолчанию сервер слушает 1723/TCP порт на всех интерфейсах. Можно указать конкретный. # В нашем случае - внешний listen 85.140.0.1 -------------------------------------------------------конец pptpd.conf--------------------------------------- Файл /etc/ppp/options.pptpd: ############################################################################### # $Id: options.pptpd,v 1.11 2005/12/29 01:21:09 quozl Exp $ # # Sample Poptop PPP options file /etc/ppp/options.pptpd # Options used by PPP when a connection arrives from a client. # This file is pointed to by /etc/pptpd.conf option keyword. # Changes are effective on the next connection. See "man pppd";. # # You are expected to change this file to suit your system. As # packaged, it requires PPP 2.4.2 and the kernel MPPE module. ############################################################################### # Authentication # Имя локальной системы (используется как второй элемент каждой записи # пользователя в /etc/ppp/chap-secrets по умолчанию - pptpd name myvpn # включение данной функции позволяет отсечь имя домена при регистрации. # #chapms-strip-domain # # Протоколы аутентификации и шифрования #Не используем PAP, CHAP, MSCHAP refuse-pap refuse-chap refuse-mschap # И спользуем MSCHAP v2 require-mschap-v2 # Используем MPPE 128 бит mppe required,stateless,no40,no56 # Сетевые настройки # использовать DNS сервер локальной сети на стороне клиента # можно указать 2 IP ms-dns 192.168.0.9 #ms-dns 10.0.0.2 # использовать WINS сервер локальной сети на стороне клиента # можно указать 2 IP ms-wins 192.168.0.9 #ms-wins 10.0.0.4 #Позволяет добавлять ARP-записи, связанные с IP клиента # и MAC- адресом локальной сетевой карты. proxyarp # Создавать lock-файл lock # Не использовать BSD-Compress compression nobsdcomp # Disable Van Jacobson compression # (needed on some networks with Windows 9x/ME/XP clients, see posting to # poptop-server on 14th April 2005 by Pawel Pokrywka and followups, # http://marc.theaimsgroup.com/?t=111343175400006&r=1&w=2 ) novj novjccomp # turn off logging to stderr, since this may be redirected to pptpd, # which may trigger a loopback #nologfd # put plugins here # (putting them higher up may cause them to sent messages to the pty) -------------------Конец файла------------------------------- На начальном этапе проверки и настройки VPN-сервера удобно использовать запуск демона pptpd вручную, с использованием ключа –f: pptpd –f что позволит видеть на экране сообщения об ошибках. Более подробную информацию можно получить из системного журнала /var/log/messages. tail -n 20 /var/log/messages – посмотреть последние 20 строк Когда все заработает, можно будет создать скрипт для автоматического запуска pptpd при загрузке системы. Не забываем подгрузить модуль ядра ppp_mppe: modprobe ppp_mppe Проверить, загружен ли модуль можно с помощью команды lsmod (отобразить список загруженных модулей): lsmod | grep ppp Поскольку VPN сервер использует TCP порт 1723 и протокол GRE (протокол 47), нужно разрешить их прохождение через iptables: iptables -A INPUT --protocol tcp --match tcp --destination-port 1723 --jump ACCEPT iptables -A INPUT --protocol 47 --jump ACCEPT Если все нормально запускаем pptpd: pptpd –f И удаленные клиенты VPN должны без проблем подключаться к локальной сети.     Для быстрой проверки возможности подключения к вашему VPN-серверу со стороны клиента можно воспользоваться командой telnet на порт 1723: telnet Для примера - на компьютере клиента выдаем: telnet 85.140.0.1 1723 Если вы правильно сконфигурировали ваш VPN-сервер и не ошиблись с правилами iptables, то должны подключиться к нему и увидеть пустой экран. Если же увидите сообщение о сбое подключения - проверьте, слушает ли сервер порт 1723, и разрешены ли подключения на него. Тем не менее, установление TCP-соединения между клиентом и сервером - это еще не все. Могут возникнуть проблемы с протоколом IP 47 (GRE), причиной которых может быть неправильная настройка брандмауэров, фильтры в сети провайдера, и даже неправильная настройка соединения на стороне клиента. На стороне клиента используется стандартное программное обеспечение Windows.     Пуск – Настройка – Панель управления – Сеть и подключение к Интернету – Сетевые подключения. Откроется окно «Сетевые подключения». В левой части окна выберите пункт «Создание нового подключения», после чего запустится «Мастер новых подключений» Жмем «Далее». Выбираем «Подключить к сети на рабочем месте» Жмем «Далее». Выбираем «Подключение к виртуальной частной сети»: Жмем «Далее» и задаем имя подключения - MyVPN Жмем «Далее» и указываем имя или IP VPN-сервера: 85.140.0.1 После завершения работы мастера, система выведет окно созданного подключения. Прежде, чем вводить имя пользователя, пароль, и подключаться к MyVPN ОБЯЗАТЕЛЬНО нажмите «Свойства» Откроется окно свойств подключения, выбираем вкладку «Сеть» Подсвечиваем «Протокол Интернета (TCP/IP) и нажимаем кнопку «Свойства» Жмем кнопку «Дополнительно» и в открывшемся окне убираем галочку поля «Использовать основной шлюз в удаленной сети»     В процессе использования сервера PoPToP для подключения удаленных клиентов Windows к виртуальной частной сети было замечено несколько непонятных проблем, связанных с подключением клиентов из сетей разных провайдеров. Один и тот же клиент мог прекрасно работать с сетью через одного провайдера, и не мог подключиться к ней через другого. При чем, это сопровождалось сообщением об ошибках с различными кодами, чаще всего - 619 и 734. Подключение с использованием telnet на порт 1723 сервера выполнялось, в журнале сервера были следующие записи: Connect: ppp0 <--> /dev/pts/0 tcflush failed: Bad file descriptor tcsetattr: Invalid argument (line 1025) Exit. GRE: read(fd=7,buffer=8058640,len=8196) from PTY failed: status = -1 error = Input/output error, usually caused by unexpected termination of pppd, check option syntax and pppd logs CTRL: PTY read or GRE write failed (pty,gre)=(7,8) Иногда в журнале появлялось и такое: LCP: timeout sending Config-Requests Connection terminated. Судя по всему, причина - невозможность согласования параметров обмена между клиентом и сервером с использованием Link Control Protocol (LCP). Предположить, что причина в плохом качестве канала передачи данных, конечно можно, но данные из статистики и журналов модемов этого не подтверждали, технология QoS, вроде бы, провайдером не использовалась, ошибок при приеме/передаче пакетов нет. Попытки общения с техподдержкой провайдера успехом не увенчались, поэтому пришлось разбираться с проблемой почти вслепую. Для начала, попробовали уменьшить значения MTU и MRU. К кардинальному изменению ситуации это не привело. Положительный эффект наблюдался только в случае изменения настроек подключения в Windows В начало страницы       |       На главную страницу |
|