Author Topic: проблема с пробросом smtp в локалку на freebsd  (Read 5116 times)

0 Members and 1 Guest are viewing this topic.

Offline stranger

  • Hero Member
  • *****
  • Posts: 922
  • Karma: +0/-0
    • http://
Назрела необходимость заменить ОС на сервере и поэтому постепенно переношу все сервисы на комп за фаерволом а вот с smtp возникли проблемы
Допустим шлюз имеет два адреса 212.212.212.1 (rl0) и 192.168.0.1 (fxp1), а временный комп имеет адрес 192.168.0.7
В фаерволе прописал
allow ip from 192.168.0.7 25 to any in via fxp1
allow ip from 192.168.0.7 to any dst-port 25 out via rl0
allow ip from any 25 to 192.168.0.7 in via rl0
allow ip from any 25 to 192.168.0.7 out via fxp1
так же прописан divert 8668 ip from 192.168.0.0/24 to any out via rl0

в /usr/local/etc/rinetd.conf прописал
212.212.212.1 25 192.168.0.7 25
192.168.0.1 25 192.168.0.7 25

В postfix прописал
proxy_interfaces = 212.212.212.1

в результате вроде почта приходит нормально и тест отправки на gmail.com прошел, но вдруг заметил что в очереди есть много сообщений о невозможности отправить сообщения на некоторые сервера в основном происходит таймаут на этапе ehlo или data - решил сам проверить телнетом и заметил одну принеприятнейшую вещь при соединении, например telnet sun1.utilicr.com 25
получаю
Trying 216.223.54.137...
Connected to sun1.utilicr.com.
Escape character is '^]'.
220 sun1.utilicr.com ESMTP Exim 4.68 Mon, 07 Apr 2008 08:42:20 -0400
ehlo mymailserver.ru

И после этого затык...
Причем если я все это же проделываю со шлюза, то нормально получаю ответ

250-sun1.utilicr.com Hello mymailserver.ru [212.212.212.1]
250-SIZE 52428800
250-PIPELINING
250 HELP

Может кто подскажет в каком направлении рыть? Я во фре пока новичек...
[span style='font-family:Geneva'][span style='font-size:8pt;line-height:100%'][span style='color:gray']Единственное условие, от которого зависит успех, есть терпение.   Л.Н.Толстой
[/span][/span][/span]

Offline never hood

  • Hero Member
  • *****
  • Posts: 845
  • Karma: +16/-10
  • www.4job.co
    • Работа, которую ты искал
1. tcpdump или wireshark ваши лучшие помощники в таких случаях...
2. когда создается подключение, то порт с которого инициируется подключение может быть любым, а у вас он прописан жестко, поэтому и затык. Порт 25 это порт принимающий подключение, поэтому в правилах фильтра нужно сделать ограничение только на принимающий порт.

Offline stranger

  • Hero Member
  • *****
  • Posts: 922
  • Karma: +0/-0
    • http://
Ага про порты я уже вычислил через tcpdump и временно вообще разрешил соединение пока по всем портам, но проблема похоже осталась...
Буду tcpdumpить...
[span style='font-family:Geneva'][span style='font-size:8pt;line-height:100%'][span style='color:gray']Единственное условие, от которого зависит успех, есть терпение.   Л.Н.Толстой
[/span][/span][/span]

Offline nuclight

  • Full Member
  • ***
  • Posts: 207
  • Karma: +1/-2
    • http://antigreen.org
Может, все-таки пробрасывать порты NATом, как положено, а не отдельным приложением?
WBR, Nuclear Lightning
[FreeBSD][Давить зелёных]

Offline stranger

  • Hero Member
  • *****
  • Posts: 922
  • Karma: +0/-0
    • http://
Quote from: nuclight
Может, все-таки пробрасывать порты NATом, как положено, а не отдельным приложением?
Это было бы лучшим вариантом, но есть несколько причин:
1. Я еще новичок во фре и разбираюсь по ходу... И после iptables ipfilter кажется уж очень неудобным...
2. Админю удаленно и поэтому нужно чтобы при ошибке система не легла, а rinetd легко перестартовать не затрагивая основную систему...
И кстати если я не ошибаюсь natd до 7 ветки тоже не встроен в ядро.


