Tomsk Sysadmins Forum

Unix => Администрирование => Topic started by: empty on April 28, 2010, 10:13:39

Title: FreeBSD. почта и 2IP
Post by: empty on April 28, 2010, 10:13:39
проблема в следующем:
FreeBSD 6.2
postfix, NAT, ipfw
все работало замечательно...

начали пользоваться безлимиткой, по VPN. томские сети прописал статические маршруты.
поднимается соединение и устанавливается default gateway VPN соединения.
и тут начались проблемы. Почта на внеху уходит через него, и как следствие с того IP, и не везде принимается.
пробовал форвардинг

${fwcmd} add fwd ${old_gateway} ip from me to any 25 out

не помогает.
Title: Re: FreeBSD. почта и 2IP
Post by: Unit on April 28, 2010, 13:03:09
А MX-ы для хождения почты прописаны? И что пишется в логе почтовика, когда не удаётся отправить письмо?
Title: Re: FreeBSD. почта и 2IP
Post by: Fair on April 28, 2010, 13:10:22
А покажы как выглядить твоя МХ зона: #dig твой домен MX
Title: Re: FreeBSD. почта и 2IP
Post by: empty on April 28, 2010, 13:43:46
dig tomsp.tom.ru MX

; <<>> DiG 9.3.4-P1 <<>> tomsp.tom.ru MX
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19668
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0

;; QUESTION SECTION:
;tomsp.tom.ru.                  IN      MX

;; ANSWER SECTION:
tomsp.tom.ru.           3600    IN      MX      10 mx.tomsp.tom.ru.

;; AUTHORITY SECTION:
tomsp.tom.ru.           3600    IN      NS      ns2.tomsp.tom.ru.
tomsp.tom.ru.           3600    IN      NS      ns1.tomsp.tom.ru.

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Apr 28 13:41:37 2010
;; MSG SIZE  rcvd: 85
Title: Re: FreeBSD. почта и 2IP
Post by: nuclight on April 28, 2010, 14:12:21
Ядро без IPFIREWALL_FORWARD собрано? Правило не в том месте рулесета стоит?
Title: Re: FreeBSD. почта и 2IP
Post by: Fair on April 28, 2010, 14:14:56
Тебе для mx.tomsp.tom.ru надо к нему прикрутить свой айпи который у тебя ВПН.
Title: Re: FreeBSD. почта и 2IP
Post by: empty on April 28, 2010, 14:20:14
да в том-то и проблема, что он динамический
Title: Re: FreeBSD. почта и 2IP
Post by: Fair on April 28, 2010, 14:39:02
можно устроит через relayhost, в настройках постфикса
Title: Re: FreeBSD. почта и 2IP
Post by: Fair on April 28, 2010, 14:49:33
это еще почитай http://www.linuxshop.ru/index.php?autocom=ibwiki&cmd=article&do=word_version&id=65
Title: Re: FreeBSD. почта и 2IP
Post by: nuclight on April 29, 2010, 13:29:53
Нечего делать MX'ы на динамическом IP. Форвардинг надо настраивать, и добится, чтоб он работал.
Title: Re: FreeBSD. почта и 2IP
Post by: empty on May 04, 2010, 16:44:12
часть правил:

${fwcmd} add divert 8668 ip from ${ournet} to table\(13\) out via ${oif}   #table(13) - томские сети
${fwcmd} add fwd 217.29.86.225 log ip from localhost to any 25 out via ${vpnif} #форвард с ВПН-интерфейса в шлюз, который нужен
${fwcmd} add divert 8668 ip from any to any in via ${oif}

