The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Помогите разобраться с MX on FreeBSD10 и 2 ISP"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Почта / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"Помогите разобраться с MX on FreeBSD10 и 2 ISP"  +/
Сообщение от Azmus email(ok) on 03-Ноя-14, 00:30 
Помогите разобраться с MX FreeBSD и 2 ISP

Ситуация стандартная, 2 провайдера, один сервер и локалка на заднем интерфейсе.
Есть необходимость, чтобы оба интерфейса отвечали в интернет трафиком со своими адресами.
Пользователи из локалки приходят только за почтой, никаких натов, роутингов для LAN, не используется.

Есть механизм fib в FreeBSD 10, который призван это обеспечить.
Итак, имеем:

/etc/rc.conf
ifconfig_vmx0="inet 192.168.0.232 netmask 255.255.255.0"
ifconfig_vmx1="inet a.a.a.3 netmask 255.255.255.248 fib 1"
ifconfig_vmx2="inet z.z.z.138 netmask 255.255.255.248 fib 2"
defaultrouter="NO"

Что нам дает:
vmx0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=60039b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,TSO6,RXCSUM_IPV6,TXCSUM_IPV6>
        ether 00:0c:29:42:52:d4
        inet 192.168.0.232 netmask 0xffffff00 broadcast 192.168.0.255
        media: Ethernet autoselect
        status: active
vmx1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=60039b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,TSO6,RXCSUM_IPV6,TXCSUM_IPV6>
        ether 00:0c:29:42:52:de
        inet a.a.a.3 netmask 0xfffffff8 broadcast a.a.a.7
        media: Ethernet autoselect
        status: active
        fib: 1
vmx2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=60039b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,TSO6,RXCSUM_IPV6,TXCSUM_IPV6>
        ether 00:0c:29:42:52:e8
        inet z.z.z.138 netmask 0xfffffff8 broadcast z.z.z.143
        media: Ethernet autoselect
        status: active
        fib: 2

/etc/rc.firewall

        ${fwcmd} add setfib 1 ip from any to any via vmx1
        ${fwcmd} add setfib 2 ip from any to any via vmx2
        ${fwcmd} add 65000 pass all from any to any


/usr/local/etc/rc.d/setfib.sh

#!/bin/sh

/usr/sbin/setfib 1 /sbin/route delete default
/usr/sbin/setfib 1 /sbin/route add default a.a.a.1

/usr/sbin/setfib 2 /sbin/route delete default
/usr/sbin/setfib 2 /sbin/route add default z.z.z.137


setfib 0 netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
a.a.a.0/29    link#2             U           0        0   vmx1
a.a.a.3       link#2             UHS         0        0    lo0
z.z.z.136/29  link#3             U           0        0   vmx2
z.z.z.138     link#3             UHS         0        0    lo0
127.0.0.1          link#4             UH          0        0    lo0
192.168.0.0/24     link#1             U           0     1660   vmx0
192.168.0.232      link#1             UHS         0        0    lo0
192.168.1.0/24     192.168.0.1        UGS         0        0   vmx0
192.168.2.0/24    192.168.0.1        UGS         0        0   vmx0
192.168.100.0/30   192.168.0.1        UGS         0        0   vmx0

setfib 1 netstat -rn
Routing tables (fib: 1)

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            a.a.a.1       UGS         0      383   vmx1
a.a.a.0/29    link#2             U           0        0   vmx1
z.z.z.136/29  link#3             U           0        0   vmx2
127.0.0.1          link#4             UH          0        0    lo0
192.168.0.0/24     link#1             U           0        1   vmx0

setfib 2 netstat -rn
Routing tables (fib: 2)

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            z.z.z.137     UGS         0      103   vmx2
a.a.a.0/29    link#2             U           0        0   vmx1
z.z.z.136/29  link#3             U           0        0   vmx2
127.0.0.1          link#4             UH          0        0    lo0
192.168.0.0/24     link#1             U           0        1   vmx0


Вроде все правильно.
Включаем систему, и видим, что пинг ходит вполне нормально:
Вводим ping z.z.z.138  на удаленной системе,

