Next Previous Contents

1. Mitt oppsett

Kommandoer: Det var alt. Som IP-nummer i eksempelet over har jeg brukt de Private IP-nummerne (RFC 1918) for å illustrere. Bytt dem ut med dine egne offisielle eller private IP-nummer. Eksempelet over viser bare 3 IP-nummer. Maks er 256 i /usr/include/linux/net_alias.h. 256 IP-nummer på ET kort er mye :-)! Sånn ser min /sbin/ifconfig ut:
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

Og /proc/net/aliases:

device           family address                                
eth0:0           2      172.16.3.10                        
eth0:1           2      172.16.3.100

Og /proc/net/alias_types:

type    name            n_attach
2       ip              2   

Selvfølgelig, det i /proc/net ble laget av ifconfig kommandoen, og ikke manuelt!

Spørsmål: Hvordan kan jeg beholde oppsettet etter en reboot?

Svar: Selv om du bruker BSD- eller SysV-init, kan du alltids sette det inn i /etc/rc.d/rc.local. Slik ser deler av min /etc/rc.d/rc.local ut:

#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 routesecho "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

Spørsmål: Hvordan setter jeg opp maskinen med IP alias til å ta imot e-mail fra de forskjellige IP-nummerene (på en maskin som bruker sendmail)?

Svar:Lag (hvis den ikke eksisterer allerede) en fil som heter f.eks. /etc/mynames.cw. Det trenger ikke å være dette spesielle navnet, og den trenger heller ikke å ligge i /etc mappen. I den filen setter du inn de offisielle domene navnene for IP-nummerene med alias. Har de ikke domene navn kan du putte inn IP-nummeret istedenfor. /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
I din sendmail.cf fil, hvor den definere en fil class makro Fw, setter du inn:

.
.
.
###################   local info   ###################
.
.
# file containing names of hosts for which we receive email
Fw/etc/mynames.cw
.
.
.

Det burde fikse biffen. Test f.eks. ved å kjøre sendmail i teste-modus:


ganymede$ /usr/lib/sendmail -bt

ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)

Enter  

> 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 

> 

Legg merke til at når jeg testet me@4.5.6.7, leverte den e-mailen til den lokale maskinen, mens me@4.5.6.8 ble overført til smtp maileren. Dette er riktig respons.

Nå er alt helt klart! Håper dette er til hjelp for noen.

Takk til alle som har gjort en så god jobb med Linux og IP alias. Og spesielt til Juan Jose Ciarlante for å avklare mine spørsmål.

Hyllest til ace programmererene

Hvis du finner dette dokumentet hjelpsomt eller har forslag til forbedringer, så send meg en mail (på engelsk) på h.pillay@ieee.org.


Next Previous Contents