LINUX.ORG.RU
решено ФорумAdmin

При смене IP у клиента не срабатывает ifup-post скрипт.

 , , , ,


0

1

В котором прописаны маршруты. Т.е. интерфейс поднят, а маршруты или старые и неправильные. Или вообще их нет.

VPN сервер PPTP на Debian 8.1 свой.

cat /etc/ppp/pptpd.conf

option /etc/ppp/pptpd-options
localip  192.168.10.1
remoteip 192.168.10.2-32
logwtmp

grep -ivE '^$|^\#' /etc/ppp/pptpd-options

name pptpd
proxyarp
nologfd
logfile /var/log/pptpd.log
lock
nobsdcomp

В ALTLinux SPT 7 настроен интерфейс ppp1

cat /etc/net/ifaces/ppp1/options

# This file doesn't contain comments any more.
# For detailed options description refer to etcnet-options(5) manpage,
# section 'PPP options'.

ONBOOT=yes
PPPTYPE=pptp
PPTP_SERVER=vpn.server.ru
PPPOPTIONS="crtscts modem"
# pppd assigns addresses itself, so we don't intrude by default.
DONT_FLUSH=on

REQUIRES=ppp0
#WARNING! NEVER set "persist maxfail 0" for an interface with ONBOOT=yes,
#otherwise your host risks hanging forever.

cat /etc/net/ifaces/ppp1/pppoptions

noipdefault
replacedefaultroute
hide-password
noauth
persist
asyncmap 0
mtu 1492
noccp
# nobsdcomp
# nodeflate
# nopcomp
# novj
# novjccomp
user "vpnuser"
usepeerdns
lcp-echo-interval 30
lcp-echo-failure 4
noipx

cat /etc/net/ifaces/ppp1/ifup-post

# Переделать НА*Й!
ip addr show dev ppp1 | awk '/inet 192.168.10/ { system("ip route replace 192.168.200.0/24 via " $2) }'
ip addr show dev ppp1 | awk '/inet 192.168.10/ { system("ip route replace 172.21.102.144/32 via " $2) }'
ip addr show dev ppp1 | awk '/inet 192.168.10/ { system("ip route replace 172.30.181.231/32 via " $2) }'
ip addr show dev ppp1 | awk '/inet 192.168.10/ { system("ip route replace 10.61.10.111/32 via " $2) }'

Где и что прописать что бы скрипт срабатывал в автоматическом режиме при смене IP у клиента?

/etc/net/ifaces/ppp1/ifup-post срабатывает по ifup ppp1. То есть, запускает его etcnet. Про то, когда ppp сам роняет/поднимает интерфейс, etcnet не знает, да это и не демон.

А зачем так вообще? Для интерфейсов точка-точка допустимо роутить в интерфейс (в ppp1 в данном случае), а не на IP роутера.

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

И вообще не понял. А IP клиента-то тут при чём? У ppp-сервера же IP не меняется (localip 192.168.10.1 который). То есть, и на него можно роутить.

Видимо, IP клиента тут получается равнозначен имени интерфейса ppp1, потому и работает.

AS ★★★★★ ()
Последнее исправление: AS (всего исправлений: 2)

ip route add маршрут dev имя_ppp_интерфейса

Это раз. Об этом уже сказали.

Два: настройки роутинга надо пихать в файл /etc/ppp/if-up но лучше - в директорию /etc/ppp/if-up.d

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte
  1. По маршрутам: в начале не разобрался с синтаксисом. Указывал ip route replace IPADDR via dev ppp1 на что мне честно ругались. Надо ip route replace IPADDR dev ppp1.
  2. #!/bin/sh
    
    IP=/sbin/ip
    exec "$IP" route replace 192.168.200.0/24 dev ppp1
    exec "$IP" route replace 172.21.102.144/32 dev ppp1
    exec "$IP" route replace 172.30.181.231/32 dev ppp1
    exec "$IP" route replace 10.61.10.111/32 dev ppp1
    
    правильно ли?
  3. Стоит ли удалить файлы options и pppoptions из каталога интерфейса?
leonidko ★★★ ()
Ответ на: комментарий от leonidko

Зачем делать replace, если при поднятии интерфейса этих маршрутов не будет?! Когда интерфейс падает - все маршруты через него удаляются.

Насчет файлов options - хз, я настраиваю всё кросс-дистрибутивно, а это обычно файл /etc/ppp/options.pptp (на стороне клиента) и /etc/ppp/options.pptpd (на стороне сервера)

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

И? У меня у самого ADSL дома с PPPoE, но поднять PPTP поверх с своими маршрутами - вообще не проблема. Я уже этим правда не пользуюсь - перешел давно на OpenVPN(там с распространением маршрутов попроще).

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

Стоит ли удалить файлы options и pppoptions из каталога интерфейса?

Нет. Пусть etcnet этим и занимается. И ifup-post можно оставить в виде

/sbin/ip route add 192.168.200.0/24 dev $1
/sbin/ip route add 172.21.102.144/32 dev $1
/sbin/ip route add 172.30.181.231/32 dev $1
/sbin/ip route add 10.61.10.111/32 dev $1

Однокрантого исполнения при поднятии интерфейса вполне достаточно (если maxfail 0 добавить). Только, на самом деле, идеологически правильно, в случае etcnet, сделать ipv4route такого содержания:
192.168.200.0/24 dev ppp1
172.21.102.144/32 dev ppp1
172.30.181.231/32 dev ppp1
10.61.10.111/32 dev ppp1

И ещё вот отсюда почитать, потому как persist + maxfail 0 обеспечивают некоторую засаду: https://bugzilla.altlinux.org/23556#c1

AS ★★★★★ ()
Последнее исправление: AS (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.