причем судя по логам, все работает...
May  4 16:54:30 tomsp kernel: ipfw: 1500 Forward to 217.29.86.225 TCP 79.136.208.174:50795 94.100.176.20:25 out via ng0
May  4 16:54:30 tomsp kernel: ipfw: 1500 Forward to 217.29.86.225 TCP 79.136.208.174:52467 94.100.176.20:25 out via ng0
May  4 16:54:30 tomsp kernel: ipfw: 1500 Forward to 217.29.86.225 TCP 79.136.208.174:55781 94.100.176.20:25 out via ng0
May  4 16:54:34 tomsp kernel: ipfw: 1500 Forward to 217.29.86.225 TCP 79.136.208.174:50795 94.100.176.20:25 out via ng0
May  4 16:54:34 tomsp kernel: ipfw: 1500 Forward to 217.29.86.225 TCP 79.136.208.174:52467 94.100.176.20:25 out via ng0
May  4 16:54:34 tomsp kernel: ipfw: 1500 Forward to 217.29.86.225 TCP 79.136.208.174:55781 94.100.176.20:25 out via ng0
May  4 16:54:37 tomsp kernel: ipfw: 1500 Forward to 217.29.86.225 TCP 79.136.208.174:50795 94.100.176.20:25 out via ng0
May  4 16:54:37 tomsp kernel: ipfw: 1500 Forward to 217.29.86.225 TCP 79.136.208.174:52467 94.100.176.20:25 out via ng0
May  4 16:54:37 tomsp kernel: ipfw: 1500 Forward to 217.29.86.225 TCP 79.136.208.174:55781 94.100.176.20:25 out via ng0
May  4 16:54:40 tomsp kernel: ipfw: 1500 Forward to 217.29.86.225 TCP 79.136.208.174:50795 94.100.176.20:25 out via ng0
May  4 16:54:40 tomsp kernel: ipfw: limit 10 reached on entry 1500

но приходят письма почему-то с ВПН-а
Title: Re: FreeBSD. почта и 2IP
Post by: nuclight on May 04, 2010, 18:30:26
Еще раз повторяю уже звучавший выше вопрос. С какими опциями собрано ядро?
Title: Re: FreeBSD. почта и 2IP
Post by: empty on May 04, 2010, 20:07:43
все необходимые опции присутствуют

options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=10
options         IPFIREWALL_FORWARD
options         IPDIVERT
Title: Re: FreeBSD. почта и 2IP
Post by: mrBuG on May 05, 2010, 13:56:37
${fwcmd} add fwd 217.29.86.225 log ip from localhost to any 25 out via ${vpnif} #форвард с ВПН-интерфейса в шлюз, который нужен
А разве fwd работает на внешний Ip?... Если у тебя это Ip шлюза, попробуй поставь сюда ip интерфейса своего маршрутизатора, через который трафик должен улетать.
Title: Re: FreeBSD. почта и 2IP
Post by: nuclight on May 05, 2010, 14:13:00
Что показывает tcpdump -ni ng0 port 25 и tcpdump -ni ${oif} port 25  (на обоих интерфейсах) ?
Title: Re: FreeBSD. почта и 2IP
Post by: empty on May 10, 2010, 13:52:50
путем перестановки очередности правил, добился, чтоб пакеты заворачивались в нужный шлюз, но
в адресе отправителя стоит ИП ВПН-соединения:

tcpdump -i ${oif} port 25

13:48:36.334779 IP 79.136.208.235.57742 > mxs.mail.ru.smtp: S 1879637470:1879637470(0) win 65535 <mss 1420,sackOK,eol>
13:48:39.430541 IP 79.136.208.235.57742 > mxs.mail.ru.smtp: S 1879637470:1879637470(0) win 65535 <mss 1420,sackOK,eol>
13:48:42.733652 IP 79.136.208.235.57742 > mxs.mail.ru.smtp: S 1879637470:1879637470(0) win 65535 <mss 1420,sackOK,eol>
Title: Re: FreeBSD. почта и 2IP
Post by: nuclight on May 12, 2010, 16:53:21
Ага, понятно, fwd работает, дело не в нём. Дело в выборе исходного IP-адреса, а выбирается он согласно таблице маршрутизации. Маршрутизация смотрит на VPN, выбирается адрес с того соединения, куда смотрит маршрут, а fwd не меняет содержимое пакета.

Варианты решения:

