[FreeBSD] Пример построения VPN на базе PPTP сервера mpdОригинал: http://www.artmagic.ru/labs/mpd.shtmlОт автора: Статья написана на основе собственного опыта и переборки различных вариантов решений из Интернета. В статье сделана попытка не просто дать рецепт, но и объяснить зачеми для кого нужны подобные решения. Надо признаться, что некоторые моменты могут требовать уточнений или исправлений, которые я с удовольствием выслушаю и опубликую. Ценность этой статьи в том, что поставив все как написано, Вы получите с большой вероятностью рабочее решение. Дм. Новиков (dmn@nnz.ru) Вступление. Частная Виртуальная Сеть (она же ЧВС или VPN) является наиболее удобным способом подключения удаленных пользователей или офисов к компьютерной сети через Интернет. Технология VPN позволяет пользователю, подключенному к Интернет в любой точке мира получить защищенное соединение с корпоративной сетью, где бы она не находилась. Если кратко, то технология VPN состоит в следующем: Решения по построению VPN.Существуют различные решения по построению VPN. Самым распространенным, по понятным причинам, является реализация, встроенная в Windows системы. Она позволяет строить VPN на основе протокола PPTP (Point To Point Protocol) и L2TP. Причем, VPN позволяет шифровать канал 128 или 40-битным ключом, передает пароли в шифрованном виде по протоколу MS CHAP (v1 и v2).Хотя считается, что у Microsoft не самая лучшая реализация VPN (кроме того, она основанна на закрытых протоколах), но благодаря тому, что решение встроено во все Windows-системы, то оно получило достаточно широкое распространение. Логично, что в локальной корпоративной сети на основе Windows-систем и сервер устанавливают под управлением Windows. Однако, многие администраторы справедливо не любят "держать" Windows-серверы, подключенные к Интернет, да еще и соединенные с корпоративной сетью. Зачастую такая установка пробивает брешь в безопасности сети и это привносит администраторам, ответственным за безопасность корпоративной сети большие сложности. Заслуженно считается , что наиболее защищенным с точки зрения безопасности и наиболее функциональным решением для вывода корпоративных сетей в Интернет являются UNIX-серверы. Причем, многие администраторы предпочитают "прятать" Windows-серверы "внутрь" корпоративной сети, за защищенный UNIX-сервер. Реализация же VPN от Microsoft "заставляет" держать Windows-сервер подключенный и к Интернету и к корпоративной сети. К счастью, разработчики UNIX-систем нашли решение по построению VPN-сервера на основе UNIX, совместимого с клиентами Microsoft. Построение VPN на основе UNIX сервера.ВведениеИтак, для того чтобы не устанавливать дополнительный Windows-сервер, необходимо установить VPN-сервер на UNIX-сервере. Как уже отмечалось, в последнее время для популярных UNIX систем появились программные продукты, совместимые с VPN "от Microsoft". В частности для очень популярной платформы, на которой строят большинство UNIX-серверов "FreeBSD" имеется продукт mpd (Multi-link PPP daemon), в котором реализован VPN сервер, совместимый с Microsoft (более подрбне о mpd можно почитать из документации на продукт после установки или на страничке описания порта http://www.freebsd.org/cgi/url.cgi?ports/net/mpd/pkg-descr ) . А для Linux имеется аналогично решение PoPToP (http://www.poptop.org). Далее в данной статье будет рассмотрена платформа FreeBSD и сервер mpd. Решение. Перед нами стояла задача построить VPN сервер, совместимый с Microsoft на основе ОС FreeBSD. Точнее сказать - избавиться от "лишнего" Windows сервера, осуществляющего функцию VPN-сервера. Выводом в Итернет локальной сети (около 300 компьютеров), защитой сети, сбором статистики по трафику у нас занимается сервер под управлением FreeBSD 4.4. В ОС FreeBSD, начиная с версии 4.0 реализована технология NETGRAPH, которая позволяет разделить логику работы сетевого интерфейса от физического устройства, прикрепленного к этому Интерфейсу, а также последовательно применять различные алгоритмы для пакетов, идущих через интерфейс. Описание технологии NETGRAPH на английском языке можно прочитать по адресу: http://www.daemonnews.org/200003/netgraph.html. Для установки PPTP-сервера глубокое знание этой технологии не нужно - достаточно знать, что она применяется пакетом mpd. Шаг 1. Компилируем mpd Компилируем mpd из дерева FreeBSD-портов (можно установить его и из packages). PS. Желательно перед компиляцие пакета mpd обновить дерево портов через cvsup, для того, чтобы установить последнюю версию. Компилируем и инсталлируем mpd: cd /usr/ports/net/mpd make make installШаг 2. Конфигурируем mpd В принципе, рекомендуется перед конфигурацией mpd включить опции FreeBSD-ядра для работы с NETGRAPH. Однако компоненты NETGRAPH загружаются как модули ядра и ядро впринципе пересобирать необязательно. Как показала практика, все компоненты работают без пересборуки ядра. Для того, чтобы настроить mpd нужно создать 3 файла (все файлы должны по умолчанию находиться в каталоге /usr/local/etc/mpd): 1. mpd.conf - файл описывающий конфигурацию интерфейсов 2. mpd.links - файл, описывающий конфигурацию соединений 3. mpd.secret - файл с паролями поьзоватлей. Для краткости и конкретики ниже приводяться все 3 файла, взятые с работающей системы. Конфигурация написана для семи одновременно входящих соединений (сетевые устройства ng0-ng6). Mpd.conf: default: load pptp0 load pptp1 load pptp2 load pptp3 load pptp4 load pptp5 load pptp6 pptp0: #так создается новый интерфейс, воторой параметр - название соединения, который этот интерфейс будет использовать (из файла mpd.links) new -i ng0 pptp0 pptp0 #Задается локальный и удаленный ip адреса set ipcp ranges 10.128.1.193/32 10.128.5.100/32 #Загружаются паремтры, одинаковые для всех интерфейсов load pptp_standart pptp1: new -i ng1 pptp1 pptp1 set ipcp ranges 10.128.1.193/32 10.128.5.101/32 load pptp_standart pptp2: new -i ng2 pptp2 pptp2 set ipcp ranges 10.128.1.193/32 10.128.5.102/32 load pptp_standart pptp3: new -i ng3 pptp3 pptp3 set ipcp ranges 10.128.1.193/32 10.128.5.103/32 load pptp_standart pptp4: new -i ng4 pptp4 pptp4 set ipcp ranges 10.128.1.193/32 10.128.5.104/32 load pptp_standart pptp5: new -i ng5 pptp5 pptp5 set ipcp ranges 10.128.1.193/32 10.128.5.105/32 load pptp_standart pptp6: new -i ng6 pptp6 pptp6 set ipcp ranges 10.128.1.193/32 10.128.5.106/32 load pptp_standart pptp_standart: set iface disable on-demand set bundle disable multilink set link yes acfcomp protocomp #Требуем chap авторизации set link no pap chap set link enable chap set link keep-alive 60 180 set ipcp yes vjcomp #Устанавливаем DNS и Wins set ipcp dns 10.128.1.1 set ipcp nbns 10.128.1.42 #Включаем proxy-arp, чтобы компьютер "видел" без маршрутизации корпоративную сеть (по протоколу arp) set iface enable proxy-arp #Включаем компрессию данных set bundle enable compression #Включаем компрессию данных, совсестимую с Microsoft-клиентами set ccp yes mppc #Включаем шифрование, совместимое с Microsoft-клиентами set ccp yes mpp-e40 set ccp yes mpp-e128 set ccp yes mpp-stateless set bundle yes crypt-reqd #Задаем адрес для входящих соединений set pptp self 195.31.12.122 #Разрешаем входящие соединения set pptp enable incoming set pptp disable originateКак видно, создается 7 "бандлов" (pptp0-pptp6), которые обслуживают 7 интерфейсов. На каждый "бандл" накладываются определенные парамтры работы на интерфейс. Кроме того к каждому "бандлу" прикрепляется "линк" (второй (pptpX) параметр в команде new -i ng5 pptp5 pptp5), который должен быть описан в файле mpd.links. mpd.links ------------------------------------ pptp0: set link type pptp pptp1: set link type pptp pptp2: set link type pptp pptp3: set link type pptp pptp4: set link type pptp pptp5: set link type pptp pptp6: set link type pptpТ.к. все параметры уже были установлены в файле mpd.conf, то для "линков" достаточно обозначить их тип (pptp). Авторизация пользователей осуществляется на основе данных из файла mpd.secret. Он имеет простой формат: "логин" "пароль" IP-пользователя (необязательно) Например, наш mpd.secret: dmn pass1 10.128.5.200 rick pass2 * artp pass3 10.128.5.202Логин\пароль могут совпадать с доменными именами, а могут и не совпадать. Если указано поле IP-пользователя, то пользователю будет выдан персональный IP-адрес. Шаг 3. Запускаем mpd По умолчанию mpd работает в интерактивном режиме. Т.е. он загружает конфигурацию из файлов и предоставляет оболочку для изменения параметров. Первый раз его можно пустить именно в таком режиме: /usr/local/sbin/mpdПри этом должны загрузиться все "бандлы", и создаться интерфейсы ng0-ng6 (проверить можно командой ifconfig -a). mpd.log: Oct 14 14:13:15 vGate mpd: mpd: pid 291, version 3.9 (root@vGate.nienschanz.ru 14:08 30-Sep-2002) Oct 14 14:13:16 vGate mpd: [pptp0] ppp node is "mpd291-pptp0" Oct 14 14:13:16 vGate mpd: [pptp0] using interface ng0 Oct 14 14:13:16 vGate mpd: mpd: local IP address for PPTP is xxx.xxx.xxx.xxx Oct 14 14:13:16 vGate mpd: [pptp1] ppp node is "mpd291-pptp1" Oct 14 14:13:16 vGate mpd: [pptp1] using interface ng1 Oct 14 14:13:16 vGate mpd: [pptp2] ppp node is "mpd291-pptp2" Oct 14 14:13:16 vGate mpd: [pptp2] using interface ng2 Oct 14 14:13:16 vGate mpd: [pptp3] ppp node is "mpd291-pptp3" Oct 14 14:13:16 vGate mpd: [pptp3] using interface ng3 Oct 14 14:13:16 vGate mpd: [pptp4] ppp node is "mpd291-pptp4" Oct 14 14:13:16 vGate mpd: [pptp4] using interface ng4 Oct 14 14:13:16 vGate mpd: [pptp5] ppp node is "mpd291-pptp5" Oct 14 14:13:16 vGate mpd: [pptp5] using interface ng5 Oct 14 14:13:16 vGate mpd: [pptp6] ppp node is "mpd291-pptp6" Oct 14 14:13:16 vGate mpd: [pptp6] using interface ng6 ifconfig -a ng0: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500 ng1: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500 ng2: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500 ng3: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500 ng4: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500 ng5: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500 ng6: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500После провероки правильности работы в дальнейшем mpd можно запускать как демон: /usr/local/sbin/mpd -b, а результаты работы смотреть через лог-файл. PS. Во время тестирования mpd в системе часто оставались интерфейсы ngXX после принудительной выгрузки mpd. При этом команда ifconfig ng0 down delete не удаляла интерфейс. Опытным путем выяснилось, что для того чтобы удалить интерфейс нужно набрать команду ngctl и в появившейся оболочке написать "shutdown ngX:" (двоеточние в конце обязательно). PPS. Для создания Лог-файла нужно: - добавить строчки в /etc/syslog.conf: !mpd *.* /var/log/mpd.log- создать файл /var/log/mpd.log - перепустить syslogd (killall -1 syslogd) Шаг 4. Настраиваем клиента После этого нужно настроить какого-нибудь Windows-клиента для работы с VPN. Все установки можно оставить по умолчанию, а адрес VPN-сервера нужно поставить такой же как в параметре set pptp self 195.31.12.122. Более подробную инструкцию по конфигурированию Windows-клиента можно получить из документации по Windows. Шаг 5. Проверяем в работе Теперь нужно "зайти" с любого Windows клиента на PPTP-сервер и проверить правильность работы. Если все было установлено правильно, то в Windows должна пройти авторизация и вход в сеть и как минимум стать доступной корпоративная сеть. mpd сервер при "правильном" входе должен написать в лог-файл нечто вроде приведенного ниже: Oct 15 12:28:38 vGate mpd: mpd: PPTP connection from 10.128.36.5:4563 Oct 15 12:28:38 vGate mpd: pptp0: attached to connection with 10.128.36.5:4563 Oct 15 12:28:38 vGate mpd: [pptp0] IFACE: Open event Oct 15 12:28:38 vGate mpd: [pptp0] IPCP: Open event Oct 15 12:28:38 vGate mpd: [pptp0] IPCP: state change Initial --> Starting Oct 15 12:28:38 vGate mpd: [pptp0] IPCP: LayerStart Oct 15 12:28:38 vGate mpd: [pptp0] IPCP: Open event Oct 15 12:28:38 vGate mpd: [pptp0] bundle: OPEN event in state CLOSED Oct 15 12:28:38 vGate mpd: [pptp0] opening link "pptp0"... Oct 15 12:28:38 vGate mpd: [pptp0] link: OPEN event Oct 15 12:28:38 vGate mpd: [pptp0] LCP: Open event Oct 15 12:28:38 vGate mpd: [pptp0] LCP: state change Initial --> Starting Oct 15 12:28:38 vGate mpd: [pptp0] LCP: LayerStart Oct 15 12:28:38 vGate mpd: [pptp0] device: OPEN event in state DOWN Oct 15 12:28:38 vGate mpd: [pptp0] attaching to peer's outgoing call Oct 15 12:28:38 vGate mpd: [pptp0] device is now in state OPENING Oct 15 12:28:38 vGate mpd: [pptp0] device: UP event in state OPENING Oct 15 12:28:38 vGate mpd: [pptp0] device is now in state UP Oct 15 12:28:38 vGate mpd: [pptp0] link: UP event Oct 15 12:28:38 vGate mpd: [pptp0] link: origination is remote Oct 15 12:28:38 vGate mpd: [pptp0] LCP: Up event Oct 15 12:28:38 vGate mpd: [pptp0] LCP: state change Starting --> Req-Sent Oct 15 12:28:38 vGate mpd: [pptp0] LCP: phase shift DEAD --> ESTABLISH Oct 15 12:28:38 vGate mpd: [pptp0] LCP: SendConfigReq #4 Oct 15 12:28:38 vGate mpd: ACFCOMP Oct 15 12:28:38 vGate mpd: PROTOCOMP Oct 15 12:28:38 vGate mpd: MRU 1500 Oct 15 12:28:38 vGate mpd: MAGICNUM 302bfc54 Oct 15 12:28:38 vGate mpd: AUTHPROTO CHAP MSOFTv2 Oct 15 12:28:38 vGate mpd: pptp0-0: ignoring SetLinkInfo Oct 15 12:28:38 vGate mpd: [pptp0] LCP: rec'd Configure Request #0 link 0 (Req-Sent) Oct 15 12:28:38 vGate mpd: MAGICNUM 39507ff3 Oct 15 12:28:38 vGate mpd: PROTOCOMP Oct 15 12:28:38 vGate mpd: ACFCOMP Oct 15 12:28:38 vGate mpd: CALLBACK Oct 15 12:28:38 vGate mpd: Not supported Oct 15 12:28:38 vGate mpd: MP MRRU 1614 Oct 15 12:28:38 vGate mpd: ENDPOINTDISC [LOCAL] a9 ac 3a 6f a9 f9 46 50 88 7e e7 ed 18 7a 0c 33 00 00 00 08 Oct 15 12:28:38 vGate mpd: [pptp0] LCP: SendConfigRej #0 Oct 15 12:28:38 vGate mpd: CALLBACK Oct 15 12:28:38 vGate mpd: MP MRRU 1614 Oct 15 12:28:38 vGate mpd: [pptp0] LCP: rec'd Configure Request #1 link 0 (Req-Sent) Oct 15 12:28:38 vGate mpd: MAGICNUM 39507ff3 Oct 15 12:28:38 vGate mpd: PROTOCOMP Oct 15 12:28:38 vGate mpd: ACFCOMP Oct 15 12:28:38 vGate mpd: ENDPOINTDISC [LOCAL] a9 ac 3a 6f a9 f9 46 50 88 7e e7 ed 18 7a 0c 33 00 00 00 08 Oct 15 12:28:38 vGate mpd: [pptp0] LCP: SendConfigAck #1 Oct 15 12:28:38 vGate mpd: MAGICNUM 39507ff3 Oct 15 12:28:38 vGate mpd: PROTOCOMP Oct 15 12:28:38 vGate mpd: ACFCOMP Oct 15 12:28:38 vGate mpd: ENDPOINTDISC [LOCAL] a9 ac 3a 6f a9 f9 46 50 88 7e e7 ed 18 7a 0c 33 00 00 00 08 Oct 15 12:28:38 vGate mpd: [pptp0] LCP: state change Req-Sent --> Ack-Sent Oct 15 12:28:40 vGate mpd: [pptp0] LCP: SendConfigReq #5 Oct 15 12:28:40 vGate mpd: ACFCOMP Oct 15 12:28:40 vGate mpd: PROTOCOMP Oct 15 12:28:40 vGate mpd: MRU 1500 Oct 15 12:28:40 vGate mpd: MAGICNUM 302bfc54Авторизуемся по MSCHAP2 (Этот протокол использует MS Windows 2000 и выше) Oct 15 12:28:40 vGate mpd: AUTHPROTO CHAP MSOFTv2 Oct 15 12:28:40 vGate mpd: pptp0-0: ignoring SetLinkInfo Oct 15 12:28:40 vGate mpd: [pptp0] LCP: rec'd Configure Ack #5 link 0 (Ack-Sent) Oct 15 12:28:40 vGate mpd: ACFCOMP Oct 15 12:28:40 vGate mpd: PROTOCOMP Oct 15 12:28:40 vGate mpd: MRU 1500 Oct 15 12:28:40 vGate mpd: MAGICNUM 302bfc54 Oct 15 12:28:40 vGate mpd: AUTHPROTO CHAP MSOFTv2 Oct 15 12:28:40 vGate mpd: [pptp0] LCP: state change Ack-Sent --> Opened Oct 15 12:28:40 vGate mpd: [pptp0] LCP: phase shift ESTABLISH --> AUTHENTICATE Oct 15 12:28:40 vGate mpd: [pptp0] LCP: auth: peer wants nothing, I want CHAP Oct 15 12:28:40 vGate mpd: [pptp0] CHAP: sending CHALLENGE Oct 15 12:28:40 vGate mpd: [pptp0] LCP: LayerUp Oct 15 12:28:40 vGate mpd: [pptp0] LCP: rec'd Ident #2 link 0 (Opened) Oct 15 12:28:40 vGate mpd: MESG: MSRASV5.00 Oct 15 12:28:40 vGate mpd: [pptp0] LCP: rec'd Ident #3 link 0 (Opened) Oct 15 12:28:40 vGate mpd: MESG: MSRAS-1-DMN Oct 15 12:28:40 vGate mpd: [pptp0] CHAP: rec'd RESPONSE #1Проверка имени пользователя и пароля Oct 15 12:28:40 vGate mpd: Name: "dmn" Oct 15 12:28:40 vGate mpd: Peer name: "dmn" Oct 15 12:28:40 vGate mpd: Response is valid Oct 15 12:28:40 vGate mpd: [pptp0] CHAP: sending SUCCESS Oct 15 12:28:40 vGate mpd: [pptp0] LCP: authorization successful Oct 15 12:28:40 vGate mpd: [pptp0] LCP: phase shift AUTHENTICATE --> NETWORK Oct 15 12:28:40 vGate mpd: [pptp0] up: 1 link, total bandwidth 64000 bps Oct 15 12:28:40 vGate mpd: [pptp0] IPCP: Up event Oct 15 12:28:40 vGate mpd: [pptp0] IPCP: state change Starting --> Req-Sent Oct 15 12:28:40 vGate mpd: [pptp0] IPCP: SendConfigReq #1 Oct 15 12:28:40 vGate mpd: IPADDR 10.128.1.193 Oct 15 12:28:40 vGate mpd: COMPPROTO VJCOMP, 16 comp. channels, no comp-cid Oct 15 12:28:40 vGate mpd: [pptp0] CCP: Open event Oct 15 12:28:40 vGate mpd: [pptp0] CCP: state change Initial --> Starting Oct 15 12:28:40 vGate mpd: [pptp0] CCP: LayerStart Oct 15 12:28:40 vGate mpd: [pptp0] CCP: Up event Oct 15 12:28:40 vGate mpd: [pptp0] CCP: state change Starting --> Req-Sent Oct 15 12:28:40 vGate mpd: [pptp0] CCP: SendConfigReq #1 Oct 15 12:28:40 vGate mpd: MPPC Oct 15 12:28:40 vGate mpd: 0x01000060: MPPE, 40 bit, 128 bit, stateless Oct 15 12:28:40 vGate mpd: [pptp0] CCP: rec'd Configure Request #4 link 0 (Req-Sent)Используется 40-битный ключ Oct 15 12:28:40 vGate mpd: MPPC Oct 15 12:28:40 vGate mpd: 0x010000a1: MPPC MPPE, 40 bit, 56 bit, stateless Oct 15 12:28:40 vGate mpd: [pptp0] CCP: SendConfigNak #4 Oct 15 12:28:40 vGate mpd: MPPC Oct 15 12:28:40 vGate mpd: 0x01000020: MPPE, 40 bit, stateless Oct 15 12:28:40 vGate mpd: [pptp0] IPCP: rec'd Configure Request #5 link 0 (Req-Sent) Oct 15 12:28:40 vGate mpd: IPADDR 0.0.0.0 Oct 15 12:28:40 vGate mpd: NAKing with 10.128.5.200 Oct 15 12:28:40 vGate mpd: PRIDNS 0.0.0.0 Oct 15 12:28:40 vGate mpd: NAKing with 10.128.1.1 Oct 15 12:28:40 vGate mpd: PRINBNS 0.0.0.0 Oct 15 12:28:40 vGate mpd: NAKing with 10.128.1.42 Oct 15 12:28:40 vGate mpd: SECDNS 0.0.0.0 Oct 15 12:28:40 vGate mpd: SECNBNS 0.0.0.0 Oct 15 12:28:40 vGate mpd: [pptp0] IPCP: SendConfigRej #5 Oct 15 12:28:40 vGate mpd: SECDNS 0.0.0.0 Oct 15 12:28:40 vGate mpd: SECNBNS 0.0.0.0 Oct 15 12:28:40 vGate mpd: [pptp0] IPCP: rec'd Configure Reject #1 link 0 (Req-Sent) Oct 15 12:28:40 vGate mpd: COMPPROTO VJCOMP, 16 comp. channels, no comp-cid Oct 15 12:28:40 vGate mpd: [pptp0] IPCP: SendConfigReq #2 Oct 15 12:28:40 vGate mpd: IPADDR 10.128.1.193 Oct 15 12:28:40 vGate mpd: [pptp0] CCP: rec'd Configure Request #6 link 0 (Req-Sent) Oct 15 12:28:40 vGate mpd: MPPC Oct 15 12:28:40 vGate mpd: 0x01000020: MPPE, 40 bit, stateless Oct 15 12:28:40 vGate mpd: [pptp0] CCP: SendConfigAck #6 Oct 15 12:28:40 vGate mpd: MPPC Oct 15 12:28:40 vGate mpd: 0x01000020: MPPE, 40 bit, stateless Oct 15 12:28:40 vGate mpd: [pptp0] CCP: state change Req-Sent --> Ack-Sent Oct 15 12:28:40 vGate mpd: [pptp0] IPCP: rec'd Configure Request #7 link 0 (Req-Sent) Oct 15 12:28:40 vGate mpd: IPADDR 0.0.0.0 Oct 15 12:28:40 vGate mpd: NAKing with 10.128.5.200 Oct 15 12:28:40 vGate mpd: PRIDNS 0.0.0.0 Oct 15 12:28:40 vGate mpd: NAKing with 10.128.1.1 Oct 15 12:28:40 vGate mpd: PRINBNS 0.0.0.0 Oct 15 12:28:40 vGate mpd: NAKing with 10.128.1.42 Oct 15 12:28:40 vGate mpd: [pptp0] IPCP: SendConfigNak #7 Oct 15 12:28:40 vGate mpd: IPADDR 10.128.5.200 Oct 15 12:28:40 vGate mpd: PRIDNS 10.128.1.1 Oct 15 12:28:40 vGate mpd: PRINBNS 10.128.1.42 Oct 15 12:28:40 vGate mpd: [pptp0] IPCP: rec'd Configure Ack #2 link 0 (Req-Sent) Oct 15 12:28:40 vGate mpd: IPADDR 10.128.1.193 Oct 15 12:28:40 vGate mpd: [pptp0] IPCP: state change Req-Sent --> Ack-Rcvd Oct 15 12:28:40 vGate mpd: [pptp0] IPCP: rec'd Configure Request #8 link 0 (Ack-Rcvd) Oct 15 12:28:40 vGate mpd: IPADDR 10.128.5.200 Oct 15 12:28:40 vGate mpd: 10.128.5.200 is OK Oct 15 12:28:40 vGate mpd: PRIDNS 10.128.1.1 Oct 15 12:28:40 vGate mpd: PRINBNS 10.128.1.42 Oct 15 12:28:40 vGate mpd: [pptp0] IPCP: SendConfigAck #8 Oct 15 12:28:40 vGate mpd: IPADDR 10.128.5.200 Oct 15 12:28:40 vGate mpd: PRIDNS 10.128.1.1 Oct 15 12:28:40 vGate mpd: PRINBNS 10.128.1.42 Oct 15 12:28:40 vGate mpd: [pptp0] IPCP: state change Ack-Rcvd --> Opened Oct 15 12:28:40 vGate mpd: [pptp0] IPCP: LayerUp Oct 15 12:28:40 vGate mpd: 10.128.1.193 -> 10.128.5.200 Oct 15 12:28:40 vGate mpd: [pptp0] IFACE: Up event Oct 15 12:28:40 vGate mpd: [pptp0] exec: /sbin/ifconfig ng0 10.128.1.193 10.128.5.200 netmask 0xffffffff -link0 Oct 15 12:28:40 vGate mpd: [pptp0] exec: /usr/sbin/arp -s 10.128.5.200 0:30:4f:e:d5:fd pub Oct 15 12:28:40 vGate mpd: [pptp0] IFACE: Up event Oct 15 12:28:40 vGate mpd: [pptp0] rec'd unexpected protocol IP on link 0 Oct 15 12:28:42 vGate mpd: [pptp0] CCP: SendConfigReq #2 Oct 15 12:28:42 vGate mpd: MPPC Oct 15 12:28:42 vGate mpd: 0x01000060: MPPE, 40 bit, 128 bit, stateless Oct 15 12:28:44 vGate mpd: [pptp0] CCP: SendConfigReq #3 Oct 15 12:28:44 vGate mpd: MPPC Oct 15 12:28:44 vGate mpd: 0x01000060: MPPE, 40 bit, 128 bit, stateless Oct 15 12:28:46 vGate mpd: [pptp0] CCP: SendConfigReq #4 Oct 15 12:28:46 vGate mpd: MPPC Oct 15 12:28:46 vGate mpd: 0x01000060: MPPE, 40 bit, 128 bit, stateless Oct 15 12:28:47 vGate mpd: [pptp0] CCP: rec'd Configure Nak #2 link 0 (Ack-Sent) Oct 15 12:28:47 vGate mpd: Wrong id#, expecting 4 Oct 15 12:28:47 vGate mpd: [pptp0] CCP: rec'd Configure Nak #3 link 0 (Ack-Sent) Oct 15 12:28:47 vGate mpd: Wrong id#, expecting 4 Oct 15 12:28:47 vGate mpd: [pptp0] CCP: rec'd Configure Nak #4 link 0 (Ack-Sent) Oct 15 12:28:47 vGate mpd: MPPC Oct 15 12:28:47 vGate mpd: 0x01000020: MPPE, 40 bit, stateless Oct 15 12:28:47 vGate mpd: [pptp0] CCP: SendConfigReq #5 Oct 15 12:28:47 vGate mpd: MPPC Oct 15 12:28:47 vGate mpd: 0x01000020: MPPE, 40 bit, stateless Oct 15 12:28:47 vGate mpd: [pptp0] CCP: rec'd Configure Ack #5 link 0 (Ack-Sent) Oct 15 12:28:47 vGate mpd: MPPC Oct 15 12:28:47 vGate mpd: 0x01000020: MPPE, 40 bit, stateless Oct 15 12:28:47 vGate mpd: [pptp0] CCP: state change Ack-Sent --> Opened Oct 15 12:28:47 vGate mpd: [pptp0] CCP: LayerUp Oct 15 12:28:47 vGate mpd: Compress using: MPPE, 40 bit, stateless Oct 15 12:28:47 vGate mpd: Decompress using: MPPE, 40 bit, statelessИ должен появиться сетевой интерфейс, обслуживающий соединение: ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1496 inet 10.128.1.193 --> 10.128.5.200 netmask 0xffffffffУ нас же при этом работало "сетевое окружение" и прикреплялись сетевые диски и принтеры. Что хорошо и что плохо. Плюсы: Минусы: Ссылки * Описание MPD http://www.freebsd.org/cgi/url.cgi?ports/net/mpd/pkg-descr * Сайт PopTop http://www.poptop.org/ * О системе NETGRAPH: http://www.daemonnews.org/200003/netgraph.html * Патчи к mpd для запуска внешних авторизаторов http://www.itga.com.au/~gnb/vpn/ |