2.8 网络配置
Linux可以通过两种方式为系统设置网络参数。一种是通过命令设置的方式,另一种是通过修改系统配置文件来实现。
2.8.1 命令行设置网络参数
1. 网络接口参数——ifconfig命令
描述:显示或设置网络接口信息
用法:ifconfig interface 选项|地址
设置eth0网卡接口IP地址为192.168.0.31,子网掩码为255.255.255.0:
[root@instructor ~]# ifconfig eth0 192.168.0.31 netmask 255.255.255.0
关闭eth0网卡接口:
[root@instructor ~]# ifconfig eth0 down
开启eth0网卡接口:
[root@instructor ~]# ifconfig eth0 up
2. 主机名参数——hostname命令
描述:显示或设置系统主机名
用法:hostname [选项]
[root@instructor ~]# hostname instructor.example.com 设置主机名 [root@instructor ~]# hostname instructor.example.com [root@instructor ~]# hostname -i 192.168.0.254
Hostname -i需要读取/etc/hosts来判断本机IP地址,如果该文件无记录,则提示hostname: Host name lookup failure。
3. 路由参数——route命令
描述:显示或设置静态IP路由表
用法:route [选项]查看路由信息
route add 目标网络 gw 网关地址添加路由表记录
route del 目标网络删除路由表记录
添加默认网关为192.168.0.254:
[root@instructor ~]# route add default gw 192.168.0.254
添加指定网段的网关:
[root@instructor ~]# route add -net 172.16.0.0/16 gw 192.168.0.254
添加路由记录,指定通过eth0网卡传输到192.56.76.0网段的数据:
[root@instructor ~]# route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
使用数字地址替代主机名称:
[root@instructor ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.56.76.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 172.16.0.0 192.168.0.254 255.255.0.0 UG 0 0 0 eth0 0.0.0.0 192.168.0.254 0.0.0.0 UG 0 0 0 eth0
删除默认网关:
[root@instructor ~]# route del default gw 192.168.0.254
删除指定网段的网关记录:
[root@instructor ~]# route del -net 172.16.0.0/16
2.8.2 文件修改网络参数
1. 网络接口参数
系统中网卡配置文件为/etc/sysconfig/network-scripts/ifcfg-<iface>,其中,iface为网卡接口名称。
表2-9
选项 | 功能描述 | 值 |
DEVICE | 设备名称 | eth0、eth1... |
BOOTPROTO | 启动协议 | none|dhcp|static |
HWADDR | 硬件地址 | MAC地址 |
NM_CONTROLLED | 网卡是否被NetworkManager控制 | yes|no |
ONBOOT | 开机是否启动该网卡,对虚拟接口无效 | yes|no |
TYPE | 设备类型 | ethernet |
UUID | ||
IPADDR | IP地址 | |
GATEWAY | 默认网关 | |
NETMASK | 子网掩码 | |
DNS{1,2} | DNS服务器,多个服务器使用数字标记 | |
PREFIX | 网络位掩码个数,对虚拟接口无效 | |
ONPARENT | 真实接口启动后虚拟接口是否启动 | yes|no |
Linux中除了可以为真实的网卡接口配置网络参数外,还可以通过虚拟接口的方式为一个物理网卡配置多个网络参数,虚拟接口的名称一般为iface:n,如eth0:0、eth0:1等。注意,默认虚拟接口的配置文件并不存在,需要手动创建新文件并设置参数。
实例:设置eth0网卡虚拟接口为eth0:0,IP地址为192.168.1.254、子网掩码为255.255.255.0、网关为192.168.0.254、主DNS为192.168.0.254,辅助DNS为192.168.1.254。
[root@instructor ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0:0 DEVICE="eth0:0" #BOOTPROTO="dhcp" #HWADDR="00:0C:29:55:D7:44" NM_CONTROLLED="no" ONBOOT=yes TYPE="Ethernet" #UUID="c6fd46ea-853a-4ceb-b7ef-4977337fd2c3" IPADDR=192.168.1.254 GATEWAY=192.168.0.254 NETMASK=255.255.255.0 DNS1=192.168.0.254 DNS2=192.168.1.254 [root@instructor ~]# ifconfig eth0:0 eth0:0 Link encap:Ethernet HWaddr 00:0C:29:55:D7:44 inet addr:192.168.1.254 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
2. 主机名参数
主机名配置文件为/etc/sysconfig/network,通过修改其中的HOSTNAME值实现主机名称的设置。
3. 路由参数
通过上面对网卡接口设置网络参数后,可以指定网卡的默认网关,但无法设定通往特定网段的静态路由信息。此时,需要创建指定网卡的路由配置文件(默认文件不存在),配置文件名称为route-<iface-name>,该文件每行对应一条静态路由记录。
实例:为eth0网卡指定去往172.16.0.0/16网段的网关为192.168.0.200
[root@instructor ~]# vim /etc/sysconfig/network-scripts/route-eth0 172.16.0.0/16 via 192.168.0.200 [root@instructor ~]# service network restart [root@instructor ~]# route 查看结果 Destination Gateway Genmask Flags Metric Ref Use Iface 172.16.0.0 192.168.0.200 255.255.0.0 UG 0 0 0 eth0
2.8.3 网络故障排错
1. ping
当网络不通时,可以使用简单的ping命令来定位问题节点位置,一般,会按顺序进行ping命令,依次为本地回环、本地IP、网关IP、外网IP,ping的对象一般都会给予回应,如果没有回应,则表示网络不通(某些环境下,对象主机会被禁止ping),据此判断网络断点的位置。
2. traceroute
一个数据包从本地发送后一般会经过多个路由转发数据,如果有一个数据包进入互联网以后因为中间的某个路由器转发有问题,而导致最终的数据发送失败。这种情况下,我们并不知道问题路由的位置及IP信息,利用traceroute可以帮助我们解决这些问题,它可以跟踪数据包的路由过程,以此判断问题所在。Linux下的traceroute默认使用UDP封装跟踪包,如果希望使用ICMP封装,可以使用-I选项。
[root@instructor ~]# traceroute www.baidu.com traceroute to www.baidu.com (180.97.33.107), 30 hops max, 60 byte packets 1 192.168.42.2 (192.168.42.2) 0.527 ms 0.451 ms 0.366 ms 2 192.168.0.1 (192.168.0.1) 56.265 ms 55.942 ms 55.619 ms 3 192.168.1.1 (192.168.1.1) 55.296 ms 54.957 ms 54.530 ms 4 111.173.100.1 (111.173.100.1) 54.197 ms 53.831 ms 57.765 ms [root@instructor ~]# traceroute -I
3. nslookup
网络本身是使用IP地址来唯一对应网络资源的,但用户是无法记忆这么多的数字IP信息的。所以,我们一般会通过域名来访问网络资源,此时DNS服务就至关重要了,使用nslookup可以帮助检查本地设置的DNS服务器工作是否正常。输入下面的检查本机设置的DNS服务器是否可以解析www.baidu.com域名
[root@instructor ~]# nslookup www.baidu.com Server:192.168.42.2 Address:192.168.42.2#53 Non-authoritative answer: www.baidu.comcanonical name = www.a.shifen.com. Name:www.a.shifen.com Address: 180.97.33.107 Name:www.a.shifen.com Address: 180.97.33.108
本次解析是由192.168.42.2这台DNS服务器提供的,解析结果是www.baidu.com域名对应了多个IP地址。
4. dig
Nslookup仅可以查询域名与IP地址之间的对应关系,如果你需要更多关于DNS记录的信息,可以使用dig命令,查看包括MX(邮件记录)、NS(域名服务器记录)等信息。
[root@instructor ~]# dig www.sohu.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6 <<>> www.sohu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34922 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.sohu.com.INA ;; ANSWER SECTION: www.sohu.com.5INCNAMEgs.a.sohu.com. gs.a.sohu.com.5INCNAMEfshgq.a.sohu.com. fshgq.a.sohu.com.5INA101.227.172.11 ;; Query time: 20 msec ;; SERVER: 192.168.42.2#53(192.168.42.2) ;; WHEN: Sat Aug 16 11:33:40 2014 ;; MSG SIZE rcvd: 85 [root@instructor ~]# dig sohu.com MX 查看sohu.com域的邮件记录
5. netstat
如果怀疑有人非法闯入了系统,又不知道此人在哪里时,可以通过netstat强大的网络监控能力找出连接系统的所有人。或者当你启动了一个网络服务后,远程客户无法访问该服务,我们也可以使用netstat命令查看服务对应的端口是否已经正常开启,来判断服务启动是否正常。
[root@instructor ~]# netstat -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 1 0 192.168.42.128:33628 23.2.16.51:80 CLOSE_WAIT
有一个远程IP(23.2.16.51)使用80端口,连接了本地的33628端口。
[root@instructor ~]# netstat -nutlp 查看当前系统开启端口信息