Хочу настроить VPN на основе mpd на FreeBSD-5.2.1
Делал всё так:1. в ядро добавил опции;
options NETGRAPH #netgraph(4) system
options NETGRAPH_ASYNC
options NETGRAPH_BPF
options NETGRAPH_ECHO
options NETGRAPH_ETHER
options NETGRAPH_HOLE
options NETGRAPH_IFACE
options NETGRAPH_KSOCKET
options NETGRAPH_L2TP
options NETGRAPH_LMI
# MPPC compression requires proprietary files (not included)
#options NETGRAPH_MPPC_COMPRESSION
options NETGRAPH_MPPC_ENCRYPTION
options NETGRAPH_ONE2MANY
options NETGRAPH_PPP
options NETGRAPH_PPTPGRE
options NETGRAPH_RFC1490
options NETGRAPH_SOCKET
options NETGRAPH_TEE
options NETGRAPH_TTY
options NETGRAPH_UI
options NETGRAPH_VJC
пересобрал ядро, перегрузил машину2. собрал mpd из /usr/ports/net/mpd
3. настроил mpd:
----------- /usr/local/etc/mpd/mpd.conf -----------
default:
load pptp0 # Load the pptp sessionpptp0:
#так создается новый интерфейс, воторой параметр - название
#соединения, который этот интерфейс будет использовать (из файла
#mpd.links)
new -i ng0 pptp0 pptp0 #Create netgraph device#Задается локальный и удаленный ip адреса
set ipcp ranges 192.168.2.1/24 192.168.2.100/24#Загружаются паремтры, одинаковые для всех интерфейсов
load pptp_standartpptp_standart:
set iface disable on-demand
set bundle disable multilink
set link yes acfcomp protocomp#Требуем chap авторизации
set link no pap chap
set link enable chap
set link keep-alive 60 180
set ipcp yes vjcomp#Устанавливаем DNS и Wins
set ipcp dns 192.168.2.1
set ipcp nbns 192.168.2.1#Включаем proxy-arp, чтобы компьютер "видел" без маршрутизации
#корпоративную сеть (по протоколу arp)
set iface enable proxy-arp#Включаем компрессию данных
set bundle enable compression#Включаем компрессию данных, совсестимую с Microsoft-клиентами
set ccp yes mppc#Включаем шифрование, совместимое с Microsoft-клиентами
set ccp yes mpp-e40
set ccp yes mpp-e128
set ccp yes mpp-stateless
set bundle yes crypt-reqd#Задаем адрес для входящих соединений
#set pptp self 192.168.1.10#Разрешаем входящие соединения
set pptp enable incoming
set pptp disable originate----------- /usr/local/etc/mpd/mpd.links ----------
pptp0:
set link type pptp--------- /usr/local/etc/mpd/mpd.secrets ------
user1 pass1 *4. запустил mpd
он мне написал:
Multi-link PPP for FreeBSD, by Archie L. Cobbs.
Based on iij-ppp, by Toshiharu OHNO.
mpd: pid 645, version 3.15 (root@unix1.myhost 22:03 25-May-2004)
Usage: load system
[:]
при это в логе /var/log/mpd.log тоже самое
а ifconfig -a не показал ни одного ng - интерфейса# netstat -an | grep 1723
ничего не показал5. MS клиент при попытке подключения говорит:
--------------------------------
Error 789: The L2TP connection attempt failed because the security layer encountered a processing error during initial negotiations with the remote computer.
--------------------------------Подскажите, что не верно ? Как мне всё таки запустить VPN сервер на очнове mpd ?
>Хочу настроить VPN на основе mpd на FreeBSD-5.2.1
>Делал всё так:
>
>1. в ядро добавил опции;
>options NETGRAPH #netgraph(4) system
>options NETGRAPH_ASYNC
>options NETGRAPH_BPF
>options NETGRAPH_ECHO
>options NETGRAPH_ETHER
>options NETGRAPH_HOLE
>options NETGRAPH_IFACE
>options NETGRAPH_KSOCKET
>options NETGRAPH_L2TP
>options NETGRAPH_LMI
># MPPC compression requires proprietary files (not included)
>#options NETGRAPH_MPPC_COMPRESSION
>options NETGRAPH_MPPC_ENCRYPTION
>options NETGRAPH_ONE2MANY
>options NETGRAPH_PPP
>options NETGRAPH_PPTPGRE
>options NETGRAPH_RFC1490
>options NETGRAPH_SOCKET
>options NETGRAPH_TEE
>options NETGRAPH_TTY
>options NETGRAPH_UI
>options NETGRAPH_VJC
>пересобрал ядро, перегрузил машину
>
>2. собрал mpd из /usr/ports/net/mpd
>3. настроил mpd:
>----------- /usr/local/etc/mpd/mpd.conf -----------
>default:
> load pptp0 # Load the pptp session
>
>pptp0:
> #так создается новый интерфейс, воторой параметр - название
>
> #соединения, который этот интерфейс будет использовать (из файла
>
> #mpd.links)
> new -i ng0 pptp0 pptp0 #Create netgraph device
>
>
> #Задается локальный и удаленный ip адреса
> set ipcp ranges 192.168.2.1/24 192.168.2.100/24
>
> #Загружаются паремтры, одинаковые для всех интерфейсов
> load pptp_standart
>
>pptp_standart:
> set iface disable on-demand
> set bundle disable multilink
> set link yes acfcomp protocomp
>
> #Требуем chap авторизации
> set link no pap chap
> set link enable chap
> set link keep-alive 60 180
> set ipcp yes vjcomp
>
> #Устанавливаем DNS и Wins
> set ipcp dns 192.168.2.1
> set ipcp nbns 192.168.2.1
>
> #Включаем proxy-arp, чтобы компьютер "видел" без маршрутизации
> #корпоративную сеть (по протоколу arp)
> set iface enable proxy-arp
>
> #Включаем компрессию данных
> set bundle enable compression
>
> #Включаем компрессию данных, совсестимую с Microsoft-клиентами
> set ccp yes mppc
>
> #Включаем шифрование, совместимое с Microsoft-клиентами
> set ccp yes mpp-e40
> set ccp yes mpp-e128
> set ccp yes mpp-stateless
> set bundle yes crypt-reqd
>
> #Задаем адрес для входящих соединений
> #set pptp self 192.168.1.10
>
> #Разрешаем входящие соединения
> set pptp enable incoming
> set pptp disable originate
>
>----------- /usr/local/etc/mpd/mpd.links ----------
>pptp0:
> set link type pptp
>
>--------- /usr/local/etc/mpd/mpd.secrets ------
>user1 pass1 *
>
>4. запустил mpd
>он мне написал:
>Multi-link PPP for FreeBSD, by Archie L. Cobbs.
>Based on iij-ppp, by Toshiharu OHNO.
>mpd: pid 645, version 3.15 (root@unix1.myhost 22:03 25-May-2004)
>Usage: load system
>[:]
>при это в логе /var/log/mpd.log тоже самое
>а ifconfig -a не показал ни одного ng - интерфейса
>
># netstat -an | grep 1723
>ничего не показал
>
>5. MS клиент при попытке подключения говорит:
>--------------------------------
>Error 789: The L2TP connection attempt failed because the security layer encountered
>a processing error during initial negotiations with the remote computer.
>--------------------------------
>
>Подскажите, что не верно ? Как мне всё таки запустить VPN сервер
>на очнове mpd ?
В описании маска задается на 1 адрес.
Может в этом дело
set ipcp ranges 192.168.2.1/32 192.168.2.100/32
>В описании маска задается на 1 адрес.
>Может в этом дело
>set ipcp ranges 192.168.2.1/32 192.168.2.100/32не помогло... всё по прежнему
интерфейсы ng не подымаются
>>В описании маска задается на 1 адрес.
>>Может в этом дело
>>set ipcp ranges 192.168.2.1/32 192.168.2.100/32
>
>не помогло... всё по прежнему
>интерфейсы ng не подымаются
Ну еще у меня странная вещь была с mpd.
Конечно, может люди и посмеются, но опишу как было.
Пишу конфиг - ну нет ошибок. С ним не работает.
Все то же самое переписываю в файл mpd.conf.sample,
переименовываю в mpd.conf - все ok.
Что это было не разбирался - то ли права доступа не те у меня
стояли, то ли владелец, не знаю.
Может чем поможет.
А все вот эти феньки в ядре обязательны, я поднимал в ядре ничего не рисовал не разу и все работает.
>Ну еще у меня странная вещь была с mpd.
>Конечно, может люди и посмеются, но опишу как было.
>Пишу конфиг - ну нет ошибок. С ним не работает.
>Все то же самое переписываю в файл mpd.conf.sample,
>переименовываю в mpd.conf - все ok.
>Что это было не разбирался - то ли права доступа не те
>у меня
>стояли, то ли владелец, не знаю.
>Может чем поможет.во прикол... сделал по данному совету, хотя бы что то сдвинулось с места:
вот что написало в mpd.log
------------
May 26 18:35:48 unix1 mpd: mpd: pid 1967, version 3.15 (root@freebsd.org 04:02 5-Dec-2003)
May 26 18:35:48 unix1 mpd: [pptp0] ppp node is "mpd1967-pptp0"
May 26 18:35:48 unix1 mpd: [pptp0] using interface ng0
May 26 18:35:48 unix1 mpd: [pptp0] multilink option required for 4 links
May 26 18:35:48 unix1 mpd: mpd: type of link "device" is unspecified
May 26 18:35:48 unix1 last message repeated 2 times
------------
и ng0 поднялся:
# ifconfig -a
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 192.168.1.10 netmask 0xffffff00 broadcast 192.168.1.255
inet6 fe80::260:52ff:fe0b:bc6f%rl0 prefixlen 64 scopeid 0x1
ether 00:60:52:0b:bc:6f
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
ng0: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
но так и не слушает нужный порт, и MicroSoft VPN vlient ругается теми же словами.
>>Ну еще у меня странная вещь была с mpd.
>>Конечно, может люди и посмеются, но опишу как было.
>>Пишу конфиг - ну нет ошибок. С ним не работает.
>>Все то же самое переписываю в файл mpd.conf.sample,
>>переименовываю в mpd.conf - все ok.
>>Что это было не разбирался - то ли права доступа не те
>>у меня
>>стояли, то ли владелец, не знаю.
>>Может чем поможет.
>
>во прикол... сделал по данному совету, хотя бы что то сдвинулось с
>места:
>вот что написало в mpd.log
>------------
>May 26 18:35:48 unix1 mpd: mpd: pid 1967, version 3.15 (root@freebsd.org 04:02
> 5-Dec-2003)
>May 26 18:35:48 unix1 mpd: [pptp0] ppp node is "mpd1967-pptp0"
>May 26 18:35:48 unix1 mpd: [pptp0] using interface ng0
>May 26 18:35:48 unix1 mpd: [pptp0] multilink option required for 4 links
>
>May 26 18:35:48 unix1 mpd: mpd: type of link "device" is unspecified
>
>May 26 18:35:48 unix1 last message repeated 2 times
>------------
>и ng0 поднялся:
># ifconfig -a
>rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
> options=8<VLAN_MTU>
> inet 192.168.1.10 netmask 0xffffff00
>broadcast 192.168.1.255
> inet6 fe80::260:52ff:fe0b:bc6f%rl0 prefixlen 64
>scopeid 0x1
> ether 00:60:52:0b:bc:6f
> media: Ethernet autoselect (100baseTX <full-duplex>)
> status: active
>plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
>lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
> inet 127.0.0.1 netmask 0xff000000
>
> inet6 ::1 prefixlen 128
>
> inet6 fe80::1%lo0 prefixlen 64
>scopeid 0x3
>ng0: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500
>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>но так и не слушает нужный порт, и MicroSoft VPN vlient ругается
>теми же словами.ps -aux|grep mpd
у меня почему после первой загрузке mpd -b , клиенты конектиться не хотели , но если потом вручную killall mpd;/usr/sbin/mpd -b , то всё ОК .
>ps -aux|grep mpd
>у меня почему после первой загрузке mpd -b , клиенты конектиться не
>хотели , но если потом вручную killall mpd;/usr/sbin/mpd -b , то
>всё ОК .нет... не помогает :-(
всё то же самое и порт 1723 никто не слушает :-(
>>ps -aux|grep mpd
>>у меня почему после первой загрузке mpd -b , клиенты конектиться не
>>хотели , но если потом вручную killall mpd;/usr/sbin/mpd -b , то
>>всё ОК .
>
>нет... не помогает :-(
>всё то же самое и порт 1723 никто не слушает :-(А, что в ipfw?
>>>ps -aux|grep mpd
>>>у меня почему после первой загрузке mpd -b , клиенты конектиться не
>>>хотели , но если потом вручную killall mpd;/usr/sbin/mpd -b , то
>>>всё ОК .
>>
>>нет... не помогает :-(
>>всё то же самое и порт 1723 никто не слушает :-(
>
>А, что в ipfw?ничего нет
нет даже поддержки ipfw в ядре
ipfw -a l
ipfw: getsockopt(IP_FW_GET): Protocol not available
Так срочка закоментирована
#set pptp self 192.168.1.10Это должен быть адрес машины с vpn сервером.
>Так срочка закоментирована
> #set pptp self 192.168.1.10
>
>Это должен быть адрес машины с vpn сервером.пробовал раскомментировать.. не помогает.
на самом деле по default mpd слушает все ip а если установлен self, то тогда только этот.
Смотрел свои логи.
3 строки у меня совпадают.
А следующие 3 строки нет.
Думаю надо сюда покопать.
May 26 18:35:48 unix1 mpd: mpd: pid 1967, version 3.15 (root@freebsd.org 04:02 5-Dec-2003)
May 26 18:35:48 unix1 mpd: [pptp0] ppp node is "mpd1967-pptp0"
May 26 18:35:48 unix1 mpd: [pptp0] using interface ng0
У меня
May 28 10:56:11 Gate mpd: mpd: local IP address for PPTP is 192.168.0.2
Конкретно что - то в links ему не нравиться.May 26 18:35:48 unix1 mpd: [pptp0] multilink option required for 4 links
May 26 18:35:48 unix1 mpd: mpd: type of link "device" is unspecified
May 26 18:35:48 unix1 last message repeated 2 times
когда-то в инете нашел у добрых людей такой скриптик
работает уже год ;)#!/bin/sh
i=0
c=100 # сколько клиентов
vpn_net="xxx.xxx.xxx.xxx/xx" # ВПН сеть начиная с хоста
oif="xxx.xxx.xxx.xxx" # IP на внешн.инт.роутера
iif="xxx.xxx.xxx.xxx" # IP на внутр.инт.роутера
dns="xxx.xxx.xxx.xxx"
cat /dev/null > /usr/local/etc/mpd/mpd.conf # создание файлов
cat /dev/null > /usr/local/etc/mpd/mpd.links
echo default: >> /usr/local/etc/mpd/mpd.conf
while :
do
if [ ${i} = ${c} ]
then
break
else
echo " load client$i" >> /usr/local/etc/mpd/mpd.conf
i=`expr ${i} + 1`
fi
donei=0
while :
do
if [ ${i} = ${c} ]
then
break
else
ii=`expr ${i} + 1`
echo client$i: >> /usr/local/etc/mpd/mpd.conf
echo " new -i ng$i pptp$i pptp$i" >>/usr/local/etc/mpd/mpd.conf
echo " set iface disable on-demand" >>/usr/local/etc/mpd/mpd.conf
echo " set iface enable proxy-arp" >>/usr/local/etc/mpd/mpd.conf
echo " set iface idle 0" >> /usr/local/etc/mpd/mpd.conf
echo " set bundle enable tcp-wrapper" >> /usr/local/etc/mpd/mpd.conf
echo " set bundle disable multilink" >>/usr/local/etc/mpd/mpd.conf
echo " set link yes acfcomp protocomp" >>/usr/local/etc/mpd/mpd.conf
echo " set link no pap chap" >> /usr/local/etc/mpd/mpd.conf
echo " set link enable chap" >> /usr/local/etc/mpd/mpd.conf
echo " set link keep-alive 10 60" >>/usr/local/etc/mpd/mpd.conf
/usr/local/etc/mpd/mpd.conf
echo " set ipcp yes vjcomp" >> /usr/local/etc/mpd/mpd.conf
echo " set ipcp ranges ${oif} ${vpn_net}" >> /usr/local/etc/mpd/mpd.conf
echo " set ipcp dns ${dns}" >>/usr/local/etc/mpd/mpd.conf
#--------------mpd.links-----------------------------------------------
echo pptp$i: >> /usr/local/etc/mpd/mpd.links
echo " set link type pptp" >> /usr/local/etc/mpd/mpd.links
echo " set pptp self ${iif}" >>/usr/local/etc/mpd/mpd.links
echo " set pptp enable incoming" >>/usr/local/etc/mpd/mpd.links
echo " set pptp disable originate" >>/usr/local/etc/mpd/mpd.links
i=`expr ${i} + 1`
fi
done
Проблема была в kern_securelevel_enable:было
kern_securelevel="1"
kern_securelevel_enable="YES"стало
kern_securelevel="1"
kern_securelevel_enable="NO"и всё заработало !!!
заработать то оно заработало, а кто может мне с роутингом помочь ?есть локалка 10.10.1.0/24 в ней нахордится роутер zyxel у которого один конец в локалке 10.10.1.1 а второй в нете. На роутере настроен проброс 1723 порта на внутреннюю машину с FreeBSD 10.10.1.2 на которой настроен mpd в качестве VPN сервера. На этой же машине крутится внутренний apache и dns.
Так же есть лаптоп подключенный к VPN через интернет.
Если я на VPN выделяю адреса из локалкиб например server ip 10.10.1.10 local ip 10.10.1.100 то лаптоп видит только 1.10 и 1.100, точно так же как и все остальные машины в локлке 10.10.1.3, 10.10.1.4 не видят ни 1.10 ни 1.100. В то время как FreeBSD видит всё.
Если на VPN выделяю другую подсеть, например 10.10.2.0/24 то тем более локалка не видит VPN а VPN соответственно локалку.
Подскажите, как мне сделать так, что бы приконнектившись к VPN я мог с лаптопа видеть локалку ?
>заработать то оно заработало, а кто может мне с роутингом помочь ?
>
>
>есть локалка 10.10.1.0/24 в ней нахордится роутер zyxel у которого один конец
>в локалке 10.10.1.1 а второй в нете. На роутере настроен проброс
>1723 порта на внутреннюю машину с FreeBSD 10.10.1.2 на которой настроен
>mpd в качестве VPN сервера. На этой же машине крутится внутренний
>apache и dns.
>Так же есть лаптоп подключенный к VPN через интернет.
>Если я на VPN выделяю адреса из локалкиб например server ip 10.10.1.10
>local ip 10.10.1.100 то лаптоп видит только 1.10 и 1.100, точно
>так же как и все остальные машины в локлке 10.10.1.3, 10.10.1.4
>не видят ни 1.10 ни 1.100. В то время как FreeBSD
>видит всё.
>Если на VPN выделяю другую подсеть, например 10.10.2.0/24 то тем более локалка
>не видит VPN а VPN соответственно локалку.
>Подскажите, как мне сделать так, что бы приконнектившись к VPN я мог
>с лаптопа видеть локалку ?Люди... никто не поможет NAT настроить на FreBSD ?
IPDIVERT и IPFIREWALL включил.
В rc.conf всё прописал:
firewall_enable="YES"
firewall_script="/etc/rc.firewall.local"
natd_enable="YES"
natd_interface="rl0"
gateway_enable="YES"В /etc/rc.firewall.local пробовал писать и так сяк не помогает.
Вот последний вариант:
--------- rc.firewall.local ------------
ipfw='/sbin/ipfw -q'${ipfw} -f flush
${ipfw} add divert natd all from any to 10.10.1.0/24 via rl0
${ipfw} add divert natd all from 10.10.1.0/24 to any via rl0
${ipfw} add allow all from any to any
-----------------------------------------
нифига... пакеты прозходят только до 10.10.1.1 и дальше не идёт
Я правда ещё заметил, что при поднятии ng0 появляется странный rout:
10.10.1.1 lo0 UHS 0 0 lo0
10.10.1.100 10.10.1.1 UH 0 0 ng0
почему он идёт через lo0 ?
>Проблема была в kern_securelevel_enable:
>
>было
>kern_securelevel="1"
>kern_securelevel_enable="YES"
>
>стало
>kern_securelevel="1"
>kern_securelevel_enable="NO"
>
>и всё заработало !!!
А у меня та же фигня. и эта опция уже стояла в NO. что делать?...