Материал просмотрен 6,994 раз(а)

Всем привет! Наконец нашел время обобщить некоторый материал по поводу создания 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

Устанавливаем mpd5

Игнорируем

Игнорируем

Вот, наконец, 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

Изначальная настройка Windows

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

Открываем сетевые подключения и создаем новое

Открываем сетевые подключения и создаем новое

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

Ищем пункт с VPN

Ищем пункт с VPN

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

И тут ищем VPN

И тут ищем VPN

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

Указываем имя подключения

Указываем имя подключения

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

IP адрес сервера VPN

IP адрес сервера VPN

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

Вводим учетные данные

Вводим учетные данные

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

Подключились к сети

Подключились к сети

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

Получили заказанный IP

Получили заказанный IP

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