I ' у меня возникли проблемы с осмыслением всех примеров iptable.
Я просто хочу, чтобы все запросы с моей машины на хост A на порту 3306 действительно шли на хост B на порту 3306. Как я могу это сделать?
Предполагая, что вы хотите перенаправить только соединения, исходящие с вашего компьютера (а не перенаправляемые вашим компьютером), следующих правил должно быть достаточно:
iptables -t nat -A OUTPUT -d hostA -p tcp --dport 3306 -j DNAT --to hostB
iptables -t nat -A INPUT -s hostB -p tcp --sport 3306 -j SNAT --to hostA
Первое состоит в изменении адрес назначения исходящих пакетов от hostA к hostB.
Когда hostB отправляет пакеты обратно, второе правило перезаписывает исходный адрес с hostB на hostA, чтобы не запутать клиента.