Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Linux: ppp multilink через интернет (GPRS)  (Прочитано 15363 раз)
0 Пользователей и 1 Гость смотрят эту тему.
anbel
Гость
« : 11-04-2005 12:18 » 

Привет всем!
Несколько дней пытаюсь решить задачу - как повысить скорость и надежность через мультилинк.
Есть сервер, подключенный к интернету (выделенка). Есть удаленные автономные клиенты под Linux, выходящие на связь через GPRS (GPRS->интернет->VPN на основной сервер). Скорость GPRS просто никакая, надежность тоже, и захотелось улучшить все это через мулитилинк. Т.е. поднимаем второй ppp-канал до другого GPRS-провайдера (в принципе второй провайдер может быть тем же что на первом линке, но желательно разные), включаем мультилинк или EQL и наслаждаемся - удвоенной скоростью и никогда не пропадающей связью.
Но... тут выясняется что для поднятия мультилинка его должна поддерживать вторая сторона, т.е. провайдер. Не катит, тем более в разными провайдерами. Как быть?
В принципе, на стороне сервера я могу ловить соединение как угодно. Например слушать вход. соединение некоей программой, поддерживающей мультилинк. Но входящее соединение уже РРР и не пахнет. Поднимать РРР поверх канала VPN? А будет ли работать? Теоретически, два VPN соединения (каждое через свой модем и своего провайдера) на стороне клиента можно представить как 2 канала точка-точка и поднять поверх них РРР мультилинк, и на стороне сервера связать эти каналы в один. Но это теоретически.
Может, есть путь проще? Как можно распараллелить трафик по двум каналам разных провайдеров?

С уважением, Алексей.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 11-04-2005 18:50 » 

PPP поверх VPN вполне возможно, но довольно избыточно.
По идее достаточно сделать N соединений с сервером, а в каждом соединении TCP + шифрование (если надо) + PPP. Далее с PPP можно уже извращаться.

Кстати, то VPN, который ты применяешь, часом не на PPP базируется?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
anbel
Гость
« Ответ #2 : 12-04-2005 05:15 » 

VPN не PPP-шный - OpenVPN.
Сейчас я через GPRS-модем поднимаю PPP до оператора связи, получаю выход в интернет. И уже поверх этого соединения делаю туннель VPN до нашего сервера.
Если я вторым модемом сделаю такой же коннект, получу второй туннель VPN.
Получится 2 независимых канала IP от клиента до сервера. Если бы был PPP точка-точка, то можно было бы на обоих концах поднять мультилинк и разветвлением-сборкой пакетов занимался бы сам РРР. А сейчас я не знаю - как на стороне клиента заставить пакеты идти в оба канала, а на стороне сервера эти пакеты собирать в один поток.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 12-04-2005 21:41 » 

Подумай о схеме TCP+PPP без промежуточного VPN. Так PPP будет ерминироваться на одном и том же сервере. Вопрос только в маршрутизации в разные стороны.
Я использую программу vtun - она позволяет создавать защищенные каналы различного типа: тунели, терминалы и т.п. Я через терминалы создаю PPP соединения с востановлением при сбое связи. Правда применяю под Linux - насчет Виндовс не пробовал.
« Последнее редактирование: 12-04-2005 21:46 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
anbel
Гость
« Ответ #4 : 13-04-2005 10:49 » 

