После танцев с бубном с pptpclient, особенно напрягала проблема с «/bin/ip not found», я всётаки решил использовать в качестве vpn-клиента mpd5! :)
Предыстория
У меня не было интернета, поэтому я скачивал пакеты с (с другой машины), клал на флешку и устанавливал на «сервер» которому нужен был vpn-клиент для работы в интернете.
Итак, действующие лица:
- На стороне клиента (то есть меня)
- Лептоп с Windows XP
- Сервер с FreeBSD 7.1
- Сетевой интерфейс rl1 для подключения к интернету
- Сетевой интерфейс rl0 для подключения к локальной сети (нам это не интересно)
- На стороне сервера (Провайдер AirNet)
- FreeBSD 5.2.1 (SPARC)
- DHCP-сервер
- Gateway: 192.168.128.33
- DNS: 192.168.128.33
- VPN: vpn.airnet.lan (192.168.128.7)
При подключении в Windows наблюдаем следующую картину:
- Используется «Безопасный пароль»
- Шифрование отключено
Установка mpd5
Заходим на и на (для поиска пакетов).
- Качаем mpd (net/mpd-5.1_1.tbz)
- Качаем expat (textproc/expat-2.0.1.tbz)
- Качаем libpdel (devel/libpdel-0.5.3_4.tbz)
Сливаем все на флешку и монтируем ее во фрю:
Устанавливаем мопед
Остальные пакеты (зависимости) сами поставятся, если они находятся на одном уровне с mpd-5.1_1.tbz
Вы можете скачать все эти пакеты с моего сайта: mpd-51_1, expat-201 и libpdel-053_4
Настройка pptp_client
Отредактируем /etc/rc.conf до вида:
mpd_enable="YES"
# Для интерфейса rl1 используем DHCP
ifconfig_rl1="DHCP"
Отредактируем файл /etc/resolv.conf и добавим DNS-адреса
Отредактируем файл /usr/local/etc/mpd5/mpd.conf до вида:
default:
load pptp_client
pptp_client:
create bundle static B1
set iface route default
set ipcp ranges 0.0.0.0/0 0.0.0.0/0
create link static L1 pptp
set link action bundle B1
set auth authname "ЛОГИН"
set auth password "ПАРОЛЬ"
set link max-redial 0
set link mtu 1460
set link keep-alive 20 75
set pptp peer vpn.airnet.lan
set pptp disable windowing
open
Для дополнительной информации о коммандах и опциях обращайтесь к .
Для рестарта DHCP-клиента используйте:
# dhclient -d rl1
Теперь у вас должно все заработать! Если нет, пишите камменты :)
А теперь, продолжение моей истории...
Конфиг был полностью рабочий, однако подключение не удавалось создать!
process 1080 started, version 5.1 (root@freebsd.org 18:20 9-Sep-2008)
[B1] Bundle: Interface ng1 created
[L1] [L1] Link: OPEN event
[L1] LCP: Open event
[L1] LCP: state change Initial --> Starting
[L1] LCP: LayerStart
[L1] PPTP call successful
[L1] Link: UP event
[L1] Link: origination is local
[L1] LCP: Up event
[L1] LCP: state change Starting --> Req-Sent
[L1] LCP: SendConfigReq #1
[L1] ACFCOMP
[L1] PROTOCOMP
[L1] ACCMAP 0x000a0000
[L1] MRU 1500
[L1] MAGICNUM a04506b0
[L1] LCP: rec'd Configure Ack #1 (Req-Sent)
[L1] ACFCOMP
[L1] PROTOCOMP
[L1] ACCMAP 0x000a0000
[L1] MRU 1500
[L1] MAGICNUM a04506b0
[L1] LCP: state change Req-Sent --> Ack-Rcvd
[L1] LCP: state change Ack-Rcvd --> Req-Sent
[L1] LCP: SendConfigReq #2
[L1] ACFCOMP
[L1] PROTOCOMP
[L1] ACCMAP 0x000a0000
[L1] MRU 1500
[L1] MAGICNUM a04506b0
[L1] LCP: rec'd Configure Ack #2 (Req-Sent)
[L1] ACFCOMP
[L1] PROTOCOMP
[L1] ACCMAP 0x000a0000
[L1] MRU 1500
[L1] MAGICNUM a04506b0
[L1] LCP: state change Req-Sent --> Ack-Rcvd
[L1] LCP: rec'd Configure Request #148 (Ack-Rcvd)
[L1] ACFCOMP
[L1] PROTOCOMP
[L1] MRU 1500
[L1] MAGICNUM 4a711d50
[L1] AUTHPROTO CHAP MSOFTv2
[L1] LCP: SendConfigAck #148
[L1] ACFCOMP
[L1] PROTOCOMP
[L1] MRU 1500
[L1] MAGICNUM 4a711d50
[L1] AUTHPROTO CHAP MSOFTv2
[L1] LCP: state change Ack-Rcvd --> Opened
[L1] LCP: auth: peer wants CHAP, I want nothing
[L1] LCP: LayerUp
[L1] CHAP: rec'd CHALLENGE #1 len: 21
[L1] Name: ""
[L1] CHAP: Using authname "andreevmv"
[L1] CHAP: sending RESPONSE #1 len: 63
[L1] CHAP: sending RESPONSE #1 len: 63
[L1] CHAP: rec'd FAILURE #1 len: 31
[L1] MESG: E=691 R=0 M=Login incorrect
[L1] LCP: authorization failed
[L1] LCP: parameter negotiation failed
[L1] LCP: state change Opened --> Stopping
...
Была найдена проблема, провайдер не выдавал нормальный IP-адрес по DHCP оборудованию, не закрепленному за пользователем. То есть моя сетевая карта на сервере являлась не зарегистрированной, а карта на лептопе — являлась зарегистрированной в биллинговой системе.
Было тут же найдено решение, использовать поддельный MAC-адрес от сетевой карты лептопа!
Подменяем MAC на сервере:
И получилось у нас сменить MAC и получить по DHCP нормальный IP-адрес:
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether 00:00:00:00:00:00
inet 192.168.135.18 netmask 0xffff0000 broadcast 192.168.255.255
media: Ethernet autoselect (none)
status: no carrier
...
Для того чтобы не менять каждый раз, я добавил в /etc/rc.conf:
ifconfig_rl1="ether 00:00:00:00:00:00"
После чего еще раз попробовал подсоединится по vpn:
И у меня получилось авторизоваться и получить внешний IP-адрес!
[L1] CHAP: Using authname "andreevmv"
[L1] CHAP: sending RESPONSE #1 len: 63
[L1] CHAP: rec'd SUCCESS #1 len: 46
[L1] MESG: S=7E9FBD94F23E66ED6EF6E8105664B9F8A20982C8
[L1] LCP: authorization successful
...
[B1] IPCP: LayerUp
[B1] 172.16.4.41 -> 93.92.200.24
[B1] IFACE: Up event
...
Наконец-то получилось поднять интерфейс ng1 и выйти в интернет!
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether 00:00:00:00:00:00
inet 192.168.135.18 netmask 0xffff0000 broadcast 192.168.255.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
...
ng0: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1500
ng1: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1460
inet 172.16.4.41 --> 93.92.200.20 netmask 0xffffffff
Мои благодарности:
- Родному форуму Pyha.ru, а так же phpdude за поддержание дискуссии :)
- Форуму провайдера AirNet (к сожалению форум доступен только изнутри http://forum.airnet.lan/showthread.php?t=1759) и конкретно пользователям CoDe и Technogen за помощь в поиске бага!
- Пользователю alexshur за провокации в сторону mpd5 :)




