У меня есть KVM-машина с двумя гостями и следующий маршрут:
89.114.150.3 (eth0:0 alias)->192.168.122.1(virbr0)->192.168.122.5(vint0)
на одну из этих двух машин (192.168.122.5 и 192.168.122.6). И свои правила я переписал в iptables:
iptables -t nat -A PREROUTING -p tcp -d 89.114.150.3 --dport 80 -j DNAT --to 192.168.122.1:80
iptables -t nat -A PREROUTING -p tcp -d 192.168.122.1 --dport 80 -j DNAT --to 192.168.122.5:80
iptables -I FORWARD -d 192.168.122.5/32 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
iptables -t nat -A POSTROUTING -p tcp -s 192.168.122.5 --sport 80 -j SNAT --to-source 192.168.122.1
iptables -t nat -A POSTROUTING -p tcp -s 192.168.122.1 --sport 80 -j SNAT --to-source 89.114.150.3
Но у меня проблема - этот маршрут тоже не работает ... 80 - В соединении отказано. Зачем?
Давайте рассмотрим это в iptables:
iptables -t nat -A PREROUTING -p tcp -d 89.114.150.3 --dport 80 -j DNAT --to 192.168.122.1:80
ОК, пакеты будут отправлены на адрес 192.168.122.1:80. Большинство правил в iptables
завершают правила. LOG
в качестве пункта назначения и некоторые другие являются исключениями. Все, что соответствует этому, мы закончили с цепочкой.
iptables -t nat -A PREROUTING -p tcp -d 192.168.122.1 --dport 80 -j DNAT --to 192.168.122.5:80
Ничего не осталось совпадений, если оно действительно не попало в компьютер, предназначенный для 192.168.122.1. Это не повлияет на указанные выше пакеты. Думаю, это была твоя цель.
Используйте iptables, чтобы переписать конечный пункт назначения, а не пытаться несколько раз изменить пакет, чтобы он соответствовал маршруту. Ваша таблица маршрутизации позаботится об отправке пакета через мост на правильный интерфейс. Итак, ваше первое правило должно гласить:
iptables -t nat -A PREROUTING -p tcp -d 89.114.150.3 --dport 80 -j DNAT --to 192.168.122.5:80
Учтите то же самое и для других ваших правил. Ваши правила POSTROUTING тоже нуждаются в доработке. Если у вас есть другие правила в вашей цепочке FORWARD, которые описывают отбрасывание или отклонение пакетов, знайте, что вам также необходимо принять ESTABLISHED, RELATED.