Linux网络配置
网络硬件
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 附带了许多工具来监控网络任务。
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
来获得该命令的细节。
routeroute
控制台命令允许您显示和操作 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”也可以省略。