Однако. Я почему-то всегда был уверен что к vpn можно средствами «по умолчанию» во FreeBSD приконнектится. Век живи век учись :)
Ну VPN это не обязаловка, даже в *ubunta, которые очень дружелюбны — нет pptp клиента :)
Похожая проблема, но не получается получить настройки по dhcp при подмене mac-адреса:
rc.conf:
ifconfig_sk1="DHCP"
ifconfig_sk1="ether 00:11:95:1d:2e:02"
когда вставляю «родную» сетевуху, dhcp отдается... :(
Может подменять надо раньше чем подключатся к DHCP?
Попробуйте:
1. Закомментите и в ребут
ifconfig_sk1="ether 00:11:95:1d:2e:02"
2.
3.
ng0: flags=88d1 metric 0 mtu 1456
inet 62.33.239.136 --> 172.18.100.1 netmask 0xffffffff
Коннект есть. Сессия весит около 1 мин, потом рвется, внешнея сеть не пингуется. МОжет маршрут нужен?
Вообще, столкнулся с ситуацией, когда невозможно было сделать ifconfig ether из rc-скрипта. Дело в том, что сеть (mpd5) поднималась быстрее, чем менялся MAC карты.
Выход:
touch /etc/start_if.%ifname%
echo ifconfig %ifname% ether 00:11:22:33:44:55 >/etc/start_if.%ifname%
где %ifname% — имя нужного нам сетевого интерфейса.