路由

地址分类
有类的 固定的网络ID 是多少位就是多少位
A 前8位是网络ID
0-127.x.x.x
其中0.x.x.x是未知地址,不能用
127.x.x.x是回环地址,不能用
所以有1-126个网段可用
公式:
网络(网段)数量=2^可变网络ID位数
一个网络的主机数量=2^主机ID位数-2
所以一个A类网络主机数有1600万
netmask:255.0.0.0

B类
128-191
10xxxxxx.xxxxxxxx.y.z
16位网络ID
16位主机ID
netmask:255.255.0.0
主机数:2^16-2=65534

C类
192-223
1110xxxxx.xxxxxxxx.xxxxxxxx.y
11000000.x.x.x
11011111.x.x.x
192-223.x.x.x
netmask:255.255.255.0
24位网络ID
8位主机ID
网络数:2^21=
主机数:2^8-2=254

D类
多播
224-239.x.x.x

如果一个路由器通过Hub连接两个主机,但是两个主机地址不一样,物理上在一个网段,逻辑上不在一个网段,相互通讯就要通过路由器,因为主机上的路由表。

查看路由表
#route -n
#ip route

无类的 CIDR,无类域间路由
IPV4地址一共32位
哪些位是网络ID , 哪些位是主机ID ,不确定,
通过 子码掩码(netmask) 来实现,netmask是10进制的
netmask:地址32位二进制数,有多少网络ID位数,对应netmask就是多少个1,有多少主机ID位数,对应netmask就是多少个0
例如:172.20.0.123对应netmask是16个1加16个0
11111111.11111111.00000000.00000000
netmask:255.255.0.0

一下这些都可能成为子码掩码
00000000 0
10000000 128
11000000 192
11100000 224
11110000 240
11111000 248
11111100 252
11111110 254
11111111 255

例如:172.20.0.123 网络ID位数是22位,netmask?
255.255.11111100.0
255.255.252.0

练习:
1。 200.222.123.23/26
1)netmask?255.255.255.192
2)主机数是?2^(32-26)-2=2^6-2=62

**网络ID=IP与子网掩码=IP&&子网掩码
对位相与

例如:
IP: 192.168.1.100
子网掩码: 255.255.255.0
网络ID:192.168.1.0

划分子网:一个大网络(主机多=主机ID数多,网络ID位数少)划分成多个小网络(主机少=主机ID位数少,网络ID位数少),网络ID位向主机ID位借N位,就划分成2^N个小网络。

例如:
10.0.0.0/8划分成两个小网络:
10.0.0.0/9
10.128.0.0/9
其中10.0.0.0/9的最小IPmin:10.0.0.1
最大IPmax:10.127.255.254
因为 10.127.255.255不可用
两个子网边界的IP不可用

其中10.128.0.0/9的最小IPmin:10.128.0.1
最大IPmax:10.255.255.254

公式:
1)网络(网段)数量=2^可变网络ID位数
2)一个网络的主机数量=2^主机ID位数-2=2^(32-网络ID位数)-2
3)网络ID=IP与子网掩码netmask=IP &&子网掩码
4)划分子网数=网络ID位向主机ID位借N位,划分成2^N个。

因为A类地址有1600万个 ,连1600万个主机,广播域太大,一台主机发信息所有主机都可以收到,
所以每个省都有各自的小网络
要将一个大网络切分成多个小网络。
在一个大网络中,主机多=主机ID位数多,网络ID位数少
在小网络中,主机少=主机ID位数少,网络ID位数少

方法:
例如10.0.0.0/8 是一个大网络最大IP10.255.255.254/8,最小IP10.0.0.1/8,共1600万多个
网络ID是10,不变8位二进制数构成,主机ID是可变的,24位二进制数构成
把这个大网络变成2个子网络,网络ID向主机ID借1位,这1位可变,
所以子网络的网络ID 是由8位不变的二进制数+1位可变的二进制数构成,
子网络数量=2^1=2
每个子网络的主机ID 是由24-1=23位二进制数构成
每个子网络的主机数量=2^(24-1)-2=2^23-2=

