1) Шейпится всегда исходящий с интерфейса трафик (egress).
2) Узким местом в данном случае является ppp0, поэтому шейпить надо только его.
3) Исходящий в Интернет можно шейпить непосредственно на ppp0.
4) Для входящего (ingress) на ppp0 можно делать полисинг, но на медленном канале он будет лажать.
5) Шейпинг входящего через ppp0 можно делать, если завернуть его на ifb0.
6) NAT выполняется на выходе последним, на входе первым, поэтому проблем с IP-адресами не возникнет.
7) HTB работает нормально, распространён повсеместно, менять его ни на что не нужно (CBQ, HSMC).
8) Вместо дефолтного pfifo на листья HTB настоятельно рекомендуется вешать SFQ.
9) Если что-то неясно — спрашивайте. Шейпер в Линуксе — имхо не самая тривиальная в освоении вещь.
Ищем в Гугле «shaping ppp0 ifb0», тут же находим:
—
ventrill.blogspot.ru/2011/02/qos-shapingsh.html
—
forum.nag.ru/forum/index.php?showtopic=61755&view=findpost&p=733864
… и ещё кучу примеров.