AVATAR777, я сделал у себя нечто подобное, когда поднял качалку на сервере. но у меня нет VPN, у сервера 2 интерфейса, eth0 для локалки и eth1 для адсл-модема. защиту от посторонних подключений сделал простейшую: в списке правил iptables указал кому можно лезть к серверу с интерфейса eth0, а остальные входящие с eth0 запретил (-j DROP).
со скоростью сервера и клиентов сделал так. сначала маркирую входящие пакеты
iptables -t mangle -A INPUT -i eth1 -j MARK --set-mark 103
iptables -t mangle -A FORWARD -d 192.168.100.1 -i eth1 -j MARK --set-mark 101
iptables -t mangle -A FORWARD -d 192.168.100.2 -i eth1 -j MARK --set-mark 102
INPUT - если этот пакет приходит непосредственно серверу,
FORWARD -d 1.2.3.4 - если пакет перебрасывается на адрес 1.2.3.4
потом htbinit:
eth1-2:50.128kb
RATE=125Kbit
eth1-2:50:501.server_low_priority
RATE=1Kbit
CEIL=125Kbit
PRIO=2
MARK=103
eth1-2:50:502.clients_high_priority
RATE=124Kbit
eth1-2:50:502:5021.first_client
RATE=62Kbit
CEIL=124Kbit
PRIO=1
MARK=101
eth1-2:50:502:5022.second_client
RATE=62Kbit
CEIL=124Kbit
PRIO=1
MARK=102
Чем меньше значение PRIO, тем выше приоритет очереди. Другими словами, обработка пакетов с PRIO=2 приостановится, пока у тебя не пройдут пакеты с PRIO=1... как-то так...
ну и для резки исходящих с сервера понадобится OUTPUT, т.е. пакет формируется на интерфейсе сервера, а не НАТом; и FORWARD -s 1.2.3.4
Я сначала сделал так, как посоветовал Lion-Simba, но когда поднял торрент, решил переделать. у меня уже несколько дней работает такая схема, вроде все нормально