LINUX.ORG.RU
ФорумAdmin

Маршрутизация ppp0 и openvpn


0

0

Доброго времени суток господа.

есть компы разбросанные по региону, возможность перезапустить их - сильно ограничена.

что имеем: 1 центральный сервер, имеет на себе eth1 - выход в инет с реал ипом tun0 - 10.10.10.1 - сервер openvpn

Маршрутизация на нём

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.10.10.2      *               255.255.255.255 UH    0      0        0 tun0
227.127.176.96  *               255.255.255.240 U     0      0        0 eth1
192.168.100.0   10.10.10.2      255.255.255.0   UG    0      0        0 tun0
192.168.5.0     *               255.255.255.0   U     0      0        0 eth0
10.10.10.0      10.10.10.2      255.255.255.0   UG    0      0        0 tun0
default         marx122-gw.krsn 0.0.0.0         UG    100    0        0 eth1

2 клиент в регионе eth0 - ADSL соединение (воткнуто в модем) через него поднято ppp0 (PPPoE соединение) Поверх него поднят tun0 (openVPN)

Маршрутизация на нём.

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
ksk-bbar2.ncc.s *               255.255.255.255 UH    0      0        0 ppp0
10.10.10.5      *               255.255.255.255 UH    0      0        0 tun0
192.168.5.0     10.10.10.5      255.255.255.0   UG    0      0        0 tun0
localnet        *               255.255.255.0   U     0      0        0 eth0
10.10.10.0      10.10.10.5      255.255.255.0   UG    0      0        0 tun0
192.168.0.0     *               255.255.0.0     U     0      0        0 eth1
default         *               0.0.0.0         U     0      0        0 ppp0

Что требуется: На клиенте 2 завернуть весь траффик. через openvpn на сервер 1 он дальше в инет.

на сервере 1 настроен маскарад

-A POSTROUTING -s 10.10.10.0/255.255.255.0 -o eth1 -j MASQUERADE
На клиенте 2 настроен маскарад
-A POSTROUTING -s 192.168.0.0/255.255.0.0 -o tun0 -j MASQUERADE
но трафик не ходит, я так понимаю из-за default gateway на клиенте2.

что мне надо прописать на нём, при этом не обрушив ppp0 и не потеряв связь с ним (ребут долгий и не желательный совсем совсем)

Зарание спасибо PS OS ubuntu 8.04

openvpn-клиент сам должен переопределять default gateway перед этим прописав путь до openvpn-сервера через старый gateway. У тебя проблема похоже в том что openvpn не может найти IP старого gateway-я потому что он прописан как

default         *               0.0.0.0         U     0      0        0 ppp0
Так что перед запуском openvpn-клиента надо явно прописать gw не как просто «ppp0» а дав реальный IP (что-то вроде «route add -net 0/0 gw xx.yy.zz.tt»)

pupok ★★ ()
Ответ на: комментарий от ilovemicrosoft

если запускать openvpn поверх eth0 — то всё нормально будет. Ошибка (или несогласованность) не в openvpn а в стартовых скриптах ppp — строка

default         *               0.0.0.0         U     0      0        0 ppp0
означает что default gateway = 0.0.0.0 на устройстве ppp0.

pupok ★★ ()
Ответ на: комментарий от pupok

не совсем понимаю что мы хотим этим сделать. Тогда получается так. что у ppp0 первый шлюз

# tracert ya.ru
traceroute to ya.ru (93.158.134.3), 30 hops max, 40 byte packets
 1  ksk-bbar2.ncc.sibirtelecom.ru (213.228.116.39)  13.040 ms  15.035 ms  16.688 ms

я должен route add default gw 213.228.116.39 ppp0 или нет?

ilovemicrosoft ()
Ответ на: комментарий от ilovemicrosoft

> так провайдер выдаёт

Провайдер это не выдаёт, это у pppd ключики такие использованы. Так что, всё настраивается. Только надо не забыть отмаршрутизировать в ppp0 сеть (или только IP), в которой vpn-сервер находится.

AS ★★★★★ ()
Ответ на: комментарий от ilovemicrosoft

> я должен route add default gw 213.228.116.39 ppp0 или нет?

Если весь трафик должен идти тонелем, то и дефолт должен в тонель смотреть. IP для маршрутизации в ppp не надо указывать, хватит интерфейса. IP, поди, динамический ещё ? Ну и man route, на предмет параметров: кажется, там «dev ppp0», а не просто ppp0.

