Я работаю над живой сетью из нескольких боксов и маршрутов с долгой историей изменений. Стараюсь их консолидировать с минимальными сбоями. Я бы хотел избавиться от некоторых старых маршрутизаторов и позволить соединениям обрабатывать новые (живые) боксы.
Это должно работать?
iptables -t mangle -A PREROUTING -p tcp -d 192.168.0.1 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p tcp -d 192.168.0.2 -j MARK --set-mark 2
iptables -t nat -A PREROUTING -p tcp -d 192.168.0.1 -j DNAT --to-destination $DST:7021
iptables -t nat -A PREROUTING -p tcp -d 192.168.0.2 -j DNAT --to-destination $DST:7022
iptables -t nat -A POSTROUTING -p tcp -d $DST -m mark --mark 1 -j SNAT --to-source 192.168.0.1
iptables -t nat -A POSTROUTING -p tcp -d $DST -m mark --mark 2 -j SNAT --to-source 192.168.0.2
iptables -A FORWARD --destination $DST -j ACCEPT
если eth0 - статический IP-адрес с маршрутизацией на 2 виртуальных IP-адреса - eth0: 1 - 192.168.0.1, а eth0: 2 - 192.168.0.2, и оба попадают в пункт назначения $ DST.
Использование MARK кажется мне лучшим способом, но он не работает - похоже, что $ DST отвечает на статический IP-адрес, а не на виртуальный, который я пытаюсь ввести с помощью SNAT. Это потому, что MARK не будет работать таким образом, или потому, что другие записи в iptables переопределяют, или потому, что мне нужно изучить правила iproute2 fwmark?
Вышеприведенный фрагмент минимален, и мне нужно решение, которое масштабируется до нескольких IP-адресов UCARP, а также все правила iproute2 и фильтрация iptables, которая уже настроена. К сожалению, как бы я ни хотел начать заново с помощью инструмента маршрутизации более высокого уровня, я в настоящее время застрял с интеграцией изменений в существующую настройку iproute2 / iptables.
Спасибо