По теме - (по)tcpdump(ил) я соединение с 81.1.205.4 и получил (остановлено в месте затыка не дожидаясь таймаута с той стороны

На внутреннем интерфейсе
Code: [Select]
#tcpdump -vv -n -i fxp1 net 81.1.205
tcpdump: listening on fxp1
17:14:34.392816 192.168.0.7.60057 > 81.1.205.4.25: S [tcp sum ok] 680230494:680230494(0) win 65535 <mss 1460,nop,wscale 1,nop,nop,timestamp 1394299908 0,sackOK,eol> (DF) [tos 0x10]  (ttl 64, id 33885, len 64)
17:14:34.444641 81.1.205.4.25 > 192.168.0.7.60057: S [tcp sum ok] 1857064942:1857064942(0) ack 680230495 win 65535 <mss 1380,nop,wscale 1,nop,nop,timestamp 224428953 1394299908> (DF) (ttl 59, id 55880, len 60)
17:14:34.444821 192.168.0.7.60057 > 81.1.205.4.25: . [tcp sum ok] 1:1(0) ack 1 win 32832 <nop,nop,timestamp 1394299960 224428953> (DF) [tos 0x10]  (ttl 64, id 33887, len 52)
17:14:34.496457 81.1.205.4.25 > 192.168.0.7.60057: P [tcp sum ok] 1:30(29) ack 1 win 32832 <nop,nop,timestamp 224428958 1394299960> (DF) (ttl 59, id 55890, len 81)
17:14:34.596473 192.168.0.7.60057 > 81.1.205.4.25: . [tcp sum ok] 1:1(0) ack 30 win 32832 <nop,nop,timestamp 1394300112 224428958> (DF) [tos 0x10]  (ttl 64, id 33890, len 52)
17:14:47.034361 192.168.0.7.60057 > 81.1.205.4.25: P [tcp sum ok] 1:30(29) ack 30 win 32832 <nop,nop,timestamp 1394312550 224428958> (DF) [tos 0x10]  (ttl 64, id 34017, len 81)
17:14:47.085908 81.1.205.4.25 > 192.168.0.7.60057: P 30:138(108) ack 30 win 32832 <nop,nop,timestamp 224430217 1394312550> (DF) (ttl 59, id 57140, len 160)
17:14:47.185874 192.168.0.7.60057 > 81.1.205.4.25: . [tcp sum ok] 30:30(0) ack 138 win 32832 <nop,nop,timestamp 1394312702 224430217> (DF) [tos 0x10]  (ttl 64, id 34020, len 52)
17:15:06.553268 192.168.0.7.60057 > 81.1.205.4.25: P 30:72(42) ack 138 win 32832 <nop,nop,timestamp 1394332070 224430217> (DF) [tos 0x10]  (ttl 64, id 34065, len 94)
17:15:06.621853 81.1.205.4.25 > 192.168.0.7.60057: P [tcp sum ok] 138:152(14) ack 72 win 32832 <nop,nop,timestamp 224432169 1394332070> (DF) (ttl 59, id 59169, len 66)
17:15:06.721959 192.168.0.7.60057 > 81.1.205.4.25: . [tcp sum ok] 72:72(0) ack 152 win 32832 <nop,nop,timestamp 1394332239 224432169> (DF) [tos 0x10]  (ttl 64, id 34067, len 52)
17:15:28.192530 192.168.0.7.60057 > 81.1.205.4.25: P 72:104(32) ack 152 win 32832 <nop,nop,timestamp 1394353710 224432169> (DF) [tos 0x10]  (ttl 64, id 34098, len 84)
17:15:28.522924 192.168.0.7.60057 > 81.1.205.4.25: P 72:104(32) ack 152 win 32832 <nop,nop,timestamp 1394354041 224432169> (DF) [tos 0x10]  (ttl 64, id 34099, len 84)
17:15:28.984919 192.168.0.7.60057 > 81.1.205.4.25: P 72:104(32) ack 152 win 32832 <nop,nop,timestamp 1394354503 224432169> (DF) [tos 0x10]  (ttl 64, id 34100, len 84)
17:15:29.708883 192.168.0.7.60057 > 81.1.205.4.25: P 72:104(32) ack 152 win 32832 <nop,nop,timestamp 1394355227 224432169> (DF) [tos 0x10]  (ttl 64, id 34101, len 84)
17:15:30.956827 192.168.0.7.60057 > 81.1.205.4.25: P 72:104(32) ack 152 win 32832 <nop,nop,timestamp 1394356475 224432169> (DF) [tos 0x10]  (ttl 64, id 34103, len 84)
17:15:33.252719 192.168.0.7.60057 > 81.1.205.4.25: P 72:104(32) ack 152 win 32832 <nop,nop,timestamp 1394358771 224432169> (DF) [tos 0x10]  (ttl 64, id 34104, len 84)
17:15:36.332570 192.168.0.7.60057 > 81.1.205.4.25: P 72:104(32) ack 152 win 32832 <nop,nop,timestamp 1394361851 224432169> (DF) [tos 0x10]  (ttl 64, id 34105, len 84)
17:15:42.292290 192.168.0.7.60057 > 81.1.205.4.25: P 72:104(32) ack 152 win 32832 <nop,nop,timestamp 1394367811 224432169> (DF) [tos 0x10]  (ttl 64, id 34112, len 84)
17:15:54.011742 192.168.0.7.60057 > 81.1.205.4.25: P 72:104(32) ack 152 win 32832 <nop,nop,timestamp 1394379531 224432169> (DF) [tos 0x10]  (ttl 64, id 34113, len 84)
17:16:17.250628 192.168.0.7.60057 > 81.1.205.4.25: P 72:104(32) ack 152 win 32832 <nop,nop,timestamp 1394402771 224432169> (DF) [tos 0x10]  (ttl 64, id 35453, len 84)
17:17:03.528445 192.168.0.7.60057 > 81.1.205.4.25: P 72:104(32) ack 152 win 32832 <nop,nop,timestamp 1394449051 224432169> (DF) [tos 0x10]  (ttl 64, id 36651, len 84)
^C
5122 packets received by filter
0 packets dropped by kernel

На внешнем:
Code: [Select]
#tcpdump -vv -n -i rl0 net 81.1.205
tcpdump: listening on rl0
17:14:34.393368 212.212.212.1.60057 > 81.1.205.4.25: S [tcp sum ok] 680230494:680230494(0) win 65535 <mss 1460,nop,wscale 1,nop,nop,timestamp 1394299908 0,sackOK,eol> (DF) [tos 0x10]  (ttl 63, id 33885, len 64)
17:14:34.444615 81.1.205.4.25 > 212.212.212.1.60057: S [tcp sum ok] 1857064942:1857064942(0) ack 680230495 win 65535 <mss 1380,nop,wscale 1,nop,nop,timestamp 224428953 1394299908> (DF) (ttl 60, id 55880, len 60)
17:14:34.444848 212.212.212.1.60057 > 81.1.205.4.25: . [tcp sum ok] 1:1(0) ack 1 win 32832 <nop,nop,timestamp 1394299960 224428953> (DF) [tos 0x10]  (ttl 63, id 33887, len 52)
17:14:34.496427 81.1.205.4.25 > 212.212.212.1.60057: P [tcp sum ok] 1:30(29) ack 1 win 32832 <nop,nop,timestamp 224428958 1394299960> (DF) (ttl 60, id 55890, len 81)
17:14:34.596520 212.212.212.1.60057 > 81.1.205.4.25: . [tcp sum ok] 1:1(0) ack 30 win 32832 <nop,nop,timestamp 1394300112 224428958> (DF) [tos 0x10]  (ttl 63, id 33890, len 52)
17:14:47.034393 212.212.212.1.60057 > 81.1.205.4.25: P [tcp sum ok] 1:30(29) ack 30 win 32832 <nop,nop,timestamp 1394312550 224428958> (DF) [tos 0x10]  (ttl 63, id 34017, len 81)
17:14:47.085878 81.1.205.4.25 > 212.212.212.1.60057: P 30:138(108) ack 30 win 32832 <nop,nop,timestamp 224430217 1394312550> (DF) (ttl 60, id 57140, len 160)
17:14:47.185910 212.212.212.1.60057 > 81.1.205.4.25: . [tcp sum ok] 30:30(0) ack 138 win 32832 <nop,nop,timestamp 1394312702 224430217> (DF) [tos 0x10]  (ttl 63, id 34020, len 52)
17:15:06.553317 212.212.212.1.60057 > 81.1.205.4.25: P 30:72(42) ack 138 win 32832 <nop,nop,timestamp 1394332070 224430217> (DF) [tos 0x10]  (ttl 63, id 34065, len 94)
17:15:06.621817 81.1.205.4.25 > 212.212.212.1.60057: P [tcp sum ok] 138:152(14) ack 72 win 32832 <nop,nop,timestamp 224432169 1394332070> (DF) (ttl 60, id 59169, len 66)
17:15:06.721985 212.212.212.1.60057 > 81.1.205.4.25: . [tcp sum ok] 72:72(0) ack 152 win 32832 <nop,nop,timestamp 1394332239 224432169> (DF) [tos 0x10]  (ttl 63, id 34067, len 52)
17:15:14.256569 81.1.205.4.25 > 212.212.212.1.52152: R [tcp sum ok] 1599536588:1599536588(0) ack 1166300942 win 32832 (DF) (ttl 60, id 59704, len 40)
^C
13372 packets received by filter
0 packets dropped by kernel

Т.е. обмен шел нормально по порту 60057 с моей стороны, пока внешний сервак не решил ответить на порт 52152...
Причем похоже ресетом... Есть у кого мысли по этому поводу?
[span style='font-family:Geneva'][span style='font-size:8pt;line-height:100%'][span style='color:gray']Единственное условие, от которого зависит успех, есть терпение.   Л.Н.Толстой
[/span][/span][/span]

Offline never hood

  • Hero Member
  • *****
  • Posts: 845
  • Karma: +16/-10
  • www.4job.co
    • Работа, которую ты искал
Quote from: stranger
Есть у кого мысли по этому поводу?
1. Сесть и изучить тщательно руководства и примеры по фильтрации пакетов.
2. Если настраиваете удаленно, сделайте скрипт, который будет создавать новый фильтр, а через определенное время будет возвращать фильтрацию к предыдущему состоянию, тогда можете не бояться потерять соединение (сможете восстановить).

Offline stranger

  • Hero Member
  • *****
  • Posts: 922
  • Karma: +0/-0
    • http://
Quote from: never hood
1. Сесть и изучить тщательно руководства и примеры по фильтрации пакетов.
Да я их  много смотрел - уже голова пухнет...
Как я понимаю это направление в сторону setup keep-state и established?

Quote from: never hood
2. Если настраиваете удаленно, сделайте скрипт, который будет создавать новый фильтр, а через определенное время будет возвращать фильтрацию к предыдущему состоянию, тогда можете не бояться потерять соединение (сможете восстановить).
Я в скриптинге еще не сильно уверен, поэтому пока опасаюсь это делать... Хотя надо будет на виртуалке потестировать... С другой стороны в выходные думаю все-таки сервак подменить настроенной времянкой и занятся переустановкой сервака и тогда проблема с пробросом сама-собой пропадет, но с другой стороны это еще долго и письма успеют обратно завернуться...
[span style='font-family:Geneva'][span style='font-size:8pt;line-height:100%'][span style='color:gray']Единственное условие, от которого зависит успех, есть терпение.   Л.Н.Толстой
[/span][/span][/span]

Offline never hood

  • Hero Member
  • *****
  • Posts: 845
  • Karma: +16/-10
  • www.4job.co
    • Работа, которую ты искал
Quote from: stranger
Да я их  много смотрел - уже голова пухнет...
Ээээ... Разве я сказал "посмотреть"?!
Ключевое слово - "изучить"!
Т.е. полное понимание теории плюс практические упражнения!
Quote from: stranger
Как я понимаю это направление в сторону setup keep-state и established?
это святое!
Quote from: stranger
Я в скриптинге еще не сильно уверен, поэтому пока опасаюсь это делать...
Учиться, учиться и еще практиковаться...
На кошках! Т.е. на виртуалках!

Offline stranger

  • Hero Member
  • *****
  • Posts: 922
  • Karma: +0/-0
    • http://
Э...
Первый пункт... Было бы время сейчас этим бы и занялся, но проблема в том, что надо торопиться... В обычной ситуации я бы потихноьку разбирался и все и когда был бы уверен начал бы потихоньку все менять, но тут другое дело - приходится все быстро делать...

Святое я уже понял, но дело не в этом... Пакеты при передаче не бьются, так что FRAG тут не нужен, хотя он и в правилах фаервола запрещен...

Есть правда еще одна вещь при старте ната в конфиге указан только интерфейс... может в этом направлении копать? Например, включить same_port?

По поводу 3 пункта - ответ тотже что и в 1, но есть еще одна проблема - сейчас на серваке стоит очень старая ветка фрюхи...

И еще как я понимаю, если перестартовать natd, то после этого нужно перегрузить все правила ipfw? Или это необязательно?
« Last Edit: April 14, 2008, 19:42:39 by stranger »
[span style='font-family:Geneva'][span style='font-size:8pt;line-height:100%'][span style='color:gray']Единственное условие, от которого зависит успех, есть терпение.   Л.Н.Толстой
[/span][/span][/span]