У меня есть сервер, обслуживающий несколько служб. Для целей этого вопроса предположим, что один из них - почта. Если почта выходит из строя, я хочу переслать ее другому хосту. Моя сеть выглядит так:
-- Network 1 --
Box 1
eth1: 192.168.1.5
eth0: 10.10.10.3
-- Network 2 --
Box 2
eth0: 10.10.10.5
Итак ... Входящие запросы поступают на адрес 192.168.1.5 на eth1 в блоке 1. Вместо того, чтобы останавливаться на нем, я хочу перенаправить их через eth0 в ящик 2 и позволить этому обработать это.
Я пробовал следующие правила iptables:
iptables -t nat -A PREROUTING -p tcp -m tcp -d 192.168.1.5 --dport 25 -j DNAT --to-destination 10.10.10.5:25
iptables -A FORWARD -m state -p tcp -d 10.10.10.5 --dport 25 --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -p tcp -m tcp -s 10.10.10.5 --sport 25 -j SNAT --to-source 192.168.1.5
... Но безрезультатно. Используя tcpdump, я вижу, что запрос поступает во втором поле, но на запрашивающем компьютере ничего не происходит.
Пожалуйста помоги. Спасибо!
На данный момент закончил использование xinetd для работы с почтой.
service smtp
{
disable = no
socket_type = stream
wait = no
user = root
redirect = 10.10.10.5 25
log_on_failure += USERID
}
Спасибо за вашу помощь всем!
Если вам нужна помощь с этим, я предлагаю вам показать полный набор правил iptables. Несколько пакетов от tcpdump тоже не повредят.
Между тем:
У вас включена переадресация ip? Проверить с:
sysctl net.ipv4.conf.all.forwarding
Установить с:
sysctl net.ipv4.conf.all.forwarding=1
Сделайте постоянным, добавив в /etc/sysctl.conf (или там, где этого ожидает ваш дистрибутив).
Вам также необходимо разрешить переадресацию для противоположного направления, добавьте правило пересылки для -s 10.10.10.5 и -o eth1 тоже (если у вас его нет, или политика для всех / по умолчанию уже ACCEPT):
iptables -A FORWARD -s 10.10.10.5 -o eth1 -j ACCEPT
Несколько комментариев в целом:
Одной из возможных причин, по которой вы не видели никаких ответов на клиенте, может быть таблица маршрутизации на Блоке 2. DNAT не перезаписывает адрес источника, и для того, чтобы DNAT работал, Блоку 2 необходим маршрут обратно к источнику, который проходит через Box 1. Если это «произвольный IP-адрес», то для Box 2 потребуется маршрут по умолчанию через Box 1, если это конкретные сети, подойдут обратные маршруты в эти сети через Box 1.