Циклический перебор 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