URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 13397
[ Назад ]

Исходное сообщение
"OpenNews: Настройка VPN-сервера под FreeBSD"

Отправлено opennews , 26-Янв-06 17:13 
В статье (http://wiki.bsdportal.ru/doc:vpn) рассказано про настройку под FreeBSD 6.0 PPTP VPN-сервера на базе mpd, FreeRadius и Netams (http://www.netams.com/).

URL: http://wiki.bsdportal.ru/doc:vpn
Новость: http://www.opennet.me/opennews/art.shtml?num=6865


Содержание

Сообщения в этом обсуждении
"Настройка VPN-сервера под FreeBSD"
Отправлено kveler , 26-Янв-06 17:13 
объясните мне глупому - зачем использовать два файрвола (ipfw и pf) ?

"Настройка VPN-сервера под FreeBSD"
Отправлено suntech , 26-Янв-06 17:49 
некоторые люди привыкли к синтаксису ipfw, но им также приятны возможности pfnat

"Настройка VPN-сервера под FreeBSD"
Отправлено BB , 26-Янв-06 18:11 
Особенно зажгло вот это :
pass quick from $ext_ip to any # Разрешаем траф
pass quick from any to $ext_ip # на внешнем ip

зачем тогда FW городить ?:))


"Настройка VPN-сервера под FreeBSD"
Отправлено Alex , 27-Янв-06 18:34 
>Особенно зажгло вот это :
>pass quick from $ext_ip to any # Разрешаем траф
>pass quick from any to $ext_ip # на внешнем ip
>
>зачем тогда FW городить ?:))

Зажгло говоришь? А как ты интересно собираешься прикрывать сервисы, которые не должны быть доступны клиенту из локально сети?


"Настройка VPN-сервера под FreeBSD"
Отправлено Daemon , 26-Янв-06 18:14 
   А нет ли возможности хранить в mysql хеши паролей(sha256 к примеру)? Не хоцца очень в открытом виде...

"Настройка VPN-сервера под FreeBSD"
Отправлено cybersun , 26-Янв-06 18:28 
>   А нет ли возможности хранить в mysql хеши паролей(sha256
>к примеру)? Не хоцца очень в открытом виде...

abills.sourceforge.net - там хранение паролей в мускуле происходит в шифрованном виде.


"Настройка VPN-сервера под FreeBSD"
Отправлено Константин , 26-Янв-06 18:48 
Тогда ты не сможешь испльзовать CHAP, только PAP. Выбирай что безопасней?

"Настройка VPN-сервера под FreeBSD"
Отправлено kir , 26-Янв-06 20:22 
можно в хеше - токо это должна позвонять сама бил систем)

"Настройка VPN-сервера под FreeBSD"
Отправлено AsmodeuS , 30-Янв-06 13:06 
>Тогда ты не сможешь испльзовать CHAP, только PAP. Выбирай что безопасней?

Abills - Auth method: PAP, CHAP, MS-CHAP, MS-CHAPv2

Если шыфровать с ключём через DECODE, ENCODE то все ок


"Настройка VPN-сервера под FreeBSD"
Отправлено guest , 27-Янв-06 09:49 
А какая лицензия у данного проекта?
Что-то ни слова про это не нашел...

"Настройка VPN-сервера под FreeBSD"
Отправлено ABATAPA , 26-Янв-06 23:58 
Не отображены проблемы w2k MTU Discovery / MSS.

Linux + pptpd + FreeRadius + FreeNibs + iptables = лучше в разы.


"Настройка VPN-сервера под FreeBSD"
Отправлено iNode , 27-Янв-06 00:25 
Что за проблемы? Где аргументы?

"Настройка VPN-сервера под FreeBSD"
Отправлено daff , 27-Янв-06 06:43 
какие проблемы, смотри конфиг:
set iface enable tcpmssfix

> Linux + pptpd + FreeRadius + FreeNibs + iptables = лучше в разы.
куча отдельных ppp процессов = лучше в разы ?



"Настройка VPN-сервера под FreeBSD"
Отправлено Dvorkin , 27-Янв-06 12:19 
да. стабильнее.
сколько раз я патчил MPD 3.xx чтобы добиться от нее не выпадание в осадок под высокой нагрузкой... нихрена! ну невозможно сделать абсолютно без ощибок такую программу. чуть где-то проиходит рассинхронизация по времени, состоянию layer'ов или еще какая фигня - бумц, и корка! и сотни пользователей Offlie. :( и рвеш на попе волосы.
не, pptpd в Линукс в этом смысле надежнее. а количество одновременных порцессов... ну и фиг что их сотни. В Линукс более разумно сделана система форков. MPD - это вчерашний день

