Настройка vpn сервера по средствам mpd5 если freebsd машина не шлюз а просто комп в локалке.

Скачать Настройка vpn сервера по средствам mpd5 если freebsd машина не шлюз а просто комп в локалке.
Недавно искали:

Itnull

Команда форума
Администратор
Регистрация
22.05.13
Сообщения
25.467
Реакции
9.459
Веб-сайт
itnull.me
  • Автор темы
  • Администратор
  • Модер.
  • Команда форума
  • #1
Значит так, дело было летом, жара, на работе у нас обычная локалка, пров дал нам ADSL Router и он роутил на свич, свич же крутил сетку в диапазоне 192.168.1.1-192.168.1.254
На работе в углу лежал никому не нужный 64-х битный комп, жалко добро не используется, решили поставить его в виде сервака, но так как у нас не было выделенного айпи (он шел на железный ADSL Router), да и по чисто техническим причинам не хотелось переводит роутер в режим бриджа, ставить две сетевухи в машину с фрей и.т.д. пришлесь комп с новоустоновленной Фряхой поставить после свитча т.е. присвоеть ему IP из диапазона локалки.

Все было сделанно и комп с FreeBSD получил IP 192.168.1.254.

Для того чтобы с наруже я мог бы подключатся к компу по SSH юзать FTP и т.д. в железном ADSL роутере я сделал редирект всех портов на внутренний адрес (192.168.1.254).

Первым делом обновил сорсы, порты и все такое, настроил Apach+PHP+MySQL+pureFTPD (но в данной статье не об этом), все работало на ура, но встал вопрос - нам стало нужно из дома подключатся к нашей рабочей локальной сетке, и работать так же как будто бы мы просто физически находимся в той же сети, т.е. видеть шары, использовать Remote Desktop, следить с дома за своим компом и т.д.

Ясно, что нужно было настраивать VPN сервер, но проблема была в том что машина с фрей не была шлюзом, и имела IP 192.168.1.254 из диапазона локальной сетки. После настройки я долго не мог пинговать компы в сети и т.д. проблемы были с натом, я долго рылся, спрашивал на форумах и.т.д. пока смог исправить эту беду.

Вообщем начнем - для VPN-а решил использовать MPD5,
mpd (Multi-link PPP daemon) примечателен тем, что в нём реализован VPN-сервер совместимый с Microsoft. т.е. в подключение с Windows к нашему, FreeBSD-серверу не будет никаких проблем, не нужно устанавливать дополнительный софт в виде VPN клиента.

Значить так, начнем, устонавливаем его из портов:


Код:
/usr/ports# whereis mpd5
mpd5: /usr/local/sbin/mpd5 /usr/local/man/man8/mpd5.8.gz /usr/ports/net/mpd5
cd /usr/ports/net/mpd5; make && make install && make clean

После этого идем в /usr/local/etc/mpd5 создаем и правим конфиги:
Код:
/usr/local/etc/mpd5# touch mpd.conf; touch mpd.secret

(можно скопировать дефолтные mpd.conf.sample в mpd.conf и mpd.secret.sample в mpd.secret и довести до нужного сосотояния)

Далее правим конфиг mpd.conf:
Код:
/usr/local/etc/mpd5# ee mpd.conf
И вставляем в него конфиг, это рабочий конфиг для моей сети, вам может придется поменять несколько параметров:
Код:
startup:
        # Юзер с правами админа Логин: foo, Пароль: bar
        set user foo bar admin 
        set user foo1 bar1
        # Нужно чтобы подключится по телнету через 5005 порт
        set console self 127.0.0.1 5005
        set console open
        # Нужно чтобы подключится по http через 5006 порт
        set web self 127.0.0.1 5006
        set web open             
default:
        load pptp_server
pptp_server:
# Диапазон IP адрессов,
# который присвоется VPN девайсу.
        set ippool add pool1 192.168.100.50 192.168.100.99 

# Create clonable bundle template named B
        create bundle template B
        set iface enable proxy-arp
        set iface idle 1800
        set iface enable tcpmssfix
        set ipcp yes vjcomp
# Specify IP address pool for dynamic assigment.
        set ipcp ranges 192.168.100.1/32 ippool pool1
        set ipcp dns 192.168.1.1
# The five lines below enable Microsoft Point-to-Point encryption
# (MPPE) using the ng_mppc(8) netgraph node type.
        set bundle enable compression
        set ccp yes mppc
        set mppc yes e40
        set mppc yes e128
        set mppc yes stateless
