Циклический перебор Iptables через несколько виртуальных сетевых интерфейсов

У меня есть сервер с двумя основными сетевыми интерфейсами и пятью такими виртуальными интерфейсами.

eth0 - 192.168.1.1
eth1 - 192.168.3.1

eth1:2 192.168.3.3
eth1:3 192.168.3.4
eth1:4 192.168.3.5
eth1:5 192.168.3.6
eth1:6 192.168.3.7

etho - это мой внутренний интерфейс, а eth1 - мой внешний интерфейс. Мне нужно направить весь мой трафик, используя все 5 сетевых интерфейсов, используя циклический перебор. если три запроса приходят к eth0, эти три запроса проходят через eth1:1 eth1:2 eth 1:3 соответственно. порядок не имеет значения. Мне нужно использовать все пять активных интерфейсов и маршрутизировать мой трафик с помощью циклического перебора. Как я могу это сделать? можно ли делать только с iptables?

1 ответ

Решение

Я думаю, что вы могли бы сделать это с помощью PREROUTING цепочка со статистическим модулем. Вы можете посмотреть эту статью: Простой Stateful Load Balancer с iptables и NAT

В вашем случае это может быть что-то вроде:

iptables -t nat -A PREROUTING -i eth0 -m state --state NEW -m statistic --mode random
 --probability .25 -j DNAT --to 192.168.3.3

iptables -t nat -A PREROUTING -i eth0 -m state --state NEW -m statistic --mode random
 --probability .25 -j DNAT --to 192.168.3.4

iptables -t nat -A PREROUTING -i eth0 -m state --state NEW -m statistic --mode random
 --probability .25 -j DNAT --to 192.168.3.5

iptables -t nat -A PREROUTING -i eth0 -m state --state NEW -m statistic --mode random
 --probability .25 -j DNAT --to 192.168.3.6

Это должно работать теоретически, но я не могу заверить вас, что эта установка будет работать с протоколами с состоянием

Другим вариантом может быть поиск решения, такого как HAPROXY

Другие вопросы по тегам