Виртуальные интерфейсы
Категория: Web-хостинг и серверы Internet | Автор: admin | 13-06-2010, 00:30 | Просмотров: 9679

Раньше UNIX-система обычно служила сервером для одного единственного Web-узла (например, www.acme.com). По мере роста популярности WWW практически у каждого пользователя стало возникать желание обзавестись собственным Web-узлом, и как грибы после дождя начали появляться тысячи новых компаний, занимающихся Web-хостингом.

Провайдеры быстро пришли к выводу о том, что можно добиться существенной экономии средств и ресурсов, если на одном сервере разместить несколько узлов. Благодаря этому приему можно легко управлять группой узлов, используя одно и то же аппаратное обеспечение. На практике такой подход реализуется с помощью виртуальных интерфейсов.

Виртуальные интерфейсы позволяют демону идентифицировать соединения, основываясь не только на номере целевого порта (обычно при работе с HTTP используется порт 80), но и на целевом IP-адресе соединения. В настоящее время виртуальные интерфейсы используются достаточно широко и доказали свою эффективность не только в сфере Web-хостинга.

Идея, положенная в основу функционирования виртуальных интерфейсов, весьма проста: одиночный UNIX-компьютер в сети обслуживает больше IP-адресов, чем позволяют имеющиеся физические сетевые интерфейсы. Каждый из "виртуальных" сетевых интерфейсов может иметь доменное имя, под которым он известен пользователям Internet. Это позволяет одному UNIX-серверу обслуживать буквально сотни Web-узлов. (Для сравнения: конкурирующая операционная система, работающая на платформе Intel, поддерживает виртуальные интерфейсы, но на практике может выполнять хостинг не более десятка Web-узлов. Вряд ли стоит пользоваться такой системой.)

Протокол HTTP 1.1 реализует функциональные возможности, подобные возможностям виртуальных интерфейсов (официально это называется "виртуальные интерфейсы, не имеющие IP-адреса"), устраняя потребность в назначении уникальных IP-адресов Web-серверам и в конфигурировании специального интерфейса на уровне операционной системы. Этот подход позволяет совместно использовать IP-адреса, что особенно полезно, когда один сервер содержит сотни или тысячи начальных страниц (например, в случае университетских Web-узлов). Однако такой подход нельзя назвать практичным для коммерческих узлов, поскольку уменьшается степень их масштабируемости (приходится изменять IP-адрес при перемещении узла на другой сервер) и появляется угроза безопасности системы (если доступ к узлу фильтруется брандмауэром на основе IP-адресов). Похоже, настоящие виртуальные интерфейсы еще долго будут использоваться.

 

Конфигурирование виртуальных интерфейсов

 

Настройка виртуального интерфейса проходит в два этапа. Сначала требуется создать виртуальный интерфейс на уровне TCP/IP. Конкретная процедура зависит от используемой версии UNIX; в следующих разделах приведены инструкции для каждой из наших тестовых систем. На втором этапе необходимо сообщить серверу Apache об инсталлированных виртуальных интерфейсах.

 

Solaris

 

Solaris поддерживает виртуальные интерфейсы (известные как "вторичные интерфейсы"), используя понятия физического интерфейса и логического модуля. Например, если имя физического интерфейса hme0, то соответствующие виртуальные интерфейсы могут называться hme0:l, hme0:2 и т.д. По умолчанию у физического интерфейса может быть до 256 виртуальных модулей. Если потребуется изменить это ограничение, модифицируйте с помощью команды ndd значение параметра ip_addrs_per_if .

Чтобы сконфигурировать виртуальный интерфейс, вызовите команду ifconfig, указав в качестве параметра одно из виртуальных имен (базовый физический интерфейс уже должен быть активизирован.) В большинстве случаев система настраивается так, чтобы команды ifconfig для виртуальных интерфейсов автоматически вызывались на этапе начальной загрузки.

Ниже приводится пример, когда компьютер, работающий под управлением Solaris, получает адрес в закрытом адресном пространстве виртуальной частной сети (Virtual Private Network, VPN), а также внешний Internet-адрес. Оба этих адреса связаны с физическим интерфейсом hme0. Чтобы интерфейсы автоматически конфигурировались на этапе начальной загрузки, администратор создал два разных файла, содержащих их сетевые имена: /etc/hostname.hme0 и /etc/hostname.hme0:1.

 

% ls -l /etc/host*

-rw-r—r—     1    root  10   Nov   4 10:19     /etc/hostname.hme0

-rw-r—r—     1    root  16   Dec 21 19:34      /etc/hostname.hme0:1

 

 

В этих файлах могут находиться либо имена компьютеров из файла /etc/hosts, либо IP-адреса. В рассматриваемом случае используются оба варианта:

 

% cat /etc/hostname.hme0

overkill

% cat /etc/hostname.hme0:1

206.0.1.133

% grep overkill /etc/hosts

10.1.2.9     overkill overkill.domain

 

 

