Конечно, многие скажут: – “Зачем mpd, если есть openvpn“? Я не буду отвечать на этот вопрос, потому, что понимаю, что каждая конкретная задача преследует конкретную цель, а значит и реализацию. Ну, или около того. И так. Для того, чтобы поднять pptp vpn server нам необходим сервер с установленной фряхой. Я выбрал версию 9.2 (на тот момент времени был последний стабильный релиз).
1 2 |
root@vpnsrv:/usr/home/vpn # uname -a FreeBSD vpnsrv 9.2-RELEASE FreeBSD 9.2-RELEASE #0: Fri Nov 7 12:33:07 FET 2014 vpn@vpnsrv:/usr/obj/usr/src/sys/PFKERNELVPN amd64 |
1 2 |
root@vpnsrv:/usr/home/vpn # uptime 09:57:00 up 485 days, 10:01, 2 users, load average: 0.02, 0.01, 0.00 |
Мой сервер поднят на виртуалке.
Параметры сервера следующие: 8ГБ RAM, два ядра, 50ГБ HDD 1Gbps ethernet.
ip address сервера: 192.168.10.106 (работает через NAT)
NAT-ить на Cisco так:
1 2 3 4 5 6 7 8 9 10 |
interface GigabitEthernet0/0 description Uplink ip nat outside ! interface GigabitEthernet0/1 description Local_lan ip nat inside ! ip nat inside source list nat interface GigabitEthernet0/0 overload ip nat inside source static tcp 192.168.10.106 1723 2.203.123.122 1723 extendable |
Как поставить FreeBSD читать от сюда.
Нам необходимо:
– установить FreeBSD
– создать пользователя (скажем vpn) и настроить сеть (тыц)
– пересобрать ядро с поддержкой PF NAT
– установить и настроить Radius+mysql и создать пользователей.
Опции для ядра:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# PF NAT support 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 |
Дальше нам необходимо установить сам mpd. Выполняем:
1 |
pkg_add -r mpd5 |
Настройка:
1 2 |
mpd5.conf - /usr/local/etc/mpd5/mpd5.conf radius.conf - /usr/local/etc/mpd5/radius.conf |
mpd5.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
startup: # admin login: adminko, password: ghjbhjbk set user adminko ghjbhjbk admin set user hoora ghtfr12 # Telnet connecting port 5005 set console self 127.0.0.1 5005 set console open # http connecting port 5006 set web self 192.168.10.106 5006 set web open default: load pptp_server pptp_server: # VPN POOL ip addresses, # set ippool add pool 192.168.80.100 192.168.80.200 create bundle template B set iface up-script /usr/local/etc/mpd5/vpn_up_mpd.sh set iface enable nat set iface enable proxy-arp set iface idle 1800 set iface enable tcpmssfix set ipcp yes vjcomp set ipcp dns 192.168.10.103 set bundle enable compression set ccp yes mppc set mppc yes e40 set mppc yes e128 set mppc yes stateless create link template L pptp set link action bundle B set link enable multilink set link yes acfcomp protocomp set link no pap set link enable chap load radius set link keep-alive 10 60 set link mtu 1460 set pptp self 192.168.10.106 set link enable incoming radius: set radius config /usr/local/etc/mpd5/radius.conf set radius retries 3 set radius timeout 3 set radius me 10.200.0.1 set auth acct-update 300 set auth enable radius-auth set auth enable radius-acct set radius enable message-authentic |
radius.conf
1 2 |
acct 10.200.0.1 secret_rad_pass auth 10.200.0.1 secret_rad_pass |
Теперь нам надо скачать, собрать и установить mpd dhcp. Пара слов о данной программе. Это самописная программа написанная энтузиастами (к сожалению не могу найти ссылку где я взял исходники). Ребятам – респект! Суть сводится к тому, что после поднятия интерфейса программа посылает в сторону клиента пакеты с интегрированными в них маршрутами.
1 2 3 |
tar zxvf mpd_dhcp-0.1.tar.gz cd mpd_dhcp-0.1 cat README |
Создаем скрипт, который будем запускаться после поднятия интерфейса пользователя:
/usr/local/etc/mpd5/vpn_up_mpd.sh
1 |
mpd_dhcp -i $1 -n 192.168.10.0/24 -n 192.168.20.0/24 -n 192.168.61.0/24 -n 192.168.76.0/22 -n 192.168.96.0/24 |
Вот так, всё просто. Правда есть один недостаток. Маршруты способна принять только винда. *nix-ы не понимают структуры пакета. Но народ, работающий на *nix-ах, как правило самодостаточен и способен на своей стороне написать shell скрипт добавления нужных маршрутов и привязать его к interface up event.
Скачать mpd_dhcp-0.1.tar.gz можно с моего сайта.
Запуск/остановка mpd5:
1 |
/usr/local/etc/rc.d/mpd5 start | stop | restart |
У mpd5 есть консоль и веб интерфейс. Подключиться к консоли можно с помощью команды:
1 |
telnet 127.0.0.1 5005 |
Ну а к web интерфейсу через браузер по ссылке: http://192.168.10.106:5060
Для входа использовать связку логин/пароль из конфига mpd5
В рабочие дни vpn юзает порядка 112 сотрудников. Никаких нареканий в сторону сервера вот уже почти 500 дней не имею. Как говорится – поставил и забыл. В лучших традициях FreeBSD.
Best regards.
Добавить комментарий