文章目录

一、检查、监测网络

1.1、ping–向网络主机发送特殊数据包

最基本的网络连接命令就是​​ping​​​命令。​​ping​​命令会向指向的网络主机发送特殊网络数据包IMCP ECHO_REQUSET。多数网络设备收到该数据包后会做出回应,通过此法即可验证网络连接是否正常。

注意:有时从安全角度出发,通常会配置部分网络通信设备(包括Linux主机)以忽略这些数据包,因为这样可以降低主机遭受潜在攻击者的可能性。当然,防火墙经常被设置为阻碍IMCP通信。

例如,想要验证是否可以登陆网站​​http://www.baidu.com/​​​,可以按如下方式使用​​ping​​命令。

[wangjichaun@mr-jarvis ~]$ ping

一旦程序启动,​​ping​​命令便以既定的世界爱你间隔(默认是1s)传送数据包直到该命令被中断。

Linux--网络_desktop


按Ctrl-C键终止ping程序,ping程序会将反映运行情况的数据显示出来。数据包丢失0%表示网络运行正常,ping连接成功则表明网络各组成成员(接口卡、电缆、路由和网关)总体处于良好的工作状态。

1.2、tracerote–跟踪网络数据包的传输路径

tracerote程序(有些系统则使用功能相仿的tracepath程序代替)会显示文件通过网络从本地系统传输到指定主机过程中所有停靠的列表。下例列出了数据在连接到网络​​http://www.baidu.com/​​时所经过的站点。

[wangjichaun@mr-jarvis ~]$ tracerote baidu.com

输出内容如下:

Linux--网络_jar_02

1.3、netstat–检查网络设置及相关统计数据

netstat程序可以用于查看不同的网络设置及数据。通过使用及其丰富的参数选项,我们可以查看网络启动过程的许多特性。示例如下,使用-ie选项,我们可以检查系统中的网络接口信息。

Linux--网络_ubuntu_03


以上的输出信息,测试系统由三个网络端口,第一个称为​​enp2s0​​​,是以太网端口;第二个称为​​l0​​​,是系统用来自己访问自己的回环虚拟接口;第三个称为​​wlxe84e064bb54b​​,是无线网卡端口。

对网络进行日常诊断,关键是看能否在每个接口信息第四行的开头找到UP这个词以及能否在第二行的inet addr字段找到有效的IP地址。第四行的UP代表着该网络接口已启动,而对于使用动态主机配置协议的系统(DHCP),inet addr字段里面的有效IP地址则说明了DHCP正在工作。

使用​​-r​​选项将显示内核的网络路由表,此表显示了网络之间传送数据包是网络的配置情况。

Linux--网络_desktop_04


该表的第二行表示接收方的IP地址为192.168.0.0,IP以0结尾表示接收方是网络而非个人主机,也就算说接收方可以是局域网(LAN)上的任何主机。下面的Gatewat参数字段,表示的是建立当前主机与目标网络之间联系的网关(或路由)的名称或IP地址,此参数值是星号表示无需网关。

二、通过网络传输文件

2.1、ftp–采用FTP(文件传输协议)传输文件

ftp是Linux比较经典的命令之一,由File Transfer Protocol协议缩写而来。ftp用作下载文件工具在英特网上使用很广泛,大多数Web浏览器都支持ftp命令。
ftp程序比Web浏览器出现的早,它用来与FTP服务器进行通信,所谓FTP服务器就算那些包含供网络上传、下载文件的机器。
FTP(原来的表示形式)并不安全,因为它以明文的方式传送账号名以及密码。这意味着这些信息并没有加密,任何一个接触网络的人都能看到他们。鉴于此,几乎所有使用FTP协议进行的网络文件传输都司由匿名FTP服务器处理的。匿名服务器允许任何人使用anonymous登录名以及无意义的密码登录。
下面是一个典型的ftp会话,其功能是从匿名FTP服务器fileserver上的/pub/cd_images/Ubuntu-8.04目录中下载Ubuntu ISO映像文件。

