天天看点

《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》——4.6 网络设置与维护

本节书摘来自异步社区《循序渐进linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》一书中的第4章,第4.6节,作者:高俊峰著,更多章节内容可以访问云栖社区“异步社区”公众号查看

4.6.1 ifconfig命令

1.功能说明

ifconfig命令用来配置网络或显示当前网络接口状态。它类似于windows下的ipconfig命令,同时ifconfig命令必须以root用户来执行。其格式如下。

<code>ifconfig [选项] [interface] [inet|up|down|netmask|addr|broadcast]</code>

ifconfig命令的选项及其说明如表4.39所示。

《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》——4.6 网络设置与维护

interface:网络接口名,linux下的网络接口名类似于eth0、eth1和lo等(在centos 7.x版本中,网络接口名变为类似enp0s1、enp0s2这样的标识),分别表示第1块网卡、第2块网卡和回环接口。这是个可选项,如果不添加此选项,则显示系统中所有的网卡信息;如果添加此选项,则显示指定网卡信息。

up:激活一个网络接口。

down:与up相反,使指定的网络接口无效。

netmask:为一个指定的网络接口指定子网掩码。

addr:这里的“addr”为网络接口指定的ip地址。

broadcast:为指定的接口设置广播地址。

2.举例

1)显示目前系统所有网络接口信息,使用以下命令。

从上面可以看出以下几点。

第1行:“up”代表网卡开启状态,“running”代表网卡上的网线处于连接状态,“multicast”代表支持组播,“mtu:1500”表示最大传输单元为1500字节。

第2行:依次显示网卡的ip地址、子网掩码和广播地址。

第3行:ipv6地址的配置信息。

第4行:ether后面表示硬件网卡的mac地址。ethernet表示连接类型为以太网。

第5、6行:显示网卡接收数据包的统计信息和接收错误的统计信息。

第7、8行:显示网卡发送数据包的统计信息和发送错误的统计信息。

2)在网卡enp0s3上配置两个ip地址,分别为192.168.60.136、192.168.66.138,子网掩码为255.255.255.0,使用以下命令。

此时用ifconfig命令查看,就可以看到两个网卡的信息了,分别是“enp0s3”和“enp0s3:0”。如果此时还想在enp0s3上增加ip地址,那么网卡的命名依次是“enp0s3:1”、“enp0s3:2”等。

3)修改网卡的mac地址为新的mac地址,使用以下命令。

<code>[root@centos7 ~]#ifconfig enp0s3hw ether xx:xx:xx:xx:xx:xx</code>

其中,“xx:xx:xx:xx:xx:xx”为新的mac地址,此时用ifconfig查看enp0s3的信息,mac地址已经更改。

4)将网卡enp0s3禁用后再启用,使用以下命令。

注意

 用ifconfig命令配置的网卡信息,在网卡重启或者机器重启后,所有的配置都失效了,如果要让网卡配置永久生效,就需要修改网卡的配置文件了,这将在下面讲述。

4.6.2 scp命令

scp就是secure copy,用于将文件或者目录从一个linux系统复制到另一个linux系统下。scp传输数据用的是ssh协议,保证了数据传输的安全。其格式如下。

scp使用第1种格式将远程linux系统上的某个文件或者目录复制到本地linux系统上,使用第2种格式是将本地的某个文件或者目录复制到远程linux系统的某个路径下。

1)目前我们处在ip为“192.168.60.133”的linux系统下,计划将此系统下的/home/ixdba/etc.tar.gz文件复制到ip为“192.168.60.168”的远程linux系统中root用户下的/tmp目录下,使用下面命令。

<code>[root@centos7 ~]#scp /home/ixdba/etc.tar.gz [email protected]:/tmp</code>

命令输入完毕,会要求输入“192.168.60.168”服务器root的密码,然后开始远程复制数据。如果目前我们处在“192.168.60.168”服务器上,也可以使用下面的命令传输数据。

<code>[root@centos7 ~]#scp [email protected]:/home/ixdba/etc.tar.gz /tmp</code>

命令输入完毕,此时会要求输入“192.168.60.133”服务器root的密码,然后开始远程复制数据。

2)将本地/etc目录中所有文件和子目录复制到ip为“192.168.60.135”的远程linux系统的root用户下的/opt目录中,使用以下命令。

<code>[root@centos7 ~]#scp –r /etc [email protected]:/opt</code>

这里的选项“r”与cp命令中的“r”选项含义相同。

4.6.3 netstat命令

netstat命令用来显示本机网络连接、运行端口和路由表等信息。其格式如下。

<code>netstat [选项]</code>

1)显示当前系统的路由信息。

从上面可以看出,当前系统的默认网关是“192.168.81.250”,而对应的网络接口为enp0s3。

2)显示当前系统中所有有效的tcp连接,使用以下命令。

