Всем привет! Наконец нашел время обобщить некоторый материал по поводу создания VPN туннелей из Windows в FreeBSD. Как это сделать расскажу чуть ниже. А для чего .. – тоже ниже, но не настолько.
В общем, сперва опишу, как это будет работать. Предположим, у нас есть сеть 10.1.1.0/24, в которой тусуются Windows-машины. Гуляют так, словно овечки на полянке. Так же есть некий сервер на базе FreeBSD, у которого есть вкусненький интернет, например можно подключить интернет Билайн.
Из Windows машины мы подключаемся через VPN к серверу, используя пару логин-пароль, в зависимости от которой нам выдаётся новый IP-адрес (из пула, или привязывается однозначно), посредством нового IP-адреса мы можем через этот шлюз оперировать с совершенно другими узлами, в том числе и лезть в Internet (разумеется, сеть 10.1.1.0/24 выхода в интернет не имеет). А новый адрес, пусть будет из подсети 192.168.1.0/24, для разнообразия.
Итак, что нам для этого понадобится? Виртуальная машина с Windows XP и виртуальная машина с FreeBSD (я взял свою ненаглядную, 8.2).
Обновляем дерево портов, можно собрать ядро с поддержкой файрволла, кто как хочет. Важно, чтобы у этой FreeBSD было 2 интерфейса. Один будет смотреть в нашу локалку (10.1.1.1), а другой (192.168.1.3, к примеру) будет натить в Инет. Или не будет натить, не важно совершенно. Главное – образовать две разные подсети.
Устанавливаем mpd5
Переходим в каталог портов
# cd /usr/ports/net/mpd5
и запускаем инсталляцию
# make install


Вот, наконец, mpd5 поставился. Будем настраивать. Для этого перейдем в его каталог:
# cd /usr/local/etc/mpd5
И создадим два файла: mpd.conf и mpd.secret. В первом хранится конфиг, во втором – учетки юзеров.
# touch mpd.conf
# touch mpd.secret
Так же нам потребуется лог-файл для отладки
# touch /var/log/mpd5.log
В него будем писать все, что происходит с демоном, но это позже.
Открываем файл mpd5.conf и записываем в него конфиг:
startup:
# Пароль для доступа в админку
set user admin password admin
# Доступ в консоль
set console self 127.0.0.1 3344
set console open
# Доступ в веб-оболочку
set web self 0.0.0.0 3345
set web open
default:
load pptp_server
pptp_server:
#Определяем пул адресов
set ippool add poolsat 192.168.1.200 192.168.1.250
create bundle template B
set iface enable proxy-arp
set iface idle 0
set iface enable tcpmssfix
set ipcp yes vjcomp
#VPN-клиентам светим этот IP как выдавшего адрес, не обязательно существующий
set ipcp ranges 192.168.1.254/32 ippool poolsat
#DNS сервер
set ipcp dns 8.8.8.8
#WINS-сервер, если нужно
set ipcp nbns 192.168.1.3
# Включаем Microsoft Point-to-Point encryption (MPPE)
set bundle enable compression
set ccp yes mppc
set mppc yes compress e40 e56 e128 stateless
# Создаем шаблон виртуального подключения L (будет в логах)
create link template L pptp
set link action bundle B
# Разрешаем множественные подключения
set link enable multilink
set link yes acfcomp protocomp
set link no pap chap eap
set link enable chap
set link enable chap-msv1
set link enable chap-msv2
# Уменьшаем размер MTU дабы избежать фрагментации
set link mtu 1460
set link keep-alive 10 60
# Настраиваем подключение
# Имя интерфейса, слушающего клиентов, у меня em1 в локалке, em0 в инете
set pptp self em1
# Принимать вызовы
set link enable incoming
Файл очень чувствителен к пробелам, поэтому отступы перед set делаем tab-ами.
Теперь редактируем файл mpd.secret в котором оставляем запись:
username "pass" 192.168.1.240
single "kokon" *
Что означает, что пользователь username с паролем pass получит адрес *.240, а пользователь single с паролем kokon получит первый свободный IP.
Ну чтож, почти всё готово! Настраиваем ведение логов. Открываем файл
# ee /etc/syslogd.conf
и дописываем строки в конец:
!mpd
*.* /var/log/mpd5.log
Теперь перезапускаем syslogd
# /etc/rc.d/syslogd reload
И добавляем mpd5 в автозагрузку:
Открываем файл /etc/rc.conf и дописываем в конец
mpd_enable="YES"
Готово, теперь стартуем сервис
# /usr/local/etc/rc.d/mpd5 start
И смотри лог:

Очевидно, что сервер жаждет подключений. Ну чтож, устроим ему это.

Это базовая настройка Windows. Сейчас создадим подключение к VPN

В сетевых настройках нажимаем “Мастер новых подключений”

Выбираем пункт “Подключить к рабочей сети (используя удаленный доступ или VPN)…”.

Подключение с использованием VPN

Вводим имя подключения, оно будет отображается как заголовок.

Вводим IP адрес нашего сервера FreeBSD, обратите внимание, чтобы сервер был доступен и служба поднята.

Учетные данные (которые записывали в mpd.secret).

Сетевое подключение происходит моментально. Угадайте, какой адрес получен?

Так как в mpd.secret жестко был прописан IP для этого пользователя, его мы и получили.
Comments: