第 7 部分. 网络

目录:

网络硬件
网络配置
分析和监控工具
结束语


本部分将探讨网络,这是 Linux 做得最好的方面之一。在如今这个时代,运行一台没有连接到网络的计算机几乎是难以想像的。电子邮件、Web 浏览和文件共享像打印和查看屏幕上的信息一样,都是用户所期待的。幸运的是,Liunx 从一开始就是为网络而开发的。事实上,网络是 Linux 做得最好的事情之一。Linux 支持诸如TCP/IP 和 SMB(NetBIOS)等流行的网络协议。Linux 还具有用于监控和过滤网络流量的成熟工具。诸如 FTP、Windows 文件和打印共享以及 Web 托管等服务也是可用的。Linux 甚至还提供了用于集中目录服务、虚拟专用网(VPN)和远程过程调用的工具。

网络硬件

Linux 能够使用具有驱动程序的任何网络硬件。Linux 驱动程序单独地或以可加载模块的形式编译到内核中。Linux 内核默认支持许多流行的网卡。在选择网络硬件时,最好总是使用“硬件兼容性列表”中列出的设备(“硬件控制列表”包括Red Hat 硬件搜索页面SuSE Linux 组件数据库UnitedLinux 认证和兼容的硬件)。另外还要使用最新的 Linux 发行版本。

一般情况下,如果使用的是兼容的网络硬件,安装系统时网卡会自动得到识别。可以使用 ifconfig 命令来检查系统上的网络硬件。默认情况下,ifconfig 显示活动的网络设备。给这个命令添加一个 -a 开关就能看到所有设备。

清单 1. 使用 ifconfig

refname: ifconfig-a

[root@cmw-t30 root]#  ifconfig -a 
eth0      Link encap:Ethernet  HWaddr 00:09:6B:60:8B:1E
          inet addr:9.41.209.160  Bcast:9.41.209.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:47255 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32949 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:22140365 (21.1 Mb)  TX bytes:13519623 (12.8 Mb)
          Interrupt:11 Base address:0xf000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:1308081 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1308081 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:183376967 (174.8 Mb)  TX bytes:183376967 (174.8 Mb)


在上面的清单中,系统中只有一块网卡,标识为 eth0。lo 适配器是一个回环(lookback),由 Linux 用来与它自身通信。后面还会进一步讨论 ifconfig 命令。

网络设备名称

Linux 网络设备在配置时被赋予别名,该别名由一个描述性的缩略词和一个编号组成。某种类型的第一个设备的编号为 0,其他设备依次被编号为 1、2、3,等等。在给设备命名时将使用下面的约定。本信息摘自 Linux Network Administrator's Guide。

·eth0, eth1 ...
这些是以太网卡接口。它们用于大多数的以太网卡,包括许多并行端口以太网卡。

·tr0, tr1 ...
这些是令牌环网卡接口。它们用于大多数的令牌环网卡,包括非 IBM 生产的网卡。

·s10, s11 ...
这些是 SLIP 接口 。SLIP 接口与串行线关联,关联顺序就是它们被分配给 SLIP 的顺序。

·ppp0, ppp1 ...
这些是 PPP 接口。就像 SLIP 接口一样,PPP 接口一旦被转换到 PPP 模式,它就与串行线关联。

·plip0. plip1 ...
这些是 PLIP 接口。PLIP 接口通过并行线传输 IP 数据报。这些接口在系统启动时由 PLIP 驱动程序分配,并被映射到并行端口。在 2.0.x 内核中,设备名称和并行端口的 I/O 端口之间存在直接的关系,但是在更新版本的内核中,设备名称是顺序分配的,就像 SLIP 和 PPP 设备一样。

·ax0, ax1 ...
这些是 AX.25 接口。AX.25 是业余无线电操作人员使用的主要协议。AX.25 接口的分配和映射方式与 SLIP 设备类似。

还有其他许多可用于其他网络驱动程序的接口类型。我们仅列出了一些最常见的。既然以太网是最常见的配置,下面就重点来讨论它。

网络配置

在安装 Linux 发行版本时,就得配置网络。您或许已经有一个来自初始配置的活动 eth0。这个配置对于当前的使用也许足够,但是您可能需要随着时间的推移做出更改。下面将介绍与 IP 网络相关的不同配置项,以及用于使用这些配置项的文件和工具。

Webmin 在 Networking 下的 Network Configuration 中提供一组优秀的网络配置工具。您可以配置单独的接口并调整它们的当前设置或已保存的设置。还可以配置路由和网关、DNS 客户端设置以及本地主机地址。在编辑好所有的配置之后,可以单击 Apply Configuration 来应用它们,不必重新启动系统。

