>> а зачем? демону pppd можно указать брать ip из пула.
> DHCP сервер регистрирует записи PTR вида ip <--> <username>.pppoe на MS DNS
> Для резервирования таких серверов два.Сделано так:
ip берутся из пула, в папку /etc/ppp/ip-up.d/
установил скрипт, который перехватывает ip адрес и регистрирует его на DNS серверах, за одно добавляя нужные правила в iptables для нужного уровня доступа:
#!/bin/bash
LOGFILE=/var/log/squid/my_pppoe.log
IPT=/sbin/iptables
#DNS_SERVERS="dns1 dns2"
DNS_SERVERS="localhost"
exec 6>&1 # Связать дескр. #6 со stdout. Сохраняя stdout.
exec >> $LOGFILE # stdout замещается файлом "logfile.txt".
filter=$(grep Filter-Id /var/run/radattr.$IFNAME | cut -d " " -f 2)
ip_reverse=$(echo $IPREMOTE | awk -F '.' '{print $4"."$3"."$2"."$1}').in-addr.arpa
dns_zone=${ip_reverse#*.}
dns_ptr=${PEERNAME##*\\}.$(echo $IPREMOTE | awk -F '.' '{print $3"-"$4}').pppoe
dns_delete="update delete $ip_reverse"
dns_update=""
if [[ ${0##*-} == "up" ]]; then
dns_update="update add $ip_reverse 86400 ptr $dns_ptr"
$IPT -D pppoe_packets -i $IFNAME -j $filter
$IPT -A pppoe_packets -i $IFNAME -j $filter
else
$IPT -D pppoe_packets -i $IFNAME -j $filter
fi
echo $IFNAME[$PPID] ${0##*-} $IPREMOTE $filter $PEERNAME
for dns in $DNS_SERVERS; do
cat <<EOF | nsupdate
server $dns
zone $dns_zone
$dns_delete
$dns_update
send
EOF
echo -- $dns update $ip_reverse PTR $dns_ptr result=$?
done
exec 1>&6 6>&-
P.S.: Опубликовал для себя, чтобы через +100500 лет не сочинять снова © madixi