Короче говоря, у меня в руках кластерная система, для которой я должен маршрутизировать трафик через ее мастер. Маршрутизация трафика от узлов во внешний мир работает, но маршрутизация трафика из подсети нашего отдела к узлам не работает. К сожалению, о добавлении узлов в нашу подсеть не может быть и речи.
Кластер состоит из главного устройства и ряда узлов, а также некоторой периферии. Узлы находятся во внутренней сети, скрытой от нашей интрасети или Интернета. NAT уже установлен на главном сервере, поэтому узлы имеют доступ к внутренним и внешним серверам. Эта часть работает.
Внешний интерфейс ведущего устройства находится в той же подсети, что и наши рабочие станции, которые имеют общий шлюз вне нашего контроля.
Изменить: кластер работает под управлением CentOS 7, ПК запускают дистрибутив на основе Ubuntu xenial.
Некоторым из наших программных пакетов требуется прямой доступ к узлам. Для этого мы хотели настроить второй NAT на главном устройстве с помощью iptables и добавить IP-маршрут на ПК для отправки трафика на 10.10.1.0/24 через мастер.
мастер: IP-маршрут
default via 123.45.67.254 dev eth0 proto static metric 100
10.10.0.0/16 dev eth1 proto kernel scope link src 10.10.0.1
123.45.67.0/23 dev eth0 proto kernel scope link src 123.45.67.204 metric 100
мастер: iptables -vnL -t nat
Chain PREROUTING (policy ACCEPT 7356 packets, 880K bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 4884 packets, 687K bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 3445 packets, 225K bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 3445 packets, 225K bytes)
pkts bytes target prot opt in out source destination
439 33324 MASQUERADE all -- * eth0 10.10.1.0/24 0.0.0.0/0
61828 3710K MASQUERADE all -- * eth1 123.45.67.0/23 10.10.1.0/24
Использование SNAT вместо MASQUERADE не имеет значения.
узел: IP-маршрут
default via 10.10.0.1 dev eth1
10.10.0.0/16 dev eth1 proto kernel scope link src 10.10.1.1
pc: ip route
default via 123.45.67.254 dev eth0 proto static metric 100
10.10.0.0/16 via 123.45.67.204 dev eth0
123.45.67.0/23 dev eth0 proto kernel scope link src 123.45.67.191 metric 100
Мое лучшее предположение состоит в том, что маршрутизатор с отслеживанием состояния по пути сбрасывает пакет SYN + ACK из-за того, что его исходный адрес перезаписывается на ведущем устройстве, поэтому его связь с исходным пакетом SYN теряется.
Как мы можем заставить это работать?
Сообщите мне, если нужны дополнительные конфиги / логи.