LINUX.ORG.RU
ФорумAdmin

VPN автоматическое добавление маршрута после поднятия сессии pptp

 , , ,


0

1

Помогите с настройкой автоматического добавления маршрута после автоматического поднятия сессии pptp

route -A inet add -net 1.1.1.1 netmask 255.255.255.0 dev ppp0&
При там условии не добавляется маршрут

При там условии не добавляется маршрут

Каком условии? Выразите мысль яснее. Сразу же пишите какой дистрибутив и каким образом автоматически поднимается сессия pptp.

Сам pptp не добавляет маршруты, это делает либо ppp вызывая скрипт /etc/ppp/ip-up, либо каким-то другим способом, если ppp запускался не из консоли, а каким-то другим процессом.

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

Ubunta
pptp поднимается так /etc/ppp/peers/:

pty "1.1.1.1  --nolaunchpppd"
name server
remotename PPTP
require-mppe-128
persist holdoff 10
maxfail 0
lcp-echo-interval 15
lcp-echo-failure 4
file /etc/ppp/options.pptp

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

это делает либо ppp вызывая скрипт /etc/ppp/ip-up


-как правильно организовать автоматическое добавление маршрута, можно показать на примере ?

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

ЕМНИП, в дебиане/убунту должен быть каталог ″/etc/ppp/ip-up.d/″, если он есть, создаёте там файл: ″/etc/ppp/ip-up.d/routes-up″ такого содержания:

#!/bin/sh
/sbin/ip route add 1.1.1.1/24 dev  $1

и делаете его исполняемым: chmod a+x /etc/ppp/ip-up.d/routes-up.

Если этого каталога нет, и нет файла ″/etc/ppp/ip-up″, то просто создаёте вместо ″routes-up″ файл ″/etc/ppp/ip-up″ с этим же содержимым.

P.S. Это расчитано на случай, что у вас всего одно ppp-подключение (pptp, pppOe и т.д.) Иначе скрипт должен быть сложнее и определять для какого подключения его вызвали.

P.P.S. Надеюсь, что 1.1.1.1 в первом сообщении это не то, что указано в команде ″pty 1.1.1.1″, что вы не пытаетесь завернуть маршут к pptp-серверу внутрь pptp-тунеля.

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

/etc/ppp/ip-up.d/ - такого нет
/etc/ppp/ip-up - есть
пока одно подключение но если будет несколько, я знаю у кого спросить. Спасибо. 1.1.1.1 - условный ip без заворотов

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

/etc/ppp/ip-up

Вид ip-up:

#!/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin
export PATH

LOGDEVICE=$6
REALDEVICE=$1

[ -f /etc/sysconfig/network-scripts/ifcfg-${LOGDEVICE} ] && /etc/sysconfig/network-scripts/ifup-post --realdevice ${REALDEVICE} ifcfg-${LOGDEVICE}
/etc/ppp/ip-up.ipv6to ${LOGDEVICE}

