|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Dmitrij Lystsov 2:5020/400 28 Nov 2005 15:45:25 To : Mykola Dzham Subject : Re: ...не могу решить простую задачу!!! -------------------------------------------------------------------------------- >>>>>>Есть ОДИH сервер с ДУМЯ сетевухами, сидящий в РАЗHЫХ сетях. >>>>>>ОБЕ сети имеют выход в инет, но с разными шлюзами: >>>>>>Для ПЕРВОЙ сети ПЕРВЫЙ шлюз, для ВТОРОЙ сети - ВТОРОЙ шлюз. >>>>>>Задача разрулить трафик САМОГО СЕРВЕРА исходя из АДРЕСА источника. >>>>>>Источники - службы на СЕРВАКЕ запущенные под разными адресами. >>>>> >>>>Я тут немного поэксперементировал ... >>>>Если делаю, типа: >>>>ping -S ip1 www.ru >>>> >>>>то незамедлительно получаю: >>>>ping: sendto: Permission denied >>>>ping: sendto: Permission denied >>>>ping: sendto: Permission denied >>>>ping: sendto: Permission denied >>>> >>>>Гляжу в лог, а там: >>>>Deny ICMP:8.0 ip1 www.ru out via int0 >>> >>> >>>Хорошо бы не заниматься художественной резней по конфигам а показывать >>>все прописанные у тебя правила. >> >>----ipfw.conf---- >>${fwcmd} -f flush >># >>${fwcmd} add 100 check-state >>${fwcmd} add 200 allow ip from any to any via lo0 >>${fwcmd} add 300 allow tcp from any to any established >># >># REJECT PRIVAT IP (RFC1918) >>${fwcmd} add 500 reject ip from 10.0.0.0/8 to any in via ${int1} >>${fwcmd} add 550 reject ip from 172.16.0.0/12 to any in via ${int0} >>${fwcmd} add 600 reject ip from 172.16.0.0/12 to any in via ${int1} >>${fwcmd} add 650 reject ip from 192.168.0.0/16 to any in via ${int0} >>${fwcmd} add 700 reject ip from 192.168.0.0/16 to any in via ${int1} >> >>${fwcmd} add 8000 allow log icmp from ${net1} to ${ip1} >>${fwcmd} add 8100 allow log icmp from ${ip1} to ${net1} >>${fwcmd} add 8200 allow log icmp from not ${net1} to ${ip1} in via >>${int1} icmptypes 0,3,8,13,14,30 >>${fwcmd} add 8300 fwd ${gate1} log icmp from ${ip1} to not ${net1} out via >>${int0} > > Ой, а у тебя тут уже int0 а не int1. Да, поменял на ${int0} и в итоге получил полный затык. 100% потеря пакетов. Если поставить ${int1} - то правило не примениться, поскольку пакет пытается выйти через ${int0}. >>65535 deny from any to any >> >> >>>>А какого хрена, я думаю, запрос лезет от имени ip1 с интерфейса int0 - >>>>должен то с int1 идти и прямиком на gate1. >>>>Что за ерунда. >>>>Так мои правила ни когда не применятся. >>>>Вот к примеру сейчас для ICMP запросов они такие: >>>> >>>>allow log icmp from not net1 to ip1 in via int1 icmptypes 0,3,8,13,14,30 >>>>fwd gate1 log icmp from ip1 to not net1 out via int1 >>> >>> >>>Пока ты пакет не перенаправил на gate1 он пытается уйти через int0 а не >>>через int1 . Соответственно это твоё правило бессмысленно. >> >>Что оно бессмысленно я уже понял. >> >>Дело в том, что IPFW FWD изменяет следующий ХОП, для запроса с >>определенным адресом, в моем случае с адреса ${ip1}. >>Проходя через правило 8300 следующий ХОП меняется, но уже с измененных >>ХОПом запрос продолжает двигаться с ${int0}. Почему? > > > Кто тебе сказал что он продолжает двигаться с int0 После команды: #ping -S ${ip1} хх.ххх.ххх.ххх В логе вот что: - ---security.log--- kernel: ipfw: 8300 Forward to ${gate1} ICMP:8.0 ${ip1} хх.ххх.ххх.ххх out via ${int0} $tcpdump -i ${int0} icmp ... ${ip1} > хх.ххх.ххх.ххх: icmp 64: echo request seq 0 ${ip1} > хх.ххх.ххх.ххх: icmp 64: echo request seq 1 ${ip1} > хх.ххх.ххх.ххх: icmp 64: echo request seq 2 ... > Hа момент _проверки_ соответствия условиям fwd правила у него будет тот > интерфейс, какой получается исходя из правил роутинга. _Проверка_ > соответствия условиям естественно выполняется до выполнения собственно > fwd. >>Или запрос с измененным ХОПом должен пройти еще раз правила? >> >> >>>>Подскажите как побороть это безобразие? >>> >>>Попытаться таки понять как идут пакеты и именно и как именно их надо >>>перенаправлять. >>> >> >>Если адрес не принадлежит сети ${net0} или ${net1}, то запрос идет на >>defaultrouter. >>defaultrouter находиться в сети ${net0} и берется из таблицы маршрутизации >> >>Уточню еще раз, что у меня два GATEWAY-я лежащих в разных сетях. >> >>Поэтому любой запрос к адресам вне сети ${net0} или ${net1} формируется >>как исходящий запрос через ${int0} - а мне так не надо. >>ХОП то меняется, а интерефейс как изменить, если ${gate1} лежит в сети >>${net1}? > > Если ты поменяешь next hop с помощью fwd то интерфейс будет выбран > согласно роутинговой таблице для gate1, так что ничего менять не надо. Вот только он не меняется что-то. :-( Может что-то еще кроме правил надо менять в системе? -- Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5.3 * Origin: Talk.Mail.Ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/560685d225d1.html, оценка из 5, голосов 10
|