在虚拟啤酒厂,我们已经将最初的 B 类网络子网划分为了 C 类子网。为了使接口识别这一点,ifconfig 命令看起来会像这样:
# ifconfig eth0 vstout netmask 255.255.255.0这会将 vstout (191.72.1.2) 的 IP 地址分配给 eth0 接口。如果我们省略了子网掩码,ifconfig 会从 IP 网络类别中推断出子网掩码,这将导致子网掩码为 255.255.0.0。现在快速检查显示:
# ifconfig eth0 eth0 Link encap 10Mps Ethernet HWaddr 00:00:C0:90:B3:42 inet addr 191.72.1.2 Bcast 191.72.1.255 Mask 255.255.255.0 UP BROADCAST RUNNING MTU 1500 Metric 1 RX packets 0 errors 0 dropped 0 overrun 0 TX packets 0 errors 0 dropped 0 overrun 0您可以看到 ifconfig 自动将广播地址(上面的 Bcast 字段)设置为常用值,即主机网络号,并将主机位全部设置为 1。此外,消息传输单元(内核将为此接口生成的以太网帧的最大大小)已设置为最大值 1500 字节。所有这些值都可以使用稍后将描述的特殊选项来覆盖。
与回环情况非常相似,您现在必须安装一个路由条目,告知内核可以通过 eth0 访问的网络。对于虚拟啤酒厂,您将像这样调用 route 命令:
# route add -net 191.72.1.0乍一看,这看起来有点像魔法,因为它不是很清楚 route 如何检测要通过哪个接口进行路由。然而,技巧非常简单:内核检查所有已配置的接口,并将目标地址(在本例中为 191.72.1.0)与接口地址的网络部分(即接口地址和子网掩码的按位与)进行比较。唯一匹配的接口是 eth0。
现在,-net 选项是做什么用的?这是因为 route 可以处理到网络的路由和到单个主机的路由(正如您在上面看到的 localhost)。当给定一个点分十进制表示法的地址时,它会尝试通过查看主机部分位来猜测它是网络还是主机名。如果地址的主机部分为零,route 假设它表示一个网络,否则将其视为主机地址。因此,route 会认为 191.72.1.0 是一个主机地址而不是网络号,因为它无法知道我们使用了子网划分。因此,我们必须明确地告诉它它表示一个网络,并给出 -net 标志。
当然,上面的 route 命令输入起来有点繁琐,而且容易出现拼写错误。更方便的方法是使用我们在上面 /etc/networks 中定义的网络名称。这使得命令更具可读性;甚至可以省略 -net 标志,因为 route 现在知道 191.72.1.0 表示一个网络。
# route add brew-net现在您已经完成了基本配置步骤,我们希望确保您的以太网接口确实运行良好。从您的以太网中选择一台主机,例如 vlager,并输入:
# ping vlager PING vlager: 64 byte packets 64 bytes from 191.72.1.1: icmp seq=0. time=11. ms 64 bytes from 191.72.1.1: icmp seq=1. time=7. ms 64 bytes from 191.72.1.1: icmp seq=2. time=12. ms 64 bytes from 191.72.1.1: icmp seq=3. time=3. ms ^C ----vstout.vbrew.com PING Statistics---- 4 packets transmitted, 4 packets received, 0% packet loss round-trip (ms) min/avg/max = 3/8/12如果您没有看到任何类似于此的输出,那么显然有些地方出错了。如果您遇到不寻常的丢包率,这暗示着硬件问题,例如不良或缺失的终端电阻等。如果您根本没有收到任何数据包,您应该使用 netstat 检查接口配置。ifconfig 显示的数据包统计信息应该告诉您是否已在此接口上发送出任何数据包。如果您也有权访问远程主机,您也应该转到该机器并检查接口统计信息。这样,您可以准确确定数据包在哪里被丢弃。此外,您应该使用 route 显示路由信息,以查看两台主机是否都具有正确的路由条目。当不带任何参数调用 route 时,它会打印完整的内核路由表(-n 选项仅使其打印点分十进制地址而不是使用主机名)。
# route -n Kernel routing table Destination Gateway Genmask Flags Metric Ref Use 127.0.0.1 * 255.255.255.255 UH 1 0 191.72.1.0 * 255.255.255.0 U 1 0这些字段的详细含义在下面的