> CentOS > CentOS入门 >

CentOS常用网络配置及操作

Linux 系统中最常用的网络配置命令包括ifconfigroute ,其中ifconfig 用来查看和配置网络接口(通常是网卡)信息,包括网络接口设备的IP 地址、掩码等;route 用来管理Linux 系统内核中的路由表,它最大的用途就是用来设定静态的路由表项,通常是在系统用ifconfig 配置网络接口后,用它来设定主机或者一网段的IP 地址应该通过什么接口发送等。

3.1.1 ifconfig

1 ifconfig 的语法为:
2 ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]
3   [[-]broadcast [<address>]]
4   [netmask <address>] 
5   [up|down]

其中 interface 为网卡名,address 为IP 地址,broadcast 表示设置广播地址,其后的address 为广播地址的IP ,netmask 表示设置子网掩码,其后的address 为子网掩码的IP, up、 down 设置当前网卡的状态,up表示启用当前网卡,down 表示关闭当前网卡。

Ifconfig 的常用参数说明如下:

-a 查看所有网卡状态

-V 查看ifconfig 命令的版本信息

-s 查看统计信息

示例:

1) 将第一块网卡的 IP 地址设置为192.168.0.1:

1 ifconfig eth0 192.168.0.1 (格式: ifconfig 网络设备名 IP 地址)

2) 暂时关闭或启用网卡:

1 关闭第一块网卡: ifconfig eth0 down
2  
3 启用第一块网卡 ifconfig eth0 up

3 )将第一块网卡的子网掩码设置为 255.255.255.0:

1 ifconfig eth0 netmask 255.255.255.0 (格式:ifconfig 网络设备名 netmask子网掩码)

我们也可以同时设置 IP 地址和子网掩码:

1 ifconfig eth0 192.168.0.1 netmask 255.255.255.0

4) 查看第一块网卡的状态:

1 ifconfig eth0

如果要查看所有的网卡状态, 则直接使用不带参数的ifconfig 命令即可。

ifconfig 输出的状态信息是十分有用的,下面我们就简单说明一下:

有几个状态比较重要:

UP/DOWN :网卡是否启动了,如果是DOWN的话,那肯定无法用的;

RX packets 中的errors 包的数量如果过大说明网卡在接收时有问题;

TX packets 中的errors 包的数量如果过大说明网卡在发送时有问题;

3.1.2 route

route 命令的语法为:

1 route [-CFvnee]
2  
3 route [-v] [-A family] add [-net|-host] target [netmask Nm] [gw Gw] [metric N] [mod] [reinstate] [[dev] If]
4  
5 route [-v] [-A family] del [-net|-host] target [gw Gw] [netmask Nm] [metricN] [[dev] If]
6  
7 route [-V] [--version] [-h] [--help]

route 的常用参数说明如下:

-v 使用冗余输出模式。

-A family 指定特定的地址族 (例如”inet” “inet6″)。

-n 使用数字显示的地址 例如202.38.75.75 而不是去解释域名。

-e 使用与 netstat 相同的输出格式。

-ee 参数会产生很长的输出, 包括内核路由表的几乎所有信息。

-net 目标 (target) 是一个网段。

-host 目标 (target) 是一个单独的主机。

-F 显示内核 FIB 路由表结果可能被-e 和-ee 参数改变。

-C 显示内核中路由缓存信息。

del 删除一个路由表项。

add 增加一个路由表项。

Target 配置的目的网段或者主机 。可以是IP, 或者是网络或主机名。

netmask Nm 用来指明要添加的路由表项的网络掩码。

gw Gw 任何通往目的 (target) 的IP 分组都要通过这个网关。

metric M 设置路由表中该项的尺度域( metric field) 为M。

示例:

1) 添加一条路由表项,网段192.168.0.x 应该从接口”eth0″走

1 route add -net 192.168.0.0 netmask 255.255.255.0 dev eth0

2 )添加一条缺省路由

1 route add 0.0.0.0 gw 网关地址

如果没有其他匹配的路由项, 就使用这个路由规则。

3) 删除缺省路由

1 route del 0.0.0.0 gw 网关地址

4) route 命令的输出结果示例说明

输出的格式有以下几栏:

Destination 目标网段或者主机

Gateway 网关地址, 如果没有设置,则是”*”表示

Genmask 网络掩码

Flags 一些可能的标记如下:

U (路由是活动的)

H (目标是一个主机)

G (使用网关 (gateway))

R (reinstate route 动态路由产生的表项)

D (dynamically installed by daemon or redirect)

M (modified from routing daemon or redirect)

! (reject route)

Metric 路由距离。

Ref 路由项引用次数。( linux 内核中没有使用)

Use 查找路由项的次数 。

