LINUX.ORG.RU

интересная задачка с Portmapping


0

0

Столкнулся с такой проблемой. Есть две машины на которой установлены по две сетевые карты (с внутренней и внешней сетью). Одна машина имеет LAN IP=192.168.2.100 и WAN IP=123.456.789.0, другая LAN IP=192.168.2.101 и WAN IP=987.654.321.0. На обоих машинах работает портмаппинг, который осуществляет перенаправление http запросов по 82 порту на одну из локальных машин сети на которой настроен внутренний Microsoft IIS с LAN IP=192.168.2.105 Gateway=192.168.2.101. На LAN с IP=192.168.2.105 машине с IIS стоит одна сетевая карта с одним прописанным по дефолту гейтом GW=192.168.2.101. так вот если запросить http запрос с машины с IP=123.456.789.0 по 82 порту, запрос проходит нормально на 192.168.2.105, но ответы идут через машину с LAN=192.168.2.101 т.к. прописан по дефолту там гейт на нее. КАк можно решить такую проблему, что запросы httpp идущие с этих двух машин, перенаправлялись через обеи машины с двумя сетевыми картами ???

anonymous

Re: интересная задачка с Portmapping

Если я правильно понял проблему и если б на 192.168.2.105 линукс, то тебе бы помогло

http://gazette.linux.ru.net/rus/articles/lartc/x348.html

А так ищи аналогичные команды под винду - они должны быть

Login ()

Re: интересная задачка с Portmapping

Имхо никак - после dnata уже не разберешь какой пакет с какого шлюза пришел, никакими танцами вокруг 192.168.2.105 тут не поможешь, как вариант поставь 2 призрачных сквида на шлюзах (мож хоть IIS разгрузишь :))

Realtex-sux ()
Ответ на: Re: интересная задачка с Portmapping от Realtex-sux

Re: интересная задачка с Portmapping

немного не совсем понял зачем на каждый гейт ставить прозрачный сквид и что именно в нем крутить? задача состоит, чтобы каждому гейту отдавался тот запрос через кого он идет.

anonymous ()
Ответ на: Re: интересная задачка с Portmapping от anonymous

Re: интересная задачка с Portmapping

Интересно ,а как Вы представляете себе принцип работы портмаппинга ? У меня в iptables все выглядит следующим образом на адрес 123.456.789.0 порт 82 приходит пакет от a.b.c.d, в таблице nat цепочке prerouting стоит правило dnat 192.168.2.105:80 . В итоге к 192.168.2.105 приходит пакет с адресом отправителя a.b.c.d и получателя 192.168.2.105 . Пакет с аналогичным заголовком придет если a.b.c.d пошлет пакет через 987.654.321.0. Про то через какой шлюз они прошли эти пакеты информации не несут (если только на уровне МАС), а т.к. a.b.c.d не находится в одном сегменте с 192.168.2.105 то последний вполне справедливо отсылает ответ шлюзу по умолчанию.

Другая ситуация будет если эти запросы будут проксироваться на шлюзах тогда 192.168.2.105 будет видеть 2 подключения с 192.168.2.100 и 192.168.2.101 и отдавать каждому свое,ну и за счет кеширования снизится нагрузка на IIS.

Хотя теоретически , если использовать состояния соединений то можно попробовать перенаправить ошибочные пакеты с 192.168.2.101 на 192.168.2.100 - здесь не уверен.

Realtex-sux ()

Re: интересная задачка с Portmapping

пропиши на машинке 192.168.2.105 два шлюза, 192.168.2.100 и 192.168.2.101 , и будет тебе мега шястье %))

ps. Realtex-sux осознал сваю ашипку и согласился с маим мнением %)

huk ()

Re: интересная задачка с Portmapping

iptables'ом метишь трафик который хочешь перенаправлять. Затем используя linux advanced routing (при помощи прошраммы ip) настраиваешь маршрутизацию таким образом, чтобы помеченные пакеты попадали в созданную тобой таблицу маршрутизации, а в ней и стоит перенаправление.

anonymous ()
Ответ на: Re: интересная задачка с Portmapping от huk

Re: интересная задачка с Portmapping

>ps. Realtex-sux осознал сваю ашипку и согласился с маим мнением %) - это какие-то грязные инсинуации :))

Второй дефолтный шлюз используется когда есть проблемы с первым. Вот как на мой взгляд будет происходить соединение через 192.168.2.100 (по умолчанию считаю что 192.168.2.101 левые пакеты дропает): 192.168.2.150 получает syn пакет и отсылает syn-ack пакет через 192.168.2.101 (там пакет дропается), 192.168.2.150 висит в таймауте по SYN_RECV после чего берет из роут кэша второй шлюз 192.168.2.100 - и отправляет пакет через него - соединение установлено.Минусы - тормоза при заходе через 192.168.2.100 из-за таймаута, паразитный трафик в сети. Самое интересное будет при примерно одинаковом трафике через оба шлюза тогда 192.168.2.150 будет беспорядочно менять дефолтный гейт - тут последствия могут быть плачевные.

Как винда выбирает гейт читать тут : http://support.microsoft.com/default.aspx?scid=kb;en-us;171564

>iptables'ом метишь трафик который хочешь перенаправлять.

А по какому критерию марки ставить будете ?

Имхо проще всего сделать следующее: убрать dnat 123.456.789.0:82->192.168.2.150:80 , и сделать двойной dnat : 123.456.789.0:82->192.168.2.101:8282->192.168.2.150:80 - должно сработать.

Realtex-sux ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.