Доброго времени суток!
Поднял старую тему для решения наболевшей проблемы.
Для привязки IP к порту в доке есть пример
create filter rule entry ruleid 2 action allow
create filter subrule ip ruleid 2 subruleid 1 srcipaddrfrom 192.168.100.207 srcaddrcmp eq dstaddrcmp any ipsrcaddrmask 0xffffffff
create filter rule entry ruleid 3 action drop
create filter subrule ip ruleid 3 subruleid 1 srcaddrcmp any dstaddrcmp any
Все замечательно работает.
Но, возникла необходимость сделать аналогичный фильтр для клиентов работающих по технологии PPPoE
По идее, самый простой и правильный путь - вот такой
create filter rule entry ruleid 5 action allow
create filter subrule ip ruleid 5 subruleid 1 srcipaddrfrom 172.29.130.5 srcaddrcmp eq dstaddrcmp any ipsrcaddrmask 0xffffffff transportHdr ethernet pppoe
create filter rule entry ruleid 9 action drop
create filter subrule ip ruleid 9 subruleid 1 srcaddrcmp any dstaddrcmp any transportHdr ethernet pppoe
Вроде все учтено - указывается что используется transportHdr ethernet pppoe
Не работает
Виктор Платов посоветовал использовать subrule generic
Вот что я наваял
create filter rule entry ruleid 777 action allow statsstatus enable
create filter subrule ppp ruleid 777 subruleid 1 prototypefrom 0x0021 prototypecmp eq
create filter subrule generic ruleid 777 subruleid 2 offsethdr ppp offset 12 mask 0xFFFFFFFF valuefrom 0xAC1D8205 gencmp eq
create filter rule entry ruleid 778 action drop statsstatus enable
create filter subrule ppp ruleid 778 subruleid 1 prototypefrom 0x0021 prototypecmp eq
Пояснения
Виктор предложил отбрасывать PPP IPCP с неверными ip адресами, но если анализировать ppp пакет по смещению, то будут анализироваться все ppp пакеты, как LCP так и IPCP. У одних по данному смещению будет находиться ip адрес, а у других нет. Будут блокироваться нужные пакеты.
С помощью 777 правила я отбираю по типу нужные ppp пакеты и по смещению проверяю ip.
778 отбрасывает все остальные ppp пакеты этого типа с другими ip.
Не работает

Вот сомневаюсь правильно ли я смещение посчитал.
Need help!