Когда ppp-соединение запускает этот скрипт:
/etc/ppp/ip-up
выполняется в вашей системе.Обратите внимание, что есть некоторые переменные, которые передаются с сервера.Прочитайте последний оператор for
, он запустит еще несколько сценариев:
#!/bin/sh
# This script is run by pppd after the link is established.
# It executes all the scripts available in /etc/ppp/ip-up.d directory,
# with the following parameters:
# $1 = interface name (e.g. ppp0)
# $2 = tty device
# $3 = speed
# $4 = local IP address
# $5 = remote IP address
# $6 = ipparam (user specified parameter, see man pppd)
ifconfig $1 mtu 1280 || true
cd /etc/ppp/ip-up.d || exit
for SCRIPT in *.sh ; do
. ./"${SCRIPT}" "$@"
done
в папке /etc/ppp/ip-up.d
У меня есть файл с именем 40-dns.sh
.Выглядит это так, и он устанавливает /etc/resolve.conf
с DNS-серверами, отправляемыми VPN-сервером
#!/bin/sh
# Handle resolv.conf generation when usepeerdns pppd option is being used.
# Used parameters and environment variables:
# $1 - interface name (e.g. ppp0)
# $USEPEERDNS - set if user specified usepeerdns
# $DNS1 and $DNS2 - DNS servers reported by peer
if [ "$USEPEERDNS" ]; then
if [ -x /sbin/resolvconf ]; then
{
echo "# Generated by ppp for $1"
[ -n "$DNS1" ] && echo "nameserver $DNS1"
[ -n "$DNS2" ] && echo "nameserver $DNS2"
} | /sbin/resolvconf -a "$1"
else
# add the server supplied DNS entries to /etc/resolv.conf
# (taken from debian's 0000usepeerdns)
# follow any symlink to find the real file
REALRESOLVCONF=$(readlink -f /etc/resolv.conf)
if [ "$REALRESOLVCONF" != "/etc/ppp/resolv.conf" ]; then
# merge the new nameservers with the other options from the old configuration
{
grep --invert-match '^nameserver[[:space:]]' $REALRESOLVCONF
cat /etc/ppp/resolv.conf
} > $REALRESOLVCONF.tmp
# backup the old configuration and install the new one
cp -dpP $REALRESOLVCONF $REALRESOLVCONF.pppd-backup
mv $REALRESOLVCONF.tmp $REALRESOLVCONF
# correct permissions
chmod 0644 /etc/resolv.conf
chown root:root /etc/resolv.conf
fi
fi
fi
Для маршрутов, которые должны быть помещены в таблицу маршрутизации при установленном соединении, вы должны быть в состоянии сделатьПодобный трюк.Перейдите на справочные страницы pppd, чтобы увидеть имена переменных, которые вам нужно использовать.
Это примеры кода с моего ПК с Gentoo Linux, но этот материал является общим для Linux, поэтому он будет работать и на DD-WRT.