网络环境的设置是所有服务搭建的基础,没有网络环境的设置,Linux主机就无法很好地与外界进行通信。而一个良好的网络环境可以减少维护成本,从而大大提高Linux主机的工作效率和质量。下面就对常规的网络设置进行逐一介绍。
1.2.1 配置主机名
对于提供TCP/IP网络功能的Linux主机来说,都必须设置一个IP地址来标识自己。这就像人们所使用的身份证号码一样。每一个身份证号码都可以唯一地标识一个人。但对人而言,IP地址总是不容易被记忆。因此,Linux允许用户为计算机设定一个简单易懂的名字,就如同日常生活中人们使用的姓名一样。在Linux中,这个名字称之为主机名,并且要确保主机名在网络中是唯一的。否则,通信会受到影响。建议设置主机名的时候,有规则地进行设置。例如,按照主机功能进行划分。
1. 设置主机名
通过编辑/etc/sysconfig/network文件中的HOSTNAME字段可以修改主机名,如下所示。
[root@RHEL5 sysconfig]# vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=RHEL5
HOSTNAME=RHEL5表示主机名设置为RHEL5。
注意:修改主机名后,需要重新启动系统后生效。
2. 查看主机名
设置完主机名后,可以使用hostname命令查看当前主机名称,如下所示。
[root@RHEL5 sysconfig]# hostname
RHEL5
技巧:可以使用两个简单的命令临时设置主机名。
① 使用sysctl命令修改内核参数,格式为:sysctl kernel.hostname=主机名,如下所示。
[root@RHEL5 ~]# sysctl kernel.hostname=new
kernel.hostname = new #new为新设置的主机名
② 使用hostname命令去设置主机名。格式为:hostname 主机名,如下所示。
[root@RHEL5 sysconfig]# hostname newname
该设置为临时生效。重新启动系统后,设置失效。
1.2.2 使用ifconfig配置IP地址及辅助IP地址
大多数的Linux发行版都会内置一些命令来配置网络。而ifconfig是最常用的命令之 一,它通常用来设置IP地址和子网掩码以及查看网卡相关配置。
1. 设置IP地址
使用ifconfig命令配置IP地址,格式如下所示。
ifconfig 网卡名 ip地址 netmask 子网掩码
『示例1.1』设置第一块以太网卡(eth0)的IP地址为10.0.0.1,子网掩码为255.0.0.0。
[root@RHEL5 /]# ifconfig eth0 10.0.0.1 netmask 255.0.0.0
2. 查看IP地址
使用ifconfig命令可以查看网卡配置信息,如MAC地址、IP地址、收发数据包情况等,如下所示。
[root@RHEL5 /]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:4E:C0:3A
inet addr:10.0.0.1 Bcast:10.255.255.255 Mask:255.0.0.0
inet6 addr: fe80::20c:29ff:fe4e:c03a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4295 errors:0 dropped:0 overruns:0 frame:0
TX packets:4428 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:605069 (590.8 KiB) TX bytes:783547 (765.1 KiB)
Interrupt:177 Base address:0x1080
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:2061 errors:0 dropped:0 overruns:0 frame:0
TX packets:2061 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3317616 (3.1 MiB) TX bytes:3317616 (3.1 MiB)
执行命令后,ifconfig命令会显示所有激活网卡的信息,其中eth0为物理网卡,lo为回环测试接口。每块网卡的详细情况,通过标志位表示,如表1.1所示。
表1.1 ifconfig字段解析
标 志 位 | 注 解 |
eth0 | 表示第一块以太网卡 |
Link encap | 表示该网卡位于OSI物理层(Physical Layer)的名称 |
HWaddr | 表示网卡的MAC地址(Hardware Address) |
inet addr | 表示该网卡在TCP/IP网络中的IP地址 |
Bcast | 表示广播地址(Broad Address) |
Mask | 表示子网掩码(Subnet Mask) |
MTU | 表示最大传送单元,不同局域网类型的MTU值不一定相同,对以太网来说,MTU的默认设置是1500个字节 |
Metric | 表示度量值,通常用于计算路由成本 |
RX | 表示接收的数据包 |
TX | 表示发送的数据包 |
collisions | 表示数据包冲突的次数 |
txqueuelen | 表示传送列队(Transfer Queue)长度 |
续表
标 志 位 | 注 解 |
Interrupt | 表示该网卡的IRQ中断号 |
Base address | 表示I/O地址 |
如果想单独查看某块网卡的状况,可以在ifconfig命令后加上指定的网卡名,如下 所示。
[root@RHEL5 /]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:4E:C0:3A
inet addr:10.0.0.1 Bcast:10.255.255.255 Mask:255.0.0.0
inet6 addr: fe80::20c:29ff:fe4e:c03a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4412 errors:0 dropped:0 overruns:0 frame:0
TX packets:4543 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:616659 (602.2 KiB) TX bytes:799390 (780.6 KiB)
Interrupt:177 Base address:0x1080
3. 设置辅助IP地址
在实际工作中,可能会出现一块网卡需要拥有多个IP地址的情况,可以通过设置虚拟网卡来实现。命令格式如下。
ifconfig 网卡名:虚拟网卡ID ip地址 netmask 子网掩码
『示例1.2』为第一块以太网卡(eth0)设置一个辅助IP地址10.1.1.1 ,子网掩码为255.0.0.0,如下所示。
[root@RHEL5 ~]# ifconfig eth0:0 10.1.1.1 netmask 255.0.0.0
如果不设置netmask,则使用默认的子网掩码。
使用ifconfig命令查看,如下所示。
[root@RHEL5 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:37:A6:C4:68:E3
inet addr:10.0.0.1 Bcast:10.255.255.255 Mask:255.0.0.0
inet6 addr: fe80::237:a6ff:fec4:68e3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:750 errors:0 dropped:0 overruns:0 frame:0
TX packets:682 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:65514 (63.9 KiB) TX bytes:92076 (89.9 KiB)
Interrupt:177 Base address:0x1080
eth0:0 Link encap:Ethernet HWaddr 00:37:A6:C4:68:E3
inet addr:10.1.1.1 Bcast:10.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:177 Base address:0x1080
eth0:0表示eth0的第一个虚拟网卡,如果还想继续设置更多的IP地址,可以使用eth0:1;eth0:2;eth0:3……分别表示第二块、第三块、第四块虚拟网卡,以此类推。对这些虚拟网卡设置IP地址即可实现一块网卡配置多个辅助IP地址需求。
1.2.3 禁用和启用网卡
对于网卡的禁用和启动,依然可以使用ifconfig命令,格式如下所示。
ifconfig 网卡名称 down #禁用网卡
ifconfig 网卡名称 up #启用网卡
如下所示。
[root@RHEL5 /]# ifconfig eth0 down
[root@RHEL5 /]# ifconfig eth0 up
使用ifdown和ifup命令也可以实现禁用和启用网卡的效果。
如下所示。
[root@RHEL5 /]# ifdown eth0 #禁用第一块以太网卡
[root@RHEL5 /]# ifup eth0 #启用第一块以太网卡
1.2.4 更改网卡MAC地址
MAC地址也叫物理地址或硬件地址,它是全球唯一的地址,由网络设备制造商生产时写在网卡内部。MAC地址的长度为48位(6个字节),通常表示为12个十六进制数,每2个十六进制数之间用冒号隔开。如:00:0C:29:4E:C0:3A就是一个MAC地址。其中前6位十六进制数00:0C:29代表网络硬件制造商的编号,它由IEEE(电气与电子工程师协会)分配,而后3位十六进制数4E:C0:3A代表该制造商所制造的某个网络产品(如网卡)的系列号。
更改网卡MAC地址时,需要先禁用该网卡,然后使用ifconfig命令进行修改。
ifconfig 网卡名 hw ether MAC地址
『示例1.3』修改第一块以太网卡(eth0)的MAC地址为00:37:A6:C4:68:E3,如下所示。
[root@RHEL5 /]# ifdown eth0
[root@RHEL5 /]# ifconfig eth0 hw ether 00:37:A6:C4:68:E3
[root@RHEL5 /]# ifup eth0
使用ifconfig命令再次查看,网卡MAC地址已经更改完毕,如下所示。
[root@RHEL5 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:37:A6:C4:68:E3
inet addr:10.0.0.1 Bcast:10.255.255.255 Mask:255.0.0.0
inet6 addr: fe80::237:a6ff:fec4:68e3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:33 errors:0 dropped:0 overruns:0 frame:0
TX packets:120 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3908 (3.8 KiB) TX bytes:21566 (21.0 KiB)
Interrupt:177 Base address:0x1080
注意:ifconfig命令修改IP地址和MAC地址均为临时生效。重新启动系统后,设置失效。可以通过修改网卡配置文件使其永久生效。详情请参考1.2.6节。
1.2.5 route命令设置网关
route命令可以说是ifconfig命令的黄金搭档。也像ifconfig命令一样几乎所有的Linux发行版都可以使用该命令。route通常用来进行路由设置。例如添加或删除路由条目,以及查看路由信息。也可以用来设置默认网关,命令格式如下。
route add default gw IP 地址 #添加默认网关
route del default gw IP 地址 #删除默认网关
『示例1.4』将Linux主机的默认网关设置为10.0.0.1。
[root@RHEL5 ~]# route add default gw 10.0.0.1
当设置好网关之后,使用route命令可以查看网关及路由情况,如下所示。
[root@RHEL5 ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
10.0.0.0 * 255.0.0.0 U 0 0 0 eth0
default 10.0.0.1 0.0.0.0 UG ① 0 0 0 eth0
① Flags用来描述该条路由条目的相关信息,如是否活跃,是否为网关等。U表示该条路由条目为活跃的,G表示该条路由条目要涉及到网关。
1.2.6 网卡配置文件
前面介绍的ifconfig和route命令去设置IP地址及网关时,配置均为临时生效。也就是说,重新启动系统后,配置失效。如何去解决这个问题,让配置永久生效呢?可以直接编辑网卡配置文件,通过参数设置来配置网卡。网卡配置文件位于/etc/sysconfig/network- scripts/目录下,如下所示。
[root@RHEL5 sysconfig]# cd /etc/sysconfig/network-scripts/
[root@RHEL5 network-scripts]# ls ifcfg-*
ifcfg-eth0 ifcfg-eth1 ifcfg-lo
每块网卡都有一个单独的配置文件,可以通过文件名找到每块网卡对应的配置文件。例如,ifcfg-eth0就是eth0这块网卡的配置文件。下面以/etc/sysconfig/network-scripts/ ifcfg-eth0文件为例进行配置,如下所示。
[root@RHEL5 network-scripts]# vi ifcfg-eth0
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=static
IPADDR=10.0.0.1
NETMASK=255.0.0.0
HWADDR=00:0C:29:4E:C0:3A
ONBOOT=yes
TYPE=Ethernet
每个网卡配置文件都存储了网卡的状态,每一行代表一个参数值。系统启动时通过读取该文件所记录的情况,来配置网卡。常见的参数如表1.2所示。
表1.2 网卡参数
参 数 | 注 解 | 默 认 值 | 是否可省略 |
DEVICE | 指定网卡名称 | 无 | × |
BOOTPROTO | 指定启动方式 static:表示使用静态IP地址 bootp/dhcp:表示通过BOOTP或DHCP协议自动获得IP地址 | static | √ |
HWADDR | 指定网卡的MAC地址 | 无 | √ |
BROADCAST | 指定广播地址 | 通过IP地址和 子网掩码自动计算得到 | √ |
IPADDR | 指定IP地址 | 无 | √ 当BOOTPROTO=static时不能省略 |
NETMASK | 指定子网掩码 | 无 | √ 当BOOTPROTO=static时不能省略 |
NETWORK | 指定网络地址 | 通过IP地址和 子网掩码自动计算得到 | √ |
ONBOOT | 指定在启动network服务时,是否启用该网卡 | yes | √ |
GATEWAY | 指定网关 | 无 | √ |
修改过网卡配置文件后,需要重新启动network服务或者重新启用设置过的网卡,使配置生效。