Если даже не поднимать VPN, то РРР на одном и том же сервере не сойдется...
Как у меня устанавливается соединение:
Linux (клиент) -> GPRS модем устанавливает PPP соединение до оператора связи (он же провайдер GPRS-интернет). Этот провайдер  присваивает мне IP-адрес (левый, 172-я сетка). Далее идет уже чистый IP (очевидно, через внутренний NAT провайдера), и на наш сервер запрос приходит как входящее tcp-соединение c IP-адреса ххх (адрес провайдера GPRS, реальный) на порт какой-мне-надо. Тут я уже устанавливаю VPN (я ж не могу трафик с клиента в нашу сеть прокидывать без шифрации и аутентификации). Получаю канал tun0-tun0 c адресами 192.168 (сам назначаю). Если я не буду поднимать VPN, я не попаду в нашу сеть.
Сейчас бегло почитал про vtun (например, http://www.opennet.ru/docs/RUS/vpn_vtun/vtun_1.html)- принцип работы в целом такой же как и у OpenVPN - VPN поднимается поверх TCP, и PPP здесь ни при чем.
Последние дни почитываю про mpd на FreeBSD - там вроде как поддерживается мультилинк PPP - но вся проблема остается - на сервер приходит входящий TCP-запрос, а не соединение ррр. Выход вижу только в поднятии ppp поверх tcp и уже поверх этого мультилинкового РРР-поверх-ТСР поднимать VPN... Громоздко как-то...
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 14-04-2005 20:43 » 

Цитата
Если даже не поднимать VPN, то РРР на одном и том же сервере не сойдется...
Почему же?

Цитата
Последние дни почитываю про mpd на FreeBSD - там вроде как поддерживается мультилинк PPP - но вся проблема остается - на сервер приходит входящий TCP-запрос, а не соединение ррр. Выход вижу только в поднятии ppp поверх tcp и уже поверх этого мультилинкового РРР-поверх-ТСР поднимать VPN... Громоздко как-то...
Как по твоему на сервер "войдет соединение ppp"? PPP нуждается в транспорте для доставки вдунаправленного потока данных между двумя ppp драйверами.
Насчет попасть в сеть - если сервер Linux, то см. опцию proxyarp.

-------------

Если на одной машине ты ставишь vtun (или другую), настраиваешь на нам прослушивание порта (тип tty, программа - pppd с multilink), а на другой создаешь два соединения на первую машину и запускаешь там pppd multilink (с соотв. параметрами), то получается то, что тебе надо (по крайней мере так можно понять из твоих постов).

Vtun создает криптованное соединение (encrypt yes в опциях соединения). Не ограничен TCP, но в данном случае это не нужно. Умеет делать такие каналы: IP, Ethernet, tty, pipe тунели.

Мануал на pppd, надеюсь, читал?
MULTILINK
       Multilink PPP provides the capability to combine two or more PPP links between a pair of machines  into  a  single
       'bundle',  which  appears  as  a single virtual PPP link which has the combined bandwidth of the individual links.
       Currently, multilink PPP is only supported under Linux.

       Pppd detects that the link it is controlling is connected to the same peer as another link using the  peer's  end-
       point  discriminator  and  the authenticated identity of the peer (if it authenticates itself).  The endpoint dis-
       criminator is a block of data which is hopefully unique for each peer.  Several types of data can be used, includ-
       ing locally-assigned strings of bytes, IP addresses, MAC addresses, randomly strings of bytes, or E-164 phone num-
       bers.  The endpoint discriminator sent to the peer by pppd can be set using the endpoint option.

       In circumstances the peer may send no endpoint discriminator or a non-unique value.  The  optional  bundle  option
       adds  an extra string which is added to the peer's endpoint discriminator and authenticated identity when matching
       up links to be joined together in a bundle.  The bundle option can also be used to allow the establishment of mul-
       tiple  bundles  between  the local system and the peer.  Pppd uses a TDB database in /var/run/pppd.tdb to match up
       links.

       Assuming that multilink is enabled and the peer is willing to negotiate multilink, then when pppd  is  invoked  to
       bring  up  the first link to the peer, it will detect that no other link is connected to the peer and create a new
       bundle, that is, another ppp network interface unit.  When another pppd is invoked to bring up another link to the
       peer,  it  will  detect the existing bundle and join its link to it.  Currently, if the first pppd terminates (for
       example, because of a hangup or a received signal) the bundle is destroyed.

Это мануал от ppp-2.4.2 версии http://ppp.samba.org/ . На странице http://ppp.samba.org/ppp/README.html можно почитать о 2.4.3 - там поправили некоторые вещи по части multilink-а. Не знаю, может под FreeBSD не этот, а другой ppp...
« Последнее редактирование: 20-12-2007 19:09 от Алексей1153++ » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines