Я хотел бы выбрать альтернативу между сетевыми интерфейсами для определенного ip. Например:
Запрос на 192.168.1.5 // использует интерфейс 1
Запрос на 192.168.1.5 // использует интерфейс 2
Запрос на 192.168.1.5 // использует интерфейс 1
Запрос на 192.168.1.5 // использует интерфейс 2
Запрос на 192.168.1.5 // использует интерфейс 1
Запрос на 192.168.1.5 // использует интерфейс 2
Я использую Ubuntu 10. Я нашел это:
http://www.go2linux.org/load-balance-traffic-for-two-isps-with-linux
Это то, что я ищу?
Я установил это на одном сервере Ubuntu, я опубликую конфигурацию ниже. Было довольно болезненно настраивать, и все же остались некоторые проблемы, эта машина также предоставляет NAT (на другом интерфейсе), а для клиентов NAT некоторые службы (openvpn, icq) путаются, когда пакеты приходят с разных адресов, которые меняются каждый раз. сейчас и тогда.
В любом случае: - Я использовал это, чтобы использовать 2x 100 Мбит / с интернет-соединение с двумя общедоступными IP-адресами - хорошо работает для apache - каждый запрос обрабатывается на другом интерфейсе и так далее ... но маршруты для клиентов фиксируются, так что это своего рода хорошо очищать кеш маршрутизации время от времени ( /sbin/route del default
) - но потом при этом - некоторые сервисы путаются. (Клиентам Openvpn необходимо добавить в конфигурацию "float", чтобы они доверяли серверу с несколькими адресами и так далее ...). Каждое соединение может получить максимум 100 Мбит / с, но 2 соединения могут достигать 200 Мбит / с ...
Многие приложения сбиты с толку, поэтому, когда у вас есть возможность заставить работать связывание - вы можете управлять коммутатором - я бы порекомендовал этот подход.
мои интернет-интерфейсы:
eth0 Link encap:Ethernet HWaddr 00:11:09:5e:af:af inet addr:69.42.248.102 Bcast:69.42.248.127 Mask:255.255.255.192 eth2 Link encap:Ethernet HWaddr 00:0e:2e:0d:32:b4 inet addr:69.42.248.103 Bcast:69.42.248.127 Mask:255.255.255.192
они настроены по умолчанию в / etc / network / interfaces
auto eth0 iface eth0 inet static address 69.42.248.102 netmask 255.255.255.192 gateway 69.42.248.65 auto eth2 iface eth2 inet static address 69.42.248.103 netmask 255.255.255.192 gateway 69.42.248.65
и, наконец, я инициализирую балансировку нагрузки, вызывая сценарий после запуска (добавьте в rc.local (перед выходом) или crontab)
#!/bin/bash # I do not remember why this is here multiple times- but I have mutliple gates and interfaces set by default so I guess it's here to clear them all ;-) /sbin/route del default /sbin/route del default /sbin/route del default /sbin/route del default ip route add default scope global \ nexthop via 69.42.248.65 dev eth0 weight 1 \ nexthop via 69.42.248.65 dev eth2 weight 1
Это в основном указывает маршрутизации использовать один и тот же шлюз с другим ethX и одинаковым весом - таким образом выполняется циклическая балансировка нагрузки для каждого соединения.
Драйвер связывания Linux предоставляет метод объединения нескольких сетевых интерфейсов в один логический связанный интерфейс.
http://www.linuxhorizon.ro/bonding.html
http://www.linuxfoundation.org/collaborate/workgroups/networking/bonding
Мой DNS ржавый, но вы не можете просто поместить два IP-адреса в свою запись A, и большинство систем будут чередовать эти два, если я правильно помню. Конечно, это предполагает, что вы используете имя хоста, а не прямой IP.