(注:Localhost本地主机地址包含在/etc/hosts 中。这个文件和 C:\winnt\system32\drivers\etc\hosts 文件等价。其中的条目显示 IP 地址的别名,用于在不必查询 DNS 的情况下指派名称。

127.0.0.1 localhost.localdomain localhost
10.10.10.10 cmw-t30


不同发行版本中的工具 每个发行版本都有它自己用于配置网络设置的工具。 应该参考特定发行版本的文档来确定要使用的工具。每种工具提供与 Webmin 工具基本上相同的配置选项。 其中有些版本可能提供特定于该发行版本的选项。



图 1. Red Hat 8.x 和 9.x 使用 redhat-config-network 工具




图 2. SuSE 和 United Linux 使用 YAST 工具


手动配置也是可能的,不过这是一个非常深奥的主题。请参考您的发行版本文档和本文结尾处的 参考资料,以了解关于手动网络配置的更多信息。

分析和监控工具

Linux 附带了许多工具来监控网络任务。

ifconfig我们在上面使用过 ifconfig 命令来查看以太网卡的状态。然而,ifconfig 还可以配置设备并报告关于设备的情况。假设您要建立一个临时的网络配置以供测试。您可以使用发行版本中的工具来编辑配置,但是需要注意在完成测试之后,将所有设置恢复回去。通过使用 ifconfig ,我们无需影响已保存的设置,就能够快速地配置网卡:

ipconfig eth0 192.168.13.13 netmask 255.255.255.0 up


上面这条命令使用一个 C 类 IP 地址将 eth0 设置到地址 192.168.13.13,并确保它正常运行。

ipconfig eth0 down


上面这条命令将关闭 eth0 设备。关于使用 ifconfig 的完整细节,请参见 info ifconfig 页面。

ifup/ifdown 要使用已保存的配置来激活和禁用网络设备,请分别使用 ifup 和 ifdown。

# Bring up eth0 using the saved configuration
ifup eth0

# Shut down eth0
ifdown eth0


netstat 使用 netstat 控制台命令来输出网络连接、路由表、接口统计、伪装连接和组播成员。netstat 具有多个命令行开关来控制其功能。下面是其中一些常用的开关:

输出网络状态



下面是 netstat -tp 的一个例子:

清单 2. 使用 netstat
[root@cmw-t30 root]# netstat -tp
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
PID/Program name
tcp        0      0 localhost.localdo:29000 *:*                     LISTEN
2389/attvpnctl
tcp        0      0 *:10000                 *:*                     LISTEN
5945/perl
tcp        0      0 *:x11                   *:*                     LISTEN
1120/X
tcp        0      0 *:ftp                   *:*                     LISTEN
724/xinetd
tcp        0      0 *:ssh                   *:*                     LISTEN
710/sshd
tcp        0      0 *:ipp                   *:*                     LISTEN
797/cupsd
tcp        0      0 *:505                   *:*                     LISTEN
1043/rcd
tcp        0      0 localhost.localdoma:ipp localhost.localdo:32772 ESTABLISHED
797/cupsd
tcp        0      0 sig-9-65-39-140.m:44916 sdoprods2.austin.i:1352 TIME_WAIT
-
tcp        0      0 10.100.100.101:33020    64.12.29.100:5190       ESTABLISHED
1433/gaim
tcp        0      0 localhost.localdo:44954 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 localhost.localdo:44955 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 localhost.localdo:44897 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 localhost.localdo:44902 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 localhost.localdo:44903 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 localhost.localdo:44900 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 localhost.localdo:44901 localhost.localdoma:ipp TIME_WAIT
-
tcp        0      0 10.100.100.101:44888    cs9336-61.austin.r:pop3 TIME_WAIT
-
tcp        0      0 localhost.localdo:32772 localhost.localdoma:ipp ESTABLISHED
1246/gnome-cups-man
tcp        1      0 localhost.localdo:32774 localhost.localdoma:ipp CLOSE_WAIT
1246/gnome-cups-man
tcp        0      0 10.100.100.101:33019    cs46.msg.sc5.yahoo:5050 ESTABLISHED
1433/gaim
tcp        0      0 sig-9-65-39-140.m:35061 d03nm119.boulder.i:1352 CLOSE_WAIT
1720/wineserver
tcp        0      0 10.100.100.101:33021    64.12.30.4:5190         ESTABLISHED
1433/gaim


我最常使用 netstat 命令来查看处于 LISTEN 或 ESTABLISHED 状态的连接。LISTEN 是系统上的服务,它接受来自其他机器的连接。ESTABLISHED 是您的机器和其他机器之间的活动连接。请确保您知道正在运行的所有 LISTEN 程序。如果看到某些无法识别的内容,它可能就是一个安全顾虑。netstat 具有许多选项。请在命令行键入 info netstat 来获得该命令的细节。

route route 控制台命令允许您显示和操作 IP 路由表。

清单 3. 使用 route
[root@cmw-t30 plugins]# route|grep -v ipsec
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
204.146.24.42   10.100.100.1    255.255.255.255 UGH   0      0        0 eth1
10.100.100.0    *               255.255.255.0   U     0      0        0 eth1
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
default         10.100.100.1    0.0.0.0         UG    0      0        0 eth1


不带命令行开关运行 route 将显示当前路由表。可以使用 route 对该路由表进行非常精细的修改。

route add default gw 10.10.10.1


上面的命令添加一个默认的路由(它将在没有其他路由匹配的情况下被使用)。使用这个路由的所有分组都将途经网关“10.10.10.1”。实际将用于该路由的设备取决于我们如何到达“10.10.10.1”——到“10.10.10.1”的静态路由必须预先设置好。

route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0


上面的命令添加一个通过“eth0”到网络 192.56.76.x 的路由。这里的 C 类网络掩码修饰符实际上并不是必需的,因为 192.* 就是一个 C 类 IP 地址。这里的单词“dev”也可以省略。路由选择是一个非常深奥的主题。关于 route 选项的完整信息可通过 info route 命令获得。

结束语

Linux 从一开始就是为网络而设计的。它内置了以前仅在高端企业产品中才可见到的成熟功能。然而,尽管拥有所有这些强大的能力,Linux 网络的配置却远没有 Windows 网络的配置复杂。诸如 Webmin、redhat-config-network 和 YAST这样的工具允许执行图形化的配置。诸如 ifconfig 和 route 这样的工具允许通过控制台或脚本查看和修改网络参数。诸如 netstat 这样的工具允许查看单独的网络连接,并显示它们与运行着的进程的关系。
posted @ 2005-04-09 01:42  Pootow  阅读(764)  评论(0编辑  收藏  举报