[wangjichaun@mr-jarvis ~]$ ftp fileserver
Connected to fileserver.localdomain.
220 (vsFTPd 2.0.1)
Name (fileserver:me): anonymous
331 Please sepcify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub/cd_images/Ubuntu-8.04
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-rw-r-- 1 500 500 733079552 Apr 25 03:53 ubuntu-8.04-desktop-i386.iso
226 Directory send OK.
ftp>lcd Desktop
Local directory now /home/me/Desktop
ftp>get ubuntu-8.04-desktop-i386.iso
local: ubuntu-8.04-desktop-i386.iso remote:ubuntu-8.04-desktop-i386.iso
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for ubuntu-8.04-desktop-i386.iso (733079552 bytes).
226 File send OK.
733079552 bytes received in 68.56 secs (10441.5 KB/s)
ftp>

这段代码中输入的每个命令行的含义与解释如下:

命令

代表的含义

ftp fileserver

启动ftp程序,建立与FTP服务器fileserver的连接

anonymous

登录名,登录提示框出现之后就是密码输入提示框。一些服务器可以接受空白密码,其他的则要求密码以邮件地址的形似,在那样的情况下,就尝试​​user@example.com​​这样的形式

cd pub/cd_imahes/Ubuntu-8.04

打开远程系统上含有所需文件的目录。注意,对于多数匿名服务器,供公开下载的文件一般都存放在pub目录下

ls

列出远程系统上的目录列表

lcd Desktop

切换至本地目录的/Desktop目录。本例中,ftp程序时在home(~)目录下启动的,此命令行将工作目录切换之/Desktop下

get ubuntu-8.04-desktop-i386.iso

告诉远程系统将ubuntu-8.04-desktop-i386.iso映像文件发送给本地系统。由于本地系统的工作目录已经切换之~/Desktop下,映像文件也会下载到该目录下

bye

注销登录远程服务器并且结束ftp程序。也可以使用quit或exit命令代替

在提示符ftp>后面输入help会显示ftp所支持的命令列表。在已被授予足够权限的服务器上使用ftp命令,可以执行许多常见的文件管理任务。虽然这很苯,但这不失为一种方法。

2.2、lftp–更好的ftp(文件传输协议)

ftp并不是唯一的命令行FTP客户端。事实上,有很多这样的命令行。其中更好用也更受欢迎的一个就是Alexander Lukyanov编写的lftp命令,它与传统的ftp程序功能类似但却有很多额外的便利功能,包括多协议支持(HTTP)、下载失败时自动重新尝试、后台进程支持、Tab键完成文件名输入等许多其他的功能。

2.3、wget–非交互式网络下载工具

wget是另一个用于文件下载的命令行程序。该命令既可以用于从网站上下载内容也可以用于从FTP站点下载,单个文件、多个文件甚至整个网站都可以被下载。例如使用​​wget​​命令下载网站http://www.baidu.com/第一页内容。

[wangjichaun@mr-jarvis ~]$ wget

Linux--网络_jar_05


​wget​​命令的许多参数选项支持递归下载、后台文件下载(允许下线的情况下继续下载)以及继续下载部分被下载的文件等操作。这些特点都清楚的写在该命令的better-than-average(优于平均水平)man手册页中。

三、与远程主机的安全通信

多年以前,类UNIX操作系统就可以通过网络进行远程操控。早期,在互联网还未普及的时候,登录远程之际由两个很受欢迎的命令–​​rlogin​​​和​​telnet​​​命令。但所它们与​​ftp​​命令有着相同的致命缺点,即所有通信信息(包括用户名和密码)都是以明文的方式传输的,所以它们并不适用于互联网时代。

3.1、ssh–安全登陆远程计算机

