我们从来没有说过这些路由表是如何被创建的。每当初始化一个接口时(通常是用ifconfig命令设置接口地址),就为接口自动创建一个直接路由。对于点对点链路和环回接口来说,路由是到达主机(例如,设置H标志)。对于广播接口来说,如以太网,路由是到达网络。
到达主机或网络的路由如果不是直接相连的,那么就必须加入路由表。一个常用的方法是在系统引导时显式地在初始化文件中运行route命令。在主机svr4上,我们运行下面两个命令来添加路由表中的表项:
routeadddefaultsun1
routeaddslipbsdi1
第3个参数(default和slip)代表目的端,第4个参数代表网关(路由器),最后一个参数代表路由的度量(metric)。route命令在度量值大于0时要为该路由设置G标志,否则,当耗费值为0时就不设置G标志。不幸的是,几乎没有系统愿意在启动文件中包含route命令。在4.4BSD和BSD/386系统中,启动文件是/etc/netstart;在SVR4系统中,启动文件是/etc/inet/rc.inet;在Solaris2.x中,启动文件是/etc/rc2.d/S69inet;在SunOS4.1.x中,启动文件是/etc/rc.local;而AIX3.2.2则使用文件/etc/rc.net。
一些系统允许在某个文件中指定默认的路由器,如/etc/defaultrouter。于是在每次重新启动系统时都要在路由表中加入该默认项。初始化路由表的其他方法是运行路由守护程序或者用较新的路由器发现协议
较复杂的路由表
在我们的子网上,主机sun是所有主机的默认路由器,因为它有拨号SLIP链路连接到Internet上