[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@"

/sbin/ip route add 1.1.1.1/24 dev $1 вот добавил такую строку

exit 0
Путь на автомате не прописывается.
CentOS 7

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

Вручную после поднятия ppp эта команда работает? ($1 - заменить на имя ppp интерфейса)

anc ★★★★★ ()
Ответ на: /etc/ppp/ip-up от BoRoDKuH

Судя по

[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@"

лучше не трогать файл /etc/ppp/ip-up, а добавить всё в /etc/ppp/ip-up.local

Иначе после обновления ppp все твои изменения затрутся.

Подробности с примерами есть в /usr/share/doc/ppp (во всяком случае в дебиане; в убунте тоже должно быть).

shell-script ★★★★★ ()
Последнее исправление: shell-script (всего исправлений: 1)
Ответ на: комментарий от shell-script

/etc/ppp/ip-up.local нет там такого файла. Я его создал:

#!/bin/sh
/sbin/ip route add 192.168.1.0/24 gw 10.10.10.2 dev ppp0
Сделал исполняемым chmod a+x
После рестарта ppp0:
192.168.1.0  0.0.0.0  255.255.255.0 ppp0

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

Шлюз p2p линков не нужен. И его там нет, поэтому 0.0.0.0 нормально.

192.168.1.0 0.0.0.0 255.255.255.0 ppp0

Это в каком формате? Если это ″route -n″, зачем обрезали флаги? И зачем ″route″, по Линуксом положено использовать ″ip route″.

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

route -n

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.10.10.2      0.0.0.0         UG    100    0        0 eth0
10.10.10.0      0.0.0.0         255.255.255.0   U     100    0        0 eth0
150.200.250.5   10.10.10.2      255.255.255.255 UGH   0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 ppp0
192.168.1.201   0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
ip route show
default via 10.10.10.2 dev eth0  proto static  metric 100
10.10.10.0/24 dev eth0  proto kernel  scope link  src 10.10.10.126  metric 100
150.200.250.5 via 10.10.10.2 dev eth0  src 10.10.10.126
192.168.1.0/24 dev ppp0  scope link
192.168.1.201 dev ppp0  proto kernel  scope link  src 192.168.1.204
OS CentOS 7
0.0.0.0 - это нормально для pptp ? Весь мозг вынес себе

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

0.0.0.0 - это нормально для pptp ?

Нормально для ppp. pptp это протокол тунелирования ppp, на уровне маршрутизации именно ppp-интерфейс, point-to-point. Ваш мозг понимает, что ip-адрес шлюза не входит в ip-пакет, в сетях ethernet он просто резолвится в mac-адрес.

/usr/bin/route del default

Что вы сейчас пытаетесь делать? У вас есть /etc/ppp/ip-up.local, в котором добавляется маршрут к 192.168.1.0/24. Если вам нужено менять default маршрут, там же пишите

/sbin/ip route replace default via...

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

Спасибо, что разжевываете по крупицам :)

route del default
что бы изменить default маршрут его нужно сперва очисить (где-то вычитал)

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

Там отображается шлюз для ppp-соединения потому что его указали при добавлении маршрута. Но для ppp-соединения никакого смысла указывать шлюз нету. Вы можете спокойно написать:

ip route add 192.168.1.0/24 dev ppp0 via 1.2.3.4

И наблюдать шлюз 1.2.3.4 в выводе ″route или ip route″ и хождение пакетов до 192.168.1.0/24 через ppp0, хотя никакого 1.2.3.4 на ppp интерфейсе нет.

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

Спасибо, сделал но не отображается. И показывает на одно ppp0 соединение меньше:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.10.10.2      0.0.0.0         UG    100    0        0 eth0
10.10.10.0      0.0.0.0         255.255.255.0   U     100    0        0 eth0
150.200.250.5   10.10.10.2      255.255.255.255 UGH   0      0        0 eth0
192.168.1.201   0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
default via 10.10.10.2 dev eth0  proto static  metric 100
10.10.10.0/24 dev eth0  proto kernel  scope link  src 10.10.10.126  metric 100
150.200.250.5 via 10.10.10.2 dev eth0  src 10.10.10.126
192.168.1.201 dev ppp0  proto kernel  scope link  src 192.168.1.204

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

Если вы команду ″ip route add″ из скрипта запускали, то попробуйте из командной строки, может какой сообщение об ошибке будет.

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

Ладно, фиг с этим GW
Заметил такую шляпу: При загрузке ОС vpn поднимается, добавляться маршрут, тазы пингуються.
Но если на той стороне оборвать соединение, то после vpn поднимается но маршрут не добавляется и соответственно тазы не пингуються.
Подскажите, куда курить ?
Файлы: /etc/ppp/peers/vpn*

pty "1.2.3.4  --nolaunchpppd"
name server
remotename PPTP
require-mppe-128
persist
holdoff 5
maxfail 0
lcp-echo-interval 15
lcp-echo-failure 4
file /etc/ppp/options.pptp
Исполняемый /etc/ppp/*vpn
#!/bin/bash
sleep 5
pppd call vpn&
sleep 5
/sbin/route add -net 192.168.1.0/24 dev ppp0
/sbin/route flush cache

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

«ip route add» из командной - то ругается - «SIOCADDRT: Файл существует» если в ручном режиме удалить маршрут и потом добавить все работает и добавляет и пингует. Но когда обрывается vpn соединение, по новой автоматом не прописывается маршрут

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

Но если на той стороне оборвать соединение, то после vpn поднимается

Каким образом поднимается vpn? pppd сам перестартует соединение, или чем-то перезапускается /etc/ppp/*vpn?

И в целом ваш /etc/ppp/*vpn какой-то костыль. Нет никаких гарантий, что pptp-соедиение установится за 5 секунд, то есть команда route может запуститься до того, как появится интерфейс ppp0. Да, и вобще, не гарантий, что интерфейс будет именно ppp0, а, допустим, не ppp1.

Нужно разбираться, почему не работает добавление маршрута через /etc/ppp/ip-up (/etc/ppp/ip-up.local). Попробуйте сделать из ip-up.local перенаправление вывода команд в файл, чтобы было видно, он вобще выполняется:

#!/bin/sh
date >> /tmp/upl.log
echo "interface $1" >> /tmp/upl.log
/sbin/ip route replace 192.168.1.0/24 dev $1

то ругается - «SIOCADDRT: Файл существует»

Когда он так ругается, нужно смотреть список маршрутов и интерфейсов.

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

да, pppd сам перестартует соединение после разрыва
в *vpn указан запуск соединения при загрузке системы
Вот вывод upl.log:
ПН авг 29 11:43:17 MSK 2016
interface vpn

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

Если pppd сам переустанавливает соединение, понятно, что прописываемый в /etc/ppp/*vpn маршрут появляться не будет.

По правильному нужно добавлять маршрут через /etc/ppp/ip-up или другой скрипт, вызываемый из него. По костыльному постоянно проверять/прописывать маршрут — вызывать ″ip route″ из crontab или цикла со ″sleep″.

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

Если бы учил мат часть, cтолько не гемороился
Огромное спасибо. Работает через ip-up. +100 к твоей карме)

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