Tomsk Sysadmins Forum
Unix => Администрирование => Topic started 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
не помогает.
-
А MX-ы для хождения почты прописаны? И что пишется в логе почтовика, когда не удаётся отправить письмо?
-
А покажы как выглядить твоя МХ зона: #dig твой домен MX
-
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
-
Ядро без IPFIREWALL_FORWARD собрано? Правило не в том месте рулесета стоит?
-
Тебе для mx.tomsp.tom.ru надо к нему прикрутить свой айпи который у тебя ВПН.
-
да в том-то и проблема, что он динамический
-
можно устроит через relayhost, в настройках постфикса
-
это еще почитай http://www.linuxshop.ru/index.php?autocom=ibwiki&cmd=article&do=word_version&id=65
-
Нечего делать MX'ы на динамическом IP. Форвардинг надо настраивать, и добится, чтоб он работал.
-
часть правил:
${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
но приходят письма почему-то с ВПН-а
-
Еще раз повторяю уже звучавший выше вопрос. С какими опциями собрано ядро?
-
все необходимые опции присутствуют
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPFIREWALL_FORWARD
options IPDIVERT
-
${fwcmd} add fwd 217.29.86.225 log ip from localhost to any 25 out via ${vpnif} #форвард с ВПН-интерфейса в шлюз, который нужен
А разве fwd работает на внешний Ip?... Если у тебя это Ip шлюза, попробуй поставь сюда ip интерфейса своего маршрутизатора, через который трафик должен улетать.
-
Что показывает tcpdump -ni ng0 port 25 и tcpdump -ni ${oif} port 25 (на обоих интерфейсах) ?
-
путем перестановки очередности правил, добился, чтоб пакеты заворачивались в нужный шлюз, но
в адресе отправителя стоит ИП ВПН-соединения:
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>
-
Ага, понятно, fwd работает, дело не в нём. Дело в выборе исходного IP-адреса, а выбирается он согласно таблице маршрутизации. Маршрутизация смотрит на VPN, выбирается адрес с того соединения, куда смотрит маршрут, а fwd не меняет содержимое пакета.
Варианты решения:
1) Апгрейд системы, в новых версиях есть поддержка нескольких таблиц маршрутизации и утилита setfib, позволяющая при запуске приложения привязать его к указанной таблице. Тогда почтовик запускается с таблицей, в которой маршрут по умолчанию смотрит на ${oif} и никаких VPNов в ней не появляется.
2) Запустить еще один NAT (натящий в IP-адрес реального интерфейса), в который заворачивать только почтовик. После ната делать fwd с этого IP-адреса на соответствующий шлюз.
3) Попробовать (не факт, что получится) жестко привязать почтовик (его настройки) к адресу нужного интерфейса, а не *:*, тогда, по идее, будут пакеты с нужным src без ната, далее fwd как в варианте 2.
-
это...
имея два канала, два IP, потрудитесь настроить policy routing,
иначе отваливается не только почта, но и все остальное.
т.е. если пришло на IP1, то ответ должен уходить от IP1 по каналу1 (а не по default route)
если пришло на IP2, то ответ должен уходить от IP2 по каналу2 (а не по default route)
для pf это reply-to, route-to
для ipfw не помню
-
Я так понимаю, второй канал используется только для исходящих, так что это здесь не нужно.
На всякий случай, как сделать его на ipfw, есть тут: http://nuclight.livejournal.com/124348.html
-
:) а можно было вообще "схитрить"
повесить нат на ВПНовский интерфейс и натить на нём все исходящие, можно абсолютно со всех "any", а можно исходящие с динамического ВПНовского IP до любых dst IP по порту 25 и подменять это всё на свой старый ТОМСКИЙ IP так у тебя твои письма будут уходить по халявному VPN маршруту при этом с томским IP`шнигом, правда ответы и аск будут по правилам маршрутизации приходить через томск ди пофигу за то почта работать будет.
У мя в конторе три провайдера недавно сразу было)))), так благо я PF использую на нём всё легко и удобно делается.
А можешь у провайдера попросить IP на ВПН интерфейс постоянный, тада в named`е через view томскую и внешнюю зону настроишь томску будешь mx отдавать томский IP, всем внешним DNS серверам внешний, но серано основная масса у тя будет через внешний интерфейс лазить т.к. все томские ДНСы спрашивают у корней, а корни для тя это - ВНЕХА ))
-
как подменять ИП? мне проще было бы подменять завернутые с ВПН на мой норм. ИП и все... бед не знал бы )
-
nuclight уже ответил, прописать в почтовой программе, чтобы использовала нужный IP
например в postfix это smtp_bind_address
ну и policy routing должен работать либо целиком, либо частичным fwd как у вас
-
и подменять это всё на свой старый ТОМСКИЙ IP так у тебя твои письма будут уходить по халявному VPN маршруту при этом с томским IP`шнигом, правда ответы и аск будут по правилам маршрутизации приходить через томск ди пофигу за то почта работать будет.
Если провайдер VPN или его провайдер режут чужие адреса (а вообще-то это в Интернете правило хорошего тона) для борьбы со спуфингом, то работать не будет.
-
smtp_bind_address привязал к нужному ИП, и весь почтовый трафик завернул в нужный шлюз...
заработало... вроде бы нормально ))
спасибо большое всем откликнувшимся )