广播
路由
lo网卡
什么是广播
广播(BROADCAST): 一对多,局域网内的所有主机都可以广播,如果同一时间多个host同时广播,会造成信息干扰,实现同一广播域内的有效通信广播地址的表现形式
以太网和IPv4网都用全1的地址表示广播,分别是ff:ff:ff:ff:ff:ff和255.255.255.255
例:
Bcast:192.168.146.255 网段广播地址
[root@Centos6 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:FE:5D:93
inet addr:192.168.146.144 Bcast:192.168.146.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fefe:5d93/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:26971 errors:0 dropped:0 overruns:0 frame:0
TX packets:20440 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2136491 (2.0 MiB) TX bytes:13601286 (12.9 MiB)
数据链路层(mac地址层)的广播48个1(FF:FF:FF:FF:FF:FF),
IP层全网广播(255.255.255.255),局域网广播(ip.ip.ip.255)
可以向广播地址发起ping错误,发送广播ping,但需要加-b参数。因为linux中默认不回应广播ping,
可在/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts开启,0开启|1关闭
关闭时只有网关地址响应
[root@Centos7 ~]#ping -b 192.168.146.255
WARNING: pinging broadcast address
PING 192.168.146.255 (192.168.146.255) 56(84) bytes of data.
64 bytes from 192.168.146.2: icmp_seq=1 ttl=128 time=0.429 ms
64 bytes from 192.168.146.2: icmp_seq=2 ttl=128 time=0.391 ms
[root@Centos7 ~]#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.146.2 0.0.0.0 UG 100 0 0 ens33
开启后所有该网段的host都会响应,且回复会多个回复(DUP!重复的)
[root@Centos7 ~]#ping -b 192.168.146.255
WARNING: pinging broadcast address
PING 192.168.146.255 (192.168.146.255) 56(84) bytes of data.
64 bytes from 192.168.146.147: icmp_seq=1 ttl=64 time=0.096 ms
64 bytes from 192.168.146.2: icmp_seq=1 ttl=128 time=0.311 ms (DUP!)
64 bytes from 192.168.146.144: icmp_seq=1 ttl=64 time=1.90 ms (DUP!)
64 bytes from 192.168.146.147: icmp_seq=2 ttl=64 time=0.045 ms
路由实现
什么是路由,路由的功能,路由的通用介质 路由:把一个数据包,从一个设备发送到不同网段的另一个设备上,路由的实现通过路由表中的记录实现。路由的功能:
分隔广播域
选择路由表中到达目标最好的路径
维护和检查路由信息
连接广域网
路由的通用介质(设备)
常见的路由器,和有路由功能的交换机,及软路由软件等,以硬件路由器为主流
route命令简介 修改只是历史有效
[root@Centos7 ~]#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.146.2 0.0.0.0 UG 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
192.168.146.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.214.148 192.168.146.3 255.255.255.255 UGH 0 0 0 ens33
[root@Centos7 ~]#route add #添加
[root@Centos7 ~]#route del #删除
Destination: 目标网络ID,主机IP,0.0.0.0/0默认路由 default
如有Destination 169.254.0.0 Internet私有保留地址 用于网络硬件自动标记
Genmask:network
Gateway(网关):跨主机通信时,下一路由器临近我的接口的IP —> 下一跳
同一网段的路由会自动生成不需要单独加 表现为Gatway 0.0.0.0
Ifac: 接口,表示从当前设备那个网卡发出去,到达Destination
Metric: 花费,值越小优先级越高
路由优先级: 主机路由–>网络路由–>默认路由
例子:
[root@Centos7 ~]#route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
[root@Centos7 ~]#route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
[root@Centos7 ~]#route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
添加默认路由所有的路径都走不通时,最后的选择路由
[root@Centos7 ~]#route add default gw 192.168.146.2
[root@Centos7 ~]#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.146.2 0.0.0.0 UG 0 0 0 ens33
添加新的不同网段的网卡后会自动生成一条默认路由
#ifconfig ens33:1 192.168.214.148 up
192.168.214.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
#上述路由配置仅是写在内存中,实时生效,但不会永久有效,仅用于临时使用,如要永久有效,需写入配置文件中保持在硬盘中
route路由永久有效
#vim /etc/sysconfig/network-scripts/route-IFACE
#需service network restart生效
两种风格:
(1) TARGET via GW
如:0.0.0.0/8 via 192.168.146.2
(2) 每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
例:
ADDRESS0=192.168.0.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.146.17
route 实现不同网段间通信
#route add -net 172.20.1.0/24 gw 10.0.0.2 dev ens37
#route add -net 192.168.146.0/24 gw 10.0.0.1 dev ens37
需要中间设备开启路由功能,默认没启用,是自己的就收,不是自己的就直接丢弃
#echo 1 > /proc/sys/net/ipv4/ip_forward
如果两个中间连接的路由器处于网络的边缘是可以使用默认路由(找不到的都转向默认路由)策略实现跨网段通信
#route add default 10.0.0.2 dev ens37
#route add default 10.0.0.1 dev ens37
配置动态路由
quagga程序包,支持多动协议RIP(根据中间路由器的数量)、OSPF(根据带宽)和(不同网络运营商网络访问)等协议
[root@Centos7 /etc/quagga]#systemctl start ospfd 启动服务
[root@Centos7 /etc/quagga]#vtysh
Hello, this is Quagga (version 0.99.22.4).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
Centos7.hjq#
扩展:
实现中间三个路由连接的两台主机分别基于NAT和桥接进行网络通信
lo回环网卡
是一种特殊的网络接口,不与任何实际设备连接,而是完全由软件实现。与回环地址(127.0.0.0/8 或 ::1/128)不同,回环网卡对系统“显示”为一块硬件。任何发送到该网卡上的数据都将立刻被同一网卡接收到。lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 2444 bytes 280980 (274.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2444 bytes 280980 (274.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo网络一般情况下仅供内部测试使用,我们可以ping通127的任意网段地址,然而路由表里却并没有Lo网卡的信息,也不会因为Lo网卡的改变而自动生成,如果需要需手动添加;之所以能通,因为指向的网关为127.0.0.1/8 ,如果换成其他netmask随之改变其范围
实验:
实现两块lo跨主机网络的通信,可以把其放到桥接到eth0即另一块网卡上通信,通过两边路由表里配置的路由记录通信
#ifconfig lo 6.6.6.6/32 此时该网段只有一个iP
#ifconfig lo 7.7.7.7/32
#route add -host 6.6.6.6 dev ens33
#route add -host 7.7.7.7 dev eth0
[centos7@localhost~]# ping -I 7.7.7.6 7.7.7.7 ping的时候使用-I 指定ping命令的接口或者地址,建议使用地址
2 此时该网段只有一个iP
#ifconfig lo 7.7.7.7/32
#route add -host 6.6.6.6 dev ens33
#route add -host 7.7.7.7 dev eth0
>[centos7@localhost~]# ping -I 7.7.7.6 7.7.7.7 ping的时候使用-I 指定ping命令的接口或者地址,建议使用地址