и  tcpdump -i vmx2 на локальной,

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vmx2, link-type EN10MB (Ethernet), capture size 65535 bytes
02:11:15.867715 IP remote.com > z.z.z.138: ICMP echo request, id 58214, seq 20, length 64
02:11:15.867766 IP z.z.z.138 > remote.com: ICMP echo reply, id 58214, seq 20, length 64
02:11:16.868765 IP remote.com > z.z.z.138: ICMP echo request, id 58214, seq 21, length 64
02:11:16.868796 IP z.z.z.138 > remote.com: ICMP echo reply, id 58214, seq 21, length 64

Все как положено.

Теперь второй канал:
Вводим ping a.a.a.3
и  tcpdump -i vmx1 на локальной,

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vmx1, link-type EN10MB (Ethernet), capture size 65535 bytes
02:13:02.645515 IP remote.com > a.a.a.3: ICMP echo request, id 17669, seq 6, length 64
02:13:02.645538 IP a.a.a.3 > remote.com: ICMP echo reply, id 17669, seq 6, length 64
02:13:03.648197 IP remote.com > a.a.a.3: ICMP echo request, id 17669, seq 7, length 64
02:13:03.648220 IP a.a.a.3 > remote.com: ICMP echo reply, id 17669, seq 7, length 64

Тоже все как положено.

НО! Как только пробуем
telnet z.z.z.138 25
ssh z.z.z.138
Или же:
telnet a.a.a.3 25
ssh a.a.a.3

конект не устанавливается. Видим следующее:

Удаленная: ssh a.a.a.3

Локальная:
>tcpdump -v -i vmx1

tcpdump: listening on vmx1, link-type EN10MB (Ethernet), capture size 65535 bytes
02:19:59.290704 IP (tos 0x0, ttl 60, id 1432, offset 0, flags [DF], proto TCP (6), length 60)
    remote.com.58498 > a.a.a.3.ssh: Flags [S], cksum 0x4aa0 (correct), seq 2169339758, win 65535, options [mss 1460,nop,wscale 6,sackOK,TS val 2601205955 ecr 0], length 0
02:20:02.290826 IP (tos 0x0, ttl 60, id 2366, offset 0, flags [DF], proto TCP (6), length 60)
    remote.com.58498 > a.a.a.3.ssh: Flags [S], cksum 0x3ee8 (correct), seq 2169339758, win 65535, options [mss 1460,nop,wscale 6,sackOK,TS val 2601208955 ecr 0], length 0
02:20:05.491237 IP (tos 0x0, ttl 60, id 3105, offset 0, flags [DF], proto TCP (6), length 60)
    remote.com.58498 > a.a.a.3.ssh: Flags [S], cksum 0x3268 (correct), seq 2169339758, win 65535, options [mss 1460,nop,wscale 6,sackOK,TS val 2601212155 ecr 0], length 0
02:20:08.691447 IP (tos 0x0, ttl 60, id 3730, offset 0, flags [DF], proto TCP (6), length 48)
    remote.com.58498 > a.a.a.3.ssh: Flags [S], cksum 0x628e (correct), seq 2169339758, win 65535, options [mss 1460,sackOK,eol], length 0
02:20:11.891280 IP (tos 0x0, ttl 60, id 4841, offset 0, flags [DF], proto TCP (6), length 48)
    remote.com.58498 > a.a.a.3.ssh: Flags [S], cksum 0x628e (correct), seq 2169339758, win 65535, options [mss 1460,sackOK,eol], length 0
^C
5 packets captured
5 packets received by filter
0 packets dropped by kernel

Удаленная: ssh z.z.z.138

Локальная: tcpdump -v -i vmx2
tcpdump: listening on vmx2, link-type EN10MB (Ethernet), capture size 65535 bytes
02:21:23.861273 IP (tos 0x28, ttl 52, id 33398, offset 0, flags [DF], proto TCP (6), length 48)
    remote.com.59082 > z.z.z.138.ssh: Flags [S], cksum 0x654b (correct), seq 2252867305, win 65535, options [mss 1452,sackOK,eol], length 0


То есть сесия не устанавливается. Обратный пакет как будто не генерируется.
Где копать? Так как все подобные подключения шли по старым версиям FreeBSD с костылями из фаерволов (ipfw fwd, pf)
Как сделать эту конфигурацию, чтоб TCP сессии работали так же как и ICMP? Ведь пинги же бегают, почему нельзя подключиться к SSH или выставить sendmail?

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Помогите разобраться с MX on FreeBSD10 и 2 ISP"  +/
Сообщение от Pahanivo (ok) on 03-Ноя-14, 19:46 
мильон раз обсасывалось и разжевывалось - воспользуйся поиском
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Помогите разобраться с MX on FreeBSD10 и 2 ISP"  +/
Сообщение от Azmus (ok) on 03-Ноя-14, 19:51 
> мильон раз обсасывалось и разжевывалось - воспользуйся поиском

