文件系统检测和修复 (fsck /dev/sdb2)
常发生于死机或者非正常关机之后
挂载为文件系统标记为“no clean”
注意:一定不要在挂载状态下修复
fsck: File System Check
fsck.FS_TYPE
fsck -t FS_TYPE
-p: 自动修复错误
-r: 交互式修复错误
FS_TYPE一定要与分区上已经文件类型相同
e2fsck:ext系列文件专用的检测修复工具
-y:自动回答为yes
-f:强制修复
2 .挂载(mount) (挂载如果想要永久生效需要写入文件里 /etc/fstab如果有auto选项 mount-a 可以让文件生效,默认的defaults 的选项里包含auto参数;如果是修改里面的参数则mount -a 不能使之生效了 需要取消挂载在重新挂上即可但如果有用户在访问则无法取消挂载需要用 mount -o remount /dev/sdb1 来实现)
一个文件只能挂载一个设备(/dev/sdb)
一个设备能挂载多个文件
设备挂载建议挂载在空文件夹下(如果不是空文件挂载点下原有文件在挂载完成后会被临时隐藏 )
挂载点要事先存在则需要事先创建一个文件夹
挂载设备可一些设备名,卷标,UUID名 然后加挂载文件路径(mount /dev/sdb2 /etc/lv )查看UUID的方法是(blkid /dev/sdb1)
挂载完成之后会生成一个文件/etc/mtab此文件会根据挂载自动更新挂载的内容和信息。
取消挂载
umount /dev/sdb2 或/root/lv (取消挂载写设备名和挂载点都可以)
挂载常用的命令
-t vsftype:指定要挂载的设备上的文件系统类型 (不用加系统能够自动识别出来)
-r: readonly,只读方式挂载 (mount -r /dev/sdb2 /root/lv)
-w: read and write, 读写挂载 (默认是读写挂载)
-n: 不更新/etc/mtab,(mount ,df 命令不可见,起到隐藏挂载的目的要想看可以从 cat /proc/mounts下查看)
-a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选 项中有auto功能)
-L 'LABEL': 以卷标指定挂载设备
-U 'UUID': 用UUID的方式挂载
-B, –bind: 绑定目录到另一个目录上 查看内核追踪到的已挂载的所有设备 cat /proc/mounts
-ooptions:(挂载文件系统的选项),多个选项使用逗号分隔(-o选项的参数)
async:异步模式 (复制文件时可能无法即使写到磁盘上)
sync:同步模式,(内存更改时,同时写磁盘 )
atime/noatime:包含目录和文件
diratime/nodiratime:目录的访问时间戳
auto/noauto:是否支持自动挂载,是否支持-a选项
exec/noexec:是否支持将文件系统上运行应用程序
dev/nodev:是否支持在此文件系统上使用设备文件
suid/nosuid:是否支持suid和sgid权限
remount:重新挂载
ro:只读
rw:读写
user/nouser:是否允许普通用户挂载此设备,
/etc/fstab使用 acl:启用此文件系统上的acl功能
loop: 使用loop设备 (可以把文件挂到 目录上: 新建一个100M的文件然后用mkfs 格式化文件生成设备 然后就可以挂载到文件夹上了 mount -o loop p1路径 + 挂载点文件夹)mknod /dev/loop8 b 7 8 增加loop个数。如果需要更多loop文件载内核参数上改一改vim /boot/grub/grub.conf 载kenal 后追加 max_loop=100 重启机器生效 此目录只在centos6上有。centos7上loop设备自动生成数量不受限制。而且挂文件不需要加-o loop 就能挂上。
查看正在访问指定文件系统的进程
lsof +挂载设备
fuser -v +挂载设备
终止所有在正访问指定的文件系统的进程
fuser -km +挂载设备 (当有其他用户在访问时无法取消挂载的 所以需要此命令结束其他人的访问进程之后就可以取消挂载了)
查看设备是否有人挂载
findmnt /dev/sdb2 (如果不显示则说明现在是无挂载情况)
文件挂载配置文件
/etc/fstab每行定义一个要挂载的文件系统
要挂载的设备或伪文件系统 设备文件 LABEL:LABEL="" UUID:UUID="" 伪文件系统名称:proc, sysfs 挂载点 文件系统类型
挂载选项:defaults (默认挂载的选项)defaults:相当于rw, suid, dev, exec, auto, nouser, async
转储频率:0:不做备份 1:每天转储 2:每隔一天转储
自检次序: 0:不自检 1:首先自检;一般只有rootfs才用1 (如果设置为检查挂载设备中出现一个错误机器都将起不来所以一般建议不检查如果是错误的但设置为不检查 机器可以重启) 当机器起不来是修复时 会失去修改权限则需要重新挂载赋予读写权限 mount -0 -rw remount / 意思是以可读可写的方式将根再挂一遍。之后就可以修改文件了。如果挂载点出现问题机器还是可以起来的。
将数据迁移到新的磁盘下
1 备份/home/
2 fdisk 磁盘名称(创建一个分区,新添加的磁盘名称可以通过fdisk -l 命令来查看)
过程:n:创建一个新的分区,p :查看已经创建的分区,w/q: 保存退出
3 mkfs.ext4 /dev/sdb1 (给分区创建文件系统)
4 mkdir /mnt/home (建立一个文件夹用来临时存放/home下的数据)
5.mount /dev/sdb1 /mnt/home (将新创建的空文件夹挂载到新建的分区上因为只有空文件才可以挂载)
6.init 1 网断 (切换到单用户模式防止其他用户访问)
7cp -av /home/* /mnt/home (将/home 下的所有文件复制到新创建的文件夹下)
8.rm -rf /home/* (删除/home下的数据)
8 vim /etc/fstab (永久挂载将空的/home 挂载到新建的分区下此时/home 将会同步/mnt/home下的数;blkid:查看分区的UUID号)
9.mount -a (让挂载生效)
ls /home /mnt/home -l (查看/home和/mnt/home 发现他么有相同的数据)
9 umount /mnt/home;rm -rf /mnt/home (解除/mnt/home的挂载然后删除文件夹现在只有/home挂载到新建的分区下了,既完成数据的迁移挂载)
10 init 5 (从但用户模式切换到图形界面)
创建swap 分区 (或将文件当作虚拟内存使用)
1 fdisk /dev/sdb1 (创建新的分区)(再用t 82 改一下swap分区的格式不知道的话可以用L来查看)
2 mkswap /dev/sdb1 (用专用的命令创建swap文件系统)
3 vim /etc/fstab (挂载swap 到新建的分区)
UUID=xxx swap swap defaults,pri=100 (在后面追加pri=100他的优先级为100 数字越大优先级越大)
4 swapon -a (将挂载生效)如果更改里面的内容先用swp off 禁用 在swpon 启用才能生效
5 swapon -s 查看生效swp正在生效分区各是谁
6 swapoff /dev/sdb1 禁用swap分区
如果将文件作为虚拟内存来用思路
1 创建一个2G大小的文件(dd if=/dev/zero of=/data/swapfile)
2 创建swap文件系统 (mkswap /data/swapfile)
3挂载 (此处不能用UUID 只能用设备名既 /data/swapfile)
4 swapon -a 将挂载生效
5 swapon -s 查看生效的swap分区
外围设备的使用(光盘和u盘)
eject命令卸载或弹出磁盘
创建ISO文件 cp /dev/cdrom /root/centos7.iso mkisofs -r -o /root/etc.iso /etc
刻录光盘 wodim –v –eject centos.iso
创建ISO文件 cp /dev/cdrom /root/centos7.iso (将/dev/cdrom 制作成光盘保存到/root/centos7.iso)
mkisofs -r -o /root/etc.iso /etc
查看USB设备是否识别 • lsusb
eject命令卸载或弹出磁盘
、
dd和df工具
文件系统空间占用等信息的查看工具:
df [OPTION]… [FILE]…
-H 以1000为单位 (1K=1000的方式来计算)
-T 文件系统类型
-h: human-readable (以常见的单位来显示如G M)
-i:inodes instead of blocks
-P: 以Posix兼容的格式输出 查看某目录总体空间占用状态:
du [OPTION]… DIR (常用的du -sh /etc 查看/etc下文件的总大小)
-h: human-readable
-s: summary (汇总统计)
–max-depth (根据文件目录的深度)
dd命令 (dd if=/etc/home of=/data/lv bs=1 count 1024 )
of=file 写到所命名的文件而不是到标准输出
if=file 从所命名文件读取而不是从标准输入
bs=size 指定块大小(既是是ibs也是obs)
ibs=size 一次读size个byte
obs=size 一次写size个byte
cbs=size 一次转化size个byte
skip=blocks 从开头忽略blocks个ibs大小的块 (跳过的是源文件)
seek=blocks 从开头忽略blocks个obs大小的块 (跳过的是目标文件)默认是截断目标文件后面的内容notrunc 不截短输出文件
count=n 只拷贝n个记录
例题
备份MBR:(前面512个字节的磁盘数据信息)
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
破坏MBR中的bootloader:
dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446 (跳过目标文件前446个字节改后面的64个字节)
有一个大与2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读 取的大小是128Byts。又有fileB, 想把上面读取到的128Bytes写到第32个字节开 始的位置,替换128Bytes,
实现如下: dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc
备份: dd if=/dev/sdx of=/dev/sdy 将本地的/dev/sdx整盘备份到/dev/sdy
dd if=/dev/sdx of=/path/to/image 将/dev/sdx全盘数据备份到指定路径的image文件
dd if=/dev/sdx | gzip >/path/to/image.gz 备份/dev/sdx全盘数据,并利用gzip压缩,保存到指定路径 恢复:
dd if=/path/to/image of=/dev/sdx 将备份文件恢复到指定盘
gzip -dc /path/to/image.gz | dd of=/dev/sdx 将压缩的备份文件恢复到指定盘
修复硬盘 dd if=/dev/sda of=/dev/sda
习题
1、创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统 ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载 选项
mkfs.ext4 /dev/sdb2 -L 'TEST' -m 1 -b 2048
tune2fs /dev/sdb2 -o acl
最后挂载到/test 下
2、写一个脚本,完成如下功能: (1) 列出当前系统识别到的所有磁盘设备 (2) 如磁盘数量为1,则显示其空间使用信息 否则,则显示最后一个磁盘上的空间使用信息
a=`fdisk -l 2>/dev/null | grep "^Disk /dev/.*" | wc -l`
if [ $a -eq 1 ]
then
echo "`fdisk -l /dev/sda`"
else
b=`fdisk -l 2>/dev/null | grep "^Disk /dev/.*" | tail -n1 | tr ' ' : | cut -d: -f2`
echo "`fdisk -l $b`"
fi
3、将CentOS6的CentOS-6.8-x86_64-bin-DVD1.iso和CentOS-6.8-x86_64bin-DVD2.iso两个文件,合并成一个CentOS-6.8-x86_64-Everything.iso文件, 并将其配置为yum源
RAID (多个磁盘组成的阵列)
1 .raid 0:条带卷,最少两个磁盘 将数据均匀写入两个磁盘 提升效率 但没有冗错性 可用磁盘数为N个
2.raid 1: 最少两个磁盘 将数据写入一个磁盘 另一个磁盘形成镜像文件 有冗错性 可用磁盘数为 N/2个
3. raid 4: 最少三个磁盘 将数据均匀写入两个磁盘中,第三个磁盘存校验位 有冗错性 可用磁盘数N-1个
4. raid5:最少三块磁盘将数据和校验位均匀的写入三个磁盘中 有冗错性 可用磁盘数为N-1个
5. raid6:最少四块磁盘将数据和校验位均匀的写入四个磁盘中但校验位有两个 有冗错性 磁盘可用数N-2个
另外还有组和使用功能 raid 10 raid 01 raid 50 等 其中他们还可以添加一个备用盘在磁盘故障时替换使用
逻辑卷管理器
思想:首先将多个空的磁盘或分区制作成物理磁盘然后将多个物理磁盘制作成一个逻辑卷组最后在卷组上创建所需要大小的逻辑卷之后创建逻辑卷的文件系统(创建文件系统时要更改文件系统的属性)
示例:逻辑卷的建立
a :pvcreate /dev/sdc1 /dev/sdd1 (将空分区或空磁盘创建成物理磁盘可用pvs或pvdisplay查看详细信息)
b:vgcreate -s 10M vg0 /,dev/sd{c,d}1 (将两个物理磁盘创建成一个逻辑卷组可用vgs或vgdisplay来查看详细信息 ,其中创建中10M为创建的卷组中PE的单个大小 vg0 为创建的卷组名称 -s 为指定PE单位的大小)
c: lvcreate -n lv0 -l 300 vg0 (最从逻辑卷组中创建一个逻辑卷 其中lv0为新建的逻辑卷的名称 -l 300 为指定逻辑卷的大小 l 为指定PE块的个数来统计的 L为直接加大小如3G -n 为指定新名称 -l 100%FREE意思是将剩余的空间都给分出去)
d: 最后创建逻辑卷的文件系统 mkfs.ext4 /dev/vg0/lv0
e:最后创建两个文件夹将新创建的两个逻辑卷lv0 ,lv1挂载到文件夹上使用。(在/etc/fstab下修改文件永久挂载保存)
在线增加逻辑卷的空间
a:首先先增加一块磁盘或者空白的分区
b:将增加的磁盘或空白分区创建成物理分区(用pvcreate /dev/sde1)
c:再将新建的物理磁盘添加到卷组上(用vgextend vg0 /dev/sde1)
d:最后将卷组新增的空间加到逻辑卷上使用(用lvextend -L +3G /dev/vg0/lvo 或用+100%FREE把剩余的空间全部加进去)(lvextend -r -L +3G /dev/vg0/lvo 中加个-r时顺便把文件系统也给扩了)
e: 最后将新增的3G的空间添加文件系统 (用resize2fs /dev/vg0/lv0 )
缩减逻辑卷的空间
a:首先将要缩减的逻辑卷取消挂载 (umount /mnt/lv0)
b:在检查文件系统(fsck -f /dev/vg0/lv0 )
c:再缩减文件系统,其中4G代表要缩减到的大小 (resize2fs /dev/vg0/lv0 4G)
d:再缩减逻辑卷的大小,需要加上缩减文件系统的大小相同 (lvreduce -L 4G /dev/vg0/lv0)
e:再次挂在回去(mount -a)
拆除硬盘:
a : 首先加块硬盘到逻辑卷组中同上步操作
b:然后将要拆除的硬盘上的数据移到空白的逻辑卷组中的其他磁盘上(pvmove /dev/sdd)不用加目标路径他会自动移到空白的磁盘上的
c: 将空白的sdd磁盘剔除卷组 (vgreduce vg0 /dev/sdd)
d:再将sdd磁盘剔除物理卷组 (pvmove /dev/sdd)
最后就可将硬盘拆走了
总结: 用分区创建物理磁盘时需要添加LVM 8e的类型而直接用硬盘做物理磁盘则不需要,缩减逻辑卷时有可能造成数据丢失,只有在ext4文件系统才能缩减
vgrename vg0 centos6vg0 (如果要迁到centos7上名字相同需要更改名称 此时该卷组名)
lvrename /dev/centos6vg0/lv0 /dev/centos6vg0/lv0 (此命令是更改逻辑卷的名称)
如果要在centos7上使用 :首先取消挂载 :
再禁用逻辑卷组(vgchange -an cent0s6vg0)
再让卷组导出状态(vgexport centos6vg0)
连接到centos7时再让他处于导出状态(vginport centos6vg0)
再启用逻辑卷组(vgchange -ay centos6vg0)
最后再centos7新建文件夹centos6vg0逻辑卷挂载就可以
逻辑卷的快照 (快照只记载逻辑卷修改的内容,修改一条备份原有内容一条 且逻辑卷快照只能使用一次就没有了)
建立快照的卷大小只需要原始逻辑卷的15%~20%就够了(最多等于逻辑卷的大小一般更改不了全部内容)
快照与被快照的逻辑卷必须在一个逻辑卷组当中
lvcreate -n lv0snapshot -s -p r-L 1G /dev/vg0/lv0 (lv0snapshot时快照的名称 指定大小 -s为创建快照选项 后面跟为谁创建快照-p r为添加只读属性既快照无法修改和删除)
mkdir /mnt/snap
mount /dev/vg0/lv0snapshot /mnt/snap (创建文件夹并将快照挂载到新建的文件夹上)
要恢复快照:
umount /mnt/lv0
umount /mnt/snap (先将逻辑卷和他的快照取消挂载)
lvconvert –merge /dev/vg0/lv0 (用此命令恢复快照)
mount /dev/vg0/lv0 /mnt/lv0 (再次挂载逻辑卷就可以看到被删除的内容恢复了)
用lvdisplay查看发现lv0的逻辑卷快照消失了 (既创建的每个逻辑卷快照只能用一次但可以创建多个快照来备用)
网络基础知识
网络模型分层:OSI 七层
应用层(网络进程访问应用层)
表示层 (数据表示)
会话层(主机间的通信 建立管理和终止应用在程序间的对话)
传输层(传输问题)
网络层(路由器 数据传输)
数据链路层(交换机 访问介质)
物理层 (集线器 二进制传输)
数据的封装 :从应用层开始每层添加报头
数据的解封: 从物理层开始去掉每层的报头
三种通讯模式
单播:单向向某一主机发送消息
广播:向在此广播域的全部主机发送消息
组播:向一个组里的主机发送消息
网络接线:(RJ-45俗称“水晶头”)
T568A:橙白;橙;绿白;蓝;蓝白;绿;棕白;棕
T568B:绿白;绿;橙白;蓝;蓝白;橙;棕白;棕
100M的带宽下载100M的大小内容理论时间
100/(100/8)
TCP协议和UDP协议
TCP协议特性
工作在传输层
面向连接协议
全双工协议
半关闭
错误检查
将数据打包成段,排序
确认机制
数据恢复,重传
流量控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法
UDP协议的特性
工作在传输层
提供不可靠的网络访问
非面向连接协议
有限的错误检查
传输性能高
无数据恢复特性
TCP/IP堆栈 分层(常用的网络传输)
应用层
传输层
Internet层
网络访问层
TCP包头主要包含;
源端口 ;目的端口 ;序列号 ;确认号
以及三个检查口 :ACK ,SYN,FIN
TCP协议的数据传输步骤:
首先当第一次连接其他主机传输数据时只有自己的IP地址和目标的IP地址无目标主机的MAC地址,它先要获取目标主机的MAC地址通过ARP广播的方式获得目标主机的MAC地址然后存到源主机的交换机的MAC表中以便下次使用则无需再用ARP广播来获取MAC地址了 。
之后经过三次握手与目标主机建立TCP通信协议建立联系传输数据包 。三次握手的具体过程(客户机和服器为例):1 首先客户机发送SYN=1 seq=x 包给服务器 客户机以从CLOSED状态变为SYN-SENT状态等待服务器;2然后服务器收到客户机发的包后回一个包(SYN=1 ACK=1 seq=y ack=x+1 其中大写的ACK表示标记检查位 小写的ack表示已收到客户机的包为第x个请求客户机发送第x+1个包来表示客户机发送给服务器的包发送成功 seq=y表示服务器发的第y个包给客户机)给客户机;3最后客户机回复包(ACK=1 seq=x+1 ack=y+1 其中seq=x+1表示客户机发的第x+1个包给服务器 ack=y+1表示服务器发送的y包已收到可以发送第y+1个包给客户机了)给服务器。他俩之间的连接已经建立起来了,以可以传输数据了。建立连接最终完成。
TCP协议的解除链接(四次挥手)
首先客户机和服务器再已链接的状态想要断开链接1 首先客户机发送一个请求 包 (FIN=1 ,seq=u)给服务器请求断开链接:2 服务器回应一个包(ACK=1 seq=v ack=u+1)给客户机,随后将又发一个包(FIN=1 ACK=1 seq=w ack=u+1)剩余数据传送给客户机等待回应 3 客户机收到后发送一个包(ACK=1 seq=u+1 ack=w+1)给服务器确认断开链接。详细过程如下图:
TCP超时重传
异常网络状况下(开始出现超时或丢包),TCP控制数据传输以保证其承诺的可 靠服务 TCP服务必须能够重传超时时间内未收到确认的TCP报文段。为此,TCP模块为 每个TCP报文段都维护一个重传定时器,该定时器在TCP报文段第一次被发送时 启动。如果超时时间内未收到接收方的应答,TCP模块将重传TCP报文段并重置 定时器。至于下次重传的超时时间如何选择,以及最多执行多少次重传,就是 TCP的重传策略
与TCP超时重传相关的两个内核参数: /proc/sys/net/ipv4/tcp_retries1,指定在底层IP接管之前TCP最少执行的重传 次数,默认值是3
/proc/sys/net/ipv4/tcp_retries2,指定连接放弃前TCP最多可以执行的重传次 数,默认值15(一般对应13~30min)
Internet 协议特征(IP协议)
运行于 OSI 网络层 (TCP/UDP运行与传输层分别属于数据封装的一部分,协同工作)
面向无连接的协议
独立处理数据包
分层编址 (地址分两层编写)
尽力而为传输 (存在丢包)
无数据恢复功能 (包丢了就丢了 但TCP协议有数据回复功能)
IP的报文头部
1 版本:为版本号现在通用的为ipv4的采用的地址是32位的地址总量为2^32=42亿个地址现在以满足不了了
又有ipv6的版本采用的是128位的地址,总数量为2^128
2首部长度:占4位,可表示的最大数值是15个单位,一个单位为4字节,因此IP 的首部 长度的最大值是60字节
3.标识 :一个大数据需要拆分若干个包(最大支持1500多个字节一个包),如果标识一样则代表原来属于一个包拆分过来的,如果不一样则表示原来就属于不同的包
IP地址
它们可唯一标识 IP 网络中的每台设备 ,每台主机(计算机、网络设备、外围设备)必须具有唯一的地址 IP地址由两部分组成:
网络ID: • 标识网络 • 每个网段分配一个网络ID •
主机 ID: • 标识单个主机 • 由组织分配给各设
IP地址的分类:(可分为四类) IP地址为4个八位二进制的数组成的
A类网:第一位为0 前八位为网络ID 后24位为主机ID
A类地址的网络数位2^(网络ID位数—1位固定不变的数 :8-1):128个去掉0和127不用则有1—126个网络ID
A类地址每个网络的主机数位2^(32-8)-2个
默认子网掩码为255.0.0.0
B类网络:前两位为10.前十六位为网络ID
网络数:2^(16-2)
每个网络的主机数:2^(32-16)-2个
默认子网掩码为 :255.255.0.0
C类网络:前三位为110 前24位为网络ID
网络数为:2^(24-3)
每个网络的主机数为:2^(32-24)-2
默认子网掩码为:255.255.255.0
D类网组播用的 E类网做研究用的
后又划分无类:网络ID,主机ID不确定是 八的整数倍
CIDR 无类域间路由表示法:IP/网络ID位数
子网掩码: netmask:32位二进制数,网络ID位数,netmask对应位为1,主机ID位数,netmask对应位为0连续的1和连续的0就可能成为子网掩码
00000000 0
00000001 1
00000010 2
00000100 4
00001000 8
00010000 16
00100000 32
01000000 64
10000000 128
10000000 128
11000000 192
11100000 224
11110000 240
11111000 248
11111100 252
11111110 254
11111111 255
例如;给一个IP地址192.168.199.111 网络ID为前21位
其中主机数为;2^(11)-2
子网掩码是:255.255.11111000.0 ==十进制的是255.255.248.0(把前21位变成1后11位变成0 在转换为十进制的写法)通常可以简写为192.168.199.11/21 来表示子网掩码。
网络ID:IP地址的二进制和子网掩码的二进制相与 (和1与的保留原值 和0与的位0 可理解为相乘来计算)
此题中的网络ID为:192.168.(199的二进制与掩码的二进制248相与).0 最后八位为0 是因为掩码的后八位为0 相与则结果为0
最小网络IP主机:192.168.11000 000.00000001 192.168.192.1/21(前21位不变后11位不能全为0 也不能全为1 所以最大最小如上下。
最大网络IP主机:192.168.11000 111.11111110 192.168.199.254/21
网关必须要和IP地址在相同的网段
将大网分成小网需要向主机ID借一位使网络ID增加一位
10.0.0.0/8 分成2个小网: (在10的大网下借一位主机ID使网络ID变为9位)
10.0.0.0/9 (10.0 0000000 .0.0)
10.128.0.0/9(10.1 0000000.0.0)
10.0.0.0/8 划分32个子网给32个省公司使用 (需要借5位才能满足32个子网)
1)新的子网netmask:255.248.0.0 (新的掩码按照借5位共13位来确定子网掩码的)
32=2^N
N=5
新子网网数位数:8+5=13
2) 新的子网:min netid,max netid
10.00000 000.0.0 10.0.0.0/13 min netid (只变新增的网络ID的五位来组和最小的子网)
10.11111 000.0.0 10.248.0.0/13 max netid(新增的五位来组和最大的子网)
3) 新的子网存放最多的主机数是多少?
主机ID=32-13=19
2^19-2=52万
4)max netid IP:min ip ,max ip ? (意思是最大子网的最小主机IP和最大主机IP)
10.11111 000.0.1 minip:10.248.0.1
10.11111 111.255.254 maxip:10.255.255.254 (其中标记代表全为1最后为0 因为不能全为1或全为0)
合并超网
多个小网合并成一个大网,网络ID退位,而主机ID向网络ID借位 合并之后的超网要 和两个小网的网络 ID应该是相同的
192.168.000000 10.0/24
192.168.000000 11.0/24
上面两个网络合并超网后:192.168.0.0/22 (此超网中还包含两个其他的子网如下)
192.168.000000 01/24
192.168.000000 00/24
所以一般合并要包含所有网络的可能性才合并
IP的私有地址和公有地址
私有地址:在互联网上没有路由地址的 无法连接互联网的 (局域网时使用)但可以访问互联网通过NAT技术
公有地址:除了私有地址以外的地址 在互联网上可以被访问的。
路由:(实现跨网段链接的)
工作原理:通过路由器中的路由表来访问网络中的主机,路由表中记录着网路中每个主机的IP地址
路由表构成:
1目标: 数据包发送的目标路径 192.168.0.0 (又分为三个路由分别为 主机路由;网络路由;默认路由)
2netmask:子网掩码
3interface:(接口)本路由器从哪个接口出去可以到达你所发送包地址出口
4gateway:(网关)
1)直连:不需要配置 (通过ARP广播则可通)
2)非直连:下一个路由器邻近本路由器的接口地址
访问一个网址的主要过程
A—1 R1 2 —3 R2 4— 5 R3 6 — B (假如A为客户机B为要访问的web服务器 如下面访问的网站其中R1 ,R2 ,R3 为中间经过的路由器1,2,3,4,5,6为各路由器的进出接口)
firefox http://www.magedu.com
0 dns
1 A判断B和A是否在一个网段 (通过将A的IP地址于自己的子网掩码与,再将目标地址B与自己的子网掩码与,得出的结果相比较 如果不在一个网段则无法直接访问,只能通过路由来访问)
2 A gateway:R1 IP1 (A客户机已经配好了默认网关就是R1路由1接口的IP地址)
ARP IP1 —> MAC1 (知道R1的1接口的IP地址但不知到MAC地址无法将数据发给R1 所以要用ARP广播尝试将R1的1接口的IP地址解析成MAC地址)
APR cache : IP1–MAC1 (ARP的缓存表就记录A机器与R1路由1接口相对应的IP地址与MAC1的记录下此信息在下次访问时不需要广播的方式来查找了)
数据包添加一下各层信息开始发送
frame:dest mac:mac1 src mac:macA (帧的头部有目标MAC1和源MACA地址)
ip: dest ip:IPB src ip: IPA (IP头部信息目标IPB 源IPA )
tcp:dest port:80 src port:xxxxx,syn(TCP 的目标端口 http服务为80端口 源端口 为随机的数 )
3 R1 查路由表 (R1收到数据包后开始查路由表,R1中应该包含A到B的网络信息)
net B 2 IP3 (2接口出去到R2的3接口IP地址但不知道MAC地址又存在上面的问题所以开始重复上面的过程将数据包发送到 R2 路由上)
ARP IP3 —> mac3
frame:dest mac:mac3 src mac:mac2(数据到达R2的路由后数据的包头信息开始改变帧的MAC地址变成MAC2到MAC3的方向)
ip: dest ip:IPB src ip: IPA(IP的信息不变)
tcp:dest port:80 src port:xxxxx,syn (TCP的信息也不变)
4 R2 查路由表 (数据到达R2后又开始查路由表找到达目标地址相关的网络信息并重复上述操作将数据发个下一个路由R3)
net B 4 IP5
ARP IP5 —> mac5
frame:dest mac:mac5 src mac:mac4
ip: dest ip:IPB src ip: IPA
tcp:dest port:80 src port:xxxxx,syn
5 R3 查路由表 (数据到达R3后查路由表发现B网段和自己是直连的 直连网段的路由记录系统自带不需要手工添加了)数据包直接发送给B服务器了
net B 6
ARP IPB —> macB
frame:dest mac:macB src mac:mac6
ip: dest ip:IPB src ip: IPA
tcp:dest port:80 src port:xxxxx,
整个过程从A到B的第一个包发送完毕 。这只是TCP协议传输数据包三次握手的第一次,后面还有两次,发送数据包的过程如上所述。(没有路由表或者路由表错误会导致数据包发送失败)
动态主机配置协议DHCP (及访问服务器时服务器会自动分配一个IP地址给你)
添加路由命令
route add -net (要添加网段的IP只写网络IP就行例如12.0.0.0/8) gw (临近路由靠近自己一侧的接口IP)
查看路由表的信息
route -n
删除路由:route del
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
目标:192.168.1.3 网关:172.16.0.1
route del -host 192.168.1.3
目标:192.168.0.0 网关:172.16.0.1
route del -net 192.168.0.0 netmask 255.255.255.0
实验:简单配置两个不同网段的虚拟机让其连接:
实验环境:iptables 和selinux 以及service NetworkManager off
A 主机 (192.168.60.0/24)路由R (192.168.45.0/24) B 主机
1 . 将A主机的网卡设为192.168.60.0/24网段内的任意IP地址并在配置文件添加网关:
DEVICE=eth0
IPADDR=192.168.60.4
GATEWAY=192.168.60.254 (网关设为254是因为Windows经常会占用1的地址)
PREFIX=24
2 .1 . 将B主机的网卡设为192.168.45.0/24网段内的任意IP地址并在配置文件添加网关:
DEVICE=eth0
IPADDR=192.168.45.33
GATEWAY=192.168.45.254 (网关设为254是因为Windows经常会占用1的地址)
PREFIX=24
3 . 在路由器上设置两个网卡:
eth0:
DEVICE=eth0
IPADDR=192.168.60.254 (此IP地址为左右两边网段或者主机的设定的网关IP地址)
PREFIX=24
eth1:
DEVICE=eth1
IPADDR=192.168.45.254(此IP地址为左右两边网段或者主机的设定的网关IP地址)
PREFIX=24
开启虚拟机的路由功能:
vim /proc/sys/net/ipv4/ip_forward
将此文件的值改为1
cat /proc/sys/net/ipv4/ip_forward (查看其值)
sysctl -p (让修改的配置文件生效)
重启服务就可以了。如果ping不同可以将路由的两块网卡互换一下就可以了。
实验配置 A访问B 中间经过3个路由器的基本步骤 (注意网关最好设成254因为windows用的是1)
1首先将拓扑图规划出来
A —1网段—- eth1 R1 eth2—2网段— eth1 R2 eth2—-3网段—– eth1 R2 eth2—-4网段—- B
确定A的IP地址 192.168.1.100/24
确定B的IP地址 10.0.0.100/8
设置1;2;3;4各网段的网络IP (只设定网络ID的值主机ID的值都为零)
1:192.168.1.0/24
2:172.16.0.0/16
3:176.17.0.0/16
4:10.0.0.0/8
设置个路由的接口IP地址 (两个路由相接的两个接口的地址必须要在同一网段上)
R1 eth1:192.168.1.1/24 eth2: 172.16.0.1/16
R2 eth1:172.16.0.2/16 eth2:176.17.0.1/16
R3 eth1 :176,17.0.2/16 eth2:10.0.0.1/8
将3个虚拟机设为路由环境:将此文件的值改为1 /proc/sys/net/ipv4/ip_forward (三台都需要改一遍)
sysctl -p (让修改的配置文件生效)
将所有虚拟机防火墙停用
将所有虚拟机禁用此服务 ;chkconfig NetworkManager off
将虚拟机网卡地址设置 为拓扑图所列的。A和B只需要一个网卡 R1 R2 R3 分别设置两个网卡的IP地址操作如下
vim 编辑文件etc/sysconfig/network-scripts/ifcfg-eth*将内容改为一下
A和B的
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
IPADDR=192.168.1.100
PREFIX=24 (网络ID位数)
GATEWAY=192.168.1.1 (临近路由R1的eth0的IP地址)
R1 R2 R3 的设置如下
vim /etc/sysconfig/network-scripts/ifcfg-et1 (此内容是根据R1路由两边接口的IP地址来添加的)
DEVICE=eth1
IPADDR=192.168.1.1 (此为A的网关地址)
PREFIX=24
vim /etc/sysconfig/network-scripts/ifcfg-et2
DEVICE=eth2
IPADDR=172.16.0.1 (此为2网段的网关地址)
PREFIX=16
R2 R3 如上述R1 操作即可 (他们的两个IP地址都是此路由左右两边的网段的网关地址)
设置完后启动服务 :service network restart
最后给三个路由添加路由表
route add -net 172.16.0.0/16 gw 172.16.0.2/16 (此为示例)
添加路由表时,-net后面跟的是此路由不直连的网段 都要添加进去(如R1路由则要添加3.和4网段)
gw 后面跟的是此路由相邻路由的相邻接口的IP地址 无论 添加那个网段只要方向在同一方向就都添加此方向相邻路由的相邻接口 如果添加网段相反 则添加相反方向相邻路由的相邻接口的IP地址即可。
过程中容易出错的是两个路由之间的两个相邻接口的IP 必须要添加到相同的网段。
网络接口识别并命名相关的udev配置文件
/etc/udev/rules.d/70-persistent-net.rules
查看网卡: dmesg |grep –i eth
网卡的驱动
卸载驱动:modprobe -r e1000
重启驱动:modprobe e1000
多个物理网卡绑定到同一IP地址下(bonding)
将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给 两块网卡设置同一IP地址是不可以的。通过bonding,虚拟一块网卡对外提供连接, 物理网卡的被修改为相同的MAC地址
Bonding工作模式
mod0:(轮转模式,在每一个物理网卡上轮流发送数据包,本模式提供负载均衡和容错的能力)
mod1:(主备策略:只有一个物理网卡被启用。当一个物理网卡无法使用时,第二块备用的物理网卡开始启用。为了避免交换机发生混乱此时绑定的MAC地址只有 一个外部端口上可见 )
mod3: (广播策略:在每个物理网卡上发送相同的数据包)
Bonding配置 /etc/sysconfig/network-scripts/ifcfg-bond0
删除bond0
ifconfig bond0 down
rmmod bonding
Bonding实现的步骤:(要绑定的两个物理网卡保证在相同的连接方式要么仅主机要么桥接)
1 . 删除原有的网卡配置文件
2. 新建bond0的配置文件
DEVICE=bond0
IPADDR=192.168.60.2
PREFIX=24
BONDING_OPTS="mode=1 miimon=100"(miimon 是用来进行链路监测的。如果miimon=100,那么系统每 100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路 )
3 .新建eth0/eth1的网卡配置文件
DEVICE=eth0
MASTER=bond0
SLAVE=yes
DEVICE=eth1
MASTER=bond0
SLAVE=yes
启动网络服务:service network restart
查看bond0状态:cat /proc/net/bonding/bond0
删除绑定:卸载bonding 驱动模块前把网卡禁用(ifconfig bond0 down)
卸载驱动:modprobe -r bonding
之后将配置文件删除
一个物理网卡绑定多个IP地址
添加 : ifconfig eth0:1 2.2.2.2/24 (临时添加 重启后失效)
永久添加要写入配置文件:/etc/sysconfig/network-scrps/eth0:1
DEVICE=eth0:1
IPADDR=2.2.2.2
PREFIX=24
DNS=1.1.1.1 (域名解析用的)
重启网络服务 前需要停用此服务 : service NetworkManager stop
删除:ifconfig eth0:1 down
在centos7中想采用centos6中的网卡命名方式 :需要修改配置文件
修改/boot/grub2/grub.cfg
rhgb quiet LANG=en_US.UTF-8 net.ifnames=0
改过后重启即可
nmcli命令
显示所有包括不活动连接
nmcli con show
显示所有活动连接
nmcli con show –active
显示网络连接配置
nmcli con show "System eth0“
显示设备状态
nmcli dev status
测DNS服务的命令
nslookup (windows和Linux通用的命令)
host
dig
wget [option]… [URL]…(什么服务的都可以下载)
-q: 静默模式
-c: 断点续传
-P:保存在指定目录 (可以指定新的文件名称)
-O: 保存为指定的文件名
–limit-rate=: 指定传输速率,单位K,M等
wget +地址 -选项
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96934