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
() автор топика
Ответ на: /etc/ppp/ip-up от BoRoDKuH

1.1.1.1/24

Не является адресом сети, вы сначала вручную попробуйте и поймете.

anc ★★★★★
()
Ответ на: комментарий от 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
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.