Итак, у меня есть машина с единым интерфейсом. У него 2 IP-адреса (eth0: 192.168.2.3, eth0: 1 192.168.2.4). Я хотел бы принимать любой трафик, входящий на 192.168.2.4, и преобразовывать его через NAT на внешний IP-адрес. Насколько я могу судить, я сделал все необходимое, чтобы заставить его работать, но это не так, поэтому я что-то упускаю.
/ proc / sys / net / ipv4 / ip_forward установлен в 1
все мои iptables установлены по умолчанию ACCEPT, вот мое правило DNAT:
iptables -t nat -A PREROUTING -d 192.168.2.4 -j DNAT --to-destination 192.1.1.2
У машины есть маршрут к 192.1.1.2 через шлюз, доступный с eth0: 192.1.1.2 192.168.2.248 255.255.255.0 UG 0 0 0 eth0
Правило DNAT, похоже, на самом деле не выполняет какого-либо NAT / перенаправления.
Что я пропустил?
Я бы сделал iptables -t nat -L -v -n
чтобы увидеть счетчики правила DNAT в цепочке PREROUTING. Вы можете наблюдать, как они увеличиваются с каждым новым подключением, обрабатываемым правилом. Если они не увеличиваются, я бы начал обнюхивать трафик на интерфейсе eth1, чтобы увидеть, попадает ли он туда.
Вероятно, ваша цепочка FORWARD настроена на политику отбрасывания по умолчанию и не имеет правила для пересылки этого трафика. Еще раз проверьте это.