linux网络相关命令分为:监测,传输,远端登录
命令包括:
- ping - 监测网络连通性
- traceroute - 打印数据包的路由信息
- netstat - 多种用途
- ftp - 文件传输
- wget - 网络下载器
- ssh - 远程登录
ping
ping 命令发送一个特殊的网络数据包,叫做 IMCP ECHO_REQUEST,到 一台指定的主机。大多数接收这个包的网络设备将会回复它,来允许网络连接验证。
[me@linuxbox ~]$ ping linuxcommand.org
traceroute
traceroute会显示从本地到指定主机 要经过的所有“跳数”的网络流量列表。
[me@linuxbox ~]$ traceroute slashdot.org
netstat
netstat 程序被用来检查各种各样的网络设置和统计数据。
使用“-ie”选项,我们能够查看系统中的网络接口:
[me@linuxbox ~]$ netstat -ie
eth0 Link encap:Ethernet HWaddr 00:1d:09:9b:99:67
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::21d:9ff:fe9b:9967/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:238488 errors:0 dropped:0 overruns:0 frame:0
TX packets:403217 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100 RX bytes:153098921 (146.0 MB) TX
bytes:261035246 (248.9 MB) Memory:fdfc0000-fdfe0000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
...
在上述实例中,我们看到我们的测试系统有两个网络接口。第一个,叫做 eth0,是 因特网接口,和第二个,叫做 lo,是内部回环网络接口,它是一个虚拟接口,系统用它来 “自言自语”。
当执行日常网络诊断时,要查看的重要信息是每个网络接口第四行开头出现的单词 “UP”,说明这个网络接口已经生效,还要查看第二行中 inet addr 字段出现的有效 IP 地址。对于使用 DHCP(动态主机配置协议)的系统,在 这个字段中的一个有效 IP 地址则证明了 DHCP 工作正常。
使用这个“-r”选项会显示内核的网络路由表。
这展示了系统是如何配置网络之间发送数据包的。
[me@linuxbox ~]$ netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
在这个简单的例子里面,我们看到了,位于防火墙之内的局域网中,一台客户端计算机的典型路由表。 第一行显示了目的地 192.168.1.0。IP 地址以零结尾是指网络,而不是个人主机, 所以这个目的地意味着局域网中的任何一台主机。下一个字段,Gateway, 是网关(路由器)的名字或 IP 地址,用它来连接当前的主机和目的地的网络。 若这个字段显示一个星号,则表明不需要网关。
最后一行包含目的地 default。指的是发往任何表上没有列出的目的地网络的流量。 在我们的实例中,我们看到网关被定义为地址 192.168.1.1 的路由器,它应该能 知道怎样来处理目的地流量。
ftp
ftp程序可用来与FTP服务器进行通信,FTP服务器就是存储文件的计算机,这些文件能够通过网络下载和上传.
FTP(它的原始形式)并不是安全的,因为它会以明码形式发送帐号的姓名和密码.这就意味着这些数据没有加密,任何嗅探网络的人都能看到.由于此种原因,几乎因特网中所有FTP服务器都是匿名的.一个匿名服务器能允许任何人使用注册名“anonymous”和无意义的密码登录系统.
在下面的例子中,我们将展示一个典型的会话,从匿名FTP服务器,其名字是fileserver,的/pub/_images/Ubuntu-8.04的目录下,使用ftp程序下载一个Ubuntu系统映像文件。
[me@linuxbox ~]$ ftp fileserver
Connected to fileserver.localdomain.
220 (vsFTPd 2.0.1)
Name (fileserver:me): anonymous
331 Please specify 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> bye
这里是对会话期间所输入命令的解释说明:
ftp fileserver
唤醒ftp程序,让它连接到FTP服务器,fileserver。
anonymous
登录名。输入登录名后,将出现一个密码提示。一些服务器将会接受空密码,其它一些则会要求一个邮件地址形式的密码。如果是这种情况,试着输入 “user@example.com”。
cd pub/cd_images/Ubuntu-8.04
跳转到远端系统中,要下载文件所在的目录下,注意在大多数匿名的FTP服务器中,支持公共下载的文件都能在目录pub下找到
ls
列出远端系统中的目录。
lcd Desktop
跳转到本地系统中的 ~/Desktop 目录下。在实例中,ftp 程序在工作目录 ~ 下被唤醒。 这个命令把工作目录改为 ~/Desktop
get ubuntu-8.04-desktop-i386.iso
告诉远端系统传送文件到本地。因为本地系统的工作目录已经更改到了 ~/Desktop,所以文件会被下载到此目录。
bye
退出远端服务器,结束ftp程序会话。也可以使用命令quit和exit。
在 “ftp>” 提示符下,输入 “help”,会显示所支持命令的列表。使用 ftp 登录到一台授予了用户足够权限的服务器中,则可以执行很多普通的文件管理任务。虽然很笨拙, 但它真能工作。
lftp - 更好的 ftp
虽然lftp工作起来与传统的 ftp 程序很相似,但是它带有额外的便捷特性,包括多协议支持(包括HTTP),若下载失败会自动地重新下载,后台处理,用tab按键来补全路径名,还有很多。
wget
若想从网络和FTP网站两者上都能下载数据,wget 是很有用处的。
下载 linuxcommand.org 网站的首页, 我们可以这样做:
[me@linuxbox ~]$ wget http://linuxcommand.org/index.php
--11:02:51-- http://linuxcommand.org/index.php
=> `index.php'
Resolving linuxcommand.org... 66.35.250.210
Connecting to linuxcommand.org|66.35.250.210|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
[ < => ] 3,120 --.--K/s
11:02:51 (161.75 MB/s) - 'index.php' saved [3120]
这个程序的许多选项允许wget:递归地下载,在后台下载文件(你退出后仍在下载),能完成未下载全的文件。这些特性在命令手册,better-than-average 一节中有详尽地说明。
SSH
ssh解决了两个基本的和远端主机安全交流的问题。
首先,它要认证远端主机是否为它所知道的那台主机(这样就阻止了所谓的“中间人”的攻击)
其次,它加密了本地与远程主机之间所有的通讯信息。
SSH 由两部分组成。SSH服务器运行在远端主机上运行,在端口号22上监听将要到来的连接,而SSH客户端用在本地系统中,用来和远端服务器通信。
大多数Linux发行版自带一个提供SSH功能的软件包,叫做OpenSSH.
用来与远端SSH服务器相连接的SSH客户端程序,顺理成章,叫做ssh。连接到远端名为remote-sys的主机,我们可以这样使用ssh客户端程序:
[me@linuxbox ~]$ ssh remote-sys
The authenticity of host 'remote-sys (192.168.1.4)' can't be
established.
RSA key fingerprint 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 (yes/no)?
第一次尝试连接,提示信息表明远端主机的真实性不能确立。这是因为客户端程序以前从没有看到过这个远端主机。为了接受远端主机的身份验证凭据,输入“yes”。一旦建立了连接,会提示 用户输入他或她的密码:
Warning: Permanently added 'remote-sys,192.168.1.4' (RSA) to the list of known hosts.
me@remote-sys's password:
成功地输入密码之后,我们会接收到远端系统的 shell 提示符:
Last login: Sat Aug 30 13:00:48 2008
[me@remote-sys ~]$
远端shell会话一直存在,直到用户输入exit命令后,则关闭了远程连接。这时候,本地的shell会话恢复,本地shell提示符重新出现。
也有可能使用不同的用户名连接到远程系统。例如,如果本地用户“me”,在远端系统中有一个帐号名 “bob”,则用户me能够用 bob 帐号登录到远端系统,如下所示:
[me@linuxbox ~]$ ssh bob@remote-sys
bob@remote-sys's password:
Last login: Sat Aug 30 13:03:21 2008
[bob@remote-sys ~]$
SSH 通道
当你通过SSH协议与远端主机建立连接的时候,其中发生的事就是在本地与远端系统之间创建了一条加密通道。通常,这条通道被用来把在本地系统中输入的命令安全地传输到远端系统, 同样地,再把执行结果安全地发送回来。除了这个基本功能之外,SSH 协议允许大多数网络流量类型通过这条加密通道来被传送,在本地与远端系统之间创建某种 VPN(虚拟专用网络)。
scp 和 sftp
这个 OpenSSH 软件包也包含两个程序,它们可以利用 SSH 加密通道在网络间复制文件。
第一个,scp(安全复制)被用来复制文件,与熟悉的 cp 程序非常相似。最显著的区别就是 源或者目标路径名要以远端主机的名字,后跟一个冒号字符开头。
例如,如果我们想要 从远端系统,remote-sys,的家目录下复制文档 document.txt,到我们本地系统的当前工作目录下, 可以这样操作:
[me@linuxbox ~]$ scp remote-sys:document.txt .
me@remote-sys's password:
document.txt
100% 5581 5.5KB/s 00:00
[me@linuxbox ~]$
和 ssh 命令一样,如果你所期望的远端主机帐户与你本地系统中的不一致, 则可以把用户名添加到远端主机名的开头。
[me@linuxbox ~]$ scp bob@remote-sys:document.txt .
第二个SSH文件复制命令是sftp,正如其名字所示,它是ftp程序的安全替代品。sftp 工作起来与我们之前使用的ftp程序很相似;然而,它不用明码形式来传递数据,它使用加密的SSH通道。sftp有一个重要特性强于传统的ftp命令,就是sftp不需要远端系统中运行FTP服务器。它仅仅要求SSH服务器。 这意味着任何一台能用SSH客户端连接的远端机器,也可当作类似于FTP的服务器来使用。 这里是一个样本会话:
[me@linuxbox ~]$ sftp remote-sys
Connecting to remote-sys...
me@remote-sys's password:
sftp> ls
ubuntu-8.04-desktop-i386.iso
sftp> lcd Desktop
sftp> get ubuntu-8.04-desktop-i386.iso
Fetching /home/me/ubuntu-8.04-desktop-i386.iso to ubuntu-8.04-
desktop-i386.iso
/home/me/ubuntu-8.04-desktop-i386.iso 100% 699MB 7.4MB/s 01:35
sftp> bye