Воспользовался, и не раз, и не один день. Нигде не видел, чтоб пинги шли, а приложения не отвечали...
В основном рассматривается тема пропуска клиентов в мир, или балансировка трафика.
А вот в таком варианте описанные примеры есть только FreeBSD 6.1 без fib с ipfw. Но эта технология уже устарела, пора сделать все по новому.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Помогите разобраться с MX on FreeBSD10 и 2 ISP"  +/
Сообщение от Аноним (??) on 03-Ноя-14, 20:17 
>> мильон раз обсасывалось и разжевывалось - воспользуйся поиском
> Воспользовался, и не раз, и не один день. Нигде не видел, чтоб
> пинги шли, а приложения не отвечали...

Садись, два! И завтра родителей в школу :)

Ладно, на тебе подсказку:
Чтобы прибиндится к удалёенному TCP порту, надо чтобы там его кто то слушал :) + что ты читал про fib'ы?
По моему - подсказал достаточно :)

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Помогите разобраться с MX on FreeBSD10 и 2 ISP"  +/
Сообщение от Azmus email(ok) on 03-Ноя-14, 21:53 
>>> мильон раз обсасывалось и разжевывалось - воспользуйся поиском
>> Воспользовался, и не раз, и не один день. Нигде не видел, чтоб
>> пинги шли, а приложения не отвечали...
> Садись, два! И завтра родителей в школу :)
> Ладно, на тебе подсказку:
> Чтобы прибиндится к удалёенному TCP порту, надо чтобы там его кто то
> слушал :) + что ты читал про fib'ы?
> По моему - подсказал достаточно :)

то есть чтобы sendmail отвечал в нужный маршрут запускать sendmail тоже в с фиб?
sendmail_fib="1"

или переписать рц скрипты, чтоб запускать 2 sendmail в разных fib, чтоб он отвечал на разные маршруты?
Стек ядра не сохраняет tcp сесию с параметром fib?

Так что-ли?

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Помогите разобраться с MX on FreeBSD10 и 2 ISP"  +/
Сообщение от Денис (??) on 04-Ноя-14, 06:28 
> или переписать рц скрипты, чтоб запускать 2 sendmail в разных fib, чтоб
> он отвечал на разные маршруты?
> Стек ядра не сохраняет tcp сесию с параметром fib?

имхо самый простой вариант перекидыать исходящие пакеты посредством fwd на нужный интерфейс в зависимости от адреса источника

а пинг работает потому, что он соединения не устанавливает, запрос уходит на одного провайдера, а ответ приходит с другого


Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Помогите разобраться с MX on FreeBSD10 и 2 ISP"  +/
Сообщение от Azmus (ok) on 05-Ноя-14, 17:58 
>> или переписать рц скрипты, чтоб запускать 2 sendmail в разных fib, чтоб
>> он отвечал на разные маршруты?
>> Стек ядра не сохраняет tcp сесию с параметром fib?
> имхо самый простой вариант перекидыать исходящие пакеты посредством fwd на нужный интерфейс
> в зависимости от адреса источника
> а пинг работает потому, что он соединения не устанавливает, запрос уходит на
> одного провайдера, а ответ приходит с другого

Нет, я же выложил дампы, и запрос и ответ уходит через один интерфейс.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Помогите разобраться с MX on FreeBSD10 и 2 ISP"  +/
Сообщение от Денис (??) on 06-Ноя-14, 05:55 
> Нет, я же выложил дампы, и запрос и ответ уходит через один
> интерфейс.

Действительно. Был невнимателен.
Наверное это оно
http://lists.freebsd.org/pipermail/freebsd-ipfw/2010-May/004...

Остается либо запускать два сендмайла с разными FIB либо попробовать fwd

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Помогите разобраться с MX on FreeBSD10 и 2 ISP"  +/
Сообщение от rusadmin (ok) on 06-Ноя-14, 15:03 

> Нигде не видел, чтоб
> пинги шли, а приложения не отвечали...

Во фряхе не силен, но обычно такой косяк наблюдается при проблеме MTU/TCP_MSS.
Если то, что выше не поможет - проверьте это тоже. Лишним не будет

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру