Linux_20 子网划分

划分子网

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

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

# 网络位向主机位借1位
10.0.0.0/8  分成2个小网:10.0.0.0/9  10.128.0.0/9

10.0 0000000.0.0

10.0 0000000.0.1
10.0.0.0/9

10.0 0000000.0.1     10.0.0.1  # 划分的子网中最小IP  
10.0 111111.255.254  10.127.255.254 # 划分的子网中最大IP

10.1 1111111.255.254
10.128.0.0/9
10.1 0000000.0.1   10.128.0.1  # 划分的子网中最小IP
10.1 1111111.255.254   10.255.255.254 # 划分的子网中最大IP

主机位不能全为0或者全为1,所以10.0.0.0/9 一共9位子网掩码,剩下32-9=23位,不能全为0或者1,即10.127.255.255和10.128.0.0和10.255.255.255不能用。大网划分成小网,会导致小网的边界的主机位不可用。

2^1=2 网络


# 网络为向主机位借两位
10.00 000000.0.0
可以划分成4个子网
10.00 000000.0.0  10.0.0.0/10
10.01 000000.0.0  10.64.0.0/10
10.10 000000.0.0  10.128.0.0/10
10.11 111111.0.0  10.192.0.0/10



10.0.0.0/8 划分成32个子网
1).新的子网netmask  
	网络位向主机位借5位,2^5=32,子网掩码位数:8+5=13 netmask:10.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 min netid

3).新的子网存放最多的主机数是多少?
	32-13=19
	2^19-2
	
4).max netid IP:min ip,max ip?
	10.11111 000.0.00000001 => minip:10.248.0.1
	10.11111 111.255.254  =>maxip:10.255.255.254

河南省10.248.0.0/13,划分17个子网给17个地市使用
1)新的子网netmask:255.255.11000000.11000000.0  255.255.192.0
新子网网数位数:
	2^N>=17,N=5

2) 新的子网:min netid,max netid
	10.11111 000.00 000000.0   10.248.0.0/18 # 第1个子网
	10.11111 100.00 000000.0   10.252.0.0/18 # 第17个子网
	
	10.11111 111.11 000000.0   10.255.192.0/18  # 第32个子网

3)新的子网存放最多的主机数是多少?
	主机ID位=32-18=14
	2^14-2
4) max netid IP:min ip,max ip?
	10.252.0.0/18
	10.11111 100.00 000000.1 => 10.252.0.1
	10.11111 100.00 111111.11111110 => 10.252.64.254
	
	
如果按照A,B,C,总共多少个网段?
A:
0xxxxxxx.X.X.X
2^7=128 0和127不能用
1-126

B:
10xxxxxx.xxxxxxxx.X.X
2^14

C:110xxxxx.xxxxxxx.xxxxxxxx.X
2^21

合并超网

多个小网和并成一个大王,主机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

特殊地址

0.0.0.0
	0.0.0.0不是一个真正意义上的IP地址。他表示一个集合:所有不清楚的主机和目的网络。
	
255.255.255.255
	限制广播地址。对本级来说,这个地址指本网段内(同一广播域)的所有主机

127.0.0.1~127.255.255.254
	本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为“127.0.0.1”的数据包。

224.0.0.0到239.255.255.255
	组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。224.0.0.5指OSPF路由器,地址多用于一些特定的程序以及多媒体程序。

169.254.x.x
	如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地址,系统会为主机分配这样的地址。

跨网路通信

跨网络通信:路由
路由分类:
	主机路由
	网络路由
	默认路由
优先级:精度越高,优先级越高

对于一个路由器来说,当它接收到一个数据包之后,他只关心它如何将数据包发出去,即只关心数据包目标地址,靠路由表的路由记录决定发往何处,而不关心数据包的来源,因为是被动接收的,即不关心数据包的源地址。
# 路由表的构成
1.destination:数据包发送的目标路径  192.168.0.0
2.netmask:24 16
3.interface:路由器的出口
4.gateway
	1.直连:不需要配置
	2.非直连:下一个路由器邻近本路由器的接口地址
A---1 R1 2 ---3 R2 4--- 5 R3 6 --- B

firefox http://B
1 A 判断B和A是否在一个网段
2 A gateway:R1 IP1

ARP IP1--> MAC1
APR cache:IP1--MAC1

frame:dest mac:mac1 src mac:macA
ip:dest ip:IPB src ip:IPA
tcp:dest port:80 src port:xxxxx

3 R1查路由表

net B 2 IP3
ARP IP3 ---> mac3

frame:dest mac:mac3 src mac:mac2
ip:dest ip:IPB src ip:IPA
tcp:dest port:80 src port:xxxxx,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:xxxxx,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:xxxxx,syn

DHCP

基本网络配置

将Linux主机接入到网络,需要配置网络相关设置。
一般包括如下下内容:
主机名
IP/netmask
路由:默认网关
    DNS服务器:
    主DNS服务器	
    次DNS服务器
    第三DNS服务器

Centos6网卡名称

接口命名方式:CentOS6
以太网:eth[0,1,2...]
ppp:ppp[0,1,2,...]

网络几口识别并命名相关的udev配置文件:
	/etc/udev/rules.d/70-persistent-net.rules

查看网卡:
	dmesg|grep -i eth
	ethtool -i eth0
卸载网卡驱动:
	modprobe -r e1000
	rmmod e1000
装载网卡驱动:
	modprobe e1000

网络配置方式

静态指定:
	ifconfig,route,netstat
	ip:object{link,addr,route},ss,tc
	system-config-network-tui,setup
	配置文件
动态分配:
	DHCP:Dynamic Host Configuration Protocol

tcpdump:抓包工具  yum install -y tcpdump

tcpdump -i eth0 icmp # 抓取icmp包(ping 包)

route命令

路由管理命令
查看:route -n
添加:route add
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] if]
目标:192.168.1.3 网关:172.16.0.1
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
目标: 192.168.0.0 网关:172.16.0.1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0

删除: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

route del default gw 172.20.0.1

netstat 命令

netstat - Print network connections,routing tables,interface statistics,masquerade connections,and multicast memberships

显示网络连接:
	netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
	-t:tcp协议相关
	-u:udp协议相关
	-w:raw socket相关
	-l:处于监听状态
	-a:所有状态
	-n:以数字显示IP和端口
	-e:扩展格式
	-p:显示相关进程及PID

ip命令

ip addr {add|del} IFADDR dev STRING 
	[label LABEL]:添加地址时指明网卡别名
	[scope {global|link|host}]:指明作用域
		global:全局可用
		link:仅链接可用
		host:本机可用
	[broadcast ADDRESS]:指明广播地址
	
ip address show - look at protocol addresses
	[dev DEVICE]
	[label PATTERN]
	[primary and secondary]

ip address flush - 使用格式同show
ip addr add 172.16.100.100/16 dev eth0 label eth0:0
ip addr del 172.16.100.100/16 dev label eth0:0
ip addr flush dev eth0 label eth0:0


ip route - routing table management
	添加路由:ip route add
		ip route add TARGET via GW dev IFACE src SOURCE_IP
			TARGET:
				主机路由:IP
				网络路由:NETWORK/MASK
				
			ip route add 192.168.0.0/24 via 172.16.0.1
             ip route add 192.168.1.13 via 172.16.0.1
             添加网关:ip route add default via GW dev IFACE
             ip route add default via 172.16.0.1
	删除路由:ip route delete
	ip route del TARGET
	显示路由:ip route show|list
	清空路由表:ip route flush [dev IFACE] [via PREFIX]
		ip route flush dev eth0

A--vmnet10--eth0 R1 eth1 --vmnet11--eth0 R2 eth1 --vmnet12--B
A:192.168.1.100/24 gateway:192.168.1.1

R1:
eth0:192.168.1.1/24
eth1:172.16.0.1/16

R2:
eth0:172.16.0.2/16
eth1:10.0.0.1/8

B:
10.0.0.100/8 gateway:10.0.0.1



B机器配置:
	hostname B
    vim /etc/sysconfig/network-scripts/ifcfg-eth0
        DEVICE=eth0
        IPADDR=10.0.0.100
        NETMASK=255.0.0.0
        GATEWAY=10.0.0.1
        ONBOOT=yes

    systemctl restart network
    ifconfig # 地址已经生效 
    route -n  # 网关已经加入 10.0.0.1

A机器配置:
	hostname A
    vim /etc/sysconfig/network-scripts/ifcfg-eth0
        DEVICE=eth0
        TYPE=Ethernet
        NM_CONTROLLED=yes
        BOOTPROTO=none
        IPADDR=10.0.0.100
        PREFIX=24  # NETMASK=255.255.255.0
        DEFROUTE=yes
        GATEWAY=192.168.1.1
        NAME="System eth0"
        MACADDR=00:0c:29:E1:F7:BB
        PEERDNS=yes
        PEERROUTES=yes
        ONBOOT=yes

    systemctl restart network
    ifconfig # 地址已经生效 
    route -n  # 网关已经加入 10.0.0.1

R2机器(路由器)配置:
	hostname R2
    vim /etc/sysconfig/network-scripts/ifcfg-eth0
        DEVICE=eth0
        TYPE=Ethernet
        NM_CONTROLLED=yes
        IPADDR=192.168.1.1
        PREFIX=24  # NETMASK=255.255.0.0
        DEFROUTE=yes
        # GATEWAY=192.168.1.1 路由器没有网关,通过路由表添加网关
        NAME="System eth0"
        PEERDNS=yes
        PEERROUTES=yes
        ONBOOT=yes
        LAST_CONNECT=1522143080
	
	vim /etc/sysconfig/network-scripts/ifcfg-eth1
		DEVICE=eth1
		IPADDR=172.16.0.1
		PREFIX=16
	
    systemctl stop NetworkManager  # chkconfig NetworkManager off 禁止开机自启动
    systemctl restart network
    ifconfig # 地址已经生效 

R2机器(路由器)配置:
	hostname R2
    vim /etc/sysconfig/network-scripts/ifcfg-eth0
        DEVICE=eth0
        TYPE=Ethernet
        NM_CONTROLLED=yes
        IPADDR=172.16.0.2
        PREFIX=16  # NETMASK=255.255.0.0
        DEFROUTE=yes
        # GATEWAY=192.168.1.1 路由器没有网关,通过路由表添加网关
        NAME="System eth0"
        PEERDNS=yes
        PEERROUTES=yes
        ONBOOT=yes
        LAST_CONNECT=1522143080
	
	vim /etc/sysconfig/network-scripts/ifcfg-eth1
		DEVICE=eth1
		IPADDR=10.0.0.1
		PREFIX=8
	
	systemctl stop NetworkManager
    systemctl restart network
    ifconfig # 地址已经生效 
 
 
 R1:
 	echo 1 > /proc/sys/net/ipv4/ip_forward
 	route add -net 10.0.0.0/8 gw 172.16.0.2
 R2:
 	echo 1 > /proc/sys/net/ipv4/ip_forward
 	route add -net 192.168.1.0/24 gw 172.16.0.1


在A机器 ping B 机器:
	ping 10.0.0.100
	traceroute 10.0.0.100  # 可以跟踪路由,查看经过了哪些路由器
	mtr 10.0.0.100 # 可以动态跟踪路由
	tracepath 10.0.0.100  # 和tracepath类似

watch 命令

watch:周期性地执行指定命令,并以全屏方式显示结果
	-n # : 指定周期长度,单位为秒,默认为2
格式:watch -n # 'COMMAND'
watch -n 2 'ls /etc' # 每隔2s执行一次 ls /etc 命令
原文地址:https://www.cnblogs.com/zhangchaocoming/p/14855572.html