pppd и именование интерфейсов. [SOLVED]

Задача:
1) Интерфейс ppp0 - подключение к инету (PPPoE)
2) Запущен pptpd, к которому коннектится народ. Соответственно создаются устройства ppp1,ppp2,...

Проблема: если инет отваливается, может получится, что подключившийся к pptpd займет ppp0, что не есть хорошо ибо в iptables все правила будут неадекватны. Вот тут описывается подобная проблема, и господином gers даже приводится решение:

/bin/kill `cat /var/run/ppp0.pid`
pptp-command start

Куда сие писать, не понял. Если кто-нибудь объяснит, буду весьма признателен. :)

Вообще, мне кажется, элегантнее было бы переименовать ppp0. На данный момент додумался только прописать в /etc/ppp/ip-up следущее:

что-нибудь вроде:
если $1 ppp0
ip link set $1 down
ip link set $1 name inet
ip link set $1 up

Активный интерфейс не переименовывается, поэтому необходимы down и up.
Но по-моему это тоже сильно через задний проход. Сие попробую завтра. Есть идеи как решить задачу лучше всего?

Мда. Только сейчас понял, что

Мда. Только сейчас понял, что он будет переименовываться в обоих случаях. Идеи?

У pppd есть такая опция unit.

У pppd есть такая опция unit. И как пишут в man:

unit num
Sets the ppp unit number (for a ppp0 or ppp1 etc interface name)
for outbound connections.

Если по-русски, для каждого pppd в его конфигурационном файле пишете, к примеру

unit 2

и поднимется ppp2, в каком бы порядке вы его не запускали.

Я Gentoo & Funtoo

Все не так уж и сложно.

У Вас сервер pptpd настроен на подсеть (допустим 192.168.1.0/24, т.е. Ваш pptpd сервер будет иметь IP 192.168.1.1). В конец файлика /etc/ppp/ip-up допишите:
if [ $4 = "192.168.1.1" ]; then
for SCRIPT in *.local ; do
. ./"${SCRIPT}" "$@"
done
fi
Создайте файлик /etc/ppp/ip-up.d/99-rename_int.local такого содержания:
#!/bin/sh
# Переименование интерфейса из ppp+ в vpn_ppp+
# Путь к используемым программам
IP=/sbin/ip
#
$IP link set dev $1 down
$IP link set dev $1 name vpn_$1
$IP link set dev vpn_$1 up

Собственно говоря все ..... все клиенты вашего pptpd сервера будут иметь интерфейс vpn_pppN, который и ставиться в iptables в виде vpn_ppp+

Я позже нашел решение

Я позже нашел решение проблемы, но все равно спасибо! :)
я сделал так:

...
if [ $5 = $REMOTE_IP ]; then
  $IP link set dev $1 down
  $IP link set dev $1 name inet
  $IP link set dev inet up
fi

в данном случае инет-интерфейс всегда будет переименовываться в inet и по поводу именования подключающихся можно не заморачиваться.
Я правильно понял, что iptables понимает vpn_ppp+ как шаблон, под который подходят все интерфесы вида vpn_pppN? Спасибо, не знал про такое!

Хм...

Ну можно и так ... как гриться хозяин-барин.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".