例题:
10.0.0.0/8 划分成32 个子网给32个省公司使用
1)新的子网netmask?
255.248.0.0
32=2^N
N=5
新的子网网络ID位数=8+5=13
netmask 由32位数组成,网络ID是多少就有多少个1,剩下的全是0
所以用10进制表示netmask 255.248.0.0
2)新的子网:min netid ,max netid
10.00000 000.0.0 10.0.0.0/13 min netid
10.11111 000.0.0 10.248.0.0/13 max netid
3)新的子网存放最多的主机数是多少?
主机ID=32-13=19,主机数=2^19-2=524288
4)最大子网IP(max netid IP):min ip ,max ip
10.11111 000.0.1 min ip :10.248.0.1
10.11111 111.255.254 max ip : 10.255.255.254

#echo 2^21|bc

**划分超网:把多个子网合并成大网络,主机ID位向网络ID借位,借到子网拥有相同的网络ID为止,

私有IP地址

A 10.0.0.0到10.255.255.255

B 172.16.0.0到172.31.255.255

C 192.168.0.0 到192.168.255.255

公共IP地址

A 1.0.0.0到9.255.255.255
11.0.0.0到126.255.255.255

B 128.0.0.0到172.15.255.255
172.32.0.0到191.255.255.255

C 192.0.0.0到192.167.255.255
192.169.0.0到223.255.255.255

私有地址和互联网连接必须通过NAT转换
127开头的IP 都是回环地址,随便ping127开头的IP都能ping通
给回环网卡加个地址
#ip addr add 1.1.1.1/8 dev lo

#ip -a 查看 网卡列表
在加个地址
#ip addr add 2.2.2.2/16 dev lo
随便ping2.2.开头的IP都能ping通,因为只要前16位相同就可以
访问127开头的IP 只能本机使用

按A,B,C 类分一共有多少个网段
A:
0xxxxxxx.x.x.x
1-126 126个
B:
10xxxxxx.xxxxxxxx.x.x
2^14=16*1024=16384个
C:
110xxxxx.xxxxxxxx.xxxxxxxx.x
2^21=2097155个

所以网络中大概有200多万个网段

跨网段通讯:路由,多个网段通讯
工作原理:基于路由器里的路由表
路由表:记录到达网络中每个主机的路径
#route -n 查看路由记录
一般在centos7里有4条路由记录

路由器只负责把信息传递出去,传递到下一个网段
只关心目标地址IP
在路由表中
路由分类:
1主机路由:到达网络中主机路径怎么走,在路由表中体现是单个IP
2网络路由:到达网段怎么走,在路由表中体现的是网段的IP
3默认路由:0.0.0.0 ,未知网络路由,在连接网络的路由器里,把信息传到带有默认路由的路由器,信息会被自动传入网络广域网。

按A,B,C 类分一共有多少个网段
A:
0xxxxxxx.x.x.x
1-126 126个
B:
10xxxxxx.xxxxxxxx.x.x
2^14=16*1024=16384个
C:
110xxxxx.xxxxxxxx.xxxxxxxx.x
2^21=2097155个

所以网络中大概有200多万个网段

**优先级:精确越高,优先级越高
如果路由表里有192.168.30.100路由记录
当收到一个请求要到达192.168.30.100这个精确地址,走的是精确路由

当请求要到达的IP没在路由表里,那就走默认路由,

路由表的组成:关键的部分
1目标Destination:数据包发送的目标路径 IP
2子码掩码Genmask:IP对应的子码掩码
3接口Iface(interface):路由器的出口,
4网关Gateway
1)直连:不需要配置
2)非直连:下一个路由器连接本路由器的接口的网关IP

删除网关,无法联网
添加默认路由就可以联网
添加网关是为了生成 默认路由 记录
在window中添加默认路由
route add 0.0.0.0 mask 0.0.0.0 172.20.0.1(网关)
删除了默认路由 系统会同时把网关删除
即使有网关也无法联网
在window中删除默认路由
route delete 0.0.0.0 mask 0.0.0.0 172.20.0.1

A—1 R1 2 —3 R2 4—5 R3 6—B

A机器用Firefox http:// 访问B
A知道B IP
1)A判断B和A是否在同一网段
A拿自己的IP和自己的子码掩码相与(&&)得出结果x
再拿目标的IP和自己的子码掩码相与(&&)得出结果y
比较x是否等于y,一样在同一网段,用ARP协议把B的mac地址取出来,把数据包发往B

