На 29.10.2006 00:21 Nikolaj написа: > И аз да запитам нещо за пптп и 2ри шлюз. По подразбиране си имам влюз. И > , за да ми върви нет-а трябва да добавя "inet" ип-то като втори шлюз. На > ръка си бачка, но аз искам да автоматизирам процеса. Преди си спомням, > че го бях направил като бях добавил "defaultroute" във /etc/ppp/options. > Но сега неще да бачка, защото вече имам имам сетнат гв по подразбиране. > Пробвах и със следния ред във /etc/ppp/ip-up : > route add default gw `ifconfig ppp0|grep "P-t-P"|awk '{print $2}'|cut -d > ':' -f 2`
На скрипта ip-up се предават следните параметри (описани в примерния файл по-долу): ============= примерен файл /etc/ppp/ip-up (взет от Debian) ============ #!/bin/sh # # This script is run by the pppd after the link is established. # It uses run-parts to run scripts in /etc/ppp/ip-up.d, so to add routes, # set IP address, run the mailq etc. you should create script(s) there. # # Be aware that other packages may include /etc/ppp/ip-up.d scripts (named # after that package), so choose local script names with that in mind. # # This script is called with the following arguments: # Arg Name Example # $1 Interface name ppp0 # $2 The tty ttyS1 # $3 The link speed 38400 # $4 Local IP number 12.34.56.78 # $5 Peer IP number 12.34.56.99 # $6 Optional ``ipparam'' value foo # The environment is cleared before executing this script # so the path must be reset PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin export PATH # These variables are for the use of the scripts run by run-parts PPP_IFACE="$1" PPP_TTY="$2" PPP_SPEED="$3" PPP_LOCAL="$4" PPP_REMOTE="$5" PPP_IPPARAM="$6" export PPP_IFACE PPP_TTY PPP_SPEED PPP_LOCAL PPP_REMOTE PPP_IPPARAM # as an additional convenience, $PPP_TTYNAME is set to the tty name, # stripped of /dev/ (if present) for easier matching. PPP_TTYNAME=`/usr/bin/basename "$2"` export PPP_TTYNAME # If /var/log/ppp-ipupdown.log exists use it for logging. if [ -e /var/log/ppp-ipupdown.log ]; then exec > /var/log/ppp-ipupdown.log 2>&1 echo $0 $* echo fi # This script can be used to override the .d files supplied by other packages. if [ -x /etc/ppp/ip-up.local ]; then exec /etc/ppp/ip-up.local fi run-parts /etc/ppp/ip-up.d \ --arg="$1" --arg="$2" --arg="$3" --arg="$4" --arg="$5" --arg="$6" # if pon was called with the "quick" argument, stop pppd if [ -e /var/run/ppp-quick ]; then rm /var/run/ppp-quick wait kill $PPPD_PID fi ================================================================= Това означава, че няма нужда да пишеш скриптове за да намериш даден адрес - той се подава като параметър към скрипта. Пробвах да задам като шлюз по подразбиране IP адреса в другия край на тунела (peer IP) - работи (до сега бях задавал IP адреса от отсамната страна на тунела (local IP) като шлюз по подразбиране - пак си работи). Задаване на metric 2 на шлюза, който не трябва да се ползва може да се направи с този скрипт: ===== /etc/ppp/ip-up/скрипт ========================================== #!/bin/bash /sbin/route add -host 195.138.138.16 gw 10.1.0.1 #/sbin/route add default gw $PPP_LOCAL dev $PPP_IFACE # вариант 1 #/sbin/route add default gw $PPP_REMOTE dev $PPP_IFACE # вариант 2 /sbin/route add default gw $PPP_LOCAL dev $PPP_IFACE metric 1 # вариант 3 /sbin/route -n | grep ^0.0.0.0 | while read route_LINE; do echo $route_LINE | cut -d " " -f 8 | grep -v $PPP_IFACE | while read route_DEVICE; do /sbin/route del default $route_DEVICE done done # прочитане на настройките . /etc/rc.d/rc.inet1.conf if [ "" != "$GATEWAY" ]; then /sbin/route add default gw ${GATEWAY} metric 2 fi ============================================================================= ============================================================================= [EMAIL PROTECTED]:~$ /sbin/route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 87.119.118.2 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 195.138.138.16 10.1.0.1 255.255.255.255 UGH 0 0 0 eth0 195.138.138.192 10.1.0.1 255.255.255.240 UG 0 0 0 eth0 10.10.10.0 10.1.0.1 255.255.255.0 UG 0 0 0 eth0 10.1.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 87.119.118.76 0.0.0.0 UG 1 0 0 ppp0 0.0.0.0 10.1.0.1 0.0.0.0 UG 2 0 0 eth0 [EMAIL PROTECTED]:~$ ============================================================================= При отпадане на връзката започва да се ползва шлюза с metric 2 (защото просто няма друг шлюз): ============================================================================= [EMAIL PROTECTED]:~$ /sbin/route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface hoptrop.interbi 10.1.0.1 255.255.255.255 UGH 0 0 0 eth0 195.138.138.192 10.1.0.1 255.255.255.240 UG 0 0 0 eth0 10.10.10.0 10.1.0.1 255.255.255.0 UG 0 0 0 eth0 localnet * 255.255.0.0 U 0 0 0 eth0 loopback * 255.0.0.0 U 0 0 0 lo default 10.1.0.1 0.0.0.0 UG 2 0 0 eth0 [EMAIL PROTECTED]:~$ ============================================================================= Ако шлюзът, който не трябва да се ползва, просто се изтрие, може да се възстанови след отпадане на връзката pptp чрез този скрипт: ========= /etc/ppp/ip-down.d/скрипт ============ #!/bin/bash /etc/rc.d/rc.inet1 start ================================================ По този начин нещата се опростяват (не се налага да се занимаваме с metric). > Но , уви, не стана. Честно казано много не ми се иска да ползвам разни > "изнасилени" методи като горния, защото съм сигурен че такава функция си > има във pptpclient. > > Поздрави. Май без скриптове няма как да станат нещата... Ето още един вариант на скрипта от директорията ip-up.d: ================================================ #!/bin/bash # прочитане на настройките . /etc/rc.d/rc.inet1.conf /sbin/route add -host 195.138.138.16 gw ${GATEWAY} #/sbin/route add default gw $PPP_LOCAL dev $PPP_IFACE # и така работи /sbin/route add default gw $PPP_REMOTE dev $PPP_IFACE # и така също if [ "" != "$GATEWAY" ]; then /sbin/route del default gw ${GATEWAY} fi ================================================ В комплект към този скрипт трябва да има и скрипт в /etc/ppp/ip-down.d, който да задава шлюз по подразбиране при отпадане на връзката pptp (вж. по-горе). -- Валентин Стойков http://vstoykov.hit.bg/