Приветсвую господа! Изложу свою проблему. Нашей организации выделили 2ой канал связи. Настроил балансировку каналов. Пробросил соединение бухгалтерских компов на "старый" внешний интерфейс с помощью маркировки пакетов. Но вот как добится чтобы почтовый сервер sendmail отсылал данные через "старый" интерфейс, я чегото непойму. Помоготи кто знает!!! Полностью скрипт маршрутизации приводить наверно не стоит, вот конечный кусокIP_INET1="192.168.1.2"
IP_INET2="192.168.2.2"
IP_LOCAL="10.64.3.250"
IF_LOCAL="eth1"
IF_INET1="eth0"
IF_INET2="eth2"
......
/sbin/ip route change default scope global nexthop via $IP_INET1 dev $IF_INET1 weight 2 nexthop via $IP_INET2 dev $IF_INET2 weight 3
/sbin/ip rule delete table T1
/sbin/ip rule delete table T1
/sbin/ip rule delete table T2
/sbin/ip rule delete table T2
/sbin/ip rule add from $IP_INET1 table T1
/sbin/ip rule add from $IP_INET2 table T2
/sbin/ip rule add fwmark 10 table T1
/sbin/ip rule add fwmark 11 table T2
/sbin/ip route flush cacheДалее скрипт настройки брандмауэра
IPT="/sbin/iptables"
NET_SUB1="10.64.3.10/32"
NET_SUB2="10.64.3.8/32"
NET_LOCAL="10.64.3.0/24"
$IPT -t nat -F
$IPT -t mangle -F
$IPT -t mangle -A PREROUTING -s $NET_SUB1 -d ! $NET_LOCAL -j MARK --set-mark 10
$IPT -t mangle -A PREROUTING -s $NET_SUB2 -d ! $NET_LOCAL -j MARK --set-mark 10
##### Далее (4 строки) идут мои извраты в попытке добиться чтобы почта тоже шла через eth0, методом маркировки пакетов, но пока ничего невыходит
$IPT -t mangle -A PREROUTING -s ! $NET_LOCAL -d ! $NET_LOCAL -p tcp --dport 25 -j MARK --set-mark 10
$IPT -t mangle -A PREROUTING -s ! $NET_LOCAL -d ! $NET_LOCAL -p udp --dport 25 -j MARK --set-mark 10
$IPT -t mangle -A PREROUTING -s 127.0.0.1/32 -d ! $NET_LOCAL -p tcp --dport 25 -j MARK --set-mark 10
$IPT -t mangle -A PREROUTING -s 127.0.0.1/32 -d ! $NET_LOCAL -p udp --dport 25 -j MARK --set-mark 10$IPT -t nat -A PREROUTING -i eth0 -d 192.168.1.2 -s 95.107.63.10 -j DNAT --to-destination 10.64.3.10
$IPT -t nat -A POSTROUTING -m mark --mark 10 -j MASQUERADE
>[оверквотинг удален]
> ##### Далее (4 строки) идут мои извраты в попытке добиться чтобы почта
> тоже шла через eth0, методом маркировки пакетов, но пока ничего невыходит
> $IPT -t mangle -A PREROUTING -s ! $NET_LOCAL -d ! $NET_LOCAL -p
> tcp --dport 25 -j MARK --set-mark 10
> $IPT -t mangle -A PREROUTING -s ! $NET_LOCAL -d ! $NET_LOCAL -p
> udp --dport 25 -j MARK --set-mark 10
> $IPT -t mangle -A PREROUTING -s 127.0.0.1/32 -d ! $NET_LOCAL -p tcp
> --dport 25 -j MARK --set-mark 10
> $IPT -t mangle -A PREROUTING -s 127.0.0.1/32 -d ! $NET_LOCAL -p udp
> --dport 25 -j MARK --set-mark 10пакеты от локальных программ PREROUTING не проходят, в OUTPUT
> $IPT -t nat -A PREROUTING -i eth0 -d 192.168.1.2 -s 95.107.63.10 -j
> DNAT --to-destination 10.64.3.10
> $IPT -t nat -A POSTROUTING -m mark --mark 10 -j MASQUERADE
> пакеты от локальных программ PREROUTING не проходят, в OUTPUT+1 "Это должен знать(*) каждый!
(*)как найти! G://прохождение пакетов iptables mangle"тмhttps://www.opennet.ru/openforum/vsluhforumID10/3437.html#3
https://www.opennet.ru/docs/RUS/iptables/#TRAVERSINGOFTABLES
>> пакеты от локальных программ PREROUTING не проходят, в OUTPUT
> +1 "Это должен знать(*) каждый!
> (*)как найти!
> G://прохождение пакетов iptables mangle"тм
> https://www.opennet.ru/openforum/vsluhforumID10/3437.html#3
> https://www.opennet.ru/docs/RUS/iptables/#TRAVERSINGOFTABLESСпасибо большое за ссылки но вопрос заключается не в том где почитать а в том как это выглядит на практике. Замена правил на
$IPT -t mangle -A OUTPUT -s 127.0.0.1/32 -d ! $NET_LOCAL -p tcp --dport 25 -j MARK --set-mark 10
$IPT -t mangle -A OUTPUT -s 127.0.0.1/32 -d ! $NET_LOCAL -p udp --dport 25 -j MARK --set-mark 10к положительным результатам не приводит. Т.е. часть почты идет нормально, а часть отбраковывается удаленными почтовиками, т.к. они приходят с IP-адреса заблокированого за спам.
P.S. Из этого следует что правила не срабатывают, т.е. пакеты похоже выгледят не так. Большая просьба кто знает подскажите как отлавливать пакеты сендмейла и маркировать их(интересуют именно исходящие пакеты). Т.к. входящие идут туда куда надо, что и неудевительно, т.к. DNS у провайдер заполнен вроде правильно!!!
> но вопрос заключается не в том где
>а в том как это выглядит на практике.Ну, примерно так и выглядит.... Наверное.
> $IPT -t mangle -A OUTPUT -s 127.0.0.1/32 -d ! $NET_LOCAL -p tcp
> --dport 25 -j MARK --set-mark 10"-s 127.0.0.1/32" убери.
> $IPT -t mangle -A OUTPUT -s 127.0.0.1/32 -d ! $NET_LOCAL -p udp
> --dport 25 -j MARK --set-mark 10Это правило убери.
>> но вопрос заключается не в том где
>>а в том как это выглядит на практике.
> Ну, примерно так и выглядит.... Наверное.
>> $IPT -t mangle -A OUTPUT -s 127.0.0.1/32 -d ! $NET_LOCAL -p tcp
>> --dport 25 -j MARK --set-mark 10
> "-s 127.0.0.1/32" убери.
>> $IPT -t mangle -A OUTPUT -s 127.0.0.1/32 -d ! $NET_LOCAL -p udp
>> --dport 25 -j MARK --set-mark 10
> Это правило убери.ВО!! Спасибо большое! Заработало!!
> пакеты от локальных программ PREROUTING не проходят, в OUTPUT<<В действительности всё не как на самом деле.>>
http://ebtables.sourceforge.net/br_fw_ia/PacketFlow.png/
http://ebtables.sourceforge.net/br_fw_ia/br_fw_ia.html
<<Но и тогда сомнения не покидают меня.>>Вот пытался про броутеры читать... А ещё, слышал, есть %-O heavy voodo у VPS-ников.
> Приветсвую господа! Изложу свою проблему. Нашей организации выделили 2ой канал связи. Настроил
> балансировку каналов. Пробросил соединение бухгалтерских компов на "старый" внешний интерфейс
> с помощью маркировки пакетов. Но вот как добится чтобы почтовый сервер
> sendmail отсылал данные через "старый" интерфейс, я чегото непойму. Помоготи ктоЕсли sendmail на этой-же машине, раскомментарьте в sendmail.cf
#O ClientPortOptions=Family=inet, Address=0.0.0.0
И пропишите нужный ip. Если нужно чтоб он слушал на определенном ip есть еще и
#O DaemonPortOptions=Name=IPv4, Family=inet, Address=0.0.0.0
>> Приветсвую господа! Изложу свою проблему. Нашей организации выделили 2ой канал связи. Настроил
>> балансировку каналов. Пробросил соединение бухгалтерских компов на "старый" внешний интерфейс
>> с помощью маркировки пакетов. Но вот как добится чтобы почтовый сервер
>> sendmail отсылал данные через "старый" интерфейс, я чегото непойму. Помоготи кто
> Если sendmail на этой-же машине, раскомментарьте в sendmail.cf
> #O ClientPortOptions=Family=inet, Address=0.0.0.0Раскоментировал
O ClientPortOptions=Family=inet, Address=192.168.1.2
192.168.1.2 - это адрес того интерфейса через который мне надо отправлять почту(правда этот интерфейс смотрит на роутер который соответсвенно пробрасывает на реальные внешний IP)Но вылезли еще более кривые грабли, теперь вообще ничего не уходит наружу.
в maillog вижу теперь следующее
Nov 15 13:54:46 localhost sendmail[11093]: pAFAsjkJ011091: to=<ххххх@yandex.ru>, ctladdr=<admin@ххххххх.orel.ru> (500/500), delay=00:00:00, xdela
y=00:00:00, mailer=esmtp, pri=120459, relay=mx.yandex.ru. [77.88.21.89], dsn=4.0.0, stat=Deferred: Transport endpoint is not connected
> Но вылезли еще более кривые грабли, теперь вообще ничего не уходит наружу.
> y=00:00:00, mailer=esmtp, pri=120459, relay=mx.yandex.ru. [77.88.21.89], dsn=4.0.0,
> stat=Deferred: Transport endpoint is not connectedЭто уже в iptables и маршрутизации. Если вы задали clientportoptions, то исходящие соединения пойдут с этого ip, и соотв обратно на этот ip должны идти. Если все в старом варианте работало, то при задании clientportoptions вообще ничего не надо было делать ни с iptables ни с маршрутизацией.