2)不在同一网段,尝试把数据包发往R1,在A上已经配置R1的网关IP1,但是不知道与R1相连的接口的mac,A要把包发给R1就得通过ARP广播 把IP1 解析成对应的MAC1。
在A的ARP缓存表cache记录了IP1与MAC1的对应关系。
然后就可以添加数据包的报文头部,三层
帧frame:目标dest mac:mac1 ; 源src mac:macA
ip:dest ip:IPB ; src ip:IPA
tcp:目标dest端口port:80 ; src port:随机的(因为A相对B是客户端)

3)开始发送包到R1,R1就开始查看R1的路由表,查到B所在网络的路由记录,直连发往B,不直连发往下一个路由器R2
查到连接B所在网络的接口2 ,下一个临近R1的路由器接口的网关 IP3
然后重复
ARP IP3 —->mac3
帧frame:目标dest mac:mac3 ; 源src mac:mac2
ip:dest ip:IPB ; src ip:IPA
tcp:目标dest端口port:80 ; src port:随机的(因为A相对B是客户端) syn

4) R2 查路由表

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:随机的(因为A相对B是客户端) syn

5) R3 查看路由表
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:随机的(因为A相对B是客户端) syn

路由只关心发送

更改网卡名

配置IP两种方法:

1。自动获取IP
自动到网络中找DHCP服务器
DHCP动态主机配置协议
DHCP服务器上维护了很多的IP地址,设置为自动获取时,会从DHCP服务器上申请一个IP地址,申请到就可以通讯了,这个过程就是DHCP通讯过程。
1)客户端:DHCP客户端广播,发现报文DISCOVER
2)服务器:DHCP服务器广播,提供消息OFFER,提供一个空闲的IP,并把IP打一个标签
3)客户端:DHCP客户端对请求消息做出响应REQUEST,
4)服务器:DHCP服务器已经确认消息ACK,确认获取的IP、网关、子码掩码、DNS、租期,结束交换过程

window主机名具有网络通讯功能
Linux主机名不具有网络通讯功能

#cd /etc/udev/rules.d
#ls
60-fprint-autosuspend.rules 70-persistent-cd.rules 97-bluetooth-serial.rules
60-openct.rules 70-persistent-net.rules 98-kexec.rules
60-pcmcia.rules 90-alsa.rules 99-fuse.rules
60-raw.rules 90-hal.rules

其中70-persistent-net.rules是一个规则文件 rules规则
定义网卡命名的规则文件

如果本虚拟机是从其他虚拟机复制过来的,
如果想把网卡名改成一个与其他网卡名相同的
更改规则文件
#vim 70-persistent-net.rules

把想要用的重复名的行删除,在把本机的网卡名改成想要的,就可以了。退出
改完的名不会马上生效,重启可以生效,但不现实
或者是把网卡的驱动卸载,重装就可以。
步骤
1)
#dmesg 看所有硬件信息

#dmesg | grep -i eth 看网卡的信息

e1000:网卡的驱动名

#ethool -i eth2 直接看网卡2 的驱动
知道名字就可以卸载对应的驱动模块
#modprobe -r e1000 卸载网卡的驱动模块,
在看看能否看到网卡
#ifconfig
看不到
重新加载模块
#modprobe e1000 加载网卡的驱动模块

这样前面的更改就可以生效

**如果
复制一个虚拟机,启动会和原来的虚拟机的mac冲突
网络无法启动,用VMware的,点开虚拟机设置,点击网卡,点击高级选项,下面会有生成,点击就会生成新的mac。用上面的方法重新卸载,重新加载,就可以生效。或者重启。
下午 06:15 18/05/03
14.4 00:40:24

静态指定
命令
旧的命令: ifconfig , route ,netstat
新命令: ip: object {link ,addr,route},ss,tc

图形命令:system-config-network-tui,
setup,

动态分配:
DHCP:Dynamic Host Configuration Protocol

配置网络接口
ifconfig命令
ifconfig [ interface ] , interface:ethX
ifconfig -a
ifconfig IFACE [up|dowm]启用禁用网卡

ifconfig interface [aftype] options |addrss..
ifconfig IFACE IP/netmask [up]
ifconfig IFACE IP netmask NETMASK
注意:立即生效
启用混杂模式:[-]promisc

#ifconfig 默认显示活动的网卡信息

手动加网卡,先关机,在加网卡。在VMware上在虚拟机设置里加。

#ifconfig eth1 down 禁用eth1网卡
#ifconfig -a 看所有网卡

