专题:Windows 到 Linux 之旅:第 7 部分. 网络

类别:软件工程 点击:0 评论:0 推荐:
Linux 网络速成指南

级别:入门

Chris Walden (cmwalden-at-us.ibm.com)
电子商务架构师,IBM Developer Relations
2004 年 1 月

IBM 电子商务架构师 Chris Walden 将通过他在 developerWorks 上发表的九篇系列文章来指导您如何在 Linux 环境中运用您的 Windows 操作技巧。本部分将探讨网络,这是 Linux 做得最好的方面之一。

在如今这个时代,运行一台没有连接到网络的计算机几乎是难以想像的。电子邮件、Web 浏览和文件共享像打印和查看屏幕上的信息一样,都是用户所期待的。

幸运的是,Liunx 从一开始就是为网络而开发的。事实上,网络是 Linux 做得最好的事情之一。Linux 支持诸如TCP/IP 和 SMB(NetBIOS)等流行的网络协议。Linux 还具有用于监控和过滤网络流量的成熟工具。诸如 FTP、Windows 文件和打印共享以及 Web 托管等服务也是可用的。Linux 甚至还提供了用于集中目录服务、虚拟专用网(VPN)和远程过程调用的工具。

网络硬件
Linux 能够使用具有驱动程序的任何网络硬件。Linux 驱动程序单独地或以可加载模块的形式编译到内核中。Linux 内核默认支持许多流行的网卡。在选择网络硬件时,最好总是使用“硬件兼容性列表”(参见 参考资料 中的链接)中列出的设备。另外还要使用最新的 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
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 -p 显示每个套接字所属的程序的 PID 或名称 netstat -a 同时显示侦听和非侦听套接字 netstat -t 显示 TCP 连接 netstat -u 显示 UDP 连接 netstat -e 显示附加信息;使用这个选项两次,可以获得最详细的信息

下面是 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 这样的工具允许查看单独的网络连接,并显示它们与运行着的进程的关系。

参考资料 阅读 Windows 到 Linux 之旅系列文章 的其他部分(developerWorks, 2003 年 11 月)。

在线的 Linux Network Administrator's Guide, Second Edition 是在 Liunx 环境中进行网络管理的通用参考指南。初学者和有经验的用户,都能够从中找到关于几乎每个重要管理活动的信息,这些活动是管理 Linux 网络配置所必需的。

Linux Ethernet HOWTO 包含了关于哪些以太网设备可用于 Linux,以及如何设置它们的信息(重点放在硬件和以太网卡的低级驱动程序方面)。

“Linux 文档计划”也有一个 分类 HOWTO 列表,帮助您容易地查找相关文档。

“硬件控制列表”包括 Red Hat 硬件搜索页面、SuSE Linux 组件数据库 和 UnitedLinux 认证和兼容的硬件。

在 IBM developerWorks 教程“LPI certification 102 exam prep, Part 3: Networking”中,您会找到关于网络基础的更多信息。

IBM developerWorks 教程“LPI certification 102 exam prep, Part 4: Secure shell and file sharing”介绍了文件共享和安全。

系统安全是一个广博而复杂的主题,但是在互连的世界中,它影响着每个人。幸运的是,现在开始着手加强系统安全还不算太早也不算太迟。文档 Adding Security to Common Linux Distributions 和 Strategies for Keeping a Secure Server(这是前面提到过的 Linux Administration Made Easy guide 一书的第 12 章 )将帮助您加强系统安全。

IBM developerWorks 文章“Linux 硬件稳定性指南”展示了如何诊断和修复许多潜在的硬件问题。

在 IBM developerWorks 文章“在 Linux(或异构)网络上共享计算机”中学习更多关于网络的知识。


遵循 IBM developerWorks 文章“在 Linux 上构建网络路由器”的指导来模拟 Cisco 路由器的行为。

采用更好的安全性 —— IBM developerWorks 文章“使用 ssh 进行安全的连接”展示了如何实现这一点。

对那些从 Windows 转向 Linux 的读者来说,另一个重要的参考资料是 Linux 用户技术 FAQ。

要开始在 Linux 上使用 IBM 的软件产品,为您的 Linux 应用开发加油提速 将为您提供最好的参考资料。您可以找到关于 DB2、Lotus Domino、WebSphere Application Server、WebSphere Studio 等多种应用软件的安装提示和参考资料。您还可以登录获得免费的 Linux Software Evaluation Kit,里面有试用软件和培训资料。

在 developerWorks Linux 专区可以找到更多 为 Linux 开发者准备的参考资料。

关于作者
Chris Walden 是位于德克萨斯州奥斯汀的 IBM Developer Relations Technical Consulting(也称为 dragonslayers)的一名电子商务架构师,该公司为 IBM 商业伙伴提供教育、实现和咨询。他致力于 Linux 相关工作,一有机会就向身边的人宣传 Linux 的种种好处。除了完成他的架构师的职责之外,他还精通 Linux 基础设施服务器的各个领域,包括混合平台用户环境下的文件、打印以及其他应用服务等。Chris 有 10 年的计算机行业经验,从现场支持到 Web 应用开发和顾问,各个领域他都曾涉足。您可以通过 cmwalden-at-us.ibm.com 与 Chris 联系。

本文地址:http://com.8s8s.com/it/it36219.htm