Библиотека сайта rus-linux.net
Этот документ был последний раз обновлен 13 января 1997 года.
Мини-HOWTO, описывающее, как настроить IP-алиасинг на машине с Linux
GNU Copyleft 1996/1997 Harish Pillay (h.pillay@ieee.org)
Перевод: Станислав Рогин, SWSoft Pte Ltd.
Главный сайт: http://home.pacific.net.sg/~harish/linuxipalias.html
Краткое содержание:
Это книга рецептов того, как настроить и запустить IP-алиасинг на Linux-машине. Дополнительно к этому, здесь находятся инструкции, как получать электронную почту по этим IP-адресам.
Мои настройки:
- Самое последнее ядро (версия 2.0.27 - с сайта ftp.funet.fi:/pub/Linux/kernel/src/v2.0) - работало после версии 1.3.7x.
- IP-алиасинг, собранный в виде загружаемого модуля. Во время исполнения команды "make config" вам будет необходимо при сборке ядра указать, что вы хотите, чтобы IP-маскарадинг был собран в виде модуля. См. Modules HOW-TO (если таковой существует) или прочитайте файл /usr/src/linux/Documentation/modules.txt.
- Мне надо поддерживать 2 дополнительных IP-адреса помимо того, который я уже имею.
- Сетевой адаптер DE-620 фирмы D-Link (это не очень важно, все это работает с любым поддерживаемым Linux-ом сетевым адаптером).
Команды:
- Во-первых, загрузите модуль IP-алиасинга (вы можете пропустить этот шаг, если у вас это встроено внутрь ядра):
/sbin/insmod /lib/modules/`uname -r`/ipv4/ip_alias.o
- Во-вторых, настройте зацикленный адрес (loopback), eth0 и все IP-адреса, начиная с главного для интерфейса eth0 IP-адреса:
/sbin/ifconfig lo 127.0.0.1 /sbin/ifconfig eth0 up /sbin/ifconfig eth0 172.16.3.1 /sbin/ifconfig eth0:0 172.16.3.10 /sbin/ifconfig eth0:1 172.16.3.100
- В-третьих, настроим маршрутизацию. Первым маршрутизируем зацикленный адрес (loopback), затем сеть и, в конце концов, IP-адреса, начиная с главного:
/sbin/route add -net 127.0.0.0 /sbin/route add -net 172.16.3.0 dev eth0 /sbin/route add -host 172.16.3.1 dev eth0 /sbin/route add -host 172.16.3.10 dev eth0:0 /sbin/route add -host 172.16.3.100 dev eth0:1 /sbin/route add default gw 172.16.3.200
И все.
В примере выше показаны только 3 IP-адреса. Максимум, заданный в /usr/include/linux/net_alias.h, равен 256. 256 IP-адресов - для ОДНОЙ карты это много! :-)
Вот что выдает моя команда /sbin/ifconfig:
lo Link encap:Local Loopback inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1 RX packets:5088 errors:0 dropped:0 overruns:0 TX packets:5088 errors:0 dropped:0 overruns:0 eth0 Link encap:10Mbps Ethernet HWaddr 00:8E:B8:83:19:20 inet addr:172.16.3.1 Bcast:172.16.3.255 Mask:255.255.255.0 UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:334036 errors:0 dropped:0 overruns:0 TX packets:11605 errors:0 dropped:0 overruns:0 Interrupt:7 Base address:0x378 eth0:0 Link encap:10Mbps Ethernet HWaddr 00:8E:B8:83:19:20 inet addr:172.16.3.10 Bcast:172.16.3.255 Mask:255.255.255.0 UP BROADCAST RUNNING MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 eth0:1 Link encap:10Mbps Ethernet HWaddr 00:8E:B8:83:19:20 inet addr:172.16.3.100 Bcast:172.16.3.255 Mask:255.255.255.0 UP BROADCAST RUNNING MTU:1500 Metric:1 RX packets:1 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0
А вот что содержит /proc/net/aliases:
device family address eth0:0 2 172.16.3.10 eth0:1 2 172.16.3.100
И, в свою очередь, /proc/net/alias_types:
type name n_attach 2 ip 2
Конечно, все, что в /proc/net, создано ifconfig-ом, а не вручную!
Вопрос: Как сохранить настройки в процессе перезагрузки?
- Мой файл /etc/rc.d/rc.local: (только интересующая нас часть)
#Настраиваем интерфейсы с IP-алиасингом echo "Установка IP-алиасов 172.16.3.1, 172.16.3.10, 172.16.3.100..." /sbin/ifconfig lo 127.0.0.1 /sbin/ifconfig eth0 up /sbin/ifconfig eth0 172.16.3.1 /sbin/ifconfig eth0:0 172.16.3.10 /sbin/ifconfig eth0:1 172.16.3.100 #Настройка маршрутизации echo "Настройка IP-маршрутизации..." /sbin/route add -net 127.0.0.0 /sbin/route add -net 172.16.3.0 dev eth0 /sbin/route add -host 172.16.3.1 eth0 /sbin/route add -host 172.16.3.10 eth0:0 /sbin/route add -host 172.16.3.100 eth0:1 /sbin/route add default gw 172.16.3.200 #
Вопрос: Как настроить машину с IP-алиасингом для получения почты, идущей по различным IP-адресам (на машине, использующей sendmail)?
- Ответ: Создайте (если еще не создали) файл с именем, например /etc/mynames.cw. Он не обязательно должен называться именно так и не обязательно должен находиться в каталоге /etc.
- В этом файле напишите официальные имена доменов для этих IP-адресов. Если у них нет имен, то поместите туда просто сами IP-адреса.
/etc/mynames.cw:
----------------
# /etc/mynames.cw - вставьте сюда все алиасы для вашей машины; # - это комментарий.
domain.one.net
domain.two.com
domain.three.org
4.5.6.7
- В файле sendmail.cf, где определяется макрос класса файлов Fw, добавьте следующее:
. . . ######################## # Локальная информация # ######################## . . # Файл, содержащий имена хостов, для которых мы получаем почту Fw/etc/mynames.cw . . .
- Это должно сработать. Проверьте новые настройки в тестовом режиме sendmail, в соответствии с примером:
ganymede$ /usr/lib/sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter < ruleset> < address> > 0 me@4.5.6.7 rewrite: ruleset 0 input: me @ 4 . 5 . 6 . 7 rewrite: ruleset 98 input: me @ 4 . 5 . 6 . 7 rewrite: ruleset 98 returns: me @ 4 . 5 . 6 . 7 rewrite: ruleset 97 input: me @ 4 . 5 . 6 . 7 rewrite: ruleset 3 input: me @ 4 . 5 . 6 . 7 rewrite: ruleset 96 input: me < @ 4 . 5 . 6 . 7 > rewrite: ruleset 96 returns: me < @ 4 . 5 . 6 . 7 . > rewrite: ruleset 3 returns: me < @ 4 . 5 . 6 . 7 . > rewrite: ruleset 0 input: me < @ 4 . 5 . 6 . 7 . > rewrite: ruleset 98 input: me < @ 4 . 5 . 6 . 7 . > rewrite: ruleset 98 returns: me < @ 4 . 5 . 6 . 7 . > rewrite: ruleset 0 returns: $# local $: me rewrite: ruleset 97 returns: $# local $: me rewrite: ruleset 0 returns: $# local $: me > 0 me@4.5.6.8 rewrite: ruleset 0 input: me @ 4 . 5 . 6 . 8 rewrite: ruleset 98 input: me @ 4 . 5 . 6 . 8 rewrite: ruleset 98 returns: me @ 4 . 5 . 6 . 8 rewrite: ruleset 97 input: me @ 4 . 5 . 6 . 8 rewrite: ruleset 3 input: me @ 4 . 5 . 6 . 8 rewrite: ruleset 96 input: me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 96 returns: me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 3 returns: me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 0 input: me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 98 input: me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 98 returns: me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 95 input: < > me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 95 returns: me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 0 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 97 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me < @ 4 . 5 . 6 . 8 > rewrite: ruleset 0 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me < @ 4 . 5 . 6 . 8 > >
Заметьте, что, когда я тестировал me@4.5.6.7, почта доставлена на локальную машину, а me@4.5.6.8 была передана smtp-mailer-у. Так и должно быть.
- У вас все настроено.
Надеюсь, все вышесказанное кому-нибудь пригодится.
Спасибо всем, кто провел титаническую работу над Linux-ом и IP-алиасингом. И особенно Juan Jose Ciarlante за ответы на мои вопросы.
Честь и слава программистам-асам!
Если вам пригодился этот документ, или у вас есть предложения или дополнения, пишите мне по адресу h.pillay@ieee.org.
Наслаждайтесь.
Авторские права
Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.
Этот документ является частью проекта Linux HOWTO.
Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.
Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.
Мы бы хотели распространить эту
информацию по всем возможным каналам. Но
при этом сохранить авторские права и быть
уведомленными о всех планах
распространения HOWTO. Если у вас возникли
вопросы, пожалуйста, обратитесь к
координатору проекта Linux HOWTO по электронной
почте: <linux-howto@metalab.unc.edu>
или к координатору русского перевода Linux HOWTO
компании SWSoft Pte Ltd. по адресу <linux-howto@asplinux.ru>