-------------------------------------------------- Translated by Ilgiz Kalmetev (2:5011/36.6@fidonet) --------------------------------------------------
Это рецепт настройки и запуска IP aliasing на машине с Linux. Кроме того, здесь содержатся инструкции по настройке машины на прием почты на aliased IP.
Моя конфигурация:
/sbin/insmod /lib/modules/`uname -r`/ipv4/ip_alias.o
/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.100172.16.3.1 - основной адрес, в то время как .10 и .100 - алиасы. Отметьте себе строку с eth0:x, где x=0,1,2,...n назначаются для прочих IP адресов. Основной IP адрес не нужно aliased.
/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Это все.
Для примера IP адреса выше я использовал приватные IP адреса (RFC 1918). Замените их на ваши собственные официальные или частные IP адреса.
Пример показывает только 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, а не руками!
Вопрос: Как мне сохранить установки?
Ответ: Если вы используете запуск в стиле BSD или SysV (Redhat например), то вы всегда можете включить их в /etc/rc.d/rc.local. Вот что находится в моей системе загрузки в стиле SysV (Redhat 3.0.3 и 4.0):
#setting up IP alias interfaces echo "Setting 172.16.3.1, 172.16.3.10, 172.16.3.100 IP Aliases ..." /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 #setting up the routes echo "Setting IP routes ..." /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 #
Ответ:
/etc/mynames.cw: ---------------- # /etc/mynames.cw - include all aliases for your machine here; # is a comment. domain.one.net domain.two.com domain.three.org 4.5.6.7
. . . ################## # local info # ################## . . # file containing names of hosts for which we receive email Fw/etc/mynames.cw . . .
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 rewrite: ruleset 96 returns: me rewrite: ruleset 3 returns: me rewrite: ruleset 0 input: me rewrite: ruleset 98 input: me rewrite: ruleset 98 returns: me 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 rewrite: ruleset 96 returns: me rewrite: ruleset 3 returns: me rewrite: ruleset 0 input: me rewrite: ruleset 98 input: me rewrite: ruleset 98 returns: me rewrite: ruleset 95 input: me rewrite: ruleset 95 returns: me rewrite: ruleset 0 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me rewrite: ruleset 97 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me rewrite: ruleset 0 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me >Заметьте, когда я тестировал me@4.5.6.7, он отправлял почту на локальную машину, в то время как me@4.5.6.8 был обработан smtp мейлером. Это корректный ответ.
Благодарю всех тех, кто проделал эту большую работу по Linux и IP Aliasing. И особенно Juan Jose Ciarlante за освещение моих вопросов.
Слава классным программистам!
Если документ оказался вам полезен или вы хотите что-то добавить, отправьте мне письмо.
Наслаждайтесь.