Назад | Перейти на главную страницу

Проблемы с NAT

Я сетевой новичок, извините за очень общий заголовок. У меня сеть настроена следующим образом:

Несколько подробностей о сети:

Машина 1 должна связываться с машиной 3 через мост на машине 2. У меня для этого настроены маршруты на всех машинах. То есть, когда трафик отправляется с eth1 на машине 1, он достигает eth1 на машине 2 и отправляется с eth2 на машине 2 на eth1 на машине 3. Это работает отлично.

Проблема, с которой я сталкиваюсь, заключается в том, что машина 2 выполняет NAT (что НЕ выполняется с помощью iptables, а с помощью программы, над которой у меня нет контроля). Программа назначает IP-адрес eth0 на машине 2 в качестве IP-адреса источника при пересылке пакетов на машину 3. Таким образом, когда машина 3 должна ответить, она видит источник в подсети 10.10.0.0 и направляет пакет. от eth0 на машине 3 до eth0 на машине 2.

Мой вопрос: как я могу направить пакет с машины 3 на eth2 на машине 2?

Единственный контроль, который у меня есть над этой программой, которая выполняет NAT, - это сообщать ей, какой исходный IP использовать при NAT. eth1 и eth2 на машине 2 не имеют IP-адресов, поэтому единственные IP-адреса, которые я могу использовать, - это псевдонимы, которые у меня есть для eth0 на машине 2.

Поразмыслив, я думаю, что вы можете установить маршрут на M3 (адрес eth0 для M1) через (eth1 на M3), где M1 = machine1 и так далее. Где 10.10.10.x - адрес eth0 M1, попробуйте

M3% route add -host 10.10.10.x dev eth1

Вы должны иметь возможность убедиться, что на M3 ответы на пакеты с адреса M1 выходят через eth1, а не eth0, используя tcpdump. Обратите внимание, что это никоим образом не гарантирует, что M2 будет делать с ними правильные вещи.; он должен только отправить их обратно тем путем, которым они пришли, и, надеюсь, M2 де-NAT их и отправит на M1.