FreeBSD TIPS: устанавливаем VPN ::Журнал СА 9.2004
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

Российские компании уже несколько лет испытывают дефицит вычислительных мощностей. Рост числа проектов,

 Читать далее...

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6237
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6944
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4230
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3015
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3812
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3827
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6323
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3174
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3466
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7283
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10649
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12370
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 14006
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9130
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7084
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5393
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4620
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3432
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3164
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3405
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3030
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 FreeBSD TIPS: устанавливаем VPN

Архив номеров / 2004 / Выпуск №9 (22) / FreeBSD TIPS: устанавливаем VPN

Рубрика: Администрирование /  Продукты и решения

СЕРГЕЙ СУПРУНОВ

FreeBSD tips: устанавливаем VPN

Недавно мне пришлось столкнуться с такой задачей: имеется локальная сеть с адресами 10.x.x.0/24.

Рисунок 1

Для работы с вышестоящим сервером корпоративной сети машины должны иметь адреса из этого диапазона, и пакеты в данном случае уходят непосредственно на Ethernet-порт коммутатора (точнее, заворачиваются туда правилами ipfw, работающего на сервере FreeBSD). Доступ в Интернет осуществляется с помощью трансляции адресов (NAT).

Однако для работы с некоторыми внешними серверами мне нужно было иметь реальный адрес, причем работа через NAT или proxy-сервер не поддерживалась. Ставить себе вторую сетевую карту и тащить отдельный сегмент до сервера, в который тоже пришлось бы устанавливать еще один (уже третий) сетевой адаптер, очень не хотелось. Вариант с назначением себе в каждый момент времени нужного адреса тоже не радовал (хоть Windows XP и не требует перезагрузки после изменения сетевых адресов, но все равно процедура не из приятных). Тогда было принято решение «пробросить» до сервера так называемую виртуальную частную сеть (VPN), о чем и пойдет речь в данной статье.

Прежде всего нужно было поднять на FreeBSD VPN-сервер. Почитав немного про такие средства, как poptop и mpd, свой выбор я остановил на последнем как более «родном» для FreeBSD. Mpd использует интерфейс netgraph, благодаря чему большинство операций выполняется на уровне ядра системы, тем самым повышая скорость работы. Как правило, специально включать поддержку netgraph в ядро не требуется – она подгружается и отлично работает в виде модулей, в чем можно убедиться с помощью команды kldstat (после того, как mpd будет установлен и запущен):

$ kldstat

Id Refs Address    Size     Name
 1   14 0xc0400000 370850   kernel
 2    1 0xc16f3000 4000     if_vlan.ko
 3    1 0xc1741000 2000     snake_saver.ko
 4    1 0xc17d4000 4000     ng_socket.ko
 5    8 0xc17d8000 12000    netgraph.ko
 6    1 0xc17ef000 4000     ng_iface.ko
 7    1 0xc17f3000 8000     ng_ppp.ko
 8    1 0xc17fb000 4000     ng_bpf.ko
 9    1 0xc17ff000 5000     ng_vjc.ko
10    1 0xc1d43000 5000     ng_pptpgre.ko
11    1 0xc1d48000 5000     ng_ksocket.ko
12    1 0xc1d4d000 4000     ng_mppc.ko
13    1 0xc1d51000 2000     rc4.ko

Однако при желании ядро можно и пересобрать, включив все опции, начинающиеся с «NETGRAPH_». В ряде случаев, особенно для старых версий FreeBSD (например, 3.х), это может дать дополнительный прирост быстродействия. Для установки mpd проследуем в коллекцию портов и выполним там ряд нехитрых действий:

# cd /usr/ports/net/mpd

# make

# make install

Поскольку мы ничего не меняли, то исполнимые файлы будут помещены в /usr/local/sbin, а файлы конфигурации можно будет найти в /usr/local/etc/mpd – стандартная для FreeBSD раскладка. Сценарий автозапуска будет находиться в /usr/local/etc/rc.d. Сразу после инсталляции файлы конфигурации и сценарий будут иметь расширение «.sample», следовательно, их нужно переименовать, убедившись, что никакие исправления (например, другие пути) в них вносить не нужно. Единственное, что от нас теперь требуется, – отредактировать конфигурационные файлы для нашей задачи и запустить серверный процесс mpd. Файл mpd.conf примет примерно следующий вид:

#------------------- mpd.conf --------------------------

default:

# Указываем, какую конфигурацию грузить (в принципе все параметры можно задать и непосредственно в секции default):

    load pptp0

 

pptp0:

# Объявляем новый интерфейс ng0:

    new -i ng0 pptp0 pptp0

# Поскольку мы никуда не звоним, то устанавливать соединение по требованию не нужно:

    set iface disable on-demand

