Есть локальная сеть за натом (freebsd 4.9;natd;ipfw) и есть клиенты внешние.
Необходимо разрешить некоторым локальным пользователям ходить только на внешние ip адреса клиентов, в инет же им ходить запрещено.делаю так:
oif - внешний интерфейс
iif - внутренний....
setup_loopback# Stop spoofing
${fwcmd} add deny log all from ${локальная сеть} to any in via ${oif}
${fwcmd} add deny log all from ${внешняя сеть} to any in via ${iif}case ${natd_enable} in
[Yy][Ee][Ss])
if [ -n "${natd_interface}" ]; then
${fwcmd} add divert natd all from ${локальная сеть} to any via ${oif}
fi
;;
esac# Allow packets for client1
${fwcmd} add allow all from ${выборочные локальные адреса} to ipclient1 out via ${oif}
${fwcmd} add allow all from ipclient1 to me in via ${oif}# Allow packets for client2
${fwcmd} add allow all from ${выборочные локальные адреса} to ipclient2 out via ${oif}
${fwcmd} add allow all from ipclient2 to me in via ${oif}
...# Allow anything outbound from this net.
${fwcmd} add allow all from ${внешняя сеть} to any out via ${oif}# Deny anything outbound from other nets.
${fwcmd} add deny log all from any to any out via ${oif}# Allow anything on the internal net
${fwcmd} add allow all from any to any via ${iif}# Allow TCP through if setup succeeded.
${fwcmd} add allow tcp from any to any established
и т.д.при такой конфигурации локальных пользователей все равно не пускает к клиентам;
подскажите, где косяк?
>Есть локальная сеть за натом (freebsd 4.9;natd;ipfw) и есть клиенты внешние.
>Необходимо разрешить некоторым локальным пользователям ходить только на внешние ip адреса клиентов,
>в инет же им ходить запрещено.
>
>делаю так:
>oif - внешний интерфейс
>iif - внутренний
>
>....
>setup_loopback
>
> # Stop spoofing
> ${fwcmd} add deny log
>all from ${локальная сеть} to any in via ${oif}
> ${fwcmd} add deny log
>all from ${внешняя сеть} to any in via ${iif}
>
> case ${natd_enable} in
> [Yy][Ee][Ss])
>
>if [ -n "${natd_interface}" ]; then
>
> ${fwcmd} add divert natd all from ${локальная сеть} to any via ${oif}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
А обратно, из внешнего мира, как пакеты будут возвращаться в NAT?${fwcmd} add divert natd all from any to any via ${oif}
>
>fi
>
>;;
> esac
>
> # Allow packets for client1
> ${fwcmd} add allow all from ${выборочные локальные адреса} to ipclient1 out via ${oif}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Не будет на выходе ${oif} пакетов из ${выборочные локальные адреса},
если включен NAT .> ${fwcmd} add allow all from ipclient1 to me in via ${oif}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Не будет в этом месте правил пакетов в me, если правильно включен divert на NAT .
Список me и ${выборочные локальные адреса} не совпадают.Для ipclient2 , что ниже, аналогично.
Читайте , man ipfw и примеры на этом сайте.> # Allow packets for
>client2
> ${fwcmd} add allow all
>from ${выборочные локальные адреса} to ipclient2 out via ${oif}
> ${fwcmd} add allow all
>from ipclient2 to me in via ${oif}
>...
>
> # Allow anything outbound
>from this net.
> ${fwcmd} add allow all
>from ${внешняя сеть} to any out via ${oif}
>
> # Deny anything outbound
>from other nets.
> ${fwcmd} add deny log
>all from any to any out via ${oif}
>
> # Allow anything on
>the internal net
> ${fwcmd} add allow all
>from any to any via ${iif}
>
> # Allow TCP through
>if setup succeeded.
> ${fwcmd} add allow tcp
>from any to any established
>и т.д.
>
>при такой конфигурации локальных пользователей все равно не пускает к клиентам;
>
>подскажите, где косяк?
> ${fwcmd} add divert natd all from ${локальная сеть} to any via ${oif}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>А обратно, из внешнего мира, как пакеты будут возвращаться в NAT?
>
>${fwcmd} add divert natd all from any to any via ${oif}
Так же как и выходили... это НАТ... или я что то не догоняю?>> # Allow packets for client1
>> ${fwcmd} add allow all from ${выборочные локальные адреса} to ipclient1 out via ${oif}
>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>Не будет на выходе ${oif} пакетов из ${выборочные локальные адреса},
>если включен NAT .
Согласен, но они будут возвращаться!
>> ${fwcmd} add allow all from ipclient1 to me in via ${oif}
>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>Не будет в этом месте правил пакетов в me, если правильно
>включен divert на NAT .
Будут возвращатья, иначе смысла natd я не вижу>Список me и ${выборочные локальные адреса} не совпадают.
Не согласен, пакеты приходят изначально в иточник "me">
>Для ipclient2 , что ниже, аналогично.
>Читайте , man ipfw и примеры на этом сайте.Если не трудно покажите пример, заранее благодарен
>Не будет на выходе ${oif} пакетов из ${выборочные локальные адреса},
>если включен NAT .
Опечатался, НЕ согласен, они будут возвращаться!
>> ${fwcmd} add divert natd all from ${локальная сеть} to any via ${oif}
>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>А обратно, из внешнего мира, как пакеты будут возвращаться в NAT?
>>
>>${fwcmd} add divert natd all from any to any via ${oif}
>Так же как и выходили... это НАТ... или я что то не
>догоняю?Что не понятно?
Вы писали
${fwcmd} add divert natd all from ${локальная сеть} to any via ${oif}
и направили пакеты из ${локальная сеть} через natd.Придет пакет обратно из внешнего мира , его снова надо направить через natd.
Natd его обработает и снова вернет в стек TCP/IP .
У Вас же только одно правило для divert natd , на исходящие во внешний мир пакеты.Еще раз читайте man ipfw и примеры на этом сайте.
>>> # Allow packets for client1
>>> ${fwcmd} add allow all from ${выборочные локальные адреса} to ipclient1 out via ${oif}
>>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>Не будет на выходе ${oif} пакетов из ${выборочные локальные адреса},
>>если включен NAT .
>Согласен, но они будут возвращаться!
>>> ${fwcmd} add allow all from ipclient1 to me in via ${oif}
>>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>Не будет в этом месте правил пакетов в me, если правильно
>>включен divert на NAT .
>Будут возвращатья, иначе смысла natd я не вижу
>
>>Список me и ${выборочные локальные адреса} не совпадают.
>Не согласен, пакеты приходят изначально в иточник "me"Приходить то приходят, но не будут обрабатываться NAT.
>>Для ipclient2 , что ниже, аналогично.
>>Читайте , man ipfw и примеры на этом сайте.
>
>Если не трудно покажите пример, заранее благодарен
хорашо добавил строку:
${fwcmd} add divert natd all from any to me via ${oif}Вопрос остается открытым... А именно:
"Есть локальная сеть за натом (freebsd 4.9;natd;ipfw) и есть клиенты внешние.
Необходимо разрешить некоторым локальным пользователям ходить только на внешние ip адреса клиентов, в инет же им ходить запрещено."
>хорашо добавил строку:
>${fwcmd} add divert natd all from any to me via ${oif}Извиняюсь, в прошлом сообщении было предложено:
${fwcmd} add divert natd all from any to any via ${oif}
>Вопрос остается открытым... А именно:По этому и остается открытым этот вопрос только для Вас.
>"Есть локальная сеть за натом (freebsd 4.9;natd;ipfw) и есть клиенты внешние.
>Необходимо разрешить некоторым локальным пользователям ходить только на внешние ip адреса клиентов,
>в инет же им ходить запрещено."Все же почитайте man ipfw , посмотрите пример Simple в /etc/rc.firewall
>Все же почитайте man ipfw , посмотрите пример Simple в /etc/rc.firewallСмотрел, читал, уменя есть рабочий вариант делал разрешения через диверты для каждого клиента. Но мне этот вариант не нравится. Вот я и спрасил, есть ли другие варианты решения этой задачи.
>>Все же почитайте man ipfw , посмотрите пример Simple в /etc/rc.firewall
>
>Смотрел, читал, уменя есть рабочий вариант делал разрешения через диверты для каждого
>клиента. Но мне этот вариант не нравится. Вот я и спрасил,
>есть ли другие варианты решения этой задачи.Диверты только для сервиса NAT нужны.
Плохо смотрели в /etc/rc.firewall :
# Reject&Log all setup of incoming connections from the outside
${fwcmd} add deny log tcp from any to any in via ${oif} setupВот сюда что-то свое добавьте для этих клиентов , а потом все остальное
запретите для них.
# Allow setup of any other TCP connection
${fwcmd} add pass tcp from any to any setup
"Необходимо разрешить некоторым ЛОКАЛЬНЫМ пользователям ходить только на внешние ip адреса КЛИЕНТОВ, во внешнию сеть же (ЛОКАЛЬНЫМ пользователям) ходить запрещено"мы говорим об одной и тойже задаче?
>"Необходимо разрешить некоторым ЛОКАЛЬНЫМ пользователям ходить только на внешние ip адреса КЛИЕНТОВ,
>во внешнию сеть же (ЛОКАЛЬНЫМ пользователям) ходить запрещено"
>
>мы говорим об одной и тойже задаче?
Конечно. ;-)
А Вы? ;-)
Если нетрудно, напишите чайнику, в каком порядке должны идти правила?У меня скорее всего критинизм:)
>Если нетрудно, напишите чайнику, в каком порядке должны идти правила?
>
>У меня скорее всего критинизм:)Не думаю, что до этого дошло. :-)
Просто надо внимательно читать man'ы и форумы.Что касается правил в ipfw, то это Вы должны определить сами, в зависимости от
поставленных задач. Нет заранее определенного порядка правил.Другое дело, Вы должны понимать идеологию работы ipfw.
Если кратко про идеологию:
1. IP пакет приходящий на любой интерфейс , в том числе и lo0 , тестируется
последовательно всеми правилами ipfw , пока не получится совпадение.
2. При совпадении с IP пакетом делается то, что написано в правиле совпадения
(pass, deny, divert и т.д.)
3. Если пакет транзитом следует на другой интерфейс (по таблице роутинга),
чтобы покинуть роутер, то такой IP пакет должен пройти еще раз сначала все правила ipfw,
как исходящий пакет. Соответственно, повторяется п.2.
4. Если пакет не транзитный для роутера, то с учетом п.2 идет его обработка стеком
TCP/IP роутера.
5. Если пакет "рождается" в роутере и следует на исходящий интерфейс, в соответствии с
таблицей роутинга, то такой IP пакет должен пройти сначала все правила ipfw,
как исходящий пакет. Соответственно, повторяется п.2.Более подробно, только в man .
Рисуйте "черный ящик" - роутер с интерфейсами для наглядности представления.
Вот например, с тремя интерфейсами ed0,ed1,lo0 .
И смотрите, какие и как IP пакеты Вам необходимо транслировать.
I---------I
ed0 I I ed1
<->I I<->
I I
I I->-I
I I I lo0
I I-<-I
I---------IПишите правила ipfw, если надо включаете log на отдельные правила.
Смотрите ipfw show
ipfw -d show
Включаете tcpdump -n -i интерфейс и смотрите все ли
правильно бегает. netstat -rn
ifconfig -au
Удачи.Если совсем не вмоготу , ipfw -d sh в студию.
Тестировать не буду, но подскажу, где возможно ошибка.