Итак, мы собрались ставить свеженький MPD5 и по правилам хорошего и удобного тона из портов, конечно же, благо, они свежие и ещё не успели совсем остыть:
Options for mpd 5.1 [ ] NG_CAR Use ng_car kernel module from port (< 7.0 only) [ ] NG_IPACCT Use ng_ipacct kernel module from port [...................] [ OK ] Cancel
Я ничего не выбирал и вам не советую, так что жмём Oll Klear и понеслась.После добавим сразу стартовую строку для MPD в /etc/rc.conf:
цифра в версии в данном случае не имеет значения. Приведённые строки после echo добавились в конец rc.conf, можете проверить командой "cat имяфайла" или "less (либо more) имяфайла".Займёмся теперь конфигурационным файлом нашего будущего VPN сервера:
Именно сюда установились необходимые нам файлы, но пока только примеры - .sample расширения.Перед тем как переименовывать файлы, сделайте их резервную копию, чтобы в случае чего можно было всегда вернуться и посмотреть как сделано в примере.
Переименовать множество файлов можно следующим скриптом (из-под деко не сработает, т.к. ";" - не воспринимается, нужно записать в исполняемый файл всю строку и затем его запустить):
Я доправил свой конфиг mpd.conf до такого состояния:
startup: # настройки локальных мониторов по следующим реквизитам (vpngod:12345) для пользователя с
# admin-привелегиями: set user vpngod 12345 admin # можно подлючиться с консоли set console self 127.0.0.1 5005 set console open # или с веба set web self 192.168.0.2 5006 set web open default: # загружаем по умолчанию профиль vpn load vpn vpn: # сам профиль # Определяем диапазон выдаваемых удалённым клиентам алиасов (адреса виртуальных подключений) # у меня с 249го по 254ый set ippool add poolsat 192.168.0.249 192.168.0.254 # Create clonable bundle template named B - эту секцию не менял create bundle template B set iface enable proxy-arp set iface idle 1800 set iface enable tcpmssfix set ipcp yes vjcomp # Specify IP address pool for dynamic assigment - здесь задаём "шлюзовой" адрес для vpn-сервера # который обслуживает наш поддиапазон - 192.168.0.255 в моём случае, и не думайте, такой адрес
# возможен. # вместо виртуально выдуманного 0.255 можно задать адрес сетевой bce1 - 192.168.0.2. # но в целях дополнительной конспирации я этого делать не стал. set ipcp ranges 192.168.0.255/32 ippool poolsat set ipcp dns 192.168.0.2 192.168.0.3 # внутрикорпоративные dns-сервера, могут быть и внешние # set ipcp nbns 192.168.0.1 - у меня его нет # The five lines below enable Microsoft Point-to-Point encryption # (MPPE) using the ng_mppc(8) netgraph node type. Поддержка шифрования Microsoft # для Windows-клиентов, не изменял секцию set bundle enable compression set ccp yes mppc set mppc yes e40 set mppc yes e128 set mppc yes stateless # Create clonable link template named L - не менял ничего create link template L pptp # Set bundle template to use set link action bundle B # Multilink adds some overhead, but gives full 1500 MTU # различные настройки для поддержания MTU в 1500 байт set link enable multilink set link yes acfcomp protocomp # We reducing link mtu to avoid GRE packet fragmentation. set link mtu 1460 # запрещаем pap (никакой защиты), включаем поддержку chap (хоть какое-то предвар.рукопожатие) set link no pap chap set link enable chap # Здесь можно подключить авторизацию по RADIUS базе, мы не используем # иначе, нужно создать ещё одну секцию 'radius' и там задать доп.параметры # load radius set link keep-alive 10 60 # Configure PPTP - это мой внешний IP адрес, на котором будет слушать MPD, на приём пациентов. set pptp self 218.22.33.218 # Allow to accept calls - включаем входящие "звонки" (запрос на соединение) set link enable incoming
В MPD5 по умолчанию поддерживаются стандартные настройки внешних виндовых клиентов, то есть, после обычного мастера настроек, вам нужно только ввести имя и пароль и больше ничего - раньше приходилось отключать шифрование пакетов и/или сжатие данных в настройках подключения (WinXP SP2/2003), об этом позже.Теперь нам необходимо задать список пар реквизитов для авторизации внешних клиентов, он может хранится в файле mpd.secret (ещё в БД, RADIUS или в самом mpd.conf - но последнее резко не рекомендую):# cat mpd.secret
user1 qwerty tolya 12345 akakij $23fS7NdsE 192.168.0.253
Мы завели троих пользователей, при чём, user1 и tolya при подключении получат случайный адрес из диапазона 192.168.0.248/29, а akakij всегда будет получать адрес 192.168.0.253.Файл mpd.script в данном случае не используется - у меня нет dial-up интерфейсов, подключение статичное.Для того чтобы видеть все всплески настроения даемона, создадим для него лог-файл, который по умолчанию почему-то не предусмотрен в стартовом скрипте. Для этого, откроем для редактирования:
И добавим в конец файла:
!mpd *.* /var/log/mpd.log
Создадим соответствующий файл, зададим ему права только на чтение root'ом и перезапустим syslog:
Проверяем работоспособность даемона:
Создаём новое подключение на удалённом клиенте (для проверки можно и на LAN-машине):заходим в панель управления > создаём новое подключение либо слева,либо в меню "файл" > подключить к сети на рабочем столе > наш выбор снова VPN (второе) > адрес в моём случае как на картинке > я бы для удобства поставил галку на "создать ярлык на рабочем стуле" и готово > вносим данные и подключить > подключено.и смотрим в лог:
При этом в ifconfig появился (до mpd5 все виртуальные интерфейсы висели со старта даемона) новый виртуальный interface:
ng0: flags=88d1 metric 0 mtu 1500 inet 192.168.0.255 --> 192.168.0.251 netmask 0xffffffff
Заходим из браузера по адресу http://www.lissyara.su/scripts/redirect_link.php?link=http://218.22.33.218:5006 (логин:пароль из mpd.conf - vpngod:12345):
Multi-link PPP Daemon for FreeBSD Current status summary Bund Iface IPCP IPV6CP CCP ECP Link LCP User Device Peer L Initial pptp DOWN B Down Initial Initial Initial Initial B-1 ng0 Up Opened Initial Opened Initial L-1 > >Opened tolya pptp UP *.*.*.* <= [Open][Close]
Чтобы зайти с консоли сервера (на localhost=127.0.0.1), задействуем telnet с теми же реквизитами (vpngod:12345):
Надо отметить, что через консольные команды доступно очень немало действий, просмотрите хотя бы самостоятельно команду show.В случае, если у вас не указан чёткий адрес для логина, то по этому логину можно подключаться со стольки клиентов (windows-машин,например), сколько адресов у вас в подсети выделенной для VPN, т.е.:
это я зашёл с двух разных PC по одним и тем же реквизитам - разные vpn-адреса.Если что не так, смотрите логи, ошибки windows-клиентов и ещё пользуйтесь tcpdump (встроена в FreeBSD) и например, trafshow:
Interface Address Description bce0 **:**:**:**:**:** 218.22.33.218 Ethernet ng0 192.168.0.255 Loopback bce1 **:**:**:**:**:** 192.168.0.2 Ethernet ng1 192.168.0.255 Loopback lo0 127.0.0.1 Loopback
далее, выбираем курсорами сетевую и жмём энтер - вы увидите все текущие соединения и потоки в кбит/с и суммарным траффиком.Вроде всё (: