Jump to content

Recommended Posts

Posted (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 by nicol@s
Posted
На веб-сервере прописаны роуты:

для сети 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

 

Posted (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 ходят отлично.

Если Вы имели ввиду, как зарулить трафик на самом DMZ - это не проблема. Вопрос в том, почему при схеме, скажем, 10.1.x.x->gate1->dmz->gate2->10.1.x.x трафик на gate2 не попадает с интерфейса DMZ (em2) на внутренний интерфейс (em1).

shema.jpg

Edited by nicol@s
Posted
Кусок 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).

Posted

Да, http.

Если можно,я в понедельник утром выложу tcpdump пакетов.

При этом пинги идут отлично от клиента до x.x.47.2 и nslookup проходит.

Posted

Еще раз потестировал схему

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.

 

 

Posted

А можно вопрос по сути: зачем вообще строить такую схему?

Поддержу предыдущего оратора - начала настраивают без пакетного фильтра, потом шашечки.

 

Лично бы я строил бы на 2 шлюзах, но с использованием CARP - дешевое отказоустойчивое решение, а трафик резать файрволлом.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.