1) Апгрейд системы, в новых версиях есть поддержка нескольких таблиц маршрутизации и утилита setfib, позволяющая при запуске приложения привязать его к указанной таблице. Тогда почтовик запускается с таблицей, в которой маршрут по умолчанию смотрит на ${oif} и никаких VPNов в ней не появляется.

2) Запустить еще один NAT (натящий в IP-адрес реального интерфейса), в который заворачивать только почтовик. После ната делать fwd с этого IP-адреса на соответствующий шлюз.

3) Попробовать (не факт, что получится) жестко привязать почтовик (его настройки) к адресу нужного интерфейса, а не *:*, тогда, по идее, будут пакеты с нужным src без ната, далее fwd как в варианте 2.
Title: Re: FreeBSD. почта и 2IP
Post by: Alloy on May 13, 2010, 00:48:01
это...
имея два канала, два IP, потрудитесь настроить policy routing,
иначе отваливается не только почта, но и все остальное.

т.е. если пришло на IP1, то ответ должен уходить от IP1 по каналу1 (а не по default route)
если пришло на IP2, то ответ должен уходить от IP2 по каналу2 (а не по default route)

для pf это reply-to, route-to
для ipfw не помню
Title: Re: FreeBSD. почта и 2IP
Post by: nuclight on May 13, 2010, 15:19:16
Я так понимаю, второй канал используется только для исходящих, так что это здесь не нужно.

На всякий случай, как сделать его на ipfw, есть тут: http://nuclight.livejournal.com/124348.html
Title: Re: FreeBSD. почта и 2IP
Post by: Konstantine on May 13, 2010, 19:11:24
:) а можно было вообще "схитрить"

повесить нат на ВПНовский интерфейс и натить на нём все исходящие, можно абсолютно со всех "any", а можно исходящие с динамического ВПНовского IP до любых dst IP по порту 25 и подменять это всё на свой старый ТОМСКИЙ IP так у тебя твои письма будут уходить по халявному VPN маршруту при этом с томским IP`шнигом, правда ответы и аск будут по правилам маршрутизации приходить через томск ди пофигу за то почта работать будет.

У мя в конторе три провайдера недавно сразу было)))), так благо я PF использую на нём всё легко и удобно делается.
А можешь у провайдера попросить IP на ВПН интерфейс постоянный, тада в named`е через view томскую и внешнюю зону настроишь томску будешь mx отдавать томский IP, всем внешним DNS серверам внешний, но серано основная масса у тя будет через внешний интерфейс лазить т.к. все томские ДНСы спрашивают у корней, а корни для тя это - ВНЕХА ))
Title: Re: FreeBSD. почта и 2IP
Post by: empty on May 13, 2010, 20:52:16
как подменять ИП? мне проще было бы подменять завернутые с ВПН на мой норм. ИП и все... бед не знал бы )
Title: Re: FreeBSD. почта и 2IP
Post by: Alloy on May 13, 2010, 22:09:55
nuclight уже ответил, прописать в почтовой программе, чтобы использовала нужный IP
например в postfix это smtp_bind_address

ну и policy routing должен работать либо целиком, либо частичным fwd как у вас
Title: Re: FreeBSD. почта и 2IP
Post by: nuclight on May 14, 2010, 13:22:17
и подменять это всё на свой старый ТОМСКИЙ IP так у тебя твои письма будут уходить по халявному VPN маршруту при этом с томским IP`шнигом, правда ответы и аск будут по правилам маршрутизации приходить через томск ди пофигу за то почта работать будет.

Если провайдер VPN или его провайдер режут чужие адреса (а вообще-то это в Интернете правило хорошего тона) для борьбы со спуфингом, то работать не будет.
Title: Re: FreeBSD. почта и 2IP
Post by: empty on May 14, 2010, 13:50:37
smtp_bind_address привязал к нужному ИП, и весь почтовый трафик завернул в нужный шлюз...
заработало... вроде бы нормально ))

спасибо большое всем откликнувшимся )