Во время начальной загрузки оба адреса конфигурируются автоматически (наравне с адресом интерфейса обратной связи, который в приведенном ниже примере не показан):

 

% ifconfig -а

hme0:  flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST > mtu

     1500 inet 10.1.2.9 netmask ffffffOO broadcast 10.1.2.255

hme0:l:  flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu

    1500 inet 206.0.1.133 netmask ffffff80 broadcast 206.0.1.255

 

 

HP-UX

 

HP-UX версии 11.00 и выше поддерживает виртуальные, или "вторичные", интерфейсы, используя такое же соглашение об именовании интерфейсов, как и Solaris. Если lan0 является именем физического сетевого интерфейса, то lan0:1 — это первый связанный с ним виртуальный интерфейс. Обозначение типа ":1" представляет собой порядковый IP-номер. Каждому интерфейсу (реальному или виртуальному) при помощи команды ifconfig могут быть назначены свой IP-адрес, сетевая маска и параметры конфигурации.

Виртуальные интерфейсы появились в HP-UX 10.20, однако для работы с ними требовалось установить "заплату", которая добавляла команду ifalias для их конфигурирования.

 

Red Hat

 

Виртуальные интерфейсы в Red Hat обозначаются в том же формате интерфейс.экземпляр, что и в Solaris и HP-UX. Например, если интерфейс Ethernet называется eth0, то связанные с ним виртуальные интерфейсы именуются как eth0:0, eth0:l и т.д. Все интерфейсы конфигурируются с помощью команды ifconfig. Так, команда

 

# ifconfig eth0:0 128.138.243.150 netmask 255.255.255.192 up
 

 

настраивает интерфейс eth0:0 и назначает ему адрес в сети 128.138.243.128/26. Чтобы назначенные виртуальные адреса стали постоянными, необходимо создать для них файлы в каталоге /etc/sysconfig/network-scripts.

Файл ifcfg-eth0:0, соответствующий приведенной выше команде ifconfig, может содержать такие строки:

 

DEVICE=eth0:0

IPADDR=128.138.243.150

NETMASK=255.255.255.192

NETWORK=128.138.243.128

BROADCAST-128.138.243.191

ONBOOT=yes

 

 

FreeBSD

 

Сервер FreeBSD поддерживает виртуальные интерфейсы ("IP-псевдонимы") посредством опции alias команды ifconfig. Например, следующая команда закрепляет дополнительный IP-адрес за интерфейсом х10:

# ifconfig xl0 inet 192.168.0.1 netmask 255.255.255.255 alias

 

Чтобы просмотреть всю конфигурацию интерфейса, запустите команду ifconfig еще раз:

 

% ifconfig xl0

Xl0:  flags=8843<UP,BCAST,RUNNING,SIMPLEX,MCAST> mtu 1500

inet 192.108.21.9 netmask 0xffffff00 beast 192.108.21.255

inet 192.168.0.1 netmask 0xffffffff beast 192.168.0.1

    ether 00:60:97:9b:69:9a

    media:  l0baseT/UTP <half-duplex>

    supported media: autoselect lOObaseTX <full-duplex>

l00baseTX <half-duplex> l00baseTX l0baseT/UTP <full-duplex>

10baseT/UTP 10baseT/UTP <half-duplex>

 

 

Обратите внимание на два различных IP-адреса, указанных во второй и третьей строках вывода.

Для удаления виртуального интерфейса выполните команду ifconfig delete:

 

# ifconfig xl0 inet 192.168.0.1 delete
 

 

Чтобы виртуальные интерфейсы автоматически конфигурировались на этапе начальной загрузки, добавьте указанные ниже строки в файл rc.conf:

 

ifconfig_xl0_alias0="inet 192.168.0.1 netmask 255.255.255.255"

ifconfig_xl0_aliasl="..."

 

 

Нумерация должна начинаться с суффикса alias0 и оставаться непрерывной.

 

Передача серверу Apache информации о виртуальном интерфейсе

 

После создания виртуального интерфейса с помощью команды ifconfig требуется сообщить серверу Apache о том, какие документы должны обрабатываться при попытке подключения клиента к каждому интерфейсу. Это можно сделать посредством конструкции VirtualHost из файла httpd.conf. Каждому сконфигурированному виртуальному интерфейсу должна соответствовать одна конструкция VirtualHost. Приведем пример:

 

<VirtualHost 192.225.33.37>

ServerAdmin webmaster@www. company.com

DocumentRoot /usr/local/apache/htdocs/company

ServerName www.company.com

ErrorLog logs/www.company.com-error_log

TransferLog logs/www.company.com-access_log

</VirtualHost>

 

 

После подключения клиента к виртуальному узлу 192.225.33.37 будут обрабатываться документы из каталога /usr/local/apache/htdocs/company.


 (голосов: 1)
Версия для печати | Комментариев: 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.


 
Логин
Пароль
 

 
Locations of visitors to this page