/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.100
172.16.3.1 er hoved IP-nummeret, mens .10 og .100 er aliasene. Det magiske ligger i eth0:x, hvor x=0,1,2,....n for de forskjellige
IP-nummerene. Hoved IP-nummeret trenger ikke å være alias.
/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
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.