在#ifconfig 查看网卡时也可以看到RX接收数据包数量, TX发送数据包数量。

当把网线拔了,用ifconfig看并不明显,只能看到数据包的数量不变,但是用ip link 可以看的清楚
#ip link 看物理上的网卡状态 ,可以看到网卡是否工作,工作显示up ,不工作显示down。

#ifdown eth0 用命令禁用网卡eth0,仅仅可以禁用有配置文件的网卡。但是在物理上是没有禁用

#ifup eth0 启用网卡

网卡的配置文件 在
/etc/sysconfig/network-scripts/

可以用ifconfig改网卡地址,临时的

#ifconfig eth1 1.1.1.1/24 或
#ifconfig eth1 1.1.1.1 netmask255.255.255.0
就可以把eth1的IP改为1.1.1.1 ,仅仅是临时的。
然后用ifconfig禁用启用就可以还原 原来的IP
#ifconfig eth1 down 禁用网卡
#ifconfig 显示网卡,但是eth1没有获取IP
#ifconfig eth1 up 启用网卡,IP又还原了

**添加路由
route命令
用route添加的路由记录重启 机器就会被删除
添加IP地址自动添加路由记录

查看路由表:route -n
添加路由: route add

#route add [-net|-host] target [netmask Nm][gw Gw][[dev] lf]
-net 网络路由
-host 主机路由
gw 后面跟网关
dev后面加接口
例如
#route add -host 6.6.6.6 gw 3.3.3.100 dev eth1
其中dev eth1 可加可不加

#route add -net 8.8.8.8/32 gw 3.3.3.100
等价于
#route add -net 8.8.8.8 netmask 255.255.255.255 gw 3.3.3.100

#route add -net 10.0.0.0/8 gw 192.168.30.100
代表要到达10.0.0.0网段需要通过网关192.168.30.100

加的路由的网关必须和主机在同一网段

添加默认路由表
#route add default gw 192.168.30.100
也可以写成
#route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.30.100

删除默认路由记录
#route del default gw 192.168.30.100

删除主机路由记录
#route del -host 6.6.6.6
删除网络路由记录
#route del -net 10.0.0.0 netmask 255.0.0.0

在一台主机上的两个虚拟机,各自添加IP,后发现无法互通,只要各自添加各自的默认路由就可以了
#route add default dev ens33或eth0

#tcpdump -i eth1 icmp 抓包icmp协议的包

无论加网关还是加IP都是加 路由记录

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/97657

(0)
上一篇 2018-05-06 20:29
下一篇 2018-05-06 20:47

相关推荐

  • sed

    sed 过滤文件改文 ( 行编辑器)Sed 选项 脚本(地址命令)inputfile(要处理的文件名)-n 不输出模式空间内容到屏幕,即不自动打印-e 多点编辑-f /PATH/SCRIPT_FILE: 从指定文件中读取编辑脚本-r支持使用扩展正则表达式-i.bak 备份文件并远处编辑 -i编辑文件不备份script ‘地址命令’不给地址: 对全部的所有行处…

    Linux笔记 2018-04-15
  • Linux-用户、组和权限

    本章内容 解释Linux的安全模型 解释用户帐号和组群帐号的目的 用户和组管理命令 理解并设置文件权限 默认权限 特殊权限 ACL   安全3A 资源分派: Authentication:认证 Authorization:授权 Accouting|Audition:审计   用户user 令牌token,identity Linux用户:…

    2018-04-05
  • Docker容器技术之Docker Image

    镜像是Docker容器的基石,容器是镜像的运行实例,有了镜像才能启动容器。

    2018-08-02
  • shell脚本编程基础

    简要概括一点脚本小知识

    Linux笔记 2018-04-14
  • 软件包管理 {C语言源代码编译安装三步骤}

    本文主要记录 centos7 编译安装 httpd2.4.25 过程,加深记忆及备忘

    2018-04-22
  • 常用进程命令

    命令行格式: 名称:ps使用权限:所有使用者使用方式:ps [options] [–help]说明:显示瞬间行程 (process) 的动态参数:ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义-A 列出所有的进程-w 显示加宽可以显示较多的资讯-au 显示较详细的资讯-aux 显示所有包含其他使用者的行程 ps命令常用用法: (方便查…

    Linux笔记 2018-05-05