IP Alias mini HOWTO Autor: Harish Pillay h.pillay@ieee.org v?, 13 Stycznia 1997 WWeerrssjjaa ppoollsskkaa:: LLeesszzeekk UUrrbbaańńsskkii ttyyggrryyss@@ffiiddoonneett..oorrgg..ppll v1.0, 5 Kwietnia 1998 Jak ustawić IP Aliasing na maszynie Linuxowej. Dodatkowo jest instrukcja, jak ustawić odbieranie poczty na aliasowanych numerach IP. Dokument został napisany w standardzie ISO-8859-2. Oryginał tego doku­ mentu znajduje się pod adresem http://home.pacific.net.sg/ harish/lin­ uxipalias.html. ______________________________________________________________________ Spis treści 1. Mój system 2. Komendy 3. Pytania i odpowiedzi 4. Podziękowania 5. Od tłumacza (przeczytaj KONIECZNIE!) ______________________________________________________________________ 11.. MMóójj ssyysstteemm 1. Najnowsze jądro (2.0.27 - z ftp://ftp.funet.fi/pub/Linux/kernel/src/v2.0, ale IP Aliasing działa od 1.3.7x. (Najnowsze jądro w tej chwili to 2.0.33 - przyp. tłum.) 2. IP Alias skompilowany jako moduł. W "make config" powinieneś zaznaczyć, że IP Masquerade powinien być skompilowany jako (M)oduł. Zobacz Modules HOWTO (jeżeli istnieje), lub sprawdź informacje w /usr/src/linux/Documentation/modules.txt. 3. Muszę obsługiwać 2 dodatkowe adresy IP, powyżej tych, które zostały mi przydzielone. 4. D-Link DE 620 pocket adapter (nie ważne, działa z każdym obsługiwanym przez Linuxa urządzeniem sieciowym). 22.. KKoommeennddyy 1. Najpierw załaduj moduł IP Alias (możesz pominąć ten krok, jeżeli wkompilowałeś ten moduł w jądro): ___________________________________________________________________ /sbin/insmod /lib/modules/`uname -r`/ipv4/ip_alias.o ___________________________________________________________________ 2. Po drugie, ustaw pętlę zwrotną (loopback), eth0 i wszystkie numery IP zaczynając głównym numerem dla interfejsu eth0: ___________________________________________________________________ /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 ___________________________________________________________________ 172.16.3.1 jest głównym IP, a .10 i .100 są aliasami. Magiczne polece­ nie to eth0:x, gdzie x=0,1,2,...n dla różnych numerów IP. Główny adres IP nie musi być aliasowany. 3. Po trzecie, ustaw routing. Najpierw do pętli zwrotnej, potem do sieci, a na końcu do różnych adresów IP zaczynając domyślnym (pierwotnie przydzielonym): ___________________________________________________________________ /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 ___________________________________________________________________ Koniec. Jako przykładowe numery IP powyżej, używam Prywatnych numerów IP (RFC 1918) dla zilustrowania przykładu. Zamień je na swoje oficjalne lub prywatne adresy IP. Ten przykład zawiera tylko trzy numery IP. Maksymalna liczba, zdefiniowana w /usr/include/linux/net_alias.h, to 256. 256 adresów IP na JEDNEJ karcie to mnóstwo! :-) Oto, jak wygląda mój /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 ______________________________________________________________________ i /proc/net/aliases: ______________________________________________________________________ device family address eth0:0 2 172.16.3.10 eth0:1 2 172.16.3.100 ______________________________________________________________________ oraz /proc/net/alias_types: ______________________________________________________________________ type name n_attach 2 ip 2 ______________________________________________________________________ Oczywiście rzeczy w /proc/net były utworzone przez komendę ifconfig, a nie ręcznie! 33.. PPyyttaanniiaa ii ooddppoowwiieeddzzii PPyyttaanniiee:: JJaakk mmooggęę uuttrrzzyymmaaćć zzmmiiaannyy,, żżeebbyy nniiee uulleeggłłyy sskkaassoowwaanniiuu ppoo rreessttaarrcciiee ssyysstteemmuu?? OOddppoowwiieeddźź:: Jeżeli używasz init'a BSD lub System V (np. RedHat), możesz zawsze załączyć ustawienia w pliku /etc/rc.d/rc.local. Oto, co mam w moim systemie inicjalizującym (RedHat 3.0.3 i 4.0): 1. Mój /etc/rc.d/rc.local: (skrócony, żeby pokazać odpowiednie części) ___________________________________________________________________ #ustawiamy interfejsy aliasów IP echo "Ustawiam aliasy 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 #ustawiamy routing echo "Ustawiam routing 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 # ___________________________________________________________________ PPyyttaanniiee:: JJaakk uussttaawwiićć aalliiaassoowwaannąą mmaasszzyynnęę ddoo ooddbbiieerraanniiaa ee--mmaaiillii nnaa rróóżżnnee aalliiaassoowwaannee nnuummeerryy IIPP ((nnaa mmaasszzyynniiee uużżyywwaajjąącceejj sseennddmmaaiill''aa))?? 1. OOddppoowwiieeddźź:: Utwórz (jeżeli nie istnieje) plik nazwany np. /etc/mynames.cw. Nie musi mieć takiej nazwy, nie musi być też w katalogu /etc. 2. W tym pliku umieść oficjalne nazwy domen aliasowanych numerów IP. Jeżeli te IP nie mają domeny, możesz umieścić tu je same. ___________________________________________________________________ /etc/mynames.cw: ---------------- # /etc/mynames.cw - wpisz wszystkie aliasy twojej maszyny; # jest komentarzem. domain.one.net domain.two.com domain.three.org 4.5.6.7 ___________________________________________________________________ 3. W twoim pliku sendmail.cf, w miejscu definiującym makro klasy ,,Fw'', dodaj następujące dane: ___________________________________________________________________ . . . ################## # local info # ################## . . # file containing names of hosts for which we receive email Fw/etc/mynames.cw . . . ___________________________________________________________________ 4. To powinno wystarczyć. Przestestuj nowe ustawienia przez wywołanie sendmaila w trybie testowym, np.: ___________________________________________________________________ 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 > > ___________________________________________________________________ Zauważ, że kiedy testowałem adres me@4.5.6.7, dostarczył pocztę na maszynę lokalną, a me@4.5.6.8 było przekazane do mailera smtp. To jest poprawna odpowiedź. 5. Wszystko jest teraz ustawione. Mam nadzieję, że było to użyteczne dla kogoś. 44.. PPooddzziięękkoowwaanniiaa Dziękuję wszystkim, którzy zrobili tyle świetnej pracy nad Linuxen i IP Aliasingiem, a zwłaszcza Juanowi Jose Ciarlantowi za odpowiedzi na moje pytania. Podziękowania dla asów programowania! Jeżeli ten dokument był dla ciebie użyteczny, lub masz jakieś sugestie o poprawkach, wyślij e-mail na h.pillay@ieee.org. Baw się. 55.. OOdd ttłłuummaacczzaa ((pprrzzeecczzyyttaajj KKOONNIIEECCZZNNIIEE!!)) Ten dokument był pierwotnie w formie htmlowej (dla niewtajemiczonych - tłumacze z JTZ piszą w SGML), zupełnie niedostosowanej do ,,standardu HOWTO'', więc pozwoliłem sobie go do niego dostosować, m.in. podzielić na sekcje. Prawa autorskie tego tłumaczenia należą do tygrys@fidonet.org.pl. Jeżeli masz jakieś pytania lub poprawki dotyczące tego tłumaczenia, daj mi znać.