"Настройка VPN-сервера под FreeBSD"
Отправлено Alex , 27-Янв-06 18:25 
poptop вполне нормально работает и под FreeBSD.......
Касательно mpd корок пока не наблюдал....

"Настройка VPN-сервера под FreeBSD"
Отправлено Dvorkin , 30-Янв-06 14:55 
>poptop вполне нормально работает и под FreeBSD.......
>Касательно mpd корок пока не наблюдал....


http://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi?az=sh...


"Настройка VPN-сервера под FreeBSD"
Отправлено daff , 28-Янв-06 08:12 
>да. стабильнее.
>сколько раз я патчил MPD 3.xx чтобы добиться от нее не выпадание
>в осадок под высокой нагрузкой... нихрена!

не замечал


"Настройка VPN-сервера под FreeBSD"
Отправлено Dvorkin , 30-Янв-06 14:55 
>>да. стабильнее.
>>сколько раз я патчил MPD 3.xx чтобы добиться от нее не выпадание
>>в осадок под высокой нагрузкой... нихрена!
>
>не замечал

см. эту ветку: http://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi?az=sh...


"Настройка VPN-сервера под FreeBSD"
Отправлено fa , 27-Янв-06 19:36 
>Не отображены проблемы w2k MTU Discovery / MSS.
>
>Linux + pptpd + FreeRadius + FreeNibs + iptables = лучше в
>разы.

Извините за оффтопик, но развивается ли FreeNibs? На nibs.net.ua уже давно нет новых версий.


"Настройка VPN-сервера под FreeBSD"
Отправлено Jay , 27-Янв-06 01:00 
Насколько я понял, в вышеописанном материале pf используется в качестве файрволла и NAT'а, а ipfw - в качестве шейпера. По идее можно было использовать altq из pf. Остается две причины для использования ipfw - NeTAMS и возможность выставлять правила ipfw с радиуса (описана в документации к mpd). Но судя по pkg-descr от netams, оно умеет получать данные о траффике и другими способами, кроме divert (netflow, например). Вторая возможность в статье не используется. Поэтому от использования ipfw в данной статье можно и отказаться.
Также очень полезно применить патч, позволяющий отбрасывать пользователей с mpd (искать на странице патчей проекта mpd на sf.net).
Насчет хешированных паролей - есть возможность хранить пароли хешированными и использовать MS-CHAPv2, но при этом хеши должны быть NTLM. Либо использовать PAP и хранить MD5-хеши паролей.
Где-то так :)
--
Jay

"Настройка VPN-сервера под FreeBSD"
Отправлено Alex , 27-Янв-06 11:03 
Altq не годится - он вешается на конкретный интерфейс. Или я не прав?
На ngX он не вешается раз - и как шейпить клиента, интерфейс для которого постоянно меняется - это два?

"Настройка VPN-сервера под FreeBSD"
Отправлено Jay , 28-Янв-06 01:06 
Да, похоже, что altq требует обязательного указания интерфейса.. И ничего не сказано, можно ли в данной конструкции указать имя драйвера (ng), как в случае с обычными правилами pf.

С другой стороны, в приведенном в конфиге примере шейпинг не зависит от конкретного клиента, а включается на всю сеть. Если не важен траффик между клиентами, можно включить altq на внешнем интерфейсе. Либо, если важен, написать N правил на каждый ngX. Все равно в большинстве случаев mpd.conf и mpd.links генерятся скриптом. Добавить туда создание правил для pf не так сложно.

Если же нужно шейпить именно конкретного клиента, то тут поможет только ipfw и соответствующая настройка радиус-сервера. Либо патчить mpd для достижения аналогичного поведения для pf.


"Настройка VPN-сервера под FreeBSD"
Отправлено fa , 27-Янв-06 01:22 
pf не умеет дивертить?

"Настройка VPN-сервера под FreeBSD"
Отправлено Alex , 27-Янв-06 11:05 
>pf не умеет дивертить?

Насколько я знаю IPDIVERT это фича IPFW - ничего с этим связанного в pf не нашел...


"Настройка VPN-сервера под FreeBSD"
Отправлено buzi , 27-Янв-06 11:36 
mpd начнёт кашлять примерно на сотне пользователей...

