nicol@s Posted November 12, 2009 Posted November 12, 2009 (edited) Здравствуйте! Схема подключения следующая: есть два гейта: gate1 и gate2. Веб-сервер в DMZ зоне имеет айпишник x.x.47.2. Веб-сервер подлкючен к обоим гейтам. IP сетевого интерфейса DMZ на gate1 - x.x.47.254, на gate2 - x.x.47.1 соотвественно. Сеть 10.1.x.x ходит через gate1, 10.2.x.x - через gate2. На веб-сервере прописаны роуты: для сети 10.1.x.x - x.x.47.254 и для сети 10.2.x.x - x.x.47.1. Схема 10.1.x.x->gate1->dmz->gate1->10.1.x.x работает. Схема 10.2.x.x->gate2->dmz->gate2->10.2.x.x тоже работает. Хотелось бы, чтобы абоненты работали по такой схеме: 1) 10.1.x.x->gate1->dmz->gate2->10.1.x.x 2) 10.2.x.x->gate2->dmz->gate1->10.2.x.x соответственно. Рассмотрим 1-ю схему: пытаюсь зайти на веб-сервер, но не получается. При этом, на сетевом интерфейсе DMZ на gate2 вижу пакеты, но на внтуреннем интерфейсе gate2 в локалку пакетов уже нет. Аналогчино и для 2-го варианта - на сетевом интерфейсе DMZ на gate1 вижу пакеты, а на внутреннем нет. Кусок pf gate1: ext_if = "em0" int_if = "em1" dmz_if = "em2" table <LAN> const { 192.168.0.0/16, 10.0.0.0/8, 197.0.0.0/8 } pass quick from x.x.47.2 to <LAN> keep state block on { $ext_if, $int_if } all По идее pass quick выше - должно перекрывать block on, но сайт не работает. Если закомментировать #block on { $ext_if, $int_if } all , то пакеты видим на внутреннем интерфейсе gate2, видим на сетевухе абонента wireshark`ом, но сайт при этом все равно не открывается. ICMP и порт 53 ходят отлично. Edited November 12, 2009 by nicol@s Вставить ник Quote
TiFFolk Posted November 12, 2009 Posted November 12, 2009 На веб-сервере прописаны роуты: для сети 10.1.x.x - x.x.47.254 gate 1 и для сети 10.2.x.x - x.x.47.1. gate 2 Схема 10.1.x.x->gate1->dmz->gate1->10.1.x.x работает. Схема 10.2.x.x->gate2->dmz->gate2->10.2.x.x тоже работает. Ну так как роутинг работает по адресам назначения, то так и будет работать. У вас маршрут к двум сетям через свои шлюзы, вот траффик и возвращается через свои шлюзы. Хотелось бы, чтобы абоненты работали по такой схеме:1) 10.1.x.x->gate1->dmz->gate2->10.1.x.x 2) 10.2.x.x->gate2->dmz->gate1->10.2.x.x соответственно. Те вы хотите чтобы DMZ отдавал траффик исходящий через противоположный шлюз? Для этого вам надо прописать роутинг на нем, для сети 10.1.x.x - x.x.47.1 и для сети 10.2.x.x - x.x.47.254 Вставить ник Quote
xWR Posted November 13, 2009 Posted November 13, 2009 http://house.hcn-strela.ru/BSDCert/BSDA-co...ols-balance-out Вставить ник Quote
nicol@s Posted November 13, 2009 Author Posted November 13, 2009 (edited) Те вы хотите чтобы DMZ отдавал траффик исходящий через противоположный шлюз? Для этого вам надо прописать роутинг на нем, для сети 10.1.x.x - x.x.47.1 и для сети 10.2.x.x - x.x.47.254 В том то все и дело, что мы прописывали так, но возникала проблемаПри этом, на сетевом интерфейсе DMZ (em2) gate2 вижу пакеты, но на внтуреннем интерфейсе gate2 (em1) в локалку пакетов уже нет. Аналогчино и для 2-го варианта - на сетевом интерфейсе DMZ (em2) gate1 вижу пакеты, а на внутреннем (em1) - нет.Кусок pf gate1: Код ext_if = "em0" int_if = "em1" dmz_if = "em2" table <LAN> const { 192.168.0.0/16, 10.0.0.0/8, 197.0.0.0/8 } pass quick from x.x.47.2 to <LAN> keep state block on { $ext_if, $int_if } all По идее pass quick выше - должно перекрывать block on, но сайт не работает. Если закомментировать Код #block on { $ext_if, $int_if } all , то пакеты видим на внутреннем интерфейсе gate2, видим на сетевухе абонента wireshark`ом, но сайт при этом все равно не открывается. ICMP и порт 53 ходят отлично. http://house.hcn-strela.ru/BSDCert/BSDA-co...ols-balance-outЕсли Вы имели ввиду, как зарулить трафик на самом DMZ - это не проблема. Вопрос в том, почему при схеме, скажем, 10.1.x.x->gate1->dmz->gate2->10.1.x.x трафик на gate2 не попадает с интерфейса DMZ (em2) на внутренний интерфейс (em1). Edited November 13, 2009 by nicol@s Вставить ник Quote
TiFFolk Posted November 13, 2009 Posted November 13, 2009 Кусок pf gate1:Код ext_if = "em0" int_if = "em1" dmz_if = "em2" table <LAN> const { 192.168.0.0/16, 10.0.0.0/8, 197.0.0.0/8 } pass quick from x.x.47.2 to <LAN> keep state block on { $ext_if, $int_if } all При таком наборе правил клиенты не смогут сделать запрос к вебсерверу, так как он обработается block on. Лишь при исходящих запросах от сервера сработает pass, создастся состояние и пакеты пойдут на время конкретной сессии. И какие пакеты вы видите у клиента? Телнет на 80 порт что говорит? МОжет у вас закрыт как-то tcp, 53 порт, это udp(dns). Вставить ник Quote
nicol@s Posted November 13, 2009 Author Posted November 13, 2009 Прошу прощения, ошибся! Это кусочек конфига c gate2, а не с gate1. Вставить ник Quote
TiFFolk Posted November 13, 2009 Posted November 13, 2009 Что за пакеты вы видите? HTTP? Телнетом пробовали забирать страничку? Вставить ник Quote
nicol@s Posted November 13, 2009 Author Posted November 13, 2009 Да, http. Если можно,я в понедельник утром выложу tcpdump пакетов. При этом пинги идут отлично от клиента до x.x.47.2 и nslookup проходит. Вставить ник Quote
nicol@s Posted November 16, 2009 Author Posted November 16, 2009 Еще раз потестировал схему 10.1.2.123->gate1->dmz->gate2->10.1.2.123 При такой схеме пакет идет от абонента через gate1, доходит до интерфейса веб-сервера, согласно внутреннему роутингу посылается на gate2 и обрывается на em2 gate2. Если закомментить правила block, то пакеты проходят, через gate2, но летят без остановки до абонента, и соединение не устанавливается. Покажу вывод tcpdump: Строку pf на gate2 block on { $ext_if, $int_if } all оставим незакомментированной. Что вижу: пинги с абонента идут нормально, nslookup проходит, трассировка тоже. Пробую зайти на сайт от абонента - тишина. На интерфейсе абонента и на внутреннем интерфейсе gate2 (em1) пакетов не вижу. Пробую забирать телнетом - неудача: $ telnet x.x.47.2 80 Trying x.x.47.2... Connected to x.x.47.2 Escape character is '^]'. get index.html ^] telnet> quit Connection closed. Теперь закомментирую block on { $ext_if, $int_if } all Пинги, трассировка, nslookup проходят. Пробую зайти на сайт и вижу просто кучу пакетов на интерфейсах em1, em2 ( на gate2 ) и на интерфейсе абонента. Вот tcpdump: на интерфейсе em2 (gate2) tcpdump -ni em2 host 10.1.2.123 and host x.x.47.2 11:45:36.445602 IP x.x.47.2.80 > 10.1.2.123.50462: S 3361253988:3361253988(0) ack 1389169065 win 65535 <mss 1460> 11:45:36.446266 IP x.x.47.2.80 > 10.1.2.123.50462: S 3361253988:3361253988(0) ack 1389169065 win 65535 <mss 1460> То же самое вижу на внутреннем интерфейсе em1 gate2 (очень много): 11:45:38.930486 IP x.x.47.2.80 > 10.1.2.123.59275: S 3241377898:3241377898(0) ack 429987545 win 65535 <mss 1460> 11:45:38.930934 IP x.x.47.2.80 > 10.1.2.123.59275: S 3241377898:3241377898(0) ack 429987545 win 65535 <mss 1460> На сетевом интерфейсе абонента вижу очень много: tcpdump -ni eth0 host x.x.47.2 11:45:40.988540 IP 10.1.2.123.60970 > x.x.47.2.80: . ack 3983708364 win 5840 11:45:40.988919 IP x.x.47.2.80 > 10.1.2.123.60970: S 3471187685:3471187685(0) ack 4239563930 win 65535 <mss 1460> И сайт не открывается. Телнет тоже ничего не возвращает: telnet x.x.47.2 80 Trying x.x.47.2... Connected to x.x.47.2. Escape character is '^]'. get index.php ^] telnet> quit Connection closed. Вставить ник Quote
TiFFolk Posted November 16, 2009 Posted November 16, 2009 Отключите PF, проверьте голый роутинг. Вставить ник Quote
yakuzzza Posted November 16, 2009 Posted November 16, 2009 А можно вопрос по сути: зачем вообще строить такую схему? Поддержу предыдущего оратора - начала настраивают без пакетного фильтра, потом шашечки. Лично бы я строил бы на 2 шлюзах, но с использованием CARP - дешевое отказоустойчивое решение, а трафик резать файрволлом. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.