>${ipfw} add 97 fwd 192.168.1.19 ip from 192.168.1.1 to any ${ipfw} add 97 fwd 192.168.1.19 ip from 192.168.1.1 to any via rl1
>[оверквотинг удален]
>rl1
>${ipfw} add 108 divert 8668 all from 192.168.0.0/24 to any out via
>rl0
>${ipfw} add 110 divert 8668 all from any to 195.128.17.242 in via
>rl0
>
>Как я понимаю эти правила (поправьте если я не прав):
>№97 перенаправлять пакеты на 192.168.1.19 если они пришли на 192.168.1.1 и в
>адресе назначения всё что угодно (но откуда оно узает что пришло
>на 192.168.1.1 если правило перенаправления стоит позже?).
Пришли не на 192.168.1.1 , а пришли из 192.168.1.1 , пришли из NAT 8778 .
Пакет с источником в адресе 192.168.1.1 ( это внешний адрес NAT, natd 8778) должен быть
всегда отправлен на шлюз 192.168.1.19, кроме случая, если Вам захочестся
пинговать (взаимодействовать) с эти адресом из сети 192.168.0.0/24 .
Тогда надо добавить правила перед №97.
Если же адрес 192.168.1.1 Вы будете использовать только,
как внешний адрес NAT, то перед правилом №97 ничего
добавлять не надо.
Можно правило №97 переписать еще так:
${ipfw} add 97 fwd 192.168.1.19 ip from 192.168.1.1 to not 192.168.0.0/24 via rl1
Все, но не к 192.168.0.0/24 .
Тогда думаю, что перед правилом №97 тоже ничего добавлять не надо.
>№98 перебросить на №103 если в запросе от 192.168.0.0/24 указывается 195.128.17.242 (даже
>если правило 97 как-то узнало что перенапрлять, почему мы только сейчас
>ставим skipto)
Зачем вам пакет из 192.168.0.0/24 направлять на divert?
195.128.17.242 поднят на интерфейсы этого же роутера.
>№100 перенаправить в NAT 8778 входящие подключения от всех из таблицы 3
>на ВСЕ адреса которые не указаны в таблице 2 через rl1
На выходе из NAT 8778 пакет будет уже с адресом в источнике 192.168.1.1 и
снова будет направлен в самое начало правил ipfw .
Дойдет до 97 правила и форвардится на 192.168.1.19.
>№102 далее перенаправлять в NAT 8778 всё что в него пришло (in)
>на 192.168.1.1 через rl1
Да, это обратный путь через 192.168.1.19 .
>далее ехаем. правило №108 говорит NAT 8668 принимать всё от 192.168.0.0/24 если
>они хотят идти (out) куда угодно через интерфейс rl0 (внешний?). Но
>тут я так понял, что сработал первый нат и пакеты которые
>ушли на 192.168.1.1 уже сюда не попадают, поэтому работаем с тем,
>что осталось от первого ната.
Все что не попало в NAT 8778 , попадет в NAT 8668 , будет преобразовано
в пакет с источником в адресе 195.128.17.242.
Далее пакет из natd с источником в адресе 195.128.17.242 снова будет направлен в самое начало правил ipfw , и если правила ipfw позволят, покинет интерфей rl0 .
>№110 перенаправить на NAT 8668 все входящие (in) от любого источника на
>195.128.17.242 через rl0
Да, это обратный путь через 195.128.17.242.
>Но при этих правилах пользователи с таблицы 3, и те кто не
>в таблице, так и продалжают ходить в весь инет через 195.128.17.242.
>А должны только на ip которые в таблице 2.
Это не так . Еще раз читайте "философию" ipfw, divert, natd .
Каждый пакет, который напраляется в natd, обрабатывается им, потом снова
возвращается в начало правил ipfw , а не в то место правил, где произшел divert на
natd.
>[оверквотинг удален]
>#${ipfw} add 100 divert 8778 all from table\(3\) to not table\(2\)
>#${ipfw} add 101 fwd 192.168.1.19 all from 192.168.1.1 to any
>#${ipfw} add 102 divert 8778 all from any to 192.168.1.1
>
>#${ipfw} add 108 divert 8668 all from 192.168.0.0/24 to any
>#${ipfw} add 110 divert 8668 all from any to 195.128.17.242
>#------------
>
>Эти правила такие же как предыдущее, только не конкретизрованы и fwd стоит
>после проверки кто-куда должен идти.