"Настройка VPN-сервера под FreeBSD"
Отправлено Alex , 27-Янв-06 12:17 
Аргументы в студию?
Какие есть альтернативы?
Чем лучше pptpd poptop, создающий на каждый коннект отдельный процесс?
Касательно pptp версий >= 1.2... - там крупные траблы с Вин-клиентами - часто возникает ошибка "Замыкание на себя". У них в рассылке это обсуждалось и не пофиксили...

"Настройка VPN-сервера под FreeBSD"
Отправлено buzi , 27-Янв-06 18:41 
аргумент один - загрузка проца под 100% при количестве пользователей около 100.. цифра не строгая.. но примерно в этом районе...

альтернатива - poptop - плохая в смысле создания на каждый коннект отдельного процесса.. в это с вами согласен..

другая альтернатива - искать другой метод доступа в интернет 8)


"Настройка VPN-сервера под FreeBSD"
Отправлено daff , 28-Янв-06 08:06 
>аргумент один - загрузка проца под 100% при количестве пользователей около 100..

1) 3.18 надо патчить для работы с ng_tcpmss
2) сетевухи надо выбираить не напряжные для процессора (em, fxp) а не rl всякие



"Настройка VPN-сервера под FreeBSD"
Отправлено Dvorkin , 27-Янв-06 19:15 
>Аргументы в студию?
>Какие есть альтернативы?
>Чем лучше pptpd poptop, создающий на каждый коннект отдельный процесс?
>Касательно pptp версий >= 1.2... - там крупные траблы с Вин-клиентами - часто возникает ошибка "Замыкание на себя". У них в рассылке это обсуждалось и не пофиксили...

прочтя мои нижеизложанные мысли, как вы думаете, лучше иметь форкающийся pptp сервер или монолитный? :) ответ очевиден.
я искрене считаю, что если в системе не реализован хотя-бы "быстрый форк" как в Линукс и есть существенная разница, существует один <xxx> процесс, который ест 70% CPU или 70 дочек <xxx> в среднем по 1% CPU - это система для лузеров.


"Настройка VPN-сервера под FreeBSD"
Отправлено daff , 28-Янв-06 08:22 
> я искрене считаю, что если в системе не реализован хотя-бы "быстрый форк" как в Линукс и есть существенная разница, существует один <xxx> процесс, который ест 70% CPU или 70 дочек <xxx> в среднем по 1% CPU - это система для лузеров.

переключение контекста весьма не бесплатная опреация


"Настройка VPN-сервера под FreeBSD"
Отправлено Dvorkin , 30-Янв-06 14:45 
>> я искрене считаю, что если в системе не реализован хотя-бы "быстрый форк" как в Линукс и есть существенная разница, существует один <xxx> процесс, который ест 70% CPU или 70 дочек <xxx> в среднем по 1% CPU - это система для лузеров.
>
>переключение контекста весьма не бесплатная опреация

переключением можно пренебречь, если использование CPU повысится даже на 5%, но при этом тебе в ухо не будут орать что ты @#@$% полтыщи юзеров, у которых отвалился коннект


"Настройка VPN-сервера под FreeBSD"
Отправлено Dvorkin , 27-Янв-06 19:10 
>mpd начнёт кашлять примерно на сотне пользователей...

выкиньте вашу машину. это не сервер. и даже не рабочая станция :)
у меня максимум 650 клиентов тянул + Radius + локальная база Mysql
машина вполне обычная. пень четвертый. на уровне нормальной современной рабочей станции. я думаю, если его поставтиь на более быструю машину это все равно будет для MPD рекордом. ну не верю я что такой дизайн программы способен потянуть сколько-нибудь большое количество линков.
загрузка была в пике 15% Mysql + 20% MPD + 5% Radius.
проблема не в загрузке проца. проблема в том, что у MPD сносит крышу, когда в некоторых состояниях на нескольких слоях абстракций его автомата происхоит рассинхронизация состояний этих самых слоев. причиной может быть некоторое событие в системе, которое дает задержку в выполнении самого MPD (как тут не вспомнить прелести Линукс с его великолепным планировшиком ;))  либо просто очевидная недоработка в автомате сотояний (это есть, не спорьте со мной ;) и разработчики сами не представляют, как это исправить ) исправить мне это после нескольких неудачных попыток так и не удалось. да и не хотелось чтобы все проблемы обрыва конекта клиентов спихнули на меня.
дополнительная проблема MPD - изредка пропадание аккаунтинговых пакетов. выдает ошибку сокета и ретрансфер не делает. поскольку, например, это был стоповый пакет и линк на момент ретрансфера Radius-пакета уже исчез из таблицы.