Iface 该路由表项对应的输出接口。

3.2 网络操作命令

Linux 系统常用的网络操作命令包括netstatnslookup、 host finger 和ping。

netstat 命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作。nslookup 命令的功能是查询一台机器的IP地址和其对应的域名。它通常需要一台域名服务器来提供域名服务,如果用户已经设置好域名服务器,就可以用这个命令查看不同 主机的IP 地址对应的域名。host 命令可根据主机名查询主机的IP 地址或根据主机IP 地址查询主机名;finger 命令的功能是查询用户的信息,通常会显示系统中某个用户的用户名、主目录、停滞时间、登录时间、登录shell 等信息。ping 命令用于查看网络上的主机是否在工作。

3.2.1 netstat

netstat 命令的语法为:

netstat [选项]

netstat的常用参数说明如下:

-a 显示所有 socket 包括正在监听的

-c 每隔 1 秒就重新显示一遍直到用户中断它

-i 显示所有网络接口的信息格式同 “ifconfig –e”

-n 以网络 IP 地址代替名称显示出网络连接情形

-r 显示核心路由表格式同 “route –e”

-t 显示 TCP 协议的连接情况

-u 显示 UDP 协议的连接情况

-v 显示正在进行的工作

示例:

1 )在本机使用 netstat 命令,其输出为如下

1 Active Internet connections (w/o servers)
2  
3 Proto Recv-Q Send-Q Local Address Foreign Address State
4  
5 tcp 0 256 10.153.89.66:ssh 10.153.21.168:1054 ESTABLISHED
6  
7 tcp 0 0 10.153.89.66:ssh 10.153.21.166:1222 ESTABLISHED
8  
9 tcp 0 0 10.153.89.66:1521 10.153.21.166:2625 ESTABLISHED
10  
11 tcp 0 0 10.153.89.66:1521 10.153.21.166:2623 ESTABLISHED
12  
13 ……
14  
15 Active UNIX domain sockets (w/o servers)
16  
17 Proto RefCnt Flags Type State I-Node Path
18  
19 unix 9 [ ] DGRAM 919 /dev/log
20  
21 unix 2 [ ] STREAM CONNECTED 50246124
22  
23 unix 3 [ ] STREAM CONNECTED 3914245
24  
25 /tmp/.ICE-unix/dcop18694-1074144356
26  
27 unix 3 [ ] STREAM CONNECTED 3914244
28  
29 unix 3 [ ] STREAM CONNECTED 3914127 /tmp/.X11-unix/X0
30  
31 …..

3.2.2 nslookup

nslookup 命令的功能是查询一台机器的IP 地址和其对应的域名。它通常需要一台域名服务器来提供域名服务。如果用户已经设置好域名服务器,就可以用这个命令查看不同主机的IP 地址对应的域名。命令的语法为:

nslookup [IP 地址/域名]

示例:

在本机执行 nslookup 命令

1 Default Server: name.tlc.com.cn
2  
3 Address: 192.168.1.99
4  
5 >

在符号“ >” 后面输入要查询的IP 地址或域名并回车即可。如果要退出该命令,输入exit 并回车即可。

3.2.3 host命令

host 命令的功能基本与nslookup 相。同命令的语法为:

host [选项] [IP 地址/域名/主机名]

host 的常用参数如下:

-a 显示所查域名或IP 地址、域名或主机名的相关信息。

示例:

1 [root]# host huawei-3com.com
2  
3 huawei-3com.com has address 172.19.1.228

3.2.4 finger

finger 命令的功能是查询用户的信息,通常会显示系统中某个用户的用户名、主目录、停滞时间、登录时间、登录shell 等信息。如果要查询远程机上的用户信息,需要在用户名后面接“@主机名”采用[用户名@主机名]的格式,不过要查询的网络主机需要运行finger 守护进程。该命令的一般格式为:

finger [选项] [使用者] [用户@主机]

finger 的常用参数如下:

-s 显示用户的注册名、实际姓名、终端名称、写状态、停滞时间、登录时间等信息。

-l 除了用-s 选项显示的信息外,还显示用户主目录、登录shell、 邮件状态等信息,以及用户主目录下的.plan 、project 和.forward 文件的内容

-p 除了不显示.plan 文件和.project 文件以外与-l 选项相同

示例:

1 )显示用户 orcale 的信息

1 finger oracle

其显示结果为

1 Login: oracle Name: (null)
2  
3 Directory: /home/oracle Shell: /bin/bash
4  
5 On since Fri Feb 6 16:26 (CST) on pts/1 from 10.153.21.166 33 seconds idle
6  
7 On since Wed Feb 4 20:10 (CST) on pts/2 from 10.153.21.166 1 second idle
8  
9 No mail.
10  
11 No Plan.

