LINUX.ORG.RU

Знаю как настроить mononat, а как binat хз!

anonymous
()

Советую переформулировать вопрос и нормально описать задачу, а не нести всякие вымышленные "термины"

no-dashi ★★★★★
()

а в чем вопрос то...
используй комбинацию из snat и dnat по сетям, если хочешь добиться однозначного соответствия. или по хостам, если случай разовый.

chocholl ★★
()
Ответ на: комментарий от no-dashi

OK.

Есть локалка 192.168.0.0/24. К локалке прилагается почтовик $mail_real, стоящий в интернете. Между ними iptables-роутер с NAT. У роутера на локалочной сетевухе заведён хитрый адрес 192.168.0.55, стучась в который попадаешь на $mail_real. Конструкция вообще дурацкая, это понятно, но требуют воссоздать на базе линукса именно такую.

Собственно, в чём юмор - через этот роутер нормально ходит всё, и интернет, и этот самый почтовик по pop3/smtp/ldap/хзчтоещё. Не работает только одна вещь - веб-морда почтовика. Почтовик при попытке зайти туда ругается что мол да, домен 192.168.0.55 указывает на эту машину, но его тут на самом деле не лежало... Если просто через тот же роутер со всеми NAT постучаться на $mail_real - всё заходит.

Смешнее следующее - та же конструкция на BSD-роутере через binat работает, веб-морда открывается без проблем. Хотя делается ровно тоже самое, что и в iptables...

Сами правила в iptables примерно такие:

iptables -A PREROUTING -t nat -i $lan_eth -d $mail_nat -j DNAT --to-destination $mail_real

...

iptables -A FORWARD -s $mail_real -d $lan_range -j ACCEPT

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -s $lan_range -d $mail_real -j ACCEPT

...

iptables -A POSTROUTING -t nat -o $wan_eth -s $lan_range -d $mail_real -j SNAT --to-source $external_ip

iptables -A POSTROUTING -t nat -o $lan_eth -s $mail_real -j SNAT --to-source $mail_nat

В опечатках и т.п. ошибки можете не искать, их там нет...

anonymous
()
Ответ на: комментарий от anonymous

iptables -A POSTROUTING -t nat -o $wan_eth -s $lan_range -d $mail_real -j SNAT --to-source $external_ip

iptables -A POSTROUTING -t nat -o $lan_eth -s $mail_real -j SNAT --to-source $mail_nat

второе правило помойму непотребно
а в первом поменяй -o на -i и напиши входящий локальный интерфейс.
и нат должен быть

chocholl ★★
()
Ответ на: комментарий от chocholl

> и нат должен быть

Сделал всё так, ничего не поменялось. pop3/smtp работают, а веб-морда ругается...

anonymous
()
Ответ на: комментарий от anonymous

т.е. тебе нужно чтобы при обращении из локальной сети на локальный адрес шлюза, запросы перенаправлялись на внешний адрес почтаря?

chocholl ★★
()
Ответ на: комментарий от chocholl

> т.е. тебе нужно чтобы при обращении из локальной сети на локальный адрес шлюза, запросы перенаправлялись на внешний адрес почтаря?

Именно.

anonymous
()
Ответ на: комментарий от anonymous

ну тогда вот так
iptables -A PREROUTING -t nat -i $lan_eth -d $локальныйИП -j DNAT --to-destination $реальныйИП

и смотри счетчики, а еще покажи вот так
iptables -L -v -n
iptables -L -v -n -t nat

chocholl ★★
()
Ответ на: комментарий от anonymous

знаешь что еще может быть...
не знаю точно, так как не приходилось на линуксе с таким сталкиваться.
помойму линукс не умеет делать нат не в directly connected networks.

chocholl ★★
()
Ответ на: комментарий от chocholl

> и смотри счетчики

Копипастить гиморно, в общем на словах - из локалки к почтовику правило SNAT применяется, а SNAT от почтовика обратно в локалку - нет...

anonymous
()
Ответ на: комментарий от anonymous

> а SNAT от почтовика обратно в локалку - нет...
дык а это зачем?

при доступе из локалки к web морде почтаря нужно примерно следующее...
1) dnat локального адреса шлюза в реальный адрес почтаря
iptables -A PREROUTING -t nat -i $lan_eth -d $mail_nat -j DNAT --to-destination $mail_real

2) и SNAT локальный адресов в globaly routed
iptables -A POSTROUTING -t nat -o $wan_eth -s $lan_range -d $mail_real -j SNAT --to-source $external_ip


загвоздка видимо во втором, попробуй вместо -d $mail_real писать -d $mail_nat.


если не получиться, то можешь на входе маркировать пакеты на почтарь, а потом в таблице nat, оперировать уже не адресами а маркировкой сделанной ранее.




chocholl ★★
()
Ответ на: комментарий от chocholl

> если не получиться, то можешь на входе маркировать пакеты на почтарь, а потом в таблице nat, оперировать уже не адресами а маркировкой сделанной ранее.

Сижу соображаю, как тоже самое сделать через mark... Придумаю, попробую, отпишусь.

anonymous
()
Ответ на: комментарий от Komintern

Проще будет разрешить наружу реальный адрес почтовика всем. Чем, скорее всего, всё и закончится, так как затея с mark ничего нового не дала. :(

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.