"Настройка VPN-сервера под FreeBSD"
Отправлено Jay , 28-Янв-06 00:35 
У меня mpd-3.18 в бытность работы в ISP тянул больше сотни и не кашлял.. Только радиус-сервер пришлось затачивать. Проблему с обрывом коннектов я уже как-то описывал в данном форуме.

Связана она с тем, что mpd-3.x однопоточное приложение, соответственно, пакеты радиуса обрабатываются в том же потоке, что и все остальные. В результате, при задержке ответа от радиуса получаем затык всего и отстреливание клиентов по таймауту. Сюда же относится проблема с неким ASSERT'ом (точно не помню уже), по которому падает mpd. Сюда же относится проблема с невозможностью иногда подключиться сразу, потому что в это время осуществляется ожидание ответа от радиус-сервера. Решение - затачивать радиус-сервер для сокращения времени на ответ.

Другие варианты - переходить на mpd4, но в его стабильности я пока не уверен (скоро протестирую, он мне будет нужен), или переходить на poptop + pppd, но эта связка значительно сильнее грузит процессор (хотя для не-FreeBSD альтернативы нет).

Еще рекомендую перейти, где это возможно на pppoe, как более стабильный протокол с меньшей избыточностью в инкапсуляции. Но  для корректной работы pppoe и w2k нужно патчить mpd, поскольку пропатчить w2k значительно труднее :) Проблема в том, что w2k не договаривается с NAS'ом насчет MRU. Это баг именно в w2k (доказано автором драйверов RASPPPoE), но у MS свой взгляд на мир.


"Настройка VPN-сервера под FreeBSD"
Отправлено Dvorkin , 30-Янв-06 14:53 
>У меня mpd-3.18 в бытность работы в ISP тянул больше сотни и
>не кашлял.. Только радиус-сервер пришлось затачивать.
если ты пропустил мои сообщения, повторюсь: на моей машине предел для MPD - 650 линков онлайн. Под такой нагрузкой он валился каждый день. Было очень неприятно.
случаи разные случаются. невозможно сделать так, чтобы гарантировать ответ от Радуса за ожидаемое очень короткое время. ну невозможно.
....
> Сюда же относится проблема с неким ASSERT'ом (точно не помню
>уже), по которому падает mpd. Сюда же относится проблема с невозможностью
>иногда подключиться сразу, потому что в это время осуществляется ожидание ответа
>от радиус-сервера. Решение - затачивать радиус-сервер для сокращения времени на ответ.
да. а ассерт этот возникает из-за рассинхронизации состояний логических слоев в MPD. да, из-за таймаутов.. я пытался переделать логику автомата обработки состояний, но безуспешно. от MPD пришлось отказаться. сейчас я чудовищно рад этому :)

"Настройка VPN-сервера под FreeBSD"
Отправлено atdp03 , 27-Янв-06 22:55 
Вот незадача-то.

# ifconfig | grep ng | grep -c UP
139

# ps -ux | grep mpd
root  7366  5.7  0.7  8076 6952  ??  Ss    8:16AM  49:37.91 /usr/local/sbin/mpd -b

Что я не так делаю?


"Настройка VPN-сервера под FreeBSD"
Отправлено Valera , 24-Апр-06 18:58 
Привет!!!
Есть Много статей по билингу - но нигде Я не встречал освещение вопроса - как настраивать фаер...
Тоесть - у Меня все прекорасно работает и пользователи подключены к билингу и Сервер подключен к Инету - но пользователи НЕ ВИДЯТ ИНЕТ. И о том, что надо делать, что бы ОНИ ЕГО ВИДЕЛИ -НИ СЛОВА!!!!

"Настройка VPN-сервера под FreeBSD"
Отправлено Valera , 24-Апр-06 18:59 
Вот настройки...
Есть связка FreeBSD+FreeRADIUS+FreeNIBS+MPD - все работает.
Сервер подключен в Инет. Пользователи подключаются к Серверу - но не пингуют Инет!!!
Далее подробно, что делаю...
Есть вот такая Сеть:
192.168.10.0(WinXP)|---|192.168.10.1(MPD-сервер) Сервер (pptp конкт к инету)193.238.152.25| -- 193.238.152.1(Сервер Инета) Инет

