IP Alias mini HOWTO 如何在 Linux 机器上设定 IP 别名

资讯 驱动中国 538 次阅读
分享 Q

原始文件:LinuxIPAliasminiHOWTO
翻译日期:1997/10/23
翻译维护:cwhuang@phys.ntu.edu.tw
----------------------------------------------------------------------------------------------

本文最後修改日期:January13th1997.

如何在Linux机器上设定IP别名(aliasing)

GNUCopyleft1996/1997HarishPillay(h.pillay@ieee.org)

原始站:http://home.pacific.net.sg/~harish/linuxipalias.html


摘要:

本文说明如何在Linux机器上设定并执行IP别名.除此之外,还有如何设定在IP
别名上接收e-mail.


我的设定:

*最新的核心(2.0.27-从ftp://ftp.funet.fi/pub/Linux/kernel/src/v2.0取得)-
从1.3.7x以後就可以.
*将IPAlias编译成可载入模组.你在用"makeconfig"指令编译核心时,如果要
把IPMasq编译成模组(Modules)应会被问到.查看ModulesHOWTO(如果有的话)
或是查看/usr/src/linux/Documentation/modules.txt中的资讯.
*我在已分配给我的IP之外还又要了两个额外的IP.
*一片D-LinkDE620网路卡(不重要,任何Linux支援的网路卡都行).


指令:

*首先载入IPAlias模组(如果你将它编译进核心可跳过此步骤):

/sbin/insmod/lib/modules/`uname-r`/ipv4/ip_alias.o

*再来,建立回绕(loopback)装置,以及eth0界面上以主IP号码为开头的所有IP
号码:

/sbin/ifconfiglo127.0.0.1
/sbin/ifconfigeth0up
/sbin/ifconfigeth0172.16.3.1
/sbin/ifconfigeth0:0172.16.3.10
/sbin/ifconfigeth0:1172.16.3.100

172.16.3.1是主IP号码,而.10及.100是别名.比较奇怪的地方是eth0:x,
其中x=0,1,2,...n在每一不同的IP号码上.主IP号码不需要这个.

*第三步是建立递送路径.首先,递送到回绕装置,然後是区域网路,最後是不同的
IP号码及预设递送路径:

/sbin/routeadd-net127.0.0.0
/sbin/routeadd-net172.16.3.0deveth0
/sbin/routeadd-host172.16.3.1deveth0
/sbin/routeadd-host172.16.3.10deveth0:0
/sbin/routeadd-host172.16.3.100deveth0:1
/sbin/routeadddefaultgw172.16.3.200

就这样了.

在上面的例子中,为了说明我用的是RFC1918所定义的私用IP号码.用你正式或
私有的IP号码来取代它.

上面的例子只展示了三个IP号码.在/usr/include/linux/net_alias.h中定义的
最大值是256.在一片网路卡上256个IP号码已经很多了:-)!

我用/sbin/ifconfig看起来像这样:

loLinkencap:LocalLoopback
inetaddr:127.0.0.1Bcast:127.255.255.255Mask:255.0.0.0
UPBROADCASTLOOPBACKRUNNINGMTU:3584Metric:1
RXpackets:5088errors:0dropped:0overruns:0
TXpackets:5088errors:0dropped:0overruns:0

eth0Linkencap:10MbpsEthernetHWaddr00:8E:B8:83:19:20
inetaddr:172.16.3.1Bcast:172.16.3.255Mask:255.255.255.0
UPBROADCASTRUNNINGPROMISCMULTICASTMTU:1500Metric:1
RXpackets:334036errors:0dropped:0overruns:0
TXpackets:11605errors:0dropped:0overruns:0
Interrupt:7Baseaddress:0x378

eth0:0Linkencap:10MbpsEthernetHWaddr00:8E:B8:83:19:20
inetaddr:172.16.3.10Bcast:172.16.3.255Mask:255.255.255.0
UPBROADCASTRUNNINGMTU:1500Metric:1
RXpackets:0errors:0dropped:0overruns:0
TXpackets:0errors:0dropped:0overruns:0

eth0:1Linkencap:10MbpsEthernetHWaddr00:8E:B8:83:19:20
inetaddr:172.16.3.100Bcast:172.16.3.255Mask:255.255.255.0
UPBROADCASTRUNNINGMTU:1500Metric:1
RXpackets:1errors:0dropped:0overruns:0
TXpackets:0errors:0dropped:0overruns:0

而/proc/net/aliases是

devicefamilyaddress
eth0:02172.16.3.10
eth0:12172.16.3.100

而/proc/net/alias_types是

typenamen_attach
2ip2

当然,/proc/net的内容是由ifconfig指令产生而非用手写的!


问:如何在重新启动机器後保持设定?
答:不论你是用BSD形式或是SysV形式(例如RedHat)的init启动,你都可以把它
放在/etc/rc.d/rc.local中.下面是我在我的SysVinit系统(RedHat3.0.3
及4.0)中的设定:

*我的/etc/rc.d/rc.local:(修改过只显示相关的部份)