# Разрешаем прохождение arp-запросов:

    set iface enable proxy-arp

# Запрещаем разрывать связь при простое:

    set iface idle 0

# Ограничение на размер исходящих пакетов значением MTU:

    set iface enable tcpmssfix

# Указываем, что наше соединение – не мультилинк:

    set bundle disable multilink

# Требуем шифрование:

    set bundle yes crypt-reqd

# Включаем компрессию:

    set bundle enable compression

    set link yes acfcomp protocomp

# Разрешаем только chap-авторизацию:

    set link no pap chap

    set link enable chap

# Интервалы проверки линка на «жизнеспособность»:

    set link keep-alive 10 60

# Размер «окна отсылки»:

    set link mtu 1460

# Разрешаем компрессию TCP-заголовка:

    set ipcp yes vjcomp

# Следующий параметр задает диапазоны IP-адресов на стороне сервера и на стороне клиентов в виде

# set ipcp ranges local[/width] remote[/width]

# В нашем случае серверу и клиенту назначается по одному адресу:

    set ipcp ranges 197.y.y.73 197.y.y.75

# Следующие четыре опции cpp определяют протоколы управления сжатием (compression control protocol) – для работы

# с Windows-клиентами. Включаем поддержку сжатия  MPPC (Microsoft Point-to-Point Compression):

    set ccp yes mppc

# Поддержка 40-битного кодирования:

    set ccp yes mpp-e40

# Поддержка 128-битного кодирования:

    set ccp yes mpp-e128

# Stateless-режим, уменьшает время восстановления при сбросе (drop) пакета:

    set ccp yes mpp-stateless

# Адрес, на котором VPN-сервер ждет соединения:

    set pptp self 10.х.х.254

# Разрешаем входящие соединения:

    set pptp enable incoming

# Инициировать соединение со стороны mpd не нужно:

    set pptp disable originate

С остальными параметрами можно ознакомиться в достаточно подробной html-документации (см. /usr/ports/net/mpd/work/mpd-3.18/doc). В частности, может потребоваться прописать DNS-сервер, назначаемый устанавливаемому соединению.

В принципе все можно оставить в таком же виде, изменив только IP-адреса на нужные. В качестве собственного адреса (pptp self) должен быть задан адрес интерфейса, на котором сервер будет ожидать входящие соединения (в моем случае это «внутренний» интерфейс FreeBSD, смотрящий в локальную сеть). В качестве адреса сервера для соединения VPN задан адрес «внешнего» интерфейса, маршрутизируемого в Интернет.

#--------------------- mpd.links -----------------------

pptp0:

    set link type pptp

#------------------- mpd.secret ------------------------

username   "userpassword"      *

То есть в mpd.links просто описывается тип связи (pptp – point to point tunneling protocol). Строго говоря, не имеет особого значения, где именно описывать параметры линка – в mpd.links или непосредственно в mpd.conf (в нашем примере большинство команд set link размещены именно там). Это вопрос удобства при работе с большим количеством разнообразных соединений. В mpd.secret перечисляем пользователей с паролями, которым нужно будет устанавливать VPN-соединения (в данном случае такой пользователь только один). Не забывайте исключить возможность чтения данного файла кем-то еще, кроме суперпользователя root. Теперь запускаем сервер:

# /usr/local/etc/rc.d/mpd.sh start

Чтобы убедиться, что сервер запустился и прослушивает порт 1723 (pptp) в ожидании подключений, выполните следующую команду:

$ netstat -a | grep pptp

tcp4   0   0   10.x.x.254.pptp   *.*   LISTEN

Со стороны Windows никаких особых телодвижений не требуется – просто создаем соединение VPN, следуя указаниям мастера подключения. В качестве адреса назначения указывается «собственный» адрес VPN-сервера, то есть в нашем случае – 10.x.x.254. Теперь, когда нужно поработать с реальным адресом, просто устанавливается VPN-соединение, по окончании сеанса – закрывается.

В заключение хочется отметить еще одно полезное свойство VPN-соединения – экономию адресного пространства. Если поставленную задачу решать «классическим» способом – с помощью дополнительных сетевых карт, то понадобится выделить как минимум 4 IP-адреса – на сторону сервера, клиенту, и 2 адреса пропадут «впустую» – как адрес подсети и широковещательный адрес. В случае же VPN мы занимаем только 1 действительно нужный нам адрес – адрес клиента. На сервере мы привязываемся к существующему адресу внешнего интерфейса, а «служебные» адреса в данном случае вообще не требуются.

Источники дополнительной информации:

  1. http://sourceforge.net/projects/mpd
  2. http://www.dellroad.org/mpd/index
  3. man mpd(8), man netgraph(4), man ng_ppp(4)

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru