etcnet-0.9.5-alt1 при такой конфигурации (по ext избыточна и наверняка сводится к ONBOOT, BOOTPROTO, USE_IFPLUGD и LINKDETECT) слишком рано запускает pppd, даже если попытки подъёма обоих интерфейсов укладываются в одну и ту же секунду в логе: === /etc/net/ifaces/ext/options DISABLED=no BOOTPROTO=dhcp ONBOOT=yes USE_PCMCIA=no USE_HOTPLUG=no USE_IFPLUGD=auto LINKDETECT=yes CONFIG_IPV4=yes TYPE=eth MODULE=8139too #MODULE=skge === === /etc/net/ifaces/ppp0/options ONBOOT=no PPPTYPE=pptp PPTP_SERVER=vpn.gw.ip.addr REQUIRES=ext === === /var/log/messages Jan 15 13:40:38 home ifplugd(ext)[3410]: ifplugd 0.28 initializing. Jan 15 13:40:38 home kernel: ext: link up, 100Mbps, full-duplex, lpa 0x41E1 Jan 15 13:40:38 home ifplugd(ext)[3410]: Using interface ext/00:02:44:6B:77:0E with driver <8139too> (version: 0.9.27) Jan 15 13:40:38 home ifplugd(ext)[3410]: Using detection mode: SIOCETHTOOL Jan 15 13:40:38 home ifplugd(ext)[3410]: Initialization complete, link beat detected. Jan 15 13:40:38 home pppd[3428]: pppd 2.4.4 started by root, uid 0 Jan 15 13:40:38 home pppd[3428]: Using interface ppp0 Jan 15 13:40:38 home pppd[3428]: Connect: ppp0 <--> /dev/pts/6 Jan 15 13:40:38 home pptp[3429]: anon log[main:pptp.c:267]: The synchronous pptp option is NOT activated Jan 15 13:40:38 home pptp[3429]: anon warn[pptp_gre_bind:pptp_gre.c:95]: connect: Network is unreachable Jan 15 13:40:38 home pptp[3429]: anon fatal[main:pptp.c:275]: Cannot bind GRE socket, aborting. Jan 15 13:40:38 home pppd[3428]: Script /usr/sbin/pptp --nolaunchpppd VPN.GW.IP.ADDR finished (pid 3429), status = 0x1 Jan 15 13:40:38 home pppd[3428]: Modem hangup Jan 15 13:40:38 home pppd[3428]: Connection terminated. Jan 15 13:40:38 home pppd[3428]: Exit. Jan 15 13:40:38 home ifplugd(ext)[3410]: Executing '/etc/net/scripts/ifplugd.action ext up'. Jan 15 13:40:38 home dhcpcd[3525]: dhcpConfig: fopen: Permission denied Jan 15 13:40:38 home dhcpcd.exe: interface ext has been configured with new IP=MY.ETH.IP.ADDR Jan 15 13:40:38 home ifplugd(ext)[3410]: Program executed successfully. === Пока в alterator-net-pptp 0.5.1 (сегодня надеюсь пушнуть в git.alt) сделано так: === alterator-net-pptp/backend3/net-pptp ################### interface helpers # sleep order is on purpose: dhcp runs in background start_iface() { [ -n "$1" ] || return debug -n "start_iface[$1]: " for i in `seq 1 $retries`; do ifcheckup "$1" && break ifup "$1" sleep 1 debug -n "$i " done } # if it's up, ensure it's down first, then back up stop_iface() { [ -n "$1" ] || return debug -n "stop_iface[$1]: " for i in `seq 1 $retries`; do debug -n "$i " ifcheckup "$1" || break ifdown "$1" sleep 1 done } # do our best so that $1 is working # FIXME: this should become redundant when etcnet # gets fixed bring_up() { [ -n "$1" ] || return debug "bring_up[$1]" # ensure underlying iface is up start_iface "$in_iface" # workaround: etcnet might try to bring up ppp too early # when underlying eth is configured via dhcp and is down sleep 1 # try to wait until ppp0 might go down (otherwise # additional static route might not appear) stop_iface "$1" start_iface "$1" } === Последнюю функцию надеюсь со временем упразднить :) === /usr/lib/alterator-net-common/ifcheckup #!/bin/sh [ -n "$(/sbin/ip link show up dev "$1")" ] ===
Поведение воспроизводится, но требует переоценки. Так как по сути задачи интерфейс ppp0 должен реагировать на состояние ext, то использование REQUIRES верно. Но управляющее соединение протокола GRE требует двунаправленного обмена пакетами, а для этого необходимым (но не достаточным) свойством является назначенный IP-адрес. При запуске же ifup ppp0 интерфейс, показанный в REQUIRES, будет проверен только на наличие UP, но не IP-адреса. UP на интерфейсе будет всегда, так как его будет сторожить ifplugd. Таким образом, получается, что ppp0 не может достоверно определить состояние своей зависимости. Необходим другой подход. Состоянием ppp0 управлять не нужно, пусть этим занимается ext. При ifdown ext зависимый интерфейс ppp0 остановится и так (так как IFDOWN_CHILDREN=1 по умолчанию), а для того, чтобы ppp0 поднимался при реальном, а не мнимом поднятии ext, в ext/options нужно приписать: IFUP_CHILDREN=yes Так эта модель будет выглядеть более естественно. Если возражений нет, предлагаю закрыть, как INVALID.
Спасибо, давай лучше тогда перевесим на /net-pptp.
Миша, если задача --- дать интерактивному пользователю настроить и управлять PPtP, то он может не ожидать такой автоматики. Я думал, конфигурация делается для самостоятельно работающей мыльницы. Для пользователя же методически правильным будет вообще оторвать REQUIRES и IFUP_CHILDREN не устанавливать. ext поднимется, а потом пользователь сам решит, поднимать PPtP или нет. В общем, внеси ясность с начальными условиями.
(In reply to comment #3) > Миша, если задача --- дать интерактивному пользователю настроить и управлять > PPtP Эээ... именно так. Потому и перевесил на настраивалку (которая заодно обучена ifup/ifdown делать по кнопке). Надо будет допинать persist сотоварищи, чтоб по возможности не рисковать вечным залипанием на загрузке -- тогда может получиться ближе к "настроил и забыл"...