3.2.5 Ping 命令

ping 命令用于查看网络上的主机是否在工作,它向该主机发送ICMPECHO_REQUEST 包。有时我们想从网络上的某台主机上下载文件,可是又不知道那台主机是否开着,就需要使用ping 命令查看。该命令的一般格式为:

ping [选项] [主机名/IP地址]

ping 的常用参数如下:

-c 数目 在发送指定数目的包后停止

-d 设定 SO_DEBUG 的选项

-f 大量且快速地送网络封包给一台机器看它的回应

-I 秒数 设定间隔几秒送一个网络封包给一台机器预设值是一秒送一次

-l 次数 在指定次数内以最快的方式送封包数据到指定机器 (只有超级用户可以使用此选项)

-q 不显示任何传送封包的信息只显示最后的结果

-r 不经由网关而直接送封包到一台机器通常是查看本机的网络接口是否有问题

-s 字节数 指定发送的数据字节数, 预设值是56, 加上8 字节的ICMP头,一共是64ICMP 数据字节

3.3 常用网络配置文件介绍

在 Linux 系统中,TCP/IP 网络是通过若干个文本文件进行配置的,需要编辑这些文件来完成联网工作。系统中重要的有关网络配置文件为:

1 /etc/sysconfig/network
2  
3 /etc/hosts
4  
5 /etc/services
6  
7 /etc/host.conf
8  
9 /etc/nsswitch.conf
10  
11 /etc/resolv.conf
12  
13 /etc/xinetd.conf
14  
15 /etc/modules.conf
16  
17 /etc/sysconfig/network-scripts/ifcfg-ethN

接下来我们将对这些文件逐一讲述, 这些文件都可以在系统运行时进行修改,不用启动或者停止任何守护程序,更改会立刻生效( 除了/etc/sysconfig/network)。 另外,这些文件都支持由”#”开头的注释,每一个文件都有在UNIX手册页中的第5 部分中有一项,可以用man 命令来获取它们。

3.3.1 /etc/sysconfig/network 网络设置

该文件用来指定服务器上的网络配置信息, 包含了控制和网络有关的文件和守护程序的行为的参数。下面是一个例子文件:

1 NETWORKING=yes
2  
3 HOSTNAME=machine1
4  
5 GATEWAY=210.34.6.2
6  
7 FORWARD_IPV4=yes
8  
9 GATEWAYDEV=

其中, NETWORK=yes/no 表示网络是否被配置;

HOSTNAME=hostname hostname 表示服务器的主机名;

GATEWAY=gw-ip gw-ip 表示网络网关的IP 地址;

FORWARD_IPV4=yes/no 是否开启IP 转发功能;

GAREWAYDEV=gw-dev gw-dw 表示网关的设备名,如:eth0 等;

3.3.2 /etc/hosts IP 地址和主机名的映射

/etc/hosts 中包含了IP 地址和主机名之间的映射还,包括主机名的别名IP,地址的设计使计算机容易识别,但对于人却很难记住它们,为了解决这个问题,创建了/etc/hosts 这个文件。下面是一个例子文件:

1 127.0.0.1 machine1 localhost.localdomain localhost
2  
3 192.168.1.100 machine7
4  
5 192.168.1.101 otherpc otheralias

在这个例子中 ,本机名是machine1, otherpc 还有别名otheralias ,它可以指向otheralias。 一旦配置完机器的网络配置文件,应该重新启动网络以使修改生效,使用下面的命令来重新启动网络:

1 service network restart

/etc/hosts 文件通常含有主机名、localhost 和系统管理员经常使用的系统别名,有时候telnet 到Linux 机器要等待很长时间,可以通过在”/etc/hosts”加入客户的机器的IP 地址和主机名的匹配项,就可以减少登录等待时间。在没有域名服务器情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP 地址,否则,其他的主机名通常使用DNS 来解决,DNS 客户部分的配置在文件/etc/resolv.conf 中。

3.3.3 /etc/services

/etc/services 中包含了服务名和端口号之间的映射,不少的系统程序要使用这个文件,下面是RedHat 安装时缺省的/etc/services 中的前几行:

查看源代码
 
打印帮助
1 tcpmux 1/tcp # TCP port service multiplexer
2  
3 echo 7/tcp
4  
5 echo 7/udp
6  
7 discard 9/tcp sink null
8  
9 discard 9/udp sink null
10  
11 systat 11/tcp users

最左边一列是主机服务名 ,中间一列是端口号,“/ ”后面是端口类型, 可以是TCP 也可以是UDP 。任何后面的列都是前面服务的别名。在这个文件中也存在着别名,它们出现在端口号后面,在上述例子中sink 和null 都是discard服务的别名。




(责任编辑:IT)