Author Topic: FreeBSD. почта и 2IP  (Read 11542 times)

0 Members and 1 Guest are viewing this topic.

Offline empty

  • Jr. Member
  • **
  • Posts: 73
  • Karma: +0/-0
FreeBSD. почта и 2IP
« 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

не помогает.

Offline Unit

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1263
  • Karma: +9/-1
Re: FreeBSD. почта и 2IP
« Reply #1 on: April 28, 2010, 13:03:09 »
А MX-ы для хождения почты прописаны? И что пишется в логе почтовика, когда не удаётся отправить письмо?

Offline Fair

  • Newbie
  • *
  • Posts: 49
  • Karma: +0/-0
Re: FreeBSD. почта и 2IP
« Reply #2 on: April 28, 2010, 13:10:22 »
А покажы как выглядить твоя МХ зона: #dig твой домен MX

Offline empty

  • Jr. Member
  • **
  • Posts: 73
  • Karma: +0/-0
Re: FreeBSD. почта и 2IP
« Reply #3 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

Offline nuclight

  • Full Member
  • ***
  • Posts: 207
  • Karma: +1/-2
    • http://antigreen.org
Re: FreeBSD. почта и 2IP
« Reply #4 on: April 28, 2010, 14:12:21 »
Ядро без IPFIREWALL_FORWARD собрано? Правило не в том месте рулесета стоит?
WBR, Nuclear Lightning
[FreeBSD][Давить зелёных]

Offline Fair

  • Newbie
  • *
  • Posts: 49
  • Karma: +0/-0
Re: FreeBSD. почта и 2IP
« Reply #5 on: April 28, 2010, 14:14:56 »
Тебе для mx.tomsp.tom.ru надо к нему прикрутить свой айпи который у тебя ВПН.

Offline empty

  • Jr. Member
  • **
  • Posts: 73
  • Karma: +0/-0
Re: FreeBSD. почта и 2IP
« Reply #6 on: April 28, 2010, 14:20:14 »
да в том-то и проблема, что он динамический

Offline Fair

  • Newbie
  • *
  • Posts: 49
  • Karma: +0/-0
Re: FreeBSD. почта и 2IP
« Reply #7 on: April 28, 2010, 14:39:02 »
можно устроит через relayhost, в настройках постфикса

Offline Fair

  • Newbie
  • *
  • Posts: 49
  • Karma: +0/-0
Re: FreeBSD. почта и 2IP
« Reply #8 on: April 28, 2010, 14:49:33 »

Offline nuclight

  • Full Member
  • ***
  • Posts: 207
  • Karma: +1/-2
    • http://antigreen.org
Re: FreeBSD. почта и 2IP
« Reply #9 on: April 29, 2010, 13:29:53 »
Нечего делать MX'ы на динамическом IP. Форвардинг надо настраивать, и добится, чтоб он работал.
WBR, Nuclear Lightning
[FreeBSD][Давить зелёных]

Offline empty

  • Jr. Member
  • **
  • Posts: 73
  • Karma: +0/-0
Re: FreeBSD. почта и 2IP
« Reply #10 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

но приходят письма почему-то с ВПН-а
« Last Edit: May 04, 2010, 17:26:03 by empty »

Offline nuclight

  • Full Member
  • ***
  • Posts: 207
  • Karma: +1/-2
    • http://antigreen.org
Re: FreeBSD. почта и 2IP
« Reply #11 on: May 04, 2010, 18:30:26 »
Еще раз повторяю уже звучавший выше вопрос. С какими опциями собрано ядро?
WBR, Nuclear Lightning
[FreeBSD][Давить зелёных]

Offline empty

  • Jr. Member
  • **
  • Posts: 73
  • Karma: +0/-0
Re: FreeBSD. почта и 2IP
« Reply #12 on: May 04, 2010, 20:07:43 »
все необходимые опции присутствуют

options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=10
options         IPFIREWALL_FORWARD
options         IPDIVERT

Offline mrBuG

  • Newbie
  • *
  • Posts: 7
  • Karma: +0/-0
Re: FreeBSD. почта и 2IP
« Reply #13 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 интерфейса своего маршрутизатора, через который трафик должен улетать.

Offline nuclight

  • Full Member
  • ***
  • Posts: 207
  • Karma: +1/-2
    • http://antigreen.org
Re: FreeBSD. почта и 2IP
« Reply #14 on: May 05, 2010, 14:13:00 »
Что показывает tcpdump -ni ng0 port 25 и tcpdump -ni ${oif} port 25  (на обоих интерфейсах) ?
WBR, Nuclear Lightning
[FreeBSD][Давить зелёных]

Offline empty

  • Jr. Member
  • **
  • Posts: 73
  • Karma: +0/-0
Re: FreeBSD. почта и 2IP
« Reply #15 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>
« Last Edit: May 10, 2010, 19:39:12 by empty »

Offline nuclight

  • Full Member
  • ***
  • Posts: 207
  • Karma: +1/-2
    • http://antigreen.org
Re: FreeBSD. почта и 2IP
« Reply #16 on: May 12, 2010, 16:53:21 »
Ага, понятно, fwd работает, дело не в нём. Дело в выборе исходного IP-адреса, а выбирается он согласно таблице маршрутизации. Маршрутизация смотрит на VPN, выбирается адрес с того соединения, куда смотрит маршрут, а fwd не меняет содержимое пакета.

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

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

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

3) Попробовать (не факт, что получится) жестко привязать почтовик (его настройки) к адресу нужного интерфейса, а не *:*, тогда, по идее, будут пакеты с нужным src без ната, далее fwd как в варианте 2.
WBR, Nuclear Lightning
[FreeBSD][Давить зелёных]

Offline Alloy

  • Newbie
  • *
  • Posts: 39
  • Karma: +0/-0
    • http://alloy.tomsk.ru/
Re: FreeBSD. почта и 2IP
« Reply #17 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 не помню

Offline nuclight

  • Full Member
  • ***
  • Posts: 207
  • Karma: +1/-2
    • http://antigreen.org
Re: FreeBSD. почта и 2IP
« Reply #18 on: May 13, 2010, 15:19:16 »
Я так понимаю, второй канал используется только для исходящих, так что это здесь не нужно.

На всякий случай, как сделать его на ipfw, есть тут: http://nuclight.livejournal.com/124348.html
WBR, Nuclear Lightning
[FreeBSD][Давить зелёных]

Offline Konstantine

  • Full Member
  • ***
  • Posts: 184
  • Karma: +1/-7
Re: FreeBSD. почта и 2IP
« Reply #19 on: May 13, 2010, 19:11:24 »
:) а можно было вообще "схитрить"

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

У мя в конторе три провайдера недавно сразу было)))), так благо я PF использую на нём всё легко и удобно делается.
А можешь у провайдера попросить IP на ВПН интерфейс постоянный, тада в named`е через view томскую и внешнюю зону настроишь томску будешь mx отдавать томский IP, всем внешним DNS серверам внешний, но серано основная масса у тя будет через внешний интерфейс лазить т.к. все томские ДНСы спрашивают у корней, а корни для тя это - ВНЕХА ))
Софт должен быть открытым, а девушки - бесплатными и доступными, желательно под пиво. :D