Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
||||||||||||||||||||||||||||||||||||||||||
www.lissyara.su
—> статьи
—> FreeBSD
|
# portsnap fetch extract |
Задымилось, жду счастья и сразу ставлю любимый demos commander (простейшую оболочку):
# whereis deco deco: /usr/ports/misc/deco # cd /usr/ports/misc/deco ; make install clean # rehash && deco |
(*рэхэш, то есть переиндексирование системных ссылок и прочего, работает только под определёнными интерпретаторами)
Кому как, а мне порой через него сидеть удобней, хотя и есть некоторое кол-во различий в командах по сравнению с обычной командной строкой /sbin/sh - то тже самый rehash в deco не пашет.
Далее, лезу в sys и ищу там amd64 GENERIC ядро (на самом деле, я это делаю в деке, но аналогичные действия привожу из /sbin/sh):
# cd sys/amd64/conf # cp GENERIC VPNGOD |
VPNGOD - так будет называться новое ядро с поддержкой NETGRAPH (необходима для MPD).
По сути, мы можем вообще не трогать ядро, только если для расширения адресации (задействования наших 8ГБ ОЗУ), т.к. и ipfw2 и netgraph могут быть включены как подключаемые при загрузке модули системы, но это не есть правильно, т.к. всё-таки у нас машина будет заниматься именно тем, что мы встраиваем - а не время от времени служить каким-нибудь mail-relay. Да и помнится мне, что вкомпиленное в ядро работает быстрее - но не уверен.
Состав моего нового ядра с помощью:
# ee VPNGOD |
я сделал таким:
# cat VPNGOD |
|
Если вы не работаете в деко, проверим на всякий случай, в какой мы директории:
# pwd /usr/src/sys/amd64 |
Всё так, символичный линк (symlink, symbolic link) на директорию sys = /usr/src/sys/ (он в системе по умолчанию, а создаютсяони с помощью команды
|
), так что мы там, откуда выполним следующую команду для создания каталога исходников в соответствии с вышеуказанной конфигурацией ядра:
# config VPNGOD Kernel build directory is ../compile/VPNGOD Don't forget to do ``make cleandepend && make depend'' |
Идём в:
# cd ../compile/VPNGOD # pwd /usr/src/sys/amd64/compile/VPNGOD |
Внимание, по умолчанию правило IPFW, который мы собираемся включить, выглядит так:
|
Т.е. все внешние сетевые подключения обрубит после перезагрузки и закроет ваш сервер от любых притязаний, даже хозяев. Если вы за консолью, это конечно никак не повлияет, если же вы работаете удалённо, позаботьтесь об этом заранее (например, создать скрипт с
|
перед 65535ым правилом на первое время).
Теперь, находясь в директории сырцов нового ядра, последуем просьбе указанной выше системой (это один из двух известных мне способов пересборки ядра, я пользуюсь только им):
# make cleandepend && make depend && make -j8 -B && make install && reboot |
Этим набором команд, перечисленных через операторы "&&" - последовательное выполнение одного за другим, мы сразу всё стадо зайцев скосили и при отсутствии ошибок при сборке можем расслабиться, и как говориться при установке всем известных ОС - откинуться на спинку кресла (не купили к установке?). Все эти команды задают зависимости, собирают модули, компилируют их аж в 8 потоков (-j8), но по возможности с последовательной синхронизацией (-B), устанавливают всё в /boot/kernel и перезагружают систему автоматом по окончании.
Если что, смотрите гугл или используйте make buildkernel команду (собсно,снова гугл по хэндбукам). Число потоков и параметр "-B" используйте только на мощных машинах, на слабых их вообще лучше опустить (просто make).
Новое ядро после перезагрузки поприветствует вас как-то так:
Copyright (c) 1992-2008 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. FreeBSD 7.0-RELEASE #0: Tue May 20 09:53:05 MSD 2008 ******@ns1.*******.ru:/usr/src/sys/amd64/compile/VPNGOD |
Если этого не произошло, значит вы либо не подключили каких-то важных устройств (чаще всего управление питанием - новый acpi/старый apic, и контроллеры ж/д). Можно загрузиться из старого (предшествующего) ядра:
# boot /boot/kernel.old |
подробнее об этом.
Иначе, всё путём, идём дальше.
Мои сетевые карты (и loopback девайс (; настроены так:
# ifconfig bce0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=1bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4> ether ********** inet 218.22.33.218 netmask 0xfffffff8 broadcast 218.22.33.223 media: Ethernet autoselect (100baseTX <full-duplex>) status: active bce1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=1bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4> ether ********** inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255 media: Ethernet autoselect (100baseTX <full-duplex>) status: active lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 inet 127.0.0.1 netmask 0xff000000 |
Где bce0 (218.22.33.218/29) смотрит в провайдера, а тот подглядывает во внешний мир, а bce1 (192.168.0.2/24) - в локальную корпоративную сеть.
Сервер может являться как шлюзом для ЛВС предприятия, так и просто vpn-сервером для удалённых клиентов. У меня он ещё и проксирует http-https-ftp запросы, держит сайт, статистику по snmp (cacti), а так же ftp (proftpd) с веб-мордой (proftpdadmin).
В rc.conf сетевые настройки и firewall выглядят следующим образом:
# cat /etc/rc.conf |
|
А скрипт фаера выглядит так:
# cat /etc/rc.fire |
|
Это не совсем оптимизированный список правил, к тому же, перегруженный - т.к. у меня на машине не один сервис, и она служит шлюзом для локальных клиентов - пропускает, проксируя, http/ftp трафик, а остальное транслирует с помощью ipfw nat - как видно из правил, это все icmp запросы (например, ping и tracert), почту и icq. Опять же, эта конфигурация рабочая и может пригодится для многих новичков, которым всё и сразу. Для каждого двустороннего правила есть краткий заголовок, думаю, все знают англицкий и аббревиатуры протоколов и даемонов (:
Итак, мы собрались ставить свеженький MPD5 и по правилам хорошего и удобного тона из портов, конечно же, благо, они свежие и ещё не успели совсем остыть:
# whereis mpd5 /usr/ports/net/mpd5 # cd /usr/ports/net/mpd5 ; make install clean |
|
Я ничего не выбирал и вам не советую, так что жмём Oll Klear и понеслась.
После добавим сразу стартовую строку для MPD в /etc/rc.conf:
# echo 'mpd_enable="YES"' >> /etc/rc.conf ; echo 'mpd_flags="-b"' >> /etc/rc.conf |
цифра в версии в данном случае не имеет значения. Приведённые строки после echo добавились в конец rc.conf, можете проверить командой "cat имяфайла" или "less (либо more) имяфайла".
Займёмся теперь конфигурационным файлом нашего будущего VPN сервера:
# cd /usr/local/etc/mpd5 |
Именно сюда установились необходимые нам файлы, но пока только примеры - .sample расширения.
Перед тем как переименовывать файлы, сделайте их резервную копию, чтобы в случае чего можно было всегда вернуться и посмотреть как сделано в примере.
# mkdir sample # cp *.sample sample/ |
Переименовать множество файлов можно следующим скриптом (из-под деко не сработает, т.к. ";" - не воспринимается, нужно записать в исполняемый файл всю строку и затем его запустить):
# for i in *.sample; do mv $i `basename $i ".sample"`; done |
Я доправил свой конфиг mpd.conf до такого состояния:
# ee mpd.conf |
|
В MPD5 по умолчанию поддерживаются стандартные настройки внешних виндовых клиентов, то есть, после обычного мастера настроек, вам нужно только ввести имя и пароль и больше ничего - раньше приходилось отключать шифрование пакетов и/или сжатие данных в настройках подключения (WinXP SP2/2003), об этом позже.
Теперь нам необходимо задать список пар реквизитов для авторизации внешних клиентов, он может хранится в файле mpd.secret (ещё в БД, RADIUS или в самом mpd.conf - но последнее резко не рекомендую):
# cat mpd.secret
|
Мы завели троих пользователей, при чём, user1 и tolya при подключении получат случайный адрес из диапазона 192.168.0.248/29, а akakij всегда будет получать адрес 192.168.0.253.
Файл mpd.script в данном случае не используется - у меня нет dial-up интерфейсов, подключение статичное.
Для того чтобы видеть все всплески настроения даемона, создадим для него лог-файл, который по умолчанию почему-то не предусмотрен в стартовом скрипте. Для этого, откроем для редактирования:
# ee /etc/syslog.conf |
И добавим в конец файла:
|
Создадим соответствующий файл, зададим ему права только на чтение root'ом и перезапустим syslog:
# touch /var/log/mpd.log ; chmod 600 /var/log/mpd.log && /etc/rc.d/syslogd reload |
Проверяем работоспособность даемона:
# /usr/local/etc/rc.d/mpd5 start |
Создаём новое подключение на удалённом клиенте (для проверки можно и на LAN-машине):
заходим в панель управления > создаём новое подключение либо слева,либо в меню "файл" > подключить к сети на рабочем столе > наш выбор снова VPN (второе) > адрес в моём случае как на картинке > я бы для удобства поставил галку на "создать ярлык на рабочем стуле" и готово > вносим данные и подключить > подключено.
и смотрим в лог:
# cat /var/log/mpd.log Jun 5 17:26:10 ns1 mpd: [L-1] Accepting PPTP connection Jun 5 17:26:10 ns1 mpd: [L-1] Link: OPEN event Jun 5 17:26:10 ns1 mpd: [L-1] LCP: Open event Jun 5 17:26:10 ns1 mpd: [L-1] LCP: state change Initial --> Starting Jun 5 17:26:10 ns1 mpd: [L-1] LCP: LayerStart Jun 5 17:26:10 ns1 mpd: [L-1] PPTP: attaching to peer's outgoing call Jun 5 17:26:10 ns1 mpd: [L-1] Link: UP event Jun 5 17:26:10 ns1 mpd: [L-1] Link: origination is remote Jun 5 17:26:10 ns1 mpd: [L-1] LCP: Up event Jun 5 17:26:10 ns1 mpd: [L-1] LCP: state change Starting --> Req-Sent Jun 5 17:26:10 ns1 mpd: [L-1] LCP: SendConfigReq #1 Jun 5 17:26:10 ns1 mpd: ACFCOMP Jun 5 17:26:10 ns1 mpd: PROTOCOMP Jun 5 17:26:10 ns1 mpd: MRU 1500 Jun 5 17:26:10 ns1 mpd: MAGICNUM ed4e3296 Jun 5 17:26:10 ns1 mpd: AUTHPROTO CHAP MSOFTv2 Jun 5 17:26:10 ns1 mpd: MP MRRU 1600 Jun 5 17:26:10 ns1 mpd: MP SHORTSEQ Jun 5 17:26:10 ns1 mpd: ENDPOINTDISC [802.1] ** ** ** ** ** ** Jun 5 17:26:10 ns1 mpd: [L-1] LCP: rec'd Configure Request #0 (Req-Sent) Jun 5 17:26:10 ns1 mpd: MRU 1400 Jun 5 17:26:10 ns1 mpd: MAGICNUM 5c74770f Jun 5 17:26:10 ns1 mpd: PROTOCOMP Jun 5 17:26:10 ns1 mpd: ACFCOMP Jun 5 17:26:10 ns1 mpd: CALLBACK 6 Jun 5 17:26:10 ns1 mpd: MP MRRU 1614 Jun 5 17:26:10 ns1 mpd: ENDPOINTDISC [LOCAL] 60 6c 53 98 57 8a 40 ea b3 9f 08 31 d2 04 dc e3 00 00 0 Jun 5 17:26:10 ns1 mpd: [L-1] LCP: SendConfigRej #0 Jun 5 17:26:10 ns1 mpd: CALLBACK 6 Jun 5 17:26:10 ns1 mpd: [L-1] LCP: rec'd Configure Request #1 (Req-Sent) Jun 5 17:26:10 ns1 mpd: MRU 1400 Jun 5 17:26:10 ns1 mpd: MAGICNUM 5c74770f Jun 5 17:26:10 ns1 mpd: PROTOCOMP Jun 5 17:26:10 ns1 mpd: ACFCOMP Jun 5 17:26:10 ns1 mpd: MP MRRU 1614 Jun 5 17:26:10 ns1 mpd: ENDPOINTDISC [LOCAL] 60 6c 53 98 57 8a 40 ea b3 9f 08 31 d2 04 dc e3 00 00 0 Jun 5 17:26:10 ns1 mpd: [L-1] LCP: SendConfigNak #1 Jun 5 17:26:10 ns1 mpd: MP MRRU 1600 Jun 5 17:26:10 ns1 mpd: [L-1] LCP: rec'd Configure Request #2 (Req-Sent) Jun 5 17:26:10 ns1 mpd: MRU 1400 Jun 5 17:26:10 ns1 mpd: MAGICNUM 5c74770f Jun 5 17:26:10 ns1 mpd: PROTOCOMP Jun 5 17:26:10 ns1 mpd: ACFCOMP Jun 5 17:26:10 ns1 mpd: MP MRRU 1600 Jun 5 17:26:10 ns1 mpd: ENDPOINTDISC [LOCAL] 60 6c 53 98 57 8a 40 ea b3 9f 08 31 d2 04 dc e3 00 00 0 Jun 5 17:26:10 ns1 mpd: [L-1] LCP: SendConfigAck #2 Jun 5 17:26:10 ns1 mpd: MRU 1400 Jun 5 17:26:10 ns1 mpd: MAGICNUM 5c74770f Jun 5 17:26:10 ns1 mpd: PROTOCOMP Jun 5 17:26:10 ns1 mpd: ACFCOMP Jun 5 17:26:10 ns1 mpd: MP MRRU 1600 Jun 5 17:26:10 ns1 mpd: ENDPOINTDISC [LOCAL] 60 6c 53 98 57 8a 40 ea b3 9f 08 31 d2 04 dc e3 00 00 0 Jun 5 17:26:10 ns1 mpd: [L-1] LCP: state change Req-Sent --> Ack-Sent Jun 5 17:26:12 ns1 mpd: [L-1] LCP: SendConfigReq #2 Jun 5 17:26:12 ns1 mpd: ACFCOMP Jun 5 17:26:12 ns1 mpd: PROTOCOMP Jun 5 17:26:12 ns1 mpd: MRU 1500 Jun 5 17:26:12 ns1 mpd: MAGICNUM ed4e3296 Jun 5 17:26:12 ns1 mpd: AUTHPROTO CHAP MSOFTv2 Jun 5 17:26:12 ns1 mpd: MP MRRU 1600 Jun 5 17:26:12 ns1 mpd: MP SHORTSEQ Jun 5 17:26:12 ns1 mpd: ENDPOINTDISC [802.1] ** ** ** ** ** ** Jun 5 17:26:12 ns1 mpd: [L-1] LCP: rec'd Configure Reject #2 (Ack-Sent) Jun 5 17:26:12 ns1 mpd: MP SHORTSEQ Jun 5 17:26:12 ns1 mpd: [L-1] LCP: SendConfigReq #3 Jun 5 17:26:12 ns1 mpd: ACFCOMP Jun 5 17:26:12 ns1 mpd: PROTOCOMP Jun 5 17:26:12 ns1 mpd: MRU 1500 Jun 5 17:26:12 ns1 mpd: MAGICNUM ed4e3296 Jun 5 17:26:12 ns1 mpd: AUTHPROTO CHAP MSOFTv2 Jun 5 17:26:12 ns1 mpd: MP MRRU 1600 Jun 5 17:26:12 ns1 mpd: ENDPOINTDISC [802.1] ** ** ** ** ** ** Jun 5 17:26:12 ns1 mpd: [L-1] LCP: rec'd Configure Ack #3 (Ack-Sent) Jun 5 17:26:12 ns1 mpd: ACFCOMP Jun 5 17:26:12 ns1 mpd: PROTOCOMP Jun 5 17:26:12 ns1 mpd: MRU 1500 Jun 5 17:26:12 ns1 mpd: MAGICNUM ed4e3296 Jun 5 17:26:12 ns1 mpd: AUTHPROTO CHAP MSOFTv2 Jun 5 17:26:12 ns1 mpd: MP MRRU 1600 Jun 5 17:26:12 ns1 mpd: ENDPOINTDISC [802.1] ** ** ** ** ** ** Jun 5 17:26:12 ns1 mpd: [L-1] LCP: state change Ack-Sent --> Opened Jun 5 17:26:12 ns1 mpd: [L-1] LCP: auth: peer wants nothing, I want CHAP Jun 5 17:26:12 ns1 mpd: [L-1] CHAP: sending CHALLENGE #1 len: 21 Jun 5 17:26:12 ns1 mpd: [L-1] LCP: LayerUp Jun 5 17:26:12 ns1 mpd: [L-1] LCP: rec'd Ident #3 (Opened) Jun 5 17:26:12 ns1 mpd: MESG: MSRASV5.10 Jun 5 17:26:12 ns1 mpd: [L-1] LCP: rec'd Ident #4 (Opened) Jun 5 17:26:12 ns1 mpd: MESG: MSRAS-0-KOSTIK-100 Jun 5 17:26:12 ns1 mpd: [L-1] CHAP: rec'd RESPONSE #1 len: 61 Jun 5 17:26:12 ns1 mpd: Name: "usat001" Jun 5 17:26:12 ns1 mpd: [L-1] AUTH: Trying INTERNAL Jun 5 17:26:12 ns1 mpd: [L-1] AUTH: INTERNAL returned undefined Jun 5 17:26:12 ns1 mpd: [L-1] CHAP: Auth return status: undefined Jun 5 17:26:12 ns1 mpd: Response is valid Jun 5 17:26:12 ns1 mpd: Reply message: S=566AEC3499DA1DE852DFFDA963054A2FA4D64747 Jun 5 17:26:12 ns1 mpd: [L-1] CHAP: sending SUCCESS #1 len: 46 Jun 5 17:26:12 ns1 mpd: [L-1] LCP: authorization successful Jun 5 17:26:12 ns1 mpd: [L-1] Link: Matched action 'bundle "B" ""' Jun 5 17:26:12 ns1 mpd: [L-1] Creating new bundle using template "B". Jun 5 17:26:12 ns1 mpd: [B-1] Bundle: Interface ng0 created Jun 5 17:26:12 ns1 mpd: [B-1] Bundle: Status update: up 1 link, total bandwidth 64000 bps Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: Open event Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: state change Initial --> Starting Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: LayerStart Jun 5 17:26:12 ns1 mpd: [B-1] CCP: Open event Jun 5 17:26:12 ns1 mpd: [B-1] CCP: state change Initial --> Starting Jun 5 17:26:12 ns1 mpd: [B-1] CCP: LayerStart Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: Up event Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: Got IP 192.168.0.251 from pool "poolsat" Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: state change Starting --> Req-Sent Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: SendConfigReq #1 Jun 5 17:26:12 ns1 mpd: IPADDR 192.168.0.255 Jun 5 17:26:12 ns1 mpd: COMPPROTO VJCOMP, 16 comp. channels, no comp-cid Jun 5 17:26:12 ns1 mpd: [B-1] CCP: Up event Jun 5 17:26:12 ns1 mpd: [B-1] CCP: state change Starting --> Req-Sent Jun 5 17:26:12 ns1 mpd: [B-1] CCP: SendConfigReq #1 Jun 5 17:26:12 ns1 mpd: MPPC Jun 5 17:26:12 ns1 mpd: 0x01000060:MPPE(40, 128 bits), stateless Jun 5 17:26:12 ns1 mpd: [B-1] CCP: rec'd Configure Request #5 (Req-Sent) Jun 5 17:26:12 ns1 mpd: MPPC Jun 5 17:26:12 ns1 mpd: 0x010000e1:MPPC, MPPE(40, 56, 128 bits), stateless Jun 5 17:26:12 ns1 mpd: [B-1] CCP: SendConfigNak #5 Jun 5 17:26:12 ns1 mpd: MPPC Jun 5 17:26:12 ns1 mpd: 0x01000040:MPPE(128 bits), stateless Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: rec'd Configure Request #6 (Req-Sent) Jun 5 17:26:12 ns1 mpd: IPADDR 0.0.0.0 Jun 5 17:26:12 ns1 mpd: NAKing with 192.168.0.251 Jun 5 17:26:12 ns1 mpd: PRIDNS 0.0.0.0 Jun 5 17:26:12 ns1 mpd: NAKing with 192.168.0.3 Jun 5 17:26:12 ns1 mpd: PRINBNS 0.0.0.0 Jun 5 17:26:12 ns1 mpd: SECDNS 0.0.0.0 Jun 5 17:26:12 ns1 mpd: NAKing with 192.168.0.2 Jun 5 17:26:12 ns1 mpd: SECNBNS 0.0.0.0 Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: SendConfigRej #6 Jun 5 17:26:12 ns1 mpd: PRINBNS 0.0.0.0 Jun 5 17:26:12 ns1 mpd: SECNBNS 0.0.0.0 Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: rec'd Configure Reject #1 (Req-Sent) Jun 5 17:26:12 ns1 mpd: COMPPROTO VJCOMP, 16 comp. channels, no comp-cid Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: SendConfigReq #2 Jun 5 17:26:12 ns1 mpd: IPADDR 192.168.0.255 Jun 5 17:26:12 ns1 mpd: [B-1] CCP: rec'd Configure Nak #1 (Req-Sent) Jun 5 17:26:12 ns1 mpd: MPPC Jun 5 17:26:12 ns1 mpd: 0x01000040:MPPE(128 bits), stateless Jun 5 17:26:12 ns1 mpd: [B-1] CCP: SendConfigReq #2 Jun 5 17:26:12 ns1 mpd: MPPC Jun 5 17:26:12 ns1 mpd: 0x01000040:MPPE(128 bits), stateless Jun 5 17:26:12 ns1 mpd: [B-1] CCP: rec'd Configure Request #7 (Req-Sent) Jun 5 17:26:12 ns1 mpd: MPPC Jun 5 17:26:12 ns1 mpd: 0x01000040:MPPE(128 bits), stateless Jun 5 17:26:12 ns1 mpd: [B-1] CCP: SendConfigAck #7 Jun 5 17:26:12 ns1 mpd: MPPC Jun 5 17:26:12 ns1 mpd: 0x01000040:MPPE(128 bits), stateless Jun 5 17:26:12 ns1 mpd: [B-1] CCP: state change Req-Sent --> Ack-Sent Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: rec'd Configure Request #8 (Req-Sent) Jun 5 17:26:12 ns1 mpd: IPADDR 0.0.0.0 Jun 5 17:26:12 ns1 mpd: NAKing with 192.168.0.251 Jun 5 17:26:12 ns1 mpd: PRIDNS 0.0.0.0 Jun 5 17:26:12 ns1 mpd: NAKing with 192.168.0.3 Jun 5 17:26:12 ns1 mpd: SECDNS 0.0.0.0 Jun 5 17:26:12 ns1 mpd: NAKing with 192.168.0.2 Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: SendConfigNak #8 Jun 5 17:26:12 ns1 mpd: IPADDR 192.168.0.251 Jun 5 17:26:12 ns1 mpd: PRIDNS 192.168.0.3 Jun 5 17:26:12 ns1 mpd: SECDNS 192.168.0.2 Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: rec'd Configure Ack #2 (Req-Sent) Jun 5 17:26:12 ns1 mpd: IPADDR 192.168.0.255 Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: state change Req-Sent --> Ack-Rcvd Jun 5 17:26:12 ns1 mpd: [B-1] CCP: rec'd Configure Ack #2 (Ack-Sent) Jun 5 17:26:12 ns1 mpd: MPPC Jun 5 17:26:12 ns1 mpd: 0x01000040:MPPE(128 bits), stateless Jun 5 17:26:12 ns1 mpd: [B-1] CCP: state change Ack-Sent --> Opened Jun 5 17:26:12 ns1 mpd: [B-1] CCP: LayerUp Jun 5 17:26:12 ns1 mpd: Compress using: mppc (MPPE(128 bits), stateless) Jun 5 17:26:12 ns1 mpd: Decompress using: mppc (MPPE(128 bits), stateless) Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: rec'd Configure Request #9 (Ack-Rcvd) Jun 5 17:26:12 ns1 mpd: IPADDR 192.168.0.251 Jun 5 17:26:12 ns1 mpd: 192.168.0.251 is OK Jun 5 17:26:12 ns1 mpd: PRIDNS 192.168.0.3 Jun 5 17:26:12 ns1 mpd: SECDNS 192.168.0.2 Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: SendConfigAck #9 Jun 5 17:26:12 ns1 mpd: IPADDR 192.168.0.251 Jun 5 17:26:12 ns1 mpd: PRIDNS 192.168.0.3 Jun 5 17:26:12 ns1 mpd: SECDNS 192.168.0.2 Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: state change Ack-Rcvd --> Opened Jun 5 17:26:12 ns1 mpd: [B-1] IPCP: LayerUp Jun 5 17:26:12 ns1 mpd: 192.168.0.255 -> 192.168.0.251 Jun 5 17:26:12 ns1 mpd: [B-1] IFACE: Up event |
При этом в ifconfig появился (до mpd5 все виртуальные интерфейсы висели со старта даемона) новый виртуальный interface:
|
Заходим из браузера по адресу http://218.22.33.218:5006 (логин:пароль из mpd.conf - vpngod:12345):
|
Чтобы зайти с консоли сервера (на localhost=127.0.0.1), задействуем telnet с теми же реквизитами (vpngod:12345):
# telnet 127.0.0.1 5005 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Multi-link PPP daemon for FreeBSD Username: vpngod Password: Welcome! Mpd pid 98350, version 5.0 (root@*******.ru 12:50 12-Apr-2008) [] ? Available commands: bundle : Choose/list bundles close : Close a layer create : Create new item destroy : Destroy item exit : Exit console iface : Choose bundle by iface help : Help on any command link : Choose link load : Read from config file log : Set/view log options msession : Ch. bundle by msession-id open : Open a layer quit : Quit program repeater : Choose/list repeaters session : Choose link by session-id set : Set parameters show : Show status [] |
Надо отметить, что через консольные команды доступно очень немало действий, просмотрите хотя бы самостоятельно команду show.
В случае, если у вас не указан чёткий адрес для логина, то по этому логину можно подключаться со стольки клиентов (windows-машин,например), сколько адресов у вас в подсети выделенной для VPN, т.е.:
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1500 inet 192.168.0.255 --> 192.168.0.251 netmask 0xffffffff ng1: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1396 inet 192.168.0.255 --> 192.168.0.253 netmask 0xffffffff |
это я зашёл с двух разных PC по одним и тем же реквизитам - разные vpn-адреса.
Если что не так, смотрите логи, ошибки windows-клиентов и ещё пользуйтесь tcpdump (встроена в FreeBSD) и например, trafshow:
# whereis trafshow trafshow: /usr/ports/net/trafshow # cd /usr/ports/net/trafshow; make install clean ; rehash ; trafshow |
|
далее, выбираем курсорами сетевую и жмём энтер - вы увидите все текущие соединения и потоки в кбит/с и суммарным траффиком.
Вроде всё (:
размещено: 2008-05-31,
последнее обновление: 2011-11-14,
автор: roygbiv
corky, 2008-06-09 в 3:12:40
спасибо автору! по другому чуток, но в целом описанные в статье опции ускорили процесс настройки mpd5 pptp client + kernel nat на 2 интерфейса для подключения внутренней сетки к инету провайдера
RapteR, 2008-06-09 в 9:26:03
Все классно и замечательно работает, автору благодарность. Вопрос такой: клиент конектиться и получает адресс 192.168.100.11 а адрес сервера почему то остается как в локальной сети 192.168.1.253. Какой опцией задается "Адрес сервера"?
Foblas, 2008-06-10 в 3:41:45
Афтору плюсик, но таких статей навалом по инету. Если бы рассказали как прикрутить к mpd радиус с каким нибудь работающим биллингом чтобы с пользователей статистику снимать/блочить/ограничивать по времени/траффику было бы гораздо-гораздее.
RapteR, 2008-06-10 в 9:56:35
Foblas - собственно этим сейчас на работе и занимаюсь, как даделаю запостю статью.
roygbiv, 2008-06-10 в 13:49:21
Rapter,
# Specify IP address pool for dynamic assigment - здесь задаём "шлюзовой" адрес для vpn-сервера
# который обслуживает наш поддиапазон - 192.168.0.255 в моём случае, и не думайте, такой адрес возможен.
# вместо виртуально выдуманного 0.255 можно задать адрес сетевой bce1 - 192.168.0.2.
# но в целях дополнительной конспирации я этого делать не стал.
set ipcp ranges 192.168.0.255/32 ippool poolsat
Т.е. 192.168.0.255 (вещание 255.255.255.255 = /32 префикс) - здесь адрес сервера для уже подключённых по vpn-клиентов, его можно выставить практически любой.
RapteR, 2008-06-10 в 13:55:43
set ipcp ranges в моем понимании это дефайлт рутер. на ип сервера это не влияет.
roygbiv, 2008-06-10 в 14:05:09
Foblas, цель не просто описать банальную установку, а полное решение - то есть от начала и до конца провести по всем этапам. Для 5го mpd я честно ничего не нашёл месяц назад, а в связке с ipfw-nat тем более. Решил в общем-то простую проблему, но решил поделиться - мне таких описаний очень не хватало 2 года назад. Фактически, это готовое решение.
С radius это гуд, тоже поглядел бы - а то всё никак руки не дойдут до биллинга (не очень нужен пока), хотя с радиусом mpd4 в прошлом году скрутил по очень хорошему ману на opennet. А netams никак? Его с netflow хорошо вязать.
Вообще, ребят, делитесь инфой, это ж благо (:
Foblas, 2008-06-12 в 20:01:49
RapteR аналогично =) Искал-гугли, пару находил решений древних, но ниодно не заработало как надо. Сейчас думаю попробовать с abills разобраться.
Кстати, может кто подскажет каким образом на один и тот же интерфейс ngX вешать один и тот же ip при подключении пользователя?
Foblas, 2008-06-12 в 20:03:23
Сорри, roygbiv, прошлый пост был адресован тебе
paradox, 2008-06-13 в 1:19:31
>Foblas
зачем вешать на один и тот же ngX
помоему вы в чем то неразобрались
Foblas, 2008-06-13 в 3:21:04
а чтобы для каждого пользователя общий траффик считать
paradox, 2008-06-13 в 12:14:20
ну вы меня теперь точно добили
а радиус для чего?
и причем тут один и тот же ip на один интерфейс
неее
я вам советую очень хорошо изучить mpd
и саму систему
Foblas, 2008-06-13 в 18:11:55
Да без радиуса у меня сделано.
Был ба радиус с биллингом, эти глупые идею автоматически бы отпали за ненадобностью.
paradox, 2008-06-13 в 20:03:42
ну так поставте радиус
в чем проблема
либо если радиус ненравиться
есть up/down скрипты в mpd
по которым тоже можно считать
а то придумываете всякое...
dovidov, 2008-06-28 в 17:41:36
попробовал mpd5, для юзеров у которых явно не прописан ip вылетает ошибка "сервер не назначил адрес" и соответственно дисконнект, в логах mpd не обнаружил "Got IP ххх.ххх.ххх.ххх from pool "pool1""
RapteR, 2008-06-28 в 18:41:49
по идеи за это отвечает:
set ippool add poolsat 192.168.0.249 192.168.0.254
допускаю конечно что такой косяк имеет место быть, в понедельник проверю у себя с динамической выдачей.
dovidov, 2008-06-30 в 11:03:21
в данной статье в логах видна динамическая выдача "Got IP 192.168.0.251 from pool "poolsat"", но у меня (с практически аналогичными настройками mpd.conf) выдача не происходит... mpd-5.0.b1, FreeBSD-7.0-RELEASE, amd64...
dovidov, 2008-06-30 в 19:50:13
есть ещё один нюанс, если в юзерских настройках впн подключения задать ip-адрес, то ему назначится именно указанный им адрес, а нето что указан в mpd.secret, что тоже не есть хорошо...
RapteR, 2008-07-01 в 6:01:59
dovidov - это обман. У меня mpd5 радостно сообщает, что ip отвергнут.
dovidov, 2008-07-01 в 10:21:27
виноват... прописал ip на пользователя у которого не был указан ip в mpd.secret, для тех у кого указан, отвергает.
Nordy, 2008-09-18 в 10:53:21
Автор либо чайник либо раздолбай
при таких правилах его сайт увидят только внутри сети, да и то сомневаюсь.
# HTTP ----------local site----------— -
# у меня тут ещё и сайт есть на серваке (: apache)
${fwcmd} add allow tcp from ${eip} 80 to any keep-state
Должно быть
${fwcmd} add allow tcp from any to ${eip} 80 keep-state
а еще лучше
${fwcmd} add allow tcp from any to me 80 keep-state
lissyara, 2008-09-18 в 11:15:30
Автор и не писал что это внешний сайт.
И для кого сайт - тоже не писал.
Вполне может быть чисто внутренний сайт.
Nordy, 2008-09-18 в 15:17:52
Внутренний сайт на внешнем интерфейсе? верх извращений..
судя по этому правилу сайт САМ отдает контент клиентам направо и налево... какие уж там запросы к серверу от клиентов..
Сойдемся на том, что автор описАлся
mazdayka, 2008-09-18 в 17:56:50
что то тут не сходится!
при таком раскладе правил у меня вообще файер не пашет:(
FreeBSD 7.0
и откуда появился ${oip} ?
Rimlyanin, 2008-10-01 в 23:58:29
я ньюб, может я ещё не все понимаю. но у меня:
gate# cat /usr/local/etc/mpd5/mpd.conf.sample | grep set | grep ccp |grep yes | grep mpp
set ccp yes mppc
set ccp yes mpp-e40
set ccp yes mpp-e128
set ccp yes mpp-stateless
set ccp yes mppc
set ccp yes mpp-e40
set ccp yes mpp-e128
set ccp yes mpp-stateless
gate#
Саша, 2008-10-02 в 17:56:29
The five lines below enable Microsoft Point-to-Point encryption
# (MPPE) using the ng_mppc(8) netgraph node type. Поддержка шифрования Microsoft
# для Windows-клиентов, не изменял секцию
set bundle enable compression
set ccp yes mppc
set mppc yes e40 #ошибочка
set mppc yes e128 #ошибочка
set mppc yes stateless #ошибочка
Sep 16 11:42:23 olimp-motors mpd: mpd.conf:52: Unknown command: 'set mppc'. Try "help".
Sep 16 11:42:23 olimp-motors mpd: mpd.conf:53: Unknown command: 'set mppc'. Try "help".
Sep 16 11:42:23 olimp-motors mpd: mpd.conf:54: Unknown command: 'set mppc'. Try "help".
надо
set ccp yes e40
set ccp yes e128
set ccp yes stateless
alik, 2009-01-19 в 15:39:45
.... deleted ......
каммент удалён администратором.
пишите в форум
alik, 2009-01-19 в 15:42:58
Прошу прошения, за бардак, я случайно.
docd, 2009-01-19 в 20:29:38
Классно, супер НО! Я в сети практически ничего не нашёл о l2tp/ipsec для Win!(set l2tp) Поделитесь секретом в виде статьи :-)).
omega, 2009-01-27 в 13:44:36
# shapes for users
${fwcmd} add pipe 5 ip from any to ${n1}/24
${fwcmd} add pipe 5 ip from ${n1}/24 to any
${fwcmd} pipe 1 config bw 2Mbits/s
А тут случаем очепятки нету? pipe 1 config там не 5 случаем должно быть?
Wic, 2009-02-20 в 18:40:53
Отличная статья, хорошо описан фаервол, настройка и сборка ядра, и сама процедура подъема сервера тоже хорошо описана.
Только новичкам не стоит бездумно сдирать конфиги, всё нужно продумывать и понимать, а не скопировал вставил и разбираться почему не работает то или это.
ps когда собирал руками mpd5.2 из портов руками то нужно было сделать ./src/configure а только потом make install all, как описано в ридми
tez, 2009-05-09 в 23:08:25
Хочу сказать просто БОЛЬШУШЧЕЕ спасибо...
sergicus, 2009-10-01 в 9:27:24
Спасибо за статью, помогла
daggerok, 2009-10-03 в 20:15:25
# PROXY - это для прозрачного прокси-сервера, на моей машине он до кучи сервисов
${fwcmd} add fwd ${iip},3348 tcp from ${n1}/24 to any http via ${iint}
${fwcmd} add fwd ${iip},3348 tcp from ${n1}/24 to any https via ${iint}
расскажите, чем вы прозрачно проксируете https траффик?
да, 2010-04-27 в 4:40:05
daggerok
Порты 80 и 443 проксируются сквидом или хз чем на порту 3348 скорее для подсчета трафика и резки баннеров. Всё остальное идёт через нат
daggerok, 2010-04-28 в 12:55:40
>да, 2010-04-27 в 4:40:05
>daggerok
>Порты 80 и 443 проксируются сквидом или хз чем на >порту 3348 скорее для подсчета трафика и резки >баннеров. Всё остальное идёт через нат
на сколько я знаю - прозрачно проксировать https-трафик нельзя, ну или во всяком случае у меня сквидой не получилось этого добиться. именно поэтому я и спросил - чем именно Вы его прозрачно проксируете. так как у меня, там где стоит прозрачный проксик, весь https-трафик ходит по нату.
ASM, 2010-05-24 в 20:20:19
Автор, обратите внимание, в эти строки вкралась ошибка:
# FTP & HTTP to LAN
${fwcmd} add allow tcp from ${oip} 20,21,80,443 to {n1}/24 via ${iint} keep-state
${fwcmd} add allow tcp from ${oip} 49152-65534 to ${n1}/24 via ${iint} keep-state
Дело в том, что переменная ${oip} не обозначена, и насколько я понял, нужно сделать замену ${oip} на ${eip}.
ASM, 2010-05-24 в 21:05:44
Еще вот что. С правилом ${fwcmd} add allow tcp from me 1723 to any keep-state должно идти правило ${fwcmd} allow tcp from any to me dst-port 1723 keep-state, иначе мы просто не сможем подключиться к серверу.
aspera, 2010-08-19 в 17:36:32
И вообще не стоит использовать "me" в конфиге фаервола, если у вас будет несколько адресов провайдера и коннектится будут не на дефолтный гейт, то тупо не отработает. А после разделения трафика по направлениям "me" использовать нельзя вообще...
Лучше будет ipfw add allow tcp from any to $oip 1723 keep-state
aspera, 2010-08-19 в 17:38:38
P.S.: если указать правило ipfw add allow tcp from any to $oip 1723 keep-state то правило ${fwcmd} add allow tcp from me 1723 to any keep-state вообще не нужно
tehnikpc, 2012-09-11 в 13:55:59
"# deny netbios
${fwcmd} add deny ip from any 137-139 to any
${fwcmd} add deny ip from any to any 137-13"
Зачем samba прибили? :). Бедные пользователи :).
tehnikpc, 2012-09-11 в 14:01:34
"# SSH for localhost allow
${fwcmd} add allow tcp from me 22 to any
${fwcmd} add allow tcp from any to me 22"
Это глобальное правило.
tehnikpc, 2012-09-11 в 14:05:29
"# VPN-connect - это порт для даемона MPD,
# на него поступают запросы на авторизацию
${fwcmd} add allow tcp from me 1723 to any keep-state"
Это правило для исходящего порта 1723, а нужно наоборот открыть входящий.
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [43 шт.]