Необходимо использовать опцию "unit N", где N - номер ppp интерфейса. Например, для привязки к ppp0: /usr/sbin/pppd /dev/ttyS0 115200 noauth crtscts 192.168.1.245:192.168.1.246 local \ nodetach netmask 255.255.255.252 unit 0
Раньше штатный pppd FreeBSD нужно было патчить.
Один из вариантов патча для FreeBSD 3.x: ftp://hvv.svzserv.kemerovo.su/pub/unix/FreeBSD/patches
Адаптации патча для 4 и 5 веток я не встречал.
unit x где x - номер интерфейса pppx
это для входящих соединений ч/з сериал, то бишь модемов обычно. в то время как опция pppd "unit" говорит какой номер итерфейса назначить исходящему соединению.
if [ $5 == "remote_ip_addr" ] then /sbin/ifconfig $1 down /sbin/ip link set $1 name iface_name /sbin/ifconfig iface_name up fi
где remote_ip_addr -- ip адрес, установленный клиенту, iface_name -- имя интерфейса, которое хотим назначить, например kolya, wasya ...
P.S. этот метод требует установленного пакета iproute
Feb 13 07:05:20 router pppd[20922]: LCP terminated by peer (&b:M-W^@<M-Mt^@^@^@^@) Feb 13 07:05:20 router pppd[20922]: Couldn't get PPP statistics: No such device Feb 13 07:05:20 router pppd[20922]: Couldn't get PPP statistics: No such device Feb 13 07:05:20 router pppd[20922]: ioctl (SIOCGIFFLAGS): No such device (line 2334) Feb 13 07:05:20 router pppd[20922]: ioctl(SIOCSIFADDR): No such device (line 2492) Feb 13 07:05:20 router pppd[20922]: Script /etc/ppp/ip-down started (pid 21237) Feb 13 07:05:20 router pppd[20922]: sent [LCP TermAck id=0x7] Feb 13 07:05:20 router pppd[20922]: Script /etc/ppp/ip-down finished (pid 21237), status = 0x0 Feb 13 07:05:20 router pppoe-server[2773]: Sent PADT Feb 13 07:05:20 router pppd[20922]: Terminating on signal 15 Feb 13 07:05:23 router pppd[20922]: Connection terminated. Feb 13 07:05:23 router pppd[20922]: Modem hangup
#ждем пока все ppp не отваляться ip link|grep -q ppp while [ $? -eq ] do ip link|grep -q ppp done
#теперь в нужной последовательности коннектим pppd call dsl1 #и ждем его прихода ip link show dev ppp0 >> /dev/null while [ ! $? ] do ip link show dev ppp0 >> /dev/null done
#следующий pppd call dsl1 #и ждем его прихода ip link show dev ppp1 >> /dev/null while [ ! $? ] do ip link show dev ppp1 >> /dev/null done
только вот линки должны быть persistent, а то если один из интерфейсов не появиться, то дальше понятно что будет....
NEWNAME="ppp-$PEERNAME" [ -z "$PEERNAME" ] && NEWNAME="$1"
if [ -x /sbin/ip ]; then /sbin/ip link set $1 down /sbin/ip link set $1 name $NEWNAME /sbin/ip link set $NEWNAME up fi
pty "/usr/sbin/pppoe -I eth0 -T 80 -m 1250 "
noipdefault #ВОТ ЭТА ХРЕНЬ МЕНЯЕТ /etc/resolv.conf #usepeerdns
defaultroute #defaultroute
hide-password lcp-echo-interval 5 lcp-echo-failure 9 connect /bin/true noauth persist maxfail 90000000 #mtu 1492 mtu 1250 noaccomp default-asyncmap #А вот юнит это и есть жесткая привязка pppx к ADSL соединению
unit 3
хочу заметить, что: 1) на смену имени интерфейса ч/з iproute pppd кладет и в скриптах ip-down видим старое имя интерфейса. 2) привязка ip к имени интерфейса абсолютна не нужна для практических целей 3) НУ не назначайте unit 0 для интерфейса провайдера, если у вас есть входящие ppp соединения. дайте ему unit 1000 или больше (по количеству клиентов) и пусть входящие соединения используют себе низкие номера интерфейсов на здоровье.