iptables (редирект)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

n1kt0
Сообщения: 289
ОС: GNU/Gentoo

iptables

Сообщение n1kt0 »

в общем-то ситуация такова:
есть один провайдер у которого есть smtp который обслуживается только с их подсети. Назовем его 192.168.100.100
Я сейчас планирую перевести всех пользователей на новый сервер с новым провом. У второго прова есть тоже свой смтп, назовем его 192.168.100.200. Если я выключу старый сервер и включу новый с ip-шником старого сервака, то на новом интернете старый смтп(тот который был пробит у всех пользователей) не будет обслуживаться новым смтп.

Как мне сделать так, чтобы не бегать и не перепробивать у всех пользователей со старого 192.168.100.100, на новый 192.168.100.200 ?

есть что-то типа редиректа и тд ?
я попробывал сделать что-то типа:

Код: Выделить всё

$IPTABLES -A PREROUTING  --source 0/0 -p TCP --sport 25 -j REDIRECT --dst 195.39.248.11/24 --to-ports 25
, но оно конечно работать не будет
Подсказывайте как сделать корректней

пс: некоторые пользователи ходят на смтп через прокси. Как и в squid сделать некоторый редирект. Т.е предусматреть всё: и тех пользователей которые ходят напрямую(форвард) и те, которые ходят через прокси, чтобы перейти на новый сервер и не бегать два дня и не перепробивать на новый smtp
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: iptables

Сообщение pelmen »