在上面的显示中,可以看出netstat的输出分为两部分,分别是tcp/ip网络部分和unix socket部分,我们先来看看输出的组成部分。

proto:连接协议的种类,主要是tcp/udp协议。

recv-q:不是由程序连接而产生的字节数。

send-q:从远端主机传送而来的字节数。

local address:本地端的ip地址,可以是ip,也可以是主机名。

foreign address:远程主机的ip与端口。

state:显示状态列,主要有以下几个状态。

listen:一般用在服务的监听端口。

syn_sent:在发送连接请求后等待匹配的连接请求。

syn_received:收到一个连接请求后,等待对方对连接请求的确认。

time_wait:表示该连接已经中断,但套接字还在等待网络结束。

fin_wait1:表示该套接字已经中断,而连接正在中断之中。

fin_wait2:表示该连接已经中断,正在等待对方主机响应中断确认请求。

3)显示目前系统中已经启动的网络连接和对应的端口信息,使用如图4.9所示命令。

《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》——4.6 网络设置与维护

从图4.9的输出可以看出,系统中对外开放了80、22和23端口。为什么这么说呢?因为这些端口都是针对“0.0.0.0”开放的,而25、631端口仅仅针对内部127.0.0.1开放。最后一列显示了每个端口对应的服务名(program name)和进程id(pvd),可以很方便地知道每个端口的用途。

4)查看当前系统上处于连接状态的资源信息,可以使用如图4.10所示命令。

《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》——4.6 网络设置与维护

从上面的输出看出,有四个线路处于连接状态,分别是远程主机192.168.81.30启动的大于1024的两个端口65409、64394向本地主机192.168.81.232的22端口建立的连接,以及远程主机192.168.81.30启动的大于1024的两个端口49837、49848向本地主机192.168.81.232的23端口建立的连接。

4.6.4 traceroute命令

traceroute命令用来显示网络数据包传输到指定主机的路径信息,追踪数据传输路由状况。预设数据包大小是38字节,用户可另行设置。它与windows下的tracert命令类似,其格式如下。

<code>traceroute [选项] [远程主机名或者ip地址] [数据包大小]</code>

traceroute命令的选项及其说明如表4.41所示。

《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》——4.6 网络设置与维护

跟踪从本机到网站www.ixdba.net的数据包发送过程,使用以下命令。

上面指定eth0网络接口发送数据包,同时指定本地发送数据包的ip为192.168.60.251,并设置超时时间为10秒,最后设置发送数据包的大小为100字节。根据输出可以看到,从本机到www.ixdba.net对应的ip地址经历了18个路由的迂回。

traceroute命令会对这18个路由节点做icmp的回应时间测试,每个路由节点做3次时间测试,如上面显示,基本上每个路由节点的回应时间都在100秒内,只有在第15个路由节点,回应时间稍长。通过这种网络跟踪,可以测试数据传输在哪个部分出现问题,以便及时解决。

如果在指定的时间内(这里设置的是10秒),traceroute检测不到某个路由节点的回应信息,就在屏幕输出“*”,表示此节点无法通过。由于traceroute是利用icmp连接的,有些网络设备(如防火墙)可能会屏蔽icmp通过的权限,因此也会出现节点没有回应的状态,这些都是我们分析网络问题需要知道的。

4.6.5 telnet命令

telnet命令通过telnet协议与远程主机通信或者获取远程主机对应端口的信息。它与windows下的telnet具有相同的功能。其格式如下。

<code>telnet 主机名或者ip地址端口</code>

1)要通过telnet协议登录到开启了telnet服务的远程主机上,使用以下命令。

当输入用户名ixdba和密码后就登录到了“192.168.60.123”服务器,这里直接用“telnet 192.168.60.123”也是可以的,因为telnet默认寻找的就是“23”端口。

如果出现这个问题,就表示这个端口对应的服务没有开启,或者端口被屏蔽,无权访问。

2)要查看某台linux系统的22和80端口是否打开以及分别开启了什么服务,使用以下命令。

从这里可以看出,在“192.168.60.88”的22端口运行着ssh服务,对应的ssh版本为ssh-2.0-openssh_6.6.1。

当输入“telnet www.ixdba.net 80”之后,如果“www.ixdba.net”对应ip的80端口开启,就会给出欢迎信息,类似于“escape character is '^]'”。此时通过键盘输入“get”命令,将显示80端口对应的应用服务器类型,例如本例的80端口对应的应用服务为apache与php以及resin的组合。

4.6.6 wget命令

wget命令用来从网络上下载某个软件,这个命令对于能够连接到互联网的linux系统作用非常大,可以直接从网络下载自己需要的软件。其格式如下。

<code>wget [要下载软件的网址]</code>

下载一个linux-4.0.2版本内核,可以使用以下命令。