Объясняю, что происходит :
есть впн сервак 10.0.0.1
есть **ip** назначаемый мне серваком
есть интерфейс ng0 (создается)
есть gateway XX.XX.XX.XX к серваку 10.0.0.1изначально прописано:
Destination Gateway Flags Refs Use Netif Expire
default XX.XX.XX.XX UGSc 1 1 ed0Создаю соединение (через mpd):
и в конце поднимается интерфейс и выставляются маршруты:
khome mpd: [work] exec: /sbin/ifconfig ng0 **ip** 10.0.0.1 netmask 0xffffffff -link0
khome mpd: [work] exec: /sbin/route add **ip** -iface lo0
khome mpd: [work] exec: /sbin/route add 0.0.0.0 10.0.0.1
khome mpd: [work] exec: command returned 256После чего дефолтовый роут заменяется (route add 0.0.0.0 10.0.0.1) интерфейс ng0 поднимается:
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500
inet **ip** --> 10.0.0.1 netmask 0xffffffffСоздается маршрут
10.0.0.1 **ip** UH 1 1 ng0
**ip** lo0 UHS 0 0 lo0Но вот связка с сервером теряется, так как без указания gateway'я XX.XX.XX.XX этот сервер не видим дя системы :(( те я пробую его пинговать, вижу в tcpdump'e попытку достичь сервера 10.0.0.1 через **ip**, которая оканчивается неудачно :((
Пытался обойти замену дефолтового роута (убирал вообще строку set iface route default, те оставлял а качестве gateway'я XX.XX.XX.XX), но все равно из-за маршрута
10.0.0.1 **ip** UH 1 1 ng0
он все равно ломится через **ip** к серваку ... игнорируя правильный gateway :((И как указать ему что между виртуальным интерфейсом ng0 и серваком ему необходимо лезть через определенный XX.XX.XX.XX gateway ?? Что-то все мои попытки не получились :((
добавить в таблицу роутинга запись типа
route add VPN_SERVER_IP GATEWAY_IP
а уже после этого запускать VPN
>добавить в таблицу роутинга запись типа
>route add VPN_SERVER_IP GATEWAY_IP
>а уже после этого запускать VPN
Да согласен . На первый взгляд это решение, ноПрописываю
VPN_SERVER_IP - сервер
GATEWAY_IP - gateway
Internet:
Destination Gateway Flags Refs Use Netif Expire
default VPN_SERVER_IP UGSc 1 1 ed0
VPN_SERVER_IP GATEWAY_IP UGHS 1 0 ed0
127.0.0.1 127.0.0.1 UH 0 0 lo0
.....
запускаю соединение.(mpd).
Запускает в конце:
...
khome mpd: [work] exec: /sbin/ifconfig ng0 **ip** VPN_SERVER_IP netmask 0xffffffff -link0
khome mpd: [work] exec: command returned 256
khome mpd: [work] exec: /sbin/route add **ip** -iface lo0
khome mpd: [work] exec: command returned 256
...
то есть он поднимает интерфейс, но не присваевает ему IPng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500
, то же самое, он не создает маршрута в route, а пишет только это:
**ip** lo0 UHS 0 0 lo0
Вот :(( Как это можно побороть ? То есть я понимаю ему мешает этот созданный нами маршрут :
VPN_SERVER_IP GATEWAY_IP UGHS 1 0 ed0
поскольку он хочет создать нечто вроде
VPN_SERVER_IP **ip** UH 1 1 ng0 , а получается что для VPN_SERVER_IP уже есть маршрут .... вот он и обламывается :((1. Это вообще можно обойти ?
2. Есть такие мысли : Если соединение происходит как соединение точка-точка **ip** - VPN_SERVER_IP, то как можно ему указать что нужно идти не на прямую через **ip** к VPN_SERVER_IP, а как бы через еще gateway GATEWAY_IP ??? Смотрел tcpdump на ng0 во время пинга VPN_SERVER_IP он на прямую ломится в **ip** ну и не получается у него достичь VPN_SERVER_IP соответственно.
3. Скажите если есть роут прямой VPN_SERVER_IP - **ip** и default на GATEWAY_IP , то почему он использует именно прямой а не пытается через default пролезть ?? или это специфика соединения точка-точка ?
В общем, смотри как у меня сделано:
192.168.253.1 --- адрес vpn-server-ав rc.conf:
ifconfig_ed0="DHCP"
defaultrouter="NO"
static_routes="vpn"
route_vpn="192.168.253.1 192.168.253.65"т.е. прописан route до впн-сервера статиком.
После загрузки компа получаю следущую таблицу роутинга:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.253.65 UGSc 3 185 ed0
127.0.0.1 127.0.0.1 UH 1 54 lo0
192.168.253.1 192.168.253.65 UGHS 2 163064 ed0
192.168.253.64/26 link#1 UC 2 0 ed0
192.168.253.65 00:80:48:19:ef:ab UHLW 3 0 ed0 806в mpd.conf:
set iface route defaultв логах mpd:
Feb 18 11:18:06 home mpd: [vpn] exec: /sbin/ifconfig ng1 xx.xx.xx.xx 192.168.19.242 netmask 0xffff
ffff -link0
Feb 18 11:18:06 home mpd: [vpn] exec: /sbin/route add xx.xx.xx.xx -iface lo0
Feb 18 11:18:06 home mpd: [vpn] exec: /sbin/route add 0.0.0.0 192.168.19.242где 192.168.19.242 --- адрес дальней точки
И заметь! Никаких error code 256 что говорит о том, что комманды не выполнились( у тебя же: khome mpd: [work] exec: /sbin/ifconfig ng0 **ip** VPN_SERVER_IP netmask 0xffffffff -link0
khome mpd: [work] exec: command returned 256)И все работает!
>После загрузки компа получаю следущую таблицу роутинга:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.253.65 UGSc 3 185 ed0
^^^^^^^^^^ без этой строчки конечно. Брал из старых логов.
>В общем, смотри как у меня сделано:
>192.168.253.1 --- адрес vpn-server-а
>
>route_vpn="192.168.253.1 192.168.253.65"
>
>т.е. прописан route до впн-сервера статиком.>где 192.168.19.242 --- адрес дальней точки
Поясните, что это такое "дальняя точка" ?
>И заметь! Никаких error code 256 что говорит о том, что комманды
>не выполнились( у тебя же: khome mpd: [work] exec: /sbin/ifconfig ng0
>**ip** VPN_SERVER_IP netmask 0xffffffff -link0
>khome mpd: [work] exec: command returned 256)Я понимаю, что 256 - это ошибка где-то возникла.
1. 192.168.253.65 - это gateway ?
2.
>Feb 18 11:18:06 home mpd: [vpn] exec: /sbin/ifconfig ng1 xx.xx.xx.xx >192.168.19.242 netmask 0xffffffff -link0
получается что Вы соединяетесь с некой дальней точкой, а не с сервером, почему ??А вот я соединяюсь с сервером и что получается:
прописываю я роут :
10.0.0.1 - сервер
10.4.19.1 - gatewayInternet:
Destination Gateway Flags Refs Use Netif Expire
10.0.0.1 10.4.19.1 UGHS 1 0 ed0
10.4.19/24 link#1 UC 1 0 ed0
127.0.0.1 127.0.0.1 UH 0 0 lo0все номально ...
в mpd.conf добавляю
set iface route default
начинаю соединятся с сервером 10.0.0.1
khome mpd: [work] exec: /sbin/ifconfig ng0 **ip** 10.0.0.1 netmask 0xffffffff -link0
khome mpd: [work] exec: command returned 256
khome mpd: [work] exec: /sbin/route add **ip** -iface lo0
khome mpd: [work] exec: command returned 256
khome mpd: [work] exec: /sbin/route add 0.0.0.0 10.0.0.1
khome mpd: [work] exec: command returned 256да возникают ошибки, но вопрос именнов том, почему они возникают:
Возможно именно з-за наличия роута для 10.0.0.1:
10.0.0.1 10.4.19.1 UGHS 1 0 ed0ведь при установке соединения mpd должен создать свой роут на 10.0.0.1
вроде:10.0.0.1 **ip** UGHS 1 0 ed0
теперь он натыкается на проблему уже существования маршрута для 10.0.0.1 и не добавляет :(
Замкнутый круг получается ... для доступа к серверу нужен маршрут через gateway , а для установки соединения нужен маршрут через вирт. устройство ng0...
Поясните, что такое дальняя точка ... может это мне поможет ??
>1. 192.168.253.65 - это gateway ?
да.>2.
>>Feb 18 11:18:06 home mpd: [vpn] exec: /sbin/ifconfig ng1 xx.xx.xx.xx >192.168.19.242 netmask 0xffffffff -link0
>получается что Вы соединяетесь с некой дальней точкой, а не с сервером,
>почему ??
Нет. мыже говорим о PTPP? То есть двух-точечном соединеии. С одной стороны -- точка ваша машина, с другой провайдера. Но это мелочи.
Не обращайте на это внимение. Этот адрес mpd получит и подставит сам.>теперь он натыкается на проблему уже существования маршрута для 10.0.0.1 и не
>добавляет :(
Совершено верно!>Замкнутый круг получается ... для доступа к серверу нужен маршрут через gateway
>, а для установки соединения нужен маршрут через вирт. устройство ng0...
Попробуй отключить default route в mpd.conf, установить соедниение и поиграться с роутингом руками.
>Нет. мыже говорим о PTPP? То есть двух-точечном соединеии. С одной стороны
>-- точка ваша машина, с другой провайдера. Но это мелочи.
>Не обращайте на это внимение. Этот адрес mpd получит и подставит сам.Feb 18 11:18:06 home mpd: [vpn] exec: /sbin/ifconfig ng1 xx.xx.xx.xx 192.168.19.242 netmask 0xffffffff -link0
вот я и не понимаю:
у меня
khome mpd: [work] exec: /sbin/ifconfig ng0 **ip** VPN_SERVER_IP netmask 0xffffffff -link0где **ip** - это то, что мне выделяет сервак, соответственно VPN_SERVER_IP - это сервер.
А У Вас получается наоборот:
Вы написали, что 192.168.253.1 --- адрес vpn-server-а
Как я понимаю это и есть вторая точка в соединении, но вы пишитеFeb 18 11:18:06 home mpd: [vpn] exec: /sbin/ifconfig ng1 xx.xx.xx.xx 192.168.19.242 netmask 0xffffffff -link0
И совсем становиться не понятно, если xx.xx.xx.xx - это то что вам выделяет сервер, то что есть 192.168.19.242 ... как вторая точка ???
С роутингом поиграюсь конечно :))
>Вы написали, что 192.168.253.1 --- адрес vpn-server-а
>Как я понимаю это и есть вторая точка в соединении, но вы
>пишите
Не совсем так.
Смотри:
mpd.links:
set pptp peer 192.168.253.1ifconfig:
ng1: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500
inet xx.xx.xx.xx --> 192.168.19.242 netmask 0xffffffffmpd.log
Feb 18 11:18:02 home mpd: [vpn] device is now in state OPENING
Feb 18 11:18:02 home mpd: pptp0: connected to 192.168.253.1:1723
Feb 18 11:18:02 home mpd: pptp0: attached to connection with 192.168.253.1:1723
....
Feb 18 11:18:05 home mpd: [vpn] IPCP: SendConfigReq #13
Feb 18 11:18:05 home mpd: IPADDR 0.0.0.0
Feb 18 11:18:05 home mpd: COMPPROTO VJCOMP, 16 comp. channels, no comp-cid
Feb 18 11:18:05 home mpd: [vpn] IPCP: rec'd Configure Request #1 link 0 (Req-Sent)
Feb 18 11:18:05 home mpd: IPADDR 192.168.19.242
Feb 18 11:18:05 home mpd: 192.168.19.242 is OK
Feb 18 11:18:05 home mpd: COMPPROTO VJCOMP, 16 comp. channels, allow comp-cid
Feb 18 11:18:05 home mpd: [vpn] IPCP: SendConfigAck #1
Feb 18 11:18:05 home mpd: IPADDR 192.168.19.242
Feb 18 11:18:05 home mpd: COMPPROTO VJCOMP, 16 comp. channels, allow comp-cid
Feb 18 11:18:05 home mpd: [vpn] IPCP: state change Req-Sent --> Ack-Sent
Feb 18 11:18:06 home mpd: [vpn] rec'd unexpected protocol CCP on link 0, rejecting
Feb 18 11:18:06 home mpd: [vpn] IPCP: rec'd Configure Nak #13 link 0 (Ack-Sent)
Feb 18 11:18:06 home mpd: IPADDR xx.xx.xx.xx
Feb 18 11:18:06 home mpd: xx.xx.xx.xx is OK
Feb 18 11:18:06 home mpd: [vpn] IPCP: SendConfigReq #14
Feb 18 11:18:06 home mpd: IPADDR xx.xx.xx.xx
Feb 18 11:18:06 home mpd: COMPPROTO VJCOMP, 16 comp. channels, no comp-cid
>ifconfig:
>ng1: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500
> inet xx.xx.xx.xx --> 192.168.19.242 netmask 0xffffffffте вам сервер "выдает" как xx.xx.xx.xx так и 192.168.19.242
понятно, но это у вас так. У меня же при коннекте к серверу не меняется вторая (дальняя) точка, а остается адресом самого сервера 10.0.0.1.Спасибо, попытаюсь еще руками роуты покапать, вечером, завтра напишу чего получилось :))
Есс Всем спасибо огромное, все получилось !!
>Есс Всем спасибо огромное, все получилось !!Так хоть бы рассказал что к чему! Интересно же.
Рассказываю:Пусть есть ВПН сервер (10.0.0.1)
Пусть есть компьютер, который мы хотим к серверу подсоединить, с внешним интерфейсом (10.4.19.3)
И есть шлюз,который позволяет нам подсоединяться к серверу
(шлюз 10.4.19.1) На самом деле вся беда именнно в его наличии (более подробно ниже).Для соединения используем mpd (была попытка на pptp-client,но из=за меньшего количества настроек пришлось отказаться).
Вот конфиг с условием, что мой сервер не требует криптования и компресии (хотя с последним тоже работает):
Настройки mpd:
------------mpd.conf---------
default:
load workwork:
new -i ng0 work work
set ipcp enable req-pri-dns req-sec-dns
set link disable chap pap
set link accept chap
set iface idle 0
set bundle authname "******"
set bundle password "******"
set iface disable on-demand
open-----------mpd.links---------
work:
set link type pptp
set pptp peer 10.0.0.1
set pptp enable originate outcall
Запускаем: mpdПолучаем лог:
Обрезал, но сверху все должно удачно пройти, те
должны быть получены ДНС адреса и внешний **ip**.
....................
Feb 15 20:20:51 khome mpd: [work] IPCP: LayerUp
Feb 15 20:20:51 khome mpd: **ip** -> 10.0.0.1
Feb 15 20:20:51 khome mpd: [work] IFACE: Up event
Feb 15 20:20:51 khome mpd: [work] setting interface ng0 MTU to 1500 bytes
Feb 15 20:20:51 khome mpd: [work] exec: /sbin/ifconfig ng0 **ip** 10.0.0.1 netmask 0xffffffff -link0
Feb 15 20:20:51 khome mpd: [work] exec: /sbin/route add **ip** -iface lo0
Feb 15 20:20:51 khome mpd: [work] exec: command returned 256
Feb 15 20:20:51 khome mpd: [work] IFACE: Up event
Feb 15 20:20:52 khome mpd: [work] error writing len 16 frame to bypass: Resource deadlock avoidedВот тут и не получалось, а вот почему :
Для доступа к серверу (10.0.0.1) требуется наличие шлюза 10.4.19.1, который до соединения был шлюзом по умолчанию и все запросы на 10.0.0.1 шли просто на его, так как не было прописано прямого роута.
А теперь mpd предполагая,что между сервером и клиентом ничего нет прописывает:10.0.0.1 **ip** UH 1 1 ng0
то есть появляется прямой роут для 10.0.0.1, но на самом деле в данным момент теряется связь с 10.0.0.1, так как компьютер перестает понимать , что для доступа к 10.0.0.1 нужно обязательно идти через 10.4.19.1 (шлюз).
Вот и происходит поднятие интерфейса ng0, но возможности работать через него нет, так как нет свзи с 10.0.0.1.
Решение:
В тот момент, когда была достигнута ошибка, mpd не срывает соединение (в отличие, кстати, от pptp-client'a), а, если было указано max в mpd.conf в строке set link keep-alive seconds max, то перезапускает соединение по достижению max. Но я использую seconds =0 и max =0 , что позволяет не перезапускать соединение вообще.
Дело за малым:
Удаляем маршрут 10.0.0.1 **ip** UH 1 1 ng0
(route delete 10.0.0.1)
Создаем то, что нам нужно (route add 10.0.0.1 10.4.19.1)
далее следуя рекомендациям статьи http://www.cs.rpi.edu/~flemej/fbsd-cisco-vpn/fbsd-cisco-vpn.pdf
удаляем шлюз (route delete default)
и создаем новый шлюз (route add default -interface ng0)И все начинает работать!
Большое спасибо Xela и Freestyle за дельные советы и объяснения!
у меня ситуация похожа на твою но вот только ничего не получилось даже после твоих пояснений.
Если не трудно покажи пожалуйста еще и таблицу маршрутизации.