Налаштування mpd5 клієнта в ОС FreeBSD
Однією із завдань системного адміністратора є віддалене адміністрування різних серверів. На Windows 2003 встановлюється та налаштовується служба маршрутизації і до неї встановлюється клієнтське підключення. Так у мене і було налаштовано, але т.к. клієнт у мене був мій робочий сервер, то це викликало деякі негаразди, наприклад винос шлюзу за замовчуванням, в результаті у мого dns сервера геть-чисто втрачалася здатність до пересилання запитів на сервер провайдера :) Стоп, подумав я, у мене ж є моя робоча конячка FreeBSD 8, яка за функціоналом анітрохи не гірша за 2003-й сервер. І я вирішив підняти клієнта на ній. Отже, поїхали. Як клієнт я вирішив використовувати mpd5, бо розробники його стверджують, що він повністю сумісний з 2003-м сервером. Для початку, трохи теорії - з чим нам доведеться мати справу:
- IPCP(англ. Internet Protocol Control Protocol— протокол керування IP)— протокол керування мережним рівнем для встановлення, налаштування та розриву IP підключення поверх PPP (Point-to-Point Protocol) з'єднання. IPCP використовує той самий механізм обміну пакетами, як і LCP (Link Control Protocol). Обмін пакетами IPCP не відбувається доти, доки PPP не розпочне фазу узгодження протоколу мережного рівня. Будь-які пакети IPCP, отримані до того, як почнеться ця фаза, мають бути відкинуті.
- СCP(англ. Compression Control Protocol— протокол управління стисненням) — протокол управління стисненням, що входить до протоколу PPP (Point-to-Point Protocol), регламінтує використання різних алгоритмів стиснення інформації при її передачі між кінцевими вузлами ліній зв'язку Він безпосередньо відповідає за вибір, налаштування та керування процесами стиснення під час з'єднання
- Метод стиснення заголовківTCP/IP Ван Якобсона - протокол стиснення даних, описаний в RFC 1144, спеціально був створений Ван Якобсоном для поліпшення продуктивності TCP / IP при повільних послідовних з'єднаннях. Метод стиснення Ван Якобсона зменшує звичайні 40-байтні заголовки TCP/IP-пакетів приблизно 3-4 байт (у разі). Це досягається за рахунок запам'ятовування стану TCP-з'єднань на обох кінцях з'єднання, і надсилаються лише зміни в полях заголовка, що призводить до досить великої різниці з точки зору інтерактивної продуктивності на низькошвидкісних з'єднаннях, але при цьому цей метод ніяк не бореться із затримками при обробці, властивими більшості модемів для комутованого зв'язку (dialup). Стиск заголовків Ван Якобсона (Van Jacobson Header Compression) (також згадується як «VJ-стиск» (VJ compression) або просто як «Стиск заголовків» (Header Compression)) — додаткова можливість у більшості версій PPP. Версії SLIP-протоколу з підтримкою VJ-стискання часто називаються «стислим SLIP» (Compressed SLIP).
- Microsoft Point-to-Point Compression (MPPC)— протокол стиснення даних, спочатку розроблений для використання поверх з'єднань PPP. Використовує алгоритм Lempel-Ziv зі ковзним вікном буфера історії розміром 8192 байт.
- Microsoft Point-to-Point Encryption (MPPE)— протокол шифрування даних, що використовується поверх з'єднань PPP. Використовує алгоритм RSA RC4. MPPE підтримує 40-, 56- та 128-бітові ключі, які змінюються протягом сесії (частота зміни ключів встановлюється в процесі хендшейка з'єднання PPP, в принципі можливо генерувати за новим ключем на кожен пакет. MPPE не стискає даних, але часто використовується спільно з Microsoft Point-to-Point Compression, призначений для цих цілей.
# MPPC compression requires proprietary files (not included)
options NETGRAPH_VJC Після встановлення нового ядра можна приступити до встановлення mpd5. Ставимо з портів (попередньо їх оновивши), без жодних опцій. Після встановлення можна розпочати конфігурування. Усі налаштування зберігаються в mpd.conf (за замовчуванням /usr/local/etc/mpd5).
Кілька слів з оформлення конфіга. Слід пам'ятати, що mpd чутливий до прогалин, всі відступи мають бути оформлені як табуляції. Опції мають бути застосовані відповідно до контексту, тобто. наприклад, set ipcp yes vjcomp не може стояти в секції канального рівня (link), а має бути тільки в пакетному (bundle).
# Тут ми налаштовуємо консоль, якою можна буде керувати демоном mpd5,
set user admin admin admin
set console self 127.0.0.1 5005
set console open
set web self 0.0.0.0 5006
# Завантажуємо секцію, яка встановлює тунель
# PPTP client: тільки outgoing calls, auto reconnect,
# ipcp-negotiated address, one-sided authentication,
# default route points on ISP's end
create bundle static B1
set ipcp ranges 10.123.12.221/24 10.123.12.231/24
set iface up-script /usr/local/etc/mpd5/up.sh
set iface down-script /usr/local/etc/mpd5/down.sh
set iface enable tcpmssfix
set ipcp yes vjcomp
# The five lines below enable Microsoft Point-to-Point encryption
# (MPPE) використовуючи ng_mppc(8) netgraph node type.
set bundle enable compression
set bundle enable crypt-reqd
setccp yes mppc
set mppc yes compress e40 e56 e128 stateless
create link static L1 pptp
set link action bundle B1
set link enable multilink
set auth authname [LOGIN]
set auth password [PASSWORD]
set link max-redial 0
set link mtu 1460
set link keep-alive 20 75
set link no eap pap
set link accept chap-msv2
set link enable incoming
set pptp peer sample.host.ru
set pptp disable windowing
Запускаючий та завершальний скрипти (up.sh та down.sh) потрібні нам для встановлення правильних маршрутів до сервера vpn. Ось їх вміст:
default_route_old=`route -n get default 2>1 grep gateway awk ''`
echo $route_isp > /var/tmp/route_isp
if [$ default_route_old]; then
echo $default_route_old > /var/tmp/default_route_old
route -nq change default `echo $3 cut -c1-13` -ifp $1
route -nq add $route_isp $default_route_old -ifp msk0
rm -f /var/tmp/default_route_old
route -nq change default `echo $3 cut -c1-13` -ifp $1
route -nq add $route_isp $default_route_old -ifp msk0
# Повертаємо старий шлюз із файлу /var/tmp/default_route_old
if [-r /var/tmp/default_route_old]; then
rm -f /var/tmp/default_route_old /var/tmp/route_isp
route -nq change default $default_route_old
route -nq delete $route_isp
Встановлення підключення виконується командою
# mpd5 vpn Після чого цим підключенням можна керувати або через консоль або через веб-інтерфейс, підключившись до localhost:5006.