Обсуждение статьи тематического каталога: PPTPD - привязка к номеру интерфейса. (pptp patch interface)Ссылка на текст статьи: http://www.opennet.me/base/patch/pptpd_fix_int.txt.html
Простите ламу за вопрос. Но как патчить то?
Как я понимаю патч привязывает к ип наружней сети. А это ничего не даёт. Пользователь может поставить у себя ип и мак другого пользователя прописать статично ип внутренней сети который ты действительно ему назначешь и нормально пройдет атентификацию а вот интерфейс у него будет другого пользователя по которому ты и собираешься считать :-) Так что помоему использовать патч нецелесообразно
Данный патч на мой взгляд неактуален. Как и остальные патчи привязки интерфейса к ип поскольку привязывают интерфейс к внешнему ип а не ип выдаваемый pptpd внешний ип можно сменить если конечно на каждый порт свича не будет прописан мак пользователя. Вязать надо к внутреннему ип а это или не возможно или сложно поскольку pppd или ppp сначала создают интерфейс а уж потом производят аутентификацию. Если кто знает как с помощью ioctl сменить имя интерфейса текущей сесии прошу бросить на мыло. Тогда будет возможно привязать ppp и pppd (а соответственно и все довески к ним pptpd, pppoe и др.) к номеру интерфейса без возможности со строны пользователя сменить его.
patch -p1 pptpctrl.c < ../pptpd_patch
а что если из внешнего файла (к примеру конфига пользователя) выуживать нужный номер интерфейса?
Там кто писал про невозможное :))в /etc/ppp/ip-up дописать следующее:
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 ...
зы. Сначала лучше создать отдельный скрипт и проверить чтоб не было всяких синтакс ероров в том что сверху)
Так IMHO, красивше будет :)
http://zft.crimeainfo.com/
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
Может возникнуть проблема с ioctl, например при отключение пользователя и не будет писаться статистика трафика.
Второе - может быть слишком длинное имя интерфейса. Обрубание его до н-го количества символов приемлемо, но... когда есть пользователи, с именами отличающимся только последними симоволами, то это проблема!
Второй вариант не захотел работать с pFsense (клиент vpn), скрипт работает на Centos (server vpn). Мож кому пригодиться, немного упростил:
NEWNAME=$PEERNAMEif [ -x /sbin/ip ]; then
/sbin/ip link set $1 down
/sbin/ip link set $1 name $NEWNAME
/sbin/ip link set $NEWNAME up
fi