LINUX.ORG.RU
ФорумAdmin

Перенаправление доменного имени


0

0

Реально ли сделать так, чтобы сервер, на который имеется запись на сервере имён, перенаправлял трафик идущий к данному доменному имени на другой сервак? Возможности изменить DNS записи нету.

★★★★

так тебе трафик перенаправить или «доменное имя»? Если «доменное имя» — то в DNS-записи one.com прописываешь единственную запись «CNAME=two.com», и все кто идёт на one.com будут прозрачно попадать на two.com напрямую. Если перенаправить трафик — то надо в настойках iptables на one.com написать

iptables -t nat -A PREROUTING -tcp --dport 80 -j DNAT --to-destination ip.of.two.com

для остальных сервисов (например почты на 25-том порту) аналогично. При этом весь трафик будет сначала идти на one.com, а оттуда на two.com.

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

Лучше, конечно, перенаправить «доменное имя», но доступа к изменению DNS записей пока нет, а two.com пока ещё нету - только ip.of.two.com .В ближайшее время ip.of.two.com станет one.com, а пока как-то необходимо организовать переброску трафика предназначенного для one.com, но не для ip.of.one.com.

В этой ситуации значит проще обойтись iptables?

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

> В этой ситуации значит проще обойтись iptables?

это не «более простой» способ, а единственное возможный. Да, на ip.of.two.com наверное надо настроить роутинг чтобы от всё посылал через one.com

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

> а пока как-то необходимо организовать переброску трафика предназначенного для one.com, но не для ip.of.one.com.

погоди, а это вообще что-то странное. Как ты предлагаешь отличать входящие соединения «ssh root@one.com» от «ssh root@ip.of.one.com»?

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

ssh фиг с ним, как временный вариант по айпишникам можно. Трансляция по портам похоже подойдет, спасибо!

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

на сколько я понял тебе нужно только HTTP-трафик перенаправлять? в целом настройки наверное должны быть такими:

на ip.of.one.com

iptables -t nat -A PREROUTING -tcp --dport 80 -j DNAT --to-destination ip.of.two.com
iptables -t nat -A POSTROUTING -tcp -s ip.of.two.com --sport 80 -j SNAT --to-source ip.of.one.com

на ip.of.two.com

route add -host ip.of.one.com gw ip.of.old.gw
route add -net 0/0 gw ip.of.one.com
ip.of.old.gw можно получить сказав
ip route get ip.of.one.com

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

Спасибо за правила! Я бы ещё на них кучу времени потратил.

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

> Да, еще почта, фтп - это основное и там по мелочи.

почта будет аналогично, а вот с ftp сложнее — там ведь соединение по двум каналам идёт. Да, и вместо

> iptables -t nat -A POSTROUTING -tcp -s ip.of.two.com --sport 80 -j SNAT --to-source ip.of.one.com

наверное лучше сказать

iptables -t nat -A POSTROUTING -tcp -s ip.of.two.com -j SNAT --to-source ip.of.one.com
pupok ★★ ()
Ответ на: комментарий от ViTeX

> Да, еще почта, фтп - это основное и там по мелочи.

Ну-ну! Может быть все же в консерватории поправить?

Расписанные правила ипитаблесов будут работать, только если у тебя второй сервер внутри твоей локалки находится, то есть как входящий, так и исходящий трафик второго сервера проходит через маршрутизатор с ипитаблесами. В противном случае все гораздо сложнее (или проще, зависит от подхода). Как у тебя построено, ты не написал.

Во-вторых с указанными правилами тоже все совсем не так, как на самом деле. Вот из этих двух правил, второе, в твоем случае, никогда не сработает:

iptables -t nat -A PREROUTING -tcp --dport 80 -j DNAT --to-destination ip.of.two.com

iptables -t nat -A POSTROUTING -tcp -s ip.of.two.com --sport 80 -j SNAT --to-source ip.of.one.com

так как tcp-соединение при handshacking подпадает под первое правило и затем все пакеты этого соединения срабатывают по первому правилу. Второе правило, как минимум, лишнее.

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

Серваки на соединениях от разных провайдеров, географически разнесены и не в одной локалке.

Это значит, что эти правила не подойдут? В общем-то я ищу самый простой способ, самое главное перебросить почту по IMAP на 143 порте.

Получается это тоже лишнее или здесь всё нормально?:

route add -host ip.of.one.com gw ip.of.old.gw

route add -net 0/0 gw ip.of.one.com

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

Эти команды не к месту.

Однако, если поднять VPN между этими двумя хостами, то все сказанное предыдущим оратором вполне подойдет (включая route).

Для http посмотрите еще на апач(redirect) или на nginx. Я с ними подробно не знаком, но возможно...

Еще пробрасывать трафик можно tcp-проксями, например xinetd(redirect).

Да, такие решения более накладны (по памяти и процессору), чем ипитаблесы. Я не люблю ипитаблесы, наверное готовить не умею.

С фтп в подобных схемах вообще все настолько сложно, что лучше и не связываться.

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

> Второе правило, как минимум, лишнее.

вторым правилом я хотел обрабатывать обратый трафик от ip.of.two.com во внешний мир. Он ведь будет отправлять пакеты с адресом отправителя ip.of.two.com, а внешние клиенты будут ждать от ip.of.one.com. Хотя этот SNAT может стоит на сервере ip.of.two.com повесить...

Может чтобы вообще не заморачиваться с роутингом — настроить VPN между ip.of.one.com и ip.of.two.com и все сервисы которые живут на сервере ip.of.two.com повесить на TUN-интерфейс этого VPN. Тогда может и с ftp будет проще.

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

Интересно, на одно OpenVPN соединение какие приблизительно системные требования? Какой-нибудь хлам наподобие второго пня подойдет, не?

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