Перейти к содержимому
Калькуляторы

Проблемы с несимметричным роутингом во FreeBSD.

Здравствуйте!

 

Схема подключения следующая: есть два гейта: 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 ходят отлично.

Изменено пользователем nicol@s

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На веб-сервере прописаны роуты:

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Те вы хотите чтобы 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

Изменено пользователем nicol@s

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кусок 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).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Прошу прощения, ошибся! Это кусочек конфига c gate2, а не с gate1.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что за пакеты вы видите?

HTTP? Телнетом пробовали забирать страничку?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, http.

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Отключите PF, проверьте голый роутинг.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

Лично бы я строил бы на 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.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.