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+
Я позже нашел решение
Я позже нашел решение проблемы, но все равно спасибо! :)
я сделал так:
в данном случае инет-интерфейс всегда будет переименовываться в inet и по поводу именования подключающихся можно не заморачиваться.
Я правильно понял, что iptables понимает vpn_ppp+ как шаблон, под который подходят все интерфесы вида vpn_pppN? Спасибо, не знал про такое!
Хм...
Ну можно и так ... как гриться хозяин-барин.