# Create clonable link template named L
        create link template L pptp
# Set bundle template to use
        set link action bundle B
# Multilink adds some overhead, but gives full 1500 MTU.
        set link enable multilink
        set link yes acfcomp protocomp
        set link no pap chap
        set link enable chap
        set link keep-alive 10 60
# We reducing link mtu to avoid GRE packet fragmentation
        set link mtu 1460
# Configure PPTP
# Внешний IP на котором будет прослушиватся соединение
        set pptp self 192.168.1.254
# Allow to accept calls
        set link enable incoming
Примечание: конфиг mpd строго не любит пробелы, так что позоботтесь об этом, вместо этого пользуйтесь табуляцией <TAB>.
Теперь отредактируем /usr/local/etc/mpd5/mpd.secret:
Код:
User1    123123
User2    321321
Где User1 и User2 это логин для первого и второго юзера ну и рядом соответствующие пароли.

Можно так-же прописать IP тогда конкретному пользователю будет выдаватся один и тот-же IP адресс например:

User1 123123 192.168.100.90 User2 321321 192.168.100.91

Далее, чтобы MPD загружался автоматически при стартапе прописываем следующие строки в /etc/rc.conf:

echo 'mpd_enable="YES"' >> /etc/rc.conf echo 'mpd_flags="-b"' >> /etc/rc.conf echo 'gateway_enable="YES"' >> /etc/rc.conf

Чтобы у нас были логи нашего MPD, в файле /etc/syslog.conf в конце добавляем следующие строки:

ee /etc/syslog.conf !mpd *.* /var/log/mpd.log

Создадим этот файл и зададим ему права только на чтение root:

/# touch /var/log/mpd.log chmod 600 /var/log/mpd.log

Теперь перезагружаем syslog:

/# /etc/rc.d/syslogd reload

Далее нам нужно NAT-ить в файрволе, чтобы с 192.168.100.0.видеть 192.168.1.0, для этого используем файрвол pf, вообщето правильно компилить ядро с поддержкой pf,у меня откомпилено, для этого нужно пересобрать ядро с опциями:

device pf device pflog device pfsync options ALTQ options ALTQ_CBQ options ALTQ_RED options ALTQ_RIO options ALTQ_HFSC options ALTQ_CDNR options ALTQ_PRIQ options ALTQ_NOPCC options ALTQ_DEBUG
но если нет времени компилить для тестирования можно подгрузить его просто как модуль:

/# kldload pf.ko

Для того чтобы модуль подгружался при стартапе в /etc/rc.conf добавляем:

/# echo 'pf_enable="YES"' >> /etc/rc.conf

Теперь правим правила для файрвола /etc/pf.conf:

/# ee /etc/pf.conf nat on nfe0 from 192.168.100.0/24 to any -> 192.168.1.254 pass in all pass out all

Загружаем правила файрвола и стартуем mpd:

/# pfctl -f /etc/pf.conf /# /usr/local/etc/rc.d/mpd5 start

Теперь можно наблюдать за логом и коннектится с винды:

tail -f /var/log/mpd.log

Для того чтобы настроить клиента с Windows нужно зайти в:

Control Panel -> Network Connections -> Create a New Connection -> Next -> Connect to the network at my workplace -> Next -> Virtual Private Network connection -> Next -> "Имя Соединения (Любое) " -> Next -> "Имя хоста или IP ADSL роутера" -> Finish

Для того чтобы при коннекте к VPN-у ваша клиентская машина не меняла шлюз, и не выходила бы в инет через инет того сервера к которому приконнекчена (т.е. машина с Фрей) надо в настройках VPN подключения перейти в:

Networking -> Internet Protocol(TCP/IP) -> Properties -> Advanced
и убрать "галочку" с Use default gateway on remote network


bcbcf0ec448ab0d033d2aabbc02eca8d.jpg




9db6613bbcd10a155350307b8da7238e.jpg




ea7432909b1bc9c5af14346d04919a8b.jpg




В принципе все, можно подключатся и наблюдать за логом, если все правильно то вы сможете шарить в своей рабочей сетке, заходить через ремот десктоп и т.д.
На данный момент у меня пользователи прописаны не в mpd.secret а в БД mysql, и настроен radius сервер, если комуто интерестно, могу добавить к статье и этот пункт.
 
мне больше понравился OpenVPN его плюс что клиент может работать через прокси и есть возможность работать через udp протокол, а так же можно создавать отдельные подсети для клиентов
 
Назад
Сверху Снизу