为了解决明文传输的问题,一个叫做SSH(Secure Shell的缩写)的新协议应运而生。SSH协议解决了与远程主机进行安全通信的两个基本问题:第一,该协议能验证远程之际的身份是否真实,从而避免中间人攻击;第二,该协议将本机与远程主机之间的通信内容全部加密。
SSH协议包括了两个部分:一个是运行在远程主机上的SSH服务端,用来监听端口22上可能过来的连接请求;另一个是本地系统上的SSH客户端,用来与远程服务器进行通信。
多数Linux发行版都采用BSD项目的openSSH(SSH的免费开源实现)方法实现SSH。有些发行版如Red Hat会默认包含客户端和服务器包,而有的版本如Ubuntu则仅仅提供客户端包。系统想要接收远程连接,就必须安装、配置以及运行OpenSSH-server软件包,并且必须允许TCP端口22上进来的网络连接(当服务器正在运行防火墙或是在防火墙后面时)。
​​​ssh​​命令作为SSH客户端程序用于建立与远程SSH服务器之间的通信再合适不过了。如下便是使用ssh客户端程序来与远程主机建立连接的例子。

[wangjichaun@mr-jarvis ~]$ ssh root@139.180.198.217
The authenticity of host '139.180.198.217' can't be established.
RSA key figerprint is 41:ed:7a:df:23:19:bf:3c:a5:17:bc:61:b3:7f:d9:bb.
Are you sure you want to continue connecting(yew/no)?

第一次尝试的时候,由于ssh程序从来没有接触过此远程主机,所以会跳出一条“不能确定远程主机真实性”的消息。当出现这条警告消息的时候输入yes接受远程主机的身份,一旦建立了连接,会提示用户输入密码,密码输入正确后,远程系统的shell提示符便出现了。

Linux--网络_ubuntu_06


连接建立之后,远程shell对话将一直开启着,直到用户在该对话框中输入​​exit​​命令断开与远程系统的连接。连接一旦断开后,本地shell会话恢复,本地shell提示符又重新出现。


​ssh​​命令除了能开启远程系统上的shell会话外,还能在远程系统上执行单个简单命令。例如,我们可以在远程主机上执行free命令并将其结果直接输出到本地系统上。

Linux--网络_jar_07


该特性可以由更有趣的用途,比如在远程系统上执行​​ls​​命令后直接将运行结果输出到本地系统的文件中。

[wangjichaun@mr-jarvis ~]$ ssh root@139.180.198.217 'ls *' > dirlist.txt
root@wangjichuan's password:
[wangjichaun@mr-jarvis ~]$

请注意命令行中的单引号,之所以使用单引号是因为我们并不希望本该在远程之际上进行的路径扩展在本地系统上运行。同样,如果我们还希望执行结果能直接输出到远程系统的文件中,就应该将重定向符号和文件名一起置于单引号中。

[wangjichaun@mr-jarvis ~]$ ssh root@139.180.198.217 'ls * > dirlist.txt '

3.2、scp和sftp–安全传输文件

OpenSSH软件包包含了两个使用SSH加密隧道进行网络间文件复制的程序,scp(secure copy的缩写)便是其中之一。该命令与普通的文件复制命令​​cp​​​类似,而它们之间最大的差别在于​​scp​​​命令的源会哦目的地路径前面多个元从主机名和冒号。下面的例子实现了从远程系统的home目录中将document.txt的文件复制到本地系统当前工作目录下的操作。与​​ssh​​命令一样,如果不是用本地系统的用户名登录远程系统,那么就需要在远程主机名前添加将要登录的远程系统的账号名。

[wangjichaun@mr-jarvis ~]$ scp

另外ia一个SSH文件复制程序是sftp。顾名思义,它是ftp的安全版本。sftp与ftp程序功能极为相似,s只是sftp是用SSH加密隧道传输信息而不俗以明文方式传输。sftp相比传统的ftp而言,还有一个重要的优点,就是它并不需要远程主机上运行FTP服务器,仅仅需要SSH服务器。这就意味着任何与SSH客户端连接的远程机器都可以当作FTP服务器使用,下面就是一个简单的会话示例。

Linux--网络_desktop_08