#settingupIPaliasinterfaces
echo"Setting172.16.3.1,172.16.3.10,172.16.3.100IPAliases..."
/sbin/ifconfiglo127.0.0.1
/sbin/ifconfigeth0up
/sbin/ifconfigeth0172.16.3.1
/sbin/ifconfigeth0:0172.16.3.10
/sbin/ifconfigeth0:1172.16.3.100
#settinguptheroutes
echo"SettingIProutes..."
/sbin/routeadd-net127.0.0.0
/sbin/routeadd-net172.16.3.0deveth0
/sbin/routeadd-host172.16.3.1eth0
/sbin/routeadd-host172.16.3.10eth0:0
/sbin/routeadd-host172.16.3.100eth0:1
/sbin/routeadddefaultgw172.16.3.200
#


问:我如何在具IP别名的机器上在不同的IP别名号码上接收电子邮件(在一部用
sendmail的机器上)?
答:*建立(如果还没有的话)一个档案,例如叫/etc/mynames.cw.不需要真的是这个
名字,也不一定要放在/etc目录下.

*在那个档案中,放上别名IP号码的完整领域名称.如果别名的IP没有领域名
称,你可以用这个IP本身.

/etc/mynames.cw:
----------------
#/etc/mynames.cw-includeallaliasesforyourmachinehere;#isacomment.
domain.one.net
domain.two.com
domain.three.org
4.5.6.7

*在你的sendmail.cf档中,在它定义档案类别巨集Fw的地方,加上:

.
.
.
##################
#localinfo#
##################
.
.
#filecontainingnamesofhostsforwhichwereceiveemail
Fw/etc/mynames.cw
.
.
.

*这样应该就可以了.以测试模式执行sendmail以测试新的设定:

ganymede$/usr/lib/sendmail-bt
ADDRESSTESTMODE(ruleset3NOTautomaticallyinvoked)
Enter<ruleset><address>
>0me@4.5.6.7
rewrite:ruleset0input:me@4.5.6.7
rewrite:ruleset98input:me@4.5.6.7
rewrite:ruleset98returns:me@4.5.6.7
rewrite:ruleset97input:me@4.5.6.7
rewrite:ruleset3input:me@4.5.6.7
rewrite:ruleset96input:me<@4.5.6.7>
rewrite:ruleset96returns:me<@4.5.6.7.>
rewrite:ruleset3returns:me<@4.5.6.7.>
rewrite:ruleset0input:me<@4.5.6.7.>
rewrite:ruleset98input:me<@4.5.6.7.>
rewrite:ruleset98returns:me<@4.5.6.7.>
rewrite:ruleset0returns:$#local$:me
rewrite:ruleset97returns:$#local$:me
rewrite:ruleset0returns:$#local$:me
>0me@4.5.6.8
rewrite:ruleset0input:me@4.5.6.8
rewrite:ruleset98input:me@4.5.6.8
rewrite:ruleset98returns:me@4.5.6.8
rewrite:ruleset97input:me@4.5.6.8
rewrite:ruleset3input:me@4.5.6.8
rewrite:ruleset96input:me<@4.5.6.8>
rewrite:ruleset96returns:me<@4.5.6.8>
rewrite:ruleset3returns:me<@4.5.6.8>
rewrite:ruleset0input:me<@4.5.6.8>
rewrite:ruleset98input:me<@4.5.6.8>
rewrite:ruleset98returns:me<@4.5.6.8>
rewrite:ruleset95input:<>me<@4.5.6.8>
rewrite:ruleset95returns:me<@4.5.6.8>
rewrite:ruleset0returns:$#smtp$@4.5.6.8$:me<@4.5.6.8>
rewrite:ruleset97returns:$#smtp$@4.5.6.8$:me<@4.5.6.8>
rewrite:ruleset0returns:$#smtp$@4.5.6.8$:me<@4.5.6.8>
>

注意,当我测试me@4.5.6.7时,它将信件送到本地机器上,因为me@4.5.6.8会
被smtpmailer拒绝.这是正常的回应.

*所有都设定完成了.

希望前面说的对某些人有用.

感谢那些在Linux及IP别名上做了伟大贡献的人们.还有特别感谢JuanJose
Ciarlante澄清我的疑问.还有感谢那些为我找出打字错误及提供建议的人!

如果你认为这份文件有用,或有改进的建议的话,请寄电子邮件给我到
h.pillay@ieee.org.

好好享受吧!

有任何问题吗?来信到h.pillay@ieee.org.

IPAliasminiHOWTO如何在Linux机器上设定I
版权声明:本文由驱动中国整理发布,转载需注明出处与原文链接。如有疑问请联系 editor@qudong.com
本文价值 成为第一个评分的人
登录后为本文打分
网友评论0 条评论
正在回复 的评论取消
评论加载中…
🔐

登录后参与互动

评论、点赞均可赚积分
连续签到、邀请好友也有奖励 🎁

电脑端: 微信扫码登录 微信内: 一键登录

微信扫一扫

打开微信「扫一扫」,分享本文到朋友圈或好友