Думаю, логичнее сделать у себя на этой машинке (будем называть её шлюзом) некоторый сервер (будем называть его днс-сервером) и тогда у всех клиентов прописать не статический адрес почтовика, а доменное имя (будем называть его mailserver.local.
В твоей же ситуации (если брать iptables), наверное нужно сделать подмену адреса назначения (Destination NAT)
iptables -t nat -A PREROUTING -d 192.168.100.100 --dport 25 -j DNAT --to-destination 192.168.100.200
Если внутренние пользовательские машины имеют адреса из той же подсети (192.168.100.х) и ответ пойдет к ним напрямую, то в этом случае они его отбросят, т.к. посылали на 100.100, а ответ пришел с 100.200, и тогда нужно будет еще делать Source NAT:
iptables -t nat -A POSTROUTING -d 192.168.100.200 --dport 25 -j SNAT --to-source 192.168.100.1
где х.х.100.1 - адрес шлюза
P.S. у действия REDIRECT нет таких параметров, как dst, оно только порты перенаправляет
http://www.opennet.ru/docs/RUS/iptables/#REDIRECTTARGET
Спасибо сказали:
n1kt0
Сообщения: 289
ОС: GNU/Gentoo

Re: iptables

Сообщение n1kt0 »

то, что ты сказал - непомогло!
какие еще мысли есть ?
Спасибо сказали:
n1kt0
Сообщения: 289
ОС: GNU/Gentoo

Re: iptables

Сообщение n1kt0 »

Код: Выделить всё

$IPTABLES -t nat -A PREROUTING -p TCP -d 195.39.248.11 --dport 25 -j DNAT --to-destination 195.69.200.2:25
                        $IPTABLES -t nat -A POSTROUTING -p TCP -d 195.69.200.2 --dport 25 -j SNAT --to-source 195.39.248.11
                        $IPTABLES -t nat -A POSTROUTING -p tcp -s 195.69.200.2 --sport 25 -j SNAT --to-source 195.39.248.11:25
                        $IPTABLES -t nat -A OUTPUT --dst 195.39.248.11 -p tcp --dport 25 -j DNAT --to-destination 195.69.200.2:25


что нетак ?
Спасибо сказали:
skor
Сообщения: 419
ОС: RTFM-OS v127.0.0.1

Re: iptables

Сообщение skor »

У себя на шлюзе подымаешь SMTP-proxy
http://quietsche-entchen.de/cgi-bin/wiki.c...oxies/SmtpProxy
настраиваешь его на отправку почту через нужный сервер
в iptables с помощью REDIRECT завернуть все smtp-обращения (--dport 25) клиентов на порт на свой шлюз на порт SMTP-proxy
Ну или говоришь абонентам чтоб прописали у себя твой SMTP-proxy в качестве сервера исходящей почты.
Спасибо сказали:
n1kt0
Сообщения: 289
ОС: GNU/Gentoo

Re: iptables

Сообщение n1kt0 »

skor писал(а):
18.12.2008 00:50
У себя на шлюзе подымаешь SMTP-proxy
http://quietsche-entchen.de/cgi-bin/wiki.c...oxies/SmtpProxy
настраиваешь его на отправку почту через нужный сервер
в iptables с помощью REDIRECT завернуть все smtp-обращения (--dport 25) клиентов на порт на свой шлюз на порт SMTP-proxy
Ну или говоришь абонентам чтоб прописали у себя твой SMTP-proxy в качестве сервера исходящей почты.


я понял. А в gentoo не в курсе есть в портаже ?
что-то я его emerge -s немогу найти
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: iptables

Сообщение pelmen »

Если я тебя правильно понял, то адресное пространство старого провайдера было в той же подсети, что и у нового провайдера.
iptables -t nat -A PREROUTING -d $old_smtp_ip --dport $old_smtp_port -j DNAT --to-destination $new_smtp_ip
Если внутренние пользовательские машины имеют адреса из той же подсети и ответ пойдет к ним напрямую, то в этом случае они его отбросят, т.к. посылали на один, а ответ пришел с другого, и тогда нужно будет еще делать Source NAT:
Если ты не очень понял эту строчку, то объясню так. Новый провайдер может пинговать твой шлюз. А может ли он пинговать тачки за шлюзом, которые у тебя внутри сети? Если ДА, то выполни еще это:
iptables -t nat -A POSTROUTING -d $new_smtp_ip --dport $smtp_port -j SNAT --to-source $your_gateway_ip
Спасибо сказали:
n1kt0
Сообщения: 289
ОС: GNU/Gentoo

Re: iptables

Сообщение n1kt0 »

А может ли он пинговать тачки за шлюзом, которые у тебя внутри сети? Если ДА, то выполни еще это:
--неможет

вот я написал:

Код: Выделить всё

 $IPTABLES -t nat -A PREROUTING -p TCP -d 195.39.248.11 --dport 25 -j DNAT --to-destination 195.69.200.2
 $IPTABLES -t nat -A POSTROUTING -p TCP -d 195.69.200.2 --sport $UNIPORTS -j SNAT --to-source 195.39.248.11


что-то еще упустил ?
Спасибо сказали:
Аватара пользователя
Velik.84
Сообщения: 80
ОС: Archlinux

Re: iptables

Сообщение Velik.84 »

Подскажите. Есть шлюз с двумя интерфейсами
eth0 (192.168.1.2)- смотрит на adsl модем (192.168.1.1)
eth1(192.168.2.1) - смотрит на комп №2 (192.168.2.2)
Как настроить NAT, что бы 192.168.2.2 выходил в инет через шлюз.
Пробовал:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
чет не сработало.
Да, и как эти правила потом просматривать и записать навсегда?
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: iptables

Сообщение pelmen »

Velik.84 писал(а):
18.12.2008 18:31
Подскажите. Есть шлюз с двумя интерфейсами
eth0 (192.168.1.2)- смотрит на adsl модем (192.168.1.1)
eth1(192.168.2.1) - смотрит на комп №2 (192.168.2.2)
Как настроить NAT, что бы 192.168.2.2 выходил в инет через шлюз.
Пробовал:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
чет не сработало.
Да, и как эти правила потом просматривать и записать навсегда?

Надо еще echo '1' >/proc/sys/net/ipv4/ip_forward

Если
n1kt0 писал(а):
18.12.2008 11:06
А может ли он пинговать тачки за шлюзом, которые у тебя внутри сети? Если ДА, то выполни еще это:
--неможет

тогда это
n1kt0 писал(а):
18.12.2008 11:06
$IPTABLES -t nat -A POSTROUTING -p TCP -d 195.69.200.2 --sport $UNIPORTS -j SNAT --to-source 195.39.248.11
не нужно (если у тебя конечно шлюз уже настроен на SNAT :) )
Спасибо сказали:
MIX2000
Сообщения: 58
ОС: Ubuntu

Re: iptables

Сообщение MIX2000 »

Velik.84 писал(а):
18.12.2008 18:31
Да, и как эти правила потом просматривать и записать навсегда?


Используй iptables-save <имя_файла>.
Для загрузки данных из файла используй iptables-restore.
Спасибо сказали:
stvorl
Сообщения: 6

Re: iptables

Сообщение stvorl »

Я расставил номера строк #*.

n1kt0 писал(а):
16.12.2008 13:20

Код: Выделить всё