AS ★★★★★ ()
Ответ на: комментарий от ilovemicrosoft

> я должен route add default gw 213.228.116.39 ppp0 или нет?

именно так. Я уже писал перед запуском openvpn что надо сказать 'route add 0/0 gw 213.228.116.39', и этот IP у тебя в первой строчке маршрутизации должен быть виден (надо запускать как 'route -n') чтобы он выдавал IP=213.228.116.39 а не бессмысленное «ksk-bbar2.ncc.s» в

 
Kernel IP routing table 
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface 
ksk-bbar2.ncc.s *               255.255.255.255 UH    0      0        0 ppp0 

pupok ★★ ()
Ответ на: комментарий от ilovemicrosoft

такое кривое поведение ppp (назначение gw=0.0.0.0) похоже неисправимо. Тут https://bugzilla.redhat.com/show_bug.cgi?id=215369 говорят что так и надо. Так что для того чтобы всё делалось автоматически придётся исправлять openvpn чтобы он находил правильный default gw даже если в таблице маршрутизации прописана лажа

default         *               0.0.0.0         U     0      0        0 ppp0

pupok ★★ ()
Ответ на: комментарий от pupok

это всё же openvpn кривой. Вместо попытки определения gw как IP-адреса в случае с PPP они должны были бы писать как в http://openvpn.net/archive/openvpn-users/2007-12/msg00034.html

route add my.openvpn.server dev ppp0

решение проблемы лежит в их списке рассылки уже больше 2 лет, а они до сих пор согласование с ppp не исправили.

pupok ★★ ()
Ответ на: комментарий от pupok

ещё интересное нашёл у себя, вот конфиг поднятия ПППоЕ, там есть упомнимая маршруов.

root@ubuntu:/etc/ppp/peers# cat dsl-provider
# Minimalistic default options file for DSL/PPPoE connections

noipdefault
defaultroute
replacedefaultroute
hide-password
#lcp-echo-interval 30
#lcp-echo-failure 4
noauth
persist
#mtu 1492
#persist
#maxfail 0
#holdoff 20
plugin rp-pppoe.so eth0
usepeerdns
user "blablabla"
ilovemicrosoft ()
Ответ на: комментарий от ilovemicrosoft

если ты про

defaultroute 
replacedefaultroute
-- то это не в тему. Твой ppp и так заменяет default gw на «gw 0.0.0.0 dev ppp0», и это в принципе работает (если бы этих строчек в конфинге не было то default gw вообще бы не переопределялся). Но openvpn такие маршруты не понимает.

pupok ★★ ()
Ответ на: комментарий от pupok

> Но openvpn такие маршруты не понимает.

А что, должен ? Вообще-то есть конфиг, там есть параметр «up», где указывается имя скрипта, который надо дёрнуть после подъёма. Автоматический разбор машррутизации может оказаться не так прост, разбираться с маршрутизацией - не задача openvpn.

AS ★★★★★ ()
Ответ на: комментарий от AS

> А что, должен ? Вообще-то есть конфиг, там есть параметр «up», где указывается имя скрипта, который надо дёрнуть после подъёма. Автоматический разбор машррутизации может оказаться не так прост, разбираться с маршрутизацией - не задача openvpn.

перед тем как прописывать дефолтный маршрут на себя, openvpn-client должен прописать маршрут до openvpn-server через старый gw. В скрипте «up» (IMHO) прописывается топология VPN-сети, то есть то что уже идёт поверх линка openvpn-cleint<->openvpn-server. Автоматический разбор маршрутизации и не нужен — надо посмотреть только маршрут до openvpn-server. Сейчас openvpn-client кладёт болт на device через который идёт маршрутизация и смотрит только на IP дефолтного gw (кстати поэтому и вложенные openvpn не работают), и узнав IP добавляет маршрут до сервера как «route add -host openvpn.server gw old.default.gw». Если бы они почесались и почитали что написано в http://openvpn.net/archive/openvpn-users/2007-12/msg00034.html то давно бы исправили на «route add -host openvpn.server gw gw.for.openvpn.server dev device» — и это бы бы решило все проблемы, включая nesting. Узнать gw.for.openvpn.server и соответствующий device нетрудно «ip r g openvpn.server».

pupok ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.