Я пытаюсь сделать DNAT на интерфейсе eth0: 0 на другой IP 192.168. 1.12 на порту 43, но он не работает, что может быть не так?
iptables -t nat -A PREROUTING -p tcp -i eth0:0 --dport 43 -j DNAT --to-destination 192.168.1.12:43
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.12 --dport 43 -j MASQUERADE
Для прослушивания на любом интерфейсе работает:
iptables -t nat -A PREROUTING -p tcp --dport 43 -j DNAT --to-destination 192.168.1.12:43
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.12 --dport 43 -j MASQUERADE
eth0: 0 - это псевдоним, а не фактический интерфейс, поэтому iptables ничего об этом не знает. Первое правило следует переписать следующим образом:
iptables -t nat -A PREROUTING -i eth0 ...
Во втором правиле настоятельно рекомендуется указывать исходящий интерфейс через "-o ...". Вы можете получить его с помощью следующей команды:
ip route get 192.168.1.12