开始之前
本教程面向有以下需求的 Unix 系统管理员:他们需要找到一些方法来发现和判断有关其网络结构和配置的信息,包括各个机器上允许的服务和系统有哪些。要从本教程获得最大的收益,您应当具有 UNIX 操作系统的基本知识,以及基本了解网络和 Internet 协议 (IP) 的运作方式。
关于本教程
在访问一个 UNIX 系统时,甚至是了解现有系统时,有关系统如何运行的一个关键部分就是网络配置。您需要清楚并了解网络的许多方面,以便正确地识别问题并防患于未然。通过使用一些基本的工具和命令,可以确定单个系统的大量配置,理解了这些知识后,就可以很好地确定网络其余部分的配置。通过一些额外的工具,可以将知识扩展到网络中的更多的系统和服务。
在本教程中,您将在 UNIX 环境中使用一些基本的工具,挖掘有关系统配置的信息。通过理解这些工具并使用它们获得的信息,您将能够更好地理解系统网络配置和它的工作原理。您还将研究可以涵盖更广泛网络的工具和解决方案,获得有关网络的更详细的信息、其潜在的安全问题,这有助于找出和诊断问题的关键信息点。
理解主机的网络配置
要更好地理解网络,第一步是理解当前使用的机器的网络配置。这将为您提供许多参考基准,比如当前主机的 IP 地址、DNS 配置以及可以连接并与之通信的其他机器。
查找配置信息
确定正在使用的机器的当前配置可以使您获得对环境的基本了解。您的第一个任务是确定当前机器的 IP 地址和网络掩码(mask)。通过这两个值,可以确定机器的地址,以及可以与之直接在网络上建立连接的其他机器(比如,不需要使用路由器)。
在确定 IP 地址之前,通过使用 hostname 命令获得系统的主机名(参见清单 1)。
#p#副标题#e#清单 1. 获得主机名
$ hostname
sulaco
在选择 -a 选项时,ifconfig 命令将显示所有已配置的网络设备的当前配置信息。例如,清单 2 展示了 ifconfig 命令在一台 Solaris 机器上的输出。
清单 2. ipconfig 在 Solaris 上的输出
$ ifconfig -a
lo0: flags=2001000849
inet 127.0.0.1 netmask ff000000
pcn0: flags=201004843
mtu 1500 index 2
inet 192.168.1.25 netmask fffffc00 broadcast 192.168.3.255
lo0: flags=2002000849
inet6 ::1/128
pcn0: flags=202004841
inet6 fe80::20c:29ff:fe7f:dc5/10
从这个输出中可以看到,有一个回路(loopback)设备 lo0,本地主机的地址为 127.0.0.1。还可以看到,这个设备还有一个等效的 IPv6 地址。
pcn0 设备的配置如下:网络地址为 192.168.1.25,网络掩码为 fffffc00,相当于 255.255.252.0。可以看到,在这里地址是使用 DHCP 设置的(从 DHCP 标记列表)。
网络掩码非常重要,只要知道了网络掩码,就可以知道所在网络的大小(通过注册的 IP 地址)。在本例中,255.255.252.0 等同于 4 类 C 地址,因为 256(最大主机数)减去 252 (使用了掩码的主机数)等于 4。
通过同时使用掩码和配置后的 IP 地址,可以推测出本地网络中 IP 地址的范围。由于 IP 区块通常按照完整的组进行划分,并且是按顺序进行的,因此可以推测出整个网络中分布的 IP 地址的范围为从 192.168.0.0 到 192.168.3.255。您可以得出这一结论,因为使用 4 类 C 地址,重庆网络维护,您通常会将整个范围(192.168.0.0-192.168.255.255)划分为相等的区块 —— 其中地址前缀 192.168.1.x 必须位于 4 个地址中的第一个区块中。
#p#副标题#e#不同的操作系统使用不同的方式输出信息(和细节)。清单 3 展示了一个 Linux® 系统的输出。
清单 3. Linux 系统的输出
eth0 Link encap:Ethernet HWaddr 00:1d:60:1b:9a:2d
inet addr:192.168.0.2 Bcast:192.168.3.255 Mask:255.255.252.0
inet6 addr: fe80::21d:60ff:fe1b:9a2d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2371085881 errors:36 dropped:0 overruns:0 frame:36
TX packets:2861233776 errors:0 dropped:0 overruns:0 carrIEr:0
collisions:0 txqueuelen:1000
RX bytes:913269364222 (850.5 GiB) TX bytes:3093820025338 (2.8 TiB)
Interrupt:23 Base address:0x4000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:279755697 errors:0 dropped:0 overruns:0 frame:0
TX packets:279755697 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:388038389807 (361.3 GiB) TX bytes:388038389807 (361.3 GiB)
清单 4 展示了 Mac OS X™ 系统的输出。
清单 4. Mac OS X 系统的输出
#p#分页标题#e#lo0: flags=8049
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
gif0: flags=8010
stf0: flags=0<> mtu 1280
en0: flags=8863
inet 192.168.0.101 netmask 0xfffffc00 broadcast 192.168.3.255
ether 00:16:cb:a0:3b:cb
media: autoselect (1000baseT
supported media: autoselect 10baseT/UTP
fw0: flags=8822
lladdr 00:17:f2:ff:fe:7b:84:d6
media: autoselect
supported media: autoselect
en1: flags=8822
ether 00:17:f2:9b:3d:38
media: autoselect (
supported media: autoselect
en5: flags=8963
inet6 fe80::21c:42ff:fe00:8%en5 prefixlen 64 scopeid 0x7
inet 10.211.55.2 netmask 0xffffff00 broadcast 10.211.55.255
ether 00:1c:42:00:00:08
media: autoselect status: active
supported media: autoselect
en6: flags=8963
inet6 fe80::21c:42ff:fe00:9%en6 prefixlen 64 scopeid 0x8
inet 10.37.129.2 netmask 0xffffff00 broadcast 10.37.129.255
ether 00:1c:42:00:00:09
media: autoselect status: active
supported media: autoselect
如果希望直接对机器查询信息,那么这些信息很有用。可以使用 dig 和 nslookup 等工具提取有关名称服务和名称解析以及 IP 地址的信息。
检查路由
网络以外的主机(即与当前 IP 地址相比,超出了网络掩码的范围之外)被发送到一个路由器,从路由器转发到另一台机器。路由器可以在任何一级网络上使用,包括部门之间、不同物理位置,以及 Internet 之类的公共和外部站点。
netstat 命令将告诉您,当您的机器希望与 “本地 网络以外的机器通信时,将与那些机器或路由器建立联系。例如,下面的清单 7 来自于一台 Solaris 机器。
清单 7. netstat 命令
$ netstat -r
Routing Table: IPv4
Destination Gateway Flags Ref Use Interface
-------------------- -------------------- ----- ----- ---------- ---------
default voyager.example.pri UG 1 139 pcn0
192.168.0.0 solaris2.example.pri U 1 447 pcn0
solaris2 solaris2 UH 1 35 lo0
Routing Table: IPv6
Destination/Mask Gateway Flags Ref Use If
--------------------------- --------------------------- ----- --- ------- -----
fe80::/10 fe80::20c:29ff:fe7f:dc5 U 1 0 pcn0
solaris2 solaris2 UH 1 0 lo0