目录
一、网络配置
1. IP 地址配置
在 Linux 中配置 IP 地址,主要有 4 种方式,① ifconfig
命令临时配置 IP 地址;② setup
工具永久配置 IP 地址;③ 修改网络配置文件;④ 图形界面修改 IP 地址。本节仅介绍前两种方式。
1.1 ifconfig 临时配置 IP 地址
ifconfig
可以临时修改 IP 地址,当系统重启之后会恢复到原来的 IP 地址,一般我们只有在做实验的时候使用这个命令去修改 IP 地址。但实际上,ifconfig
命令不仅可以配置 IP 地址,还可以查看 IP 地址及相关信息,而后者则是该命令最主要的功能。
(1) 查看 IP 地址与网络状态
[root@localhost ~]# ifconfig // 查看与配置网络状态
eth0 Link encap:Ethernet HWaddr 00:0C:29:A1:80:3F
inet addr:192.168.119.133 Bcast:192.168.119.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fea1:803f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:46 errors:0 dropped:0 overruns:0 frame:0
TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6218 (6.0 KiB) TX bytes:6555 (6.4 KiB)
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:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
其中:
- loopback 是本地回环网卡,该网卡的 IP 地址是 127.0.0.1,代表的是当前计算机本机,只要该网卡能被 ping 通,则说明当前计算机的网络协议能正常运行。
- 网卡在 Linux 当中也是一个文件,eth0 代表第一块网卡,eth1 代表第二块网卡以此类推。
- 在第一段输出中,展示了该网卡使用的网络类型(Ethernet),物理地址(00:0C:29:A1:80:3F),网络地址(192.168.119.133),广播地址(192.168.119.255)以及掩码(255.255.255.0),RX是接收的数据包,TX 是发送的数据包,大小分别为6.0Kb和6.4Kb
(2) 配置临时生效的 IP 地址
[root@localhost ~]# ifconfig eth0 192.168.10.1 netmask 255.255.255.0 // 临时设置 eth0 网卡的 IP 地址和掩码
1.2 setup 工具永久配置 IP 地址
setup
工具可以永久修改 IP 地址,当系统重启之后也不会恢复到原来的 IP 地址,是一个窗口模式的图形界面。但 setup
是 RedHat 系列专有命令,不过在企业当中用的系统也都是 RedHat 系列,所以只要能用,还是挺方便的。如下图所示:
因为类似图形界面的配置,过程很简单,这里就不再赘述。但是需要注意的是:IP 配置完成之后,要记得重启一下网络服务:service network restart
2. 网络配置文件
在 Linux 中,修改 IP 地址最原始也是最标准的方式,就是修改网络配置文件,Linux 中的网络配置文件一共有 3 个,分别是网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0
、网络及主机名配置文件:/etc/sysconfig/network
和 DNS 配置文件:vi /etc/resolv.conf
。细心的同学可以发现,这 3 个文件是有规律的,第一个文件放在三级目录下,第二个文件放在二级目录下,第三个文件放在一级目录下。这东西要背下来!
2.1 网卡配置文件
实际上 setup
命令的配置最终也是写在这个文件下。我们不妨看一下该文件的内容:
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 # 网卡设备名,需和设备文件名一致
TYPE=Ethernet # 网络类型
UUID=9aba7ee0-2443-456a-9918-99e9478952d7 # 唯一识别码(CentOS6以后很重要)
IPADDR=192.168.119.128
GATEWAY=192.168.119.254
NETMASK=255.255.255.0
ONBOOT=yes # 是否随网络服务启动,eth0 生效(要改成yes,否则重启网络服务后依然没生效)
NM_CONTROLLED=yes # 是否可以由 Network Manager 图形管理工具托管(只有安装了图形界面才起作用,否则可能会出错)
BOOTPROTO=dhcp # IP 地址获取方式(none|static|dhcp)
DEFROUTE=yes #
IPV4_FAILURE_FATAL=yes #
IPV6INIT=no # IPv6 是否启用
NAME="System eth0" #
HWADDR=00:0C:29:A1:80:3F # MAC 地址
USERCTL=no # 是否允许非 root 用户控制此网卡
PEERDNS=no #
PEERROUTES=yes #
其中:等号左侧大写,等号右侧小写。在 Linux 当中,一般来说配置文件都按这个格式写。
2.2 主机名文件
另外还有一个文件:/etc/sysconfig/network
,里面的内容是:
[root@localhost ~]# vi /etc/sysconfig/network
NETWORKING=yes # 网络服务是否开启
HOSTNAME=localhost.localhostdomain # 计算机主机名可以默认也可以修改
需要注意的是:
- 在配置文件中修改了主机名之后,必须重启计算机才能生效
- 可以直接用
hostname wusr
来临时修改主机名
2.3 DNS 配置文件
[root@localhost ~]# vi /etc/resolv.conf
; generated by /sbin/dhclient-script
search .com # 当域名没敲全时自动补全后的搜索
nameserver 192.168.122.2 # 指定了 DNS 服务器的 IP 地址
- 如果有多个 DNS 地址,可以空格 +
ipaddress
或者换行再写nameserver+ipaddr
search localdomain
的意思是,当你去 ping 百度的时候,没有将百度的域名打全,如ping www.baidu
,则会尝试用.com
与www.baidu
组合起来 ping。实际上用处有限
3. 虚拟机网络配置参数
即使在系统当中做了如上配置,若 VMware 上没有正确配置网络参数,则依然不能正确上网。在 VMware 中一共支持 3 种网络连接模式,分别是:仅主机模式、NAT 模式和桥接模式。
3.1 桥接
选择桥接模式时,虚拟机与真实机用的是真实机的网卡进行通信,如真实机用的以太网卡,则虚拟机也是用的以太网卡。桥接模式最为简单,只要虚拟机和真实机的 IP 地址配置在同一网段下就能正常通信及访问外网。缺点是这种方式需要占用真实网段的一个 IP 地址,不过在做一些复杂的实验的时候这种方式更方便。
3.2 NAT
选择 NAT 模式时,虚拟机与真实机之间的通信使用 VMnet8 这块虚拟网卡,并且再 VMnet8 上做 NAT 和 DHCP。NAT 和 Host-Only 模式下,虚拟机不能和局域网下的任何一台主机通信,除了宿主机。但是 NAT 还可以上网,而 Host-Only 则连网都上不了。
3.3 仅主机
选择仅主机模式时,虚拟机用 VMnet1 这块虚拟网卡,此时虚拟机只能和真实机之间进行通信,不能上网。
3.4 正确上网方式
所以要使虚拟机能够正确上网,可以按照以下步骤进行:
- 用
setup
工具或者在网卡配置文件中进行网络配置,包括 IP 地址,网关掩码以及 DHCP、DNS 的配置;- 启动网卡,首先
vi /etc/sysconfig/network-script/ifcfg-eth0
,将ONBOOT
改为yes
,再重启网络服务service network restart
- 若虚拟机是从其他地方进行拷贝,则要修改 UUID。修改方法是:
- 删除网卡配置文件中的 MAC 地址行;
- 删除网卡和 MAC 地址绑定的文件:
rm -rf /etc/udev/rules.d/70-persistent-net.rules
- 重启系统
- 在 VMware 上将网络模式设为 桥接 模式,注意要桥接到当前真实机正在使用的网卡上:VMware->WorkStation->编辑->虚拟网络编辑器->VMnet0->(无线的选wireless的网卡,其他的自己判断,自动的话可能会出错)->确定
二、网络命令
在上文中,可能已经介绍过一些命令,但是还是有些杂,现在做一个总结。
1. 网络环境查看命令
1.1 ifconfig
这条命令最主要的是看 IP 地址,其他的信息了解一下就好了,但是 ifconfig
不能够看到 DNS 和 网关。要看网关得借助 netstat -rn
或 route -n
;要看 DNS 得借助 nslookup
命令。
1.2 ifup
和 ifdown
ifup eth0
启用 eth0 网卡;ifdown lo
禁用 lo 网卡。
1.3 netstat
这是一个很重要的命令,用于查询我们的网络状况,具体选项如下:
[root@localhost ~]# netstat -tunla // 查看系统开启了哪些服务(通过开启的端口来判断)
-t 列出 TCP 协议端口
-u 列出 UDP 协议端口
-n 不使用域名与服务,而使用 IP 地址和端口号
-l 仅列出正在监听的网络服务
-a 列出所有网络链接
[root@localhost ~]# netstat -rn // 查看路由表和网关
[root@localhost ~]# route -n // 与 netstat -rn 等效
[root@localhost ~]# route add default gw 192.168.1.1 // 临时修改网关(注意要和当前IP地址同网段,没什么作用)
所以一般可以用 setup 来设置网关,用 netstat -rn
或者 route -n
来查询网关。
1.4 nslookup
我们已经知道了查看 IP 地址和网关的相关命令,那么 DNS 的查看就需要用到 nslookup
命令了。
nslookup [域名] 用来翻译域名对应的 IP 地址
[root@localhost ~]# nslookup www.baidu.com
Server: 202.106.0.20 # DNS 服务器(首选)
Address: 202.106.0.20#53 # IP+Port
Non-authoritative answer:
Name: www.baidu.com # baidu 域名
Address: 116.213.120.231 # baidu 地址
Name: www.baidu.com
Address: 116.213.120.232
1.5 命令总结
ifconfig
命令:查看网卡配置信息(主要是 IP 地址),临时修改 IP 地址ifdown eth0
和ifup lo
命令:网卡的禁用与启用netstat -rn
和route -n
命令:查看路由表(主要是网关)nslookup
命令:翻译域名对应的 IP 地址(主要是看 DNS)
2. 网络测试命令
2.1 常规命令
有 4 条命令比较简单,我就不分标题了,把它们放在一起介绍:
ping
命令:这是最常见的网络测试命令,在 ping 后面直接跟上 IP 地址或者域名即可,当然可以使用 -c 选项指定 ping 的次数。如:ping 192.168.119.128 -c 10
。telnet
命令:这是一条远程管理和端口探测的命令,是非加密的。其格式是telnet [IP] [port]
,不加端口是远程管理,加端口用于探测对方有没有开启某个端口。traceroute
命令:这是一条路由跟踪命令,可以返回访问目的地址的经过路径。其格式是traceroute [IP或域名]
,若返回* * *
则代表该节点禁 ping 了。wget
命令:用于下载网络上的内容。其格式是wget [URL]
,如wget http://soft.vpser.net/lnmp/lnmp1.1-full.tar.gz
。
2.2 tcpdump 抓包命令
接下来的一条命令 tcpdump
内容比较多,也比较有趣,我把它分开来单独介绍:
[root@localhost ~]# tcpdump -i eth0 -nnX port 21 // 抓取经过 eth0 网卡的 ftp 报文
[选项]:
-i 指定网卡
-nn 将数据包的[域名+服务]转为[IP+端口]的形式
-X 以16进制和ASCII码显示数据包的内容
port 指定监听的端口
对于 tcpdump
命令,可以做一个 FTP 实验来抓取数据包:
- 开启系统的 FTP 服务:
service vsftpd start
,启动的前提是系统已经安装了 FTP 服务(yum -y install vsftpd
)- 在 windows 的命令行中敲上
ftp 192.168.0.4
然后输入用户名和密码,在 Linux 上就能通过tcpdump
命令抓到报文,而且 ftp 是明文的可以直接看到账号密码。极不安全,所以我们下一节介绍 SSH 协议。
以上就是 Linux 当中一些常用的网络测试命令。
三、远程会话安全协议
1. SSH 原理
SSH(Secure Shell)协议是使用了非对称的加密技术,对传输的数据进行加密。在介绍非对称加密技术的原理前,先介绍一下对称加密技术的原理:对称加密指的是加密和解密使用同一密钥,A 用密码对数据进行加密之后发送给 B,B 再用 A 使用的加密密码对数据进行解密,在二者交互的过程中,密码是要在网络上进行传送的,也就是说密码也有可能被黑客抓取到,这样一来,对数据的加密就形同虚设,因为黑客可以利用抓取到的密码对数据进行解密。为了使密码不用在网络中传输,非对称加密技术诞生:非对称加密是指 A 和 B 双方各自持有自己的密码,并且根据自己的密码生成一个密钥对(公钥和私钥,其中公钥对外公开私钥自己保留,A 用 B 的公钥加密后 B 只能用 B 的私钥解密),在 A 要将数据发送给 B 时,从 B 处获得 B 的公钥,并使用自己和 B 的公钥对数据进行加密,加密后的数据只能用 A 或 B 的私钥解密。所以,即使被黑客抓取到了传输中的数据,也没办法解密。SSH 就是基于这个原理对数据进行加密的协议。
2. SSH 命令
2.1 ssh 远程登录设备
命令格式:
[root@localhost ~]# ssh 用户名@ip // 以用户名的身份登录 IP 地址为 ip 的服务器
2.2 scp 下载和上传文件
下载命令格式:
[root@localhost ~]# scp [-r] [-P port] 用户名@ip:文件路径 本地路径
选项:
-r 下载一个目录
[root@localhost ~]# scp [-r] [-P port] 本地路径 用户名@ip:上传路径
选项:
-r 上传一个目录