#1         $IPTABLES -t nat -A PREROUTING -p TCP -d 195.39.248.11 --dport 25 -j DNAT --to-destination 195.69.200.2:25
                    #2    $IPTABLES -t nat -A POSTROUTING -p TCP -d 195.69.200.2 --dport 25 -j SNAT --to-source 195.39.248.11
                    #3    $IPTABLES -t nat -A POSTROUTING -p tcp -s 195.69.200.2 --sport 25 -j SNAT --to-source 195.39.248.11:25
                    #4    $IPTABLES -t nat -A OUTPUT --dst 195.39.248.11 -p tcp --dport 25 -j DNAT --to-destination 195.69.200.2:25


что нетак ?


#1 видимо правильно.

#2 заставляет думать сервер 2, что пакеты идут от сервера 1, а не от шлюза.
Сервер 2 примет (вероятно) соединение, только вот куда пойдет ответ? :-)

#3 - не нужно, т.к. #1 работает "в обе стороны".
#4 - то же, что и #1, но для самого шлюза. Оно надо?

По идее должно работать так:

Код: Выделить всё

# Обычный nat для всех - у тебя он может быть сделан по другому
iptables -t nat -A POSTROUTING -s $nw_lan -d !$nw_lan -j SNAT --to-source $ip_external
...
# "Подделка" нашего бывшего почтового сервера для клиентской подсети $faked_smtp_clients
iptables -t nat -A PREROUTING -p TCP -s $faked_smtp_clients -d $smtp_server_1 --dport 25 -j DNAT --to-destination $smtp_server_2
если же надо всей внутренней сети без исключений , то "-s $faked_smtp_clients" - выкусить.

Или я же не понял топологию,
тогда выкладывай с действующими адресами - исходная сеть (клиенты), шлюз (вернее, этот комп - где iptables), сервер 1, сервер 2.


Вообще для сети можно поднять компактный dns-сервер типа dnsmasq (он еще и DHCP+DNS, кстати), а в hosts прописать сопоставления для адресов различных служб, которые могут из за переходов и модернизаций "ездить" по сетям:

195.69.200.2 smtp.default.
1.1.1.1 odnoklassniki.ru. ;-) (шучу-шучу)
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: iptables

Сообщение BigBrother »

Народ, подскажите. После таких правил:

Код: Выделить всё

UNPRIVPORTS="1024:65535"
#Для входящих запросов
iptables -A INPUT -i eth0 -p tcp --sport $UNPRIVPORTS --dport 22 -J ACCEPT
iptables -A OUTPUT -o eth0 -p tcp ! --tcp-flags SYN,ACK,FIN SYN --sport 22 --dport $UNPRIVPORTS -j ACCEPT
#Для исходящих запросов
iptables -A OUTPUT -o eth0 -p tcp --sport $UNPRIVPORTS --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --tcp-flags SYN,ACK,FIN SYN --sport 22 --dport $UNPRIVPORTS -j ACCEPT

ssh будет продолжать жить на удаленном сервере?
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: iptables

Сообщение pelmen »

Конечно, т.к. правила по-умолчанию ты не трогаешь, а они accept. Да в принцыпе если их дропнуть, все равно будет коннект. Мой тебе совет. Пиши скрипт, чтоб его ./script start или ./script stop запускать/выключать, и просто в крон ставь останов на 5 мин вперед.
Спасибо сказали:
BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: iptables

Сообщение BigBrother »

pelmen писал(а):
23.12.2008 18:55
Конечно, т.к. правила по-умолчанию ты не трогаешь, а они accept.

По-умолчанию, правила у меня DROP!

pelmen писал(а):
23.12.2008 18:55
Мой тебе совет. Пиши скрипт, чтоб его ./script start или ./script stop запускать/выключать, и просто в крон ставь останов на 5 мин вперед.

Скрипт уже написан, и положен в /etc/init.d/ для автоматического применения при перезагрузке сервера.

А выше описаные правила, про которые я спрашивал, работают
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: iptables

Сообщение pelmen »

BigBrother писал(а):
25.12.2008 11:47
По-умолчанию, правила у меня DROP!
Болтливый Вы мой, что ж Вы об этом молчали-то? (насмотрелся "ГАРАЖ" сегодня :)
pelmen писал(а):
23.12.2008 18:55
Мой тебе совет. Пиши скрипт, чтоб его ./script start или ./script stop запускать/выключать, и просто в крон ставь останов на 5 мин вперед.

BigBrother писал(а):
25.12.2008 11:47
Скрипт уже написан, и положен в /etc/init.d/ для автоматического применения при перезагрузке сервера.А выше описаные правила, про которые я спрашивал, работают
Ну так ставьте в крон на 5 мин вперед останов правил iptables, в чем проблема?
Спасибо сказали: