Итак, у нас задача: сделать так, чтобы через роутер на базе FreeBSD к внутренней сети предприятия могли подключаться клиенты с Windows-машин, при этом чтобы на самих Windows-компьютерах ничего дополнительно ставить было не нужно.
Т.е. мы хотим поднять VPN сервер на стороне FreeBSD такой, чтобы к нему цеплялись клиенты Windows через встроенные средства.
PS. В данной заметке рассказано о создании VPN сервера с туннелями типа PPTP.
Установка
$ cd /usr/ports/net/mpd5
$ sudo make install clean
В панели конфигурирования я не выбирал никаких опций (все опции сняты).
НастройкаНастройки mpd5 находятся по адресу:
/usr/local/etc/mpd5Туда мы и топаем.
$ cd /usr/local/etc/mpd5
Внутри Вы можете видеть несколько файлов:
- mpd.conf.sample : Файл примера конфига MPD5 (основной файл)
- mpd.script.sample : Файл примера конфига скриптов
- mpd.secret.sample : Файл примера базы логин-паролей для пользователей VPN
При этом рабочего конфига по-умолчанию не создается - нам предлагается его либо создать копированием .sample файла в имя без .sample, либо просто самим написать заново.
Первое, что нас интересует - сам файл mpd.conf. Давайте создадим его и положим внутрь вот такой конфиг (после знака # добавлены комментарии, их можно в файл не прописывать):
mpd.conf
startup:
default:
load vpnserver
vpnserver:
# Выделяем пул адресов с 10.1.255.10 по 10.1.255.249 для клиентов VPN
set ippool add pool1 10.1.255.10 10.1.255.249
# Создаем template B
create bundle template B
# Задаем опции
set iface enable proxy-arp
set iface idle 1800
set iface enable tcpmssfix
set ipcp yes vjcomp
# Подсеть, из которой будут выдаваться адреса для клиентов VPN
set ipcp ranges 10.1.255.1/24 ippool pool1
# Указываем DNS-сервера, которые передадутся клиентам VPN
set ipcp dns 10.0.1.10 10.0.7.3
# Указываем WINS-сервера, которые передадутся клиентам VPN
set ipcp nbns 10.0.1.10 10.0.7.3
# Включаем шифрование
set bundle enable compression
set ccp yes mppc
set mppc yes e40
set mppc yes e56
set mppc yes e128
set mppc yes stateless
# Создаем template для динамически-создаваемых линков по PPTP
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 keep-alive 10 60
set link mtu 1460
# Здесь укажите IP адрес самого VPN-сервера
set pptp self 11.22.33.44
set link enable incoming
Теперь создадим базу логин-паролей. Она будет храниться в файле mpd.secret.
Вот пример этого файла:
user1 "password1"
user2 "password2"
user3 "password3"
Как, я думаю, очевидно - первое поле здесь - это имя пользователя (логин), а второе - это пароль. Отделены они должны быть TAB-символами (т.е. не пробелами).
При этом каждому пользователю динамически назначается IP адрес и выделенного в конфиге выше пула.
А вот пример такого же файла, только для каждого пользователя прикреплен свой IP адрес из подсети VPN:
mpd.secret
user1 "password1" 10.1.255.10
user2 "password2" 10.1.255.11
user3 "password3" 10.1.255.123
Здесь добавилось третье поле - это IP адрес. В этом случае каждому пользователю статически присвоен свой собственный адрес.
PS. Заметка! Если Вы не присваиваете пользователю статический адрес - то пользователь может под одной и той же учетной записью подключаться одновременно с разных компьютеров - и все будет работать, он просто будет получать разные IP для разных компьютеров. Если же Вы создаете для пользователей статические IP адреса - то пока пользователь не закроет VPN соединение на одном компьютере - он не сможет его открыть на другом.ВключаемТеперь топаем в /etc и правим rc.conf:
$ cd /etc
$ ee rc.conf
Внутри дописываем такие строчки:
mpd_enable="YES"
mpd_flags="-b"
И стартуем сервис MPD:
$ sudo /usr/local/etc/rc.d/mpd5 start
ПроверяемВ Windows создаем обычное VPN соединение, в качестве сервера указываем IP-адрес нашего FreeBSD-роутера с установленной mpd5, а тип соединения выбираем PPTP. Вводим логин и пароль, указанный в файле mpd.secret и смотрем - подцепились ли.
Если подцепились - то на роутере FreeBSD по команде ifconfig будет видно образованное новое соединение:
$ ifconfig
...
ng1: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1396
inet 10.1.255.1 --> 10.1.255.19 netmask 0xffffffff
Как пользоваться со стороны Windows-клиентов
Очень просто. Создавайте в Windows обычные VPN соединения в сторону этого FreeBSD роутера - т.е. в поле "сервер" указывайте IP адрес роутера, а тип VPN указывайте PPTP - это тот тип, который мы настроили Выше. Позже я покажу, как сделать L2TP соединения.
Актуально для: FreeBSD 7.x+
Комментарии
Оставить комментарий
Компьютерные сети
Термины: Компьютерные сети