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

Циклический перебор через несколько интерфейсов

Я хотел бы выбрать альтернативу между сетевыми интерфейсами для определенного 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.cyberciti.biz/tips/linux-bond-or-team-multiple-network-interfaces-nic-into-single-interface.html

http://www.linuxhorizon.ro/bonding.html

http://www.linuxfoundation.org/collaborate/workgroups/networking/bonding

Мой DNS ржавый, но вы не можете просто поместить два IP-адреса в свою запись A, и большинство систем будут чередовать эти два, если я правильно помню. Конечно, это предполагает, что вы используете имя хоста, а не прямой IP.