Или же это выглядит так:
(WinXP)---ng0|mpd(мой сервер)|
(WinXP)---ng1|mpd(мой сервер)| |(мой сервер)pptp|tun0<------>Инет
(WinXP)---ng2|mpd(мой сервер)|
.............|mpd(мой сервер)|

Мне говорили, что надо натить...
Предпочтительно это делать на pf...

Вот делаю так:
pptp vpn.server server&; ping ya.ru;
# ping ya.ru
#PING ya.ru (213.180.204.8): 56 data bytes
#64 bytes from 213.180.204.8: icmp_seq=2 ttl=54 time=128.051 ms

pfctl -d;pfctl -f /etc/pf1.conf;
mpd4;radiusd -x;

# ifconfig |less
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet6 fe80::20e:2eff:fe2f:8468%rl0 prefixlen 64 scopeid 0x1
inet 192.168.10.1 netmask 0xffffff00 broadcast 192.168.10.255
inet 192.168.10.2 netmask 0xffffffff broadcast 192.168.10.2
inet 192.168.10.3 netmask 0xffffffff broadcast 192.168.10.3
inet 192.168.11.1 netmask 0xffffffff broadcast 192.168.11.1
ether 00:0e:2e:2f:84:68
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet6 fe80::230:4fff:fe25:7ab1%rl1 prefixlen 64 scopeid 0x2
inet 192.168.129.146 netmask 0xfffff000 broadcast 192.168.143.255
ether 00:30:4f:25:7a:b1
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
inet 127.0.0.1 netmask 0xff000000
pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33208
pfsync0: flags=0<> mtu 2020
ng1: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
inet 193.238.152.25 --> 193.238.152.1 netmask 0xffffffff
Opened by PID 895
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1400
inet 192.168.11.1 --> 192.168.11.200 netmask 0xffffffff
inet6 fe80::20e:2eff:fe2f:8468%ng0 prefixlen 64 scopeid 0x7
ng2: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500
ng3: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500

pfctl -e;
#cat /etc/pf1.conf
ext_if_1="tun0"
int_if="ng0"

nat on $ext_if_1 inet from $int_if to any -> $ext_if_1
pass on $ext_if_1 all
pass on $int_if all

На WinXP делаю:
ping -t 213.180.204.8
ping -t ya.ru
ничего...


"Настройка VPN-сервера под FreeBSD"
Отправлено Nu ja. , 24-Апр-06 19:42 
>Вот настройки...
>Есть связка FreeBSD+FreeRADIUS+FreeNIBS+MPD - все работает.
>Сервер подключен в Инет. Пользователи подключаются к Серверу - но не пингуют
>Инет!!!
>Далее подробно, что делаю...

Мил человек!

Имей совесть, не пости одно и то же по десять раз.

Ты что, нервный или спаммер?

Пропадает вся охота даже призадуматься над твоей проблемой.


"Настройка VPN-сервера под FreeBSD"
Отправлено Valera , 24-Апр-06 23:43 
(подключен Инет на Сервере)
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
        inet 193.238.152.25 --> 193.238.152.1 netmask 0xffffffff
(подключен пользоваетель к MPD)
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1400
        inet 192.168.10.1 --> 192.168.11.200 netmask 0xffffffff

Собственно надо, что бы между ng0 и tun0 был свободный проход, или другими словами - все запросы с ng0 пересылались на tun0
Вот и все...
И еще - после подключения Винды:

Активные маршруты:
Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика
          0.0.0.0          0.0.0.0     192.168.10.1   192.168.10.97       21
          0.0.0.0          0.0.0.0   192.168.11.200  192.168.11.200       1
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
     192.168.10.0    255.255.255.0    192.168.10.97   192.168.10.97       20
     192.168.10.1  255.255.255.255    192.168.10.97   192.168.10.97       20
    192.168.10.97  255.255.255.255        127.0.0.1       127.0.0.1       20
   192.168.10.255  255.255.255.255    192.168.10.97   192.168.10.97       20
   192.168.11.200  255.255.255.255        127.0.0.1       127.0.0.1       50
   192.168.11.255  255.255.255.255   192.168.11.200  192.168.11.200       50
        224.0.0.0        240.0.0.0    192.168.10.97   192.168.10.97       20
        224.0.0.0        240.0.0.0   192.168.11.200  192.168.11.200       1
  255.255.255.255  255.255.255.255    192.168.10.97   192.168.10.97       1
  255.255.255.255  255.255.255.255   192.168.11.200  192.168.11.200       1
Основной шлюз:      192.168.11.200