У меня есть TCP-трафик с 192.168.3.51 на 192.168.3.10, но вместо этого я хотел бы, чтобы он отправлялся на 192.168.3.50. Есть ли способ настроить это в iptables, чтобы вместо этого использовался только трафик tcp, исходящий от A и идущий к B отправлено на C? Спасибо.
Судя по всему, DNAT действительно работает - ваше предположение, что DNAT не принимает исходный IP-адрес, неверно.
Ниже приводится общий пример правила, которое может вам понадобиться:
sudo iptables -t nat -A PREROUTING -s 1.1.1.1 -m tcp -p tcp --dport 8080 -d 2.2.2.2 -j DNAT --to-destination 3.3.3.3
Это будет означать, что 1.1.1.1 увидит контент из 3.3.3.3:8080, когда попытается подключиться к 2.2.2.2:8080 - так что это не перенаправление в «реальном» смысле (например, Перенаправление ICMP), но похоже, что он достигнет того, чего вы пытаетесь достичь.
Насколько мне известно, вы не можете настроить поведение маршрутизации в брандмауэре, таком как iptables. Но вместо этого вы можете направить общий трафик через B в C.