Назад | Перейти на главную страницу

KVM, iptables, часть 2

У меня есть 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.