子网号 193.1.1.32/27 11000001.00000001.00000001.00100000
网络号-->|<-主机号
掩码 255.255.255.224 11111111.11111111.11111111.11100000
上图中带下划线的分别表示子网号和子网掩码。同样的还可以定义第二个子网如193.1.1.64/27等。这样共有2^3=8个子网。
而在每个子网中可以有2^5-2=30个主机。减去2是因为后5位为全0时表示这个网络,全1时为这个子网的广播地址。
193.1.1.32/27中27表示网络号占前面27个比特位,在有些路由器中这样的写法可以省掉网络掩码。
注意1985年的RFC950中阻止使用全0全1的子网号以便与老式的路由器兼容,所以上图中的8个子网还要减去两个。但是稍微新一点的路由器都支持CIDR协议,8个子网还是8个,193.1.1.0/27表示第一个子网(子网号为0)并且可以用。另外193.1.1.32/27仍然是C类地址,你不可能去定义一个193.1.0.0/16出来!当然10.10.0.0/16之类从上而下是可以的。
子网化(Subneting)的过程还可以继续进行下去,比如为193.1.1.32/27继续划分子网如193.1.1.40/29。VLSM还允许路由集束,可以减小路由器上路由表的大小。使用VLSM时的缺点就是如果子网号与主机号的分隔不在点分符上则在DNS里不能做反向名字解析,当然对于路由器来说不存在这个问题。
Linux上缺省使用TCP/IP网络协议,注意第三层的网络地址如IP,IPX等是纯软件性,如果不是连到真实的大网中你可以随意设定修改,而第二层的网络地址如MAC地址等则是固定在网络接口设备中的。但是第三层的网络地址也是分配到网络接口设备上的,而不是主机!比如你的Linux
Box上有个网卡,分配的地址是10.1.1.1,你可以说到10.1.1.1可以到你的主机,而说你的主机为10.1.1.1是不严谨的,想象一下如果你有多个网卡呢?
特殊的情况是前缀为127的IP地址保留给本地主机了,这是一个Local Loopback(lo)接口,这是缺省的必备的网络接口,如果你把lo给down掉了(如ifconfig
lo down),则访问本地主机可能有问题。用ifconfig命令来看lo则像下面这样:
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:8
errors:0 dropped:0 overruns:0
TX packets:8
errors:0 dropped:0 overruns:0
如果你有其它网络接口设备,首先你得让Linux能识别支持它。以最简单的以太网卡为例。支持这个网卡后会有个eth?设备(eth0表示第一个网卡,eth1表示第二个网卡...),如果物理设备名不是eth?系列,你需要用别名设定上去(可以用ifconfig
-a看看都有那些网络接口设备)。之后就可以使用ifconfig来配置这个网卡的IP地址/地址掩码/MTU等参数,用ifconfig
eth0 up激活它。只是ifconfig只在修改内核里修改,不能保存在文件里。各种Linux发行版都提供了自己的配置工具,如Slackware的netconfig,Redhat的netconf/netcfg等等。配置完网卡后用ifconfig查看大致像下面这样:
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:8
errors:0 dropped:0 overruns:0
TX packets:8
errors:0 dropped:0 overruns:0
eth0 Link encap:10Mbps Ethernet
HWaddr 00:10:4B:0F:AA:E8
inet addr:10.10.10.111
Bcast:10.10.10.255 Mask:255.255.255.0
UP BROADCAST
RUNNING MULTICAST MTU:1500 Metric:1
RX packets:22016
errors:0 dropped:0 overruns:0
TX packets:10552
errors:0 dropped:0 overruns:0
Interrupt:10
Base address:0xb400
其中HWaddr指的是这个网卡的MAC地址,你也可以用arp来查看。
如果你要访问其它网段,则还要设置网关(gateway)指向网关设备。参看一下/etc/sysconfig/network文件。然后用ping来测试一下能否到达其它网段。如果不能到达,需要用route来检查内核路由表,运行route后显示的信息看起来像这样:
Kernel IP routing table
Destination Gateway
Genmask Flags Metric Ref
Use Iface
130.233.16.0 *
255.255.240.0 U 0
0 1 eth0
127.0.0.0 *
255.0.0.0 U
0 0
1 lo
default trinet-gw.tky.h
0.0.0.0 UG
0 0 10
eth0
如果你没有缺省路由,需要用类似于route add eth0这样的命令来添加静态路由。如果你的Linux
Box上有多块网卡,可以用routed/gated守护程序(deamon)来做动态路由。而netstat是一个基本的TCP/IP网络监控工具。你需要仔细研究这两个程序。如果你想知道从源地址到目的地址的路径到底是怎样的,可以用traceroute来跟踪路由。
接下来就是配置名字服务。通常要记住冷冰冰的数字很难,而把数字与一个有意义的名字联系起来,通过名字去访问则方便的多。不同的网络有不同的关联方法。最初Internet的前身用hosts文件来记录对应关系,但是随着网络规模的扩大,这样就不适应了,于是开发出DNS域名系统。很多书上都有讲它。
最简单的情况是你的网络上已经有了DNS服务器,在配置时简单地添上这个DNS服务器的IP地址即可,参考/etc/resolv.conf配置文件。用Linux
Box也可以自己提供名字服务,也供选择的有files,DNS,NIS+及NIS(Yellow Page),参考/etc/nsswitch.conf配置文件。注意NIS系统与DNS系统是不同的,使用它的目的主要在于当你的网络中有多个主机时可以简化管理。可以同时使用以上几种名字服务,顺序由nsswitch.conf来指定。具体怎么配置已经有文章讲了。
正如主机有名字和IP地址一样,网络和子网也能命名,这个由/etc/networks文件控制。
至于目录服务,可以去找OpenLDAP。Novell也在开发NDS
for Linux。
Linux支持很多种网络接口设备和网络协议,配置一下内核就看到了。比如Novell的IPX,再加上一个mars_nwe守护软件也可以做Netware
3.1提供的服务,在这方面做的最好的是OpenLinux发行版。不过现在IPX/SPX趋于消失,没有多大的意思,除非考虑与旧网络兼容的问题。
本文转自中文Linux论坛