01-网络基础
网络基础
概念
- 为实现资源共享,彼此互联的多个计算机设备就形成了网络
- 为实现通信,设备间必须共同遵守相同的通信协议
- TCP/IP协议族
- 标识彼此地址、收发和处理相同约定的数据包
- 分组交换即包换网络,分层头部、数据
- 速度由频率决定
- 网络分层
- 物理层、网络层、传输层、应用层
- 将复杂的问题分解为多层的简单的问题,层间遵守相同的接口
1 | # 查看网卡信息 |
ubuntu18.04网络配置
使用netplan配置
/etc/network/interfaces
已经没有这个文件了
使用Rerender
- NetworkManager 桌面系统
- systemd-networked 服务器
1 | sudo vim /etc/netplan/50-cloud-init.yaml |
启用生效,重启网络
1 | sudo netplan apply |
ip命令
ip link
1 | ip link set ens33 up |
ip addr
1 | ip addr show |
ip route 路由信息
1 | ip route show |
ip maddress 多播地址,组播地址
1 | ip maddress ls ens33 |
ip neighbor ARP地址表相关
1 | ip -s -s neighbor show # 查看ARP表 |
DNS配置
主机名解析
1 | sudo vim /etc/hosts # 这里的解析优先级高于resolv.conf |
名称解析顺序配置文件
1 | sudo vim /etc/nsswitch.conf |
只需关注:hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
- files 在
/etc/hosts
- Resolve systemd-resolved.service(缓存、localhost、本机名)
- [NOTFOUND=return] mdns结果即权威
- dns DNS服务器
- mdns4_minimal Multicast DNS 多播DNS服务器
网桥配置(桥接)
将多个以太网段以 上层协议透明的方式链接在一起
- 二层转发,对三层协议透明
- 启用防火墙可与流量过滤
- 桥接宿主机与虚拟机网络,使虚拟机访问外部网络
- 桥接有线网与无线网
- 链路冗余容错(需启用STP)
- 通过网桥管理工具实现bridge-utils
在vmware虚拟机上设置两块网卡,一个网卡为nat模式,另一个为仅主机模式
网桥桥接
- 安装网桥管理包
1 | sudo apt install bridge-utils |
用brctl
命令来添加网桥
临时配置
sudo brctl addbr br0
添加网桥,命名为br0,然后ifconfig -a机会看到多了一块网桥br0sudo brctl addif br0 ens32 ens35
在br0里添加ens32和ens35,架起桥梁。- 把加入到网桥的网卡的ip设为0.0.0.0, 可以先把网卡down掉再改ip
1 | sudo ifconfig ens32 0.0.0.0 up |
- 给网桥网卡分配ip,这里是静态
1 | sudo ifconfig br0 1.1.1.1/24 up |
- 也可以动态分配ip
1 | sudo dhclient br0 |
- sudo route add default gw 1.1.1.10
持久配置
ubuntu18.04网络配置文件已经不在/etc/network/interface
下了,而是在/etc/netplan/
的文件中
添加下列配置
这是/etc/network/interface
1 | auto ens32 |
重启服务
- sudo systemctl restart networking
- sudo service networking restart
- sudo /etc/init.d/networking restart
在/etc/netplan/
目录下:
1 | network: |
重启网卡: netplan apply
netplan --debug apply
如果网络配置出错了,可以这样查看
查看网桥信息
- brctl show
- brctl showmacs br0
- brctl showstp br0
网卡绑定
作用:
- 当一个网卡不够用的时候,可以使用两个网卡绑定在一起增加带宽
- 当一个网卡断的话,另一个网卡可以形成备份,增加链路冗余
- 主备模式只能做成链路备份,不能负载,负载需要服务器和交换机互相配合
- 将多个物理网卡组合为一个逻辑网卡,实现高可用、负载均衡、高吞吐量
多网卡绑定
bond的7种模式
- mode=0 round-robin轮询策略(Round-robin policy)
- mode=1 active-backup主备策略(Active-backup policy)
- mode=2 load balancing (xor)异或策略(XOR policy)
- mode=3 fault-tolerance (broadcast)广播策略(Broadcast policy)
- mode=4 lacp IEEE 802.3ad 动态链路聚合(IEEE 802.3ad Dynamic link aggregation)
- mode=5 transmit load balancing适配器传输负载均衡(Adaptive transmit load balancing)
- mode=6 adaptive load balancing适配器负载均衡(Adaptive load balancing)
主备模式 active-backup:
这个是主备模式,只有一块网卡是active,另一块是备用的standby,所有流量都在active链路上处理。
注意:交换机不能做聚合端口,因为交换机配置的是捆绑的话将不能工作,因为交换机往两块网卡发包,有一半包是丢弃的。
特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。
此模式只提供了容错能力;由此可见此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态。
动态链接聚合 802.3ad:
- 表示支持802.3ad协议,和交换机的聚合LACP方式配合(需要xmit_hash_policy).标准要求所有设备在聚合操作时,要在同样的速率和双工模式,而且,和除了balance-rr模式外的其它bonding负载均衡模式一样,任何连接都不能使用多于一个接口的带宽
- 特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。
- 必要条件:在交换机和服务器上都需要配置动态链路聚合
主备模式做绑定
1 | sudo vim /etc/netplan/50-cloud-init.yaml |
双网卡绑定并桥接
先做网络绑定,然后桥接选择接口,选择绑定的网络。
1 | sudo vim /etc/netplan/50-cloud-init.yaml |
DHCP服务
Dynamic Host Configuration Protocol
介绍
自动分配网络设置
- 透明的配置网络参数
- IP/掩码, 网关, DNS, 域名, 主机名, 时间服务器, 打印服务器
- 通过地址租约循环使用IP地址
- UDP 67 / 68 基于udp协议之上的一个应用层的协议,使用udp协议的端口67和68 标准的DHCP, 服务器使用67端口, 客户端使用68端口
客户端连上网络,就要获取ip, 就要发送广播, 发送一个叫discover的数据包, 通过二层广播, 喊”谁有ip啊”, 而DHCP服务端一直在监听, 听到后会立即相应, 回给客户端一个称之为offer的数据包. 客户端会再发一个request请求包, 服务端收到后会发送一个确认包, 客户端得到确认后会使用服务端给的ip地址等
安装配置
在虚拟机上做实验,要把虚拟机上的DHCP服务关掉, 避免对ubuntu server造成影响
1 | sudo apt install isc-dhcp-server # 安装DHCP服务端 |
主配置文件:
1 |
|
有option 的配置是关于ip地址池 作用域的, 没有option的配置是作用于整个服务器的, 全局性的配置
在配置文件中任何位置添加:
1 | subnet 172.16.247.0 netmask 255.255.255.0 { |
重启服务:
1 | sudo systemctl restart isc-dhcp-server.service |
然后就可以啦
DHCP地址保留
给计算机保留IP地址
1 | sudo vim /etc/dhcp/dhcpd.conf |
日志与状态查看
1 | cat /var/lib/dhcp/dhcp.leases # 服务器地址租约结果 |
NTP服务
网络时间协议
计时方法
- 太阳照影、滴水、烧香、电子、石英原子时钟
- Drift是计时器时间与真实时间之间的偏移量
- 基于铯133的原子时钟每3亿年误差为1秒
时间标准
- GMT:格林威治标准时间
- UTC:世界协调时间
- CST:China Standard Time UT+8:00
计算机技术对时间非常敏感
- IPSec、AD、SSL
- 日志审计
- 电子元器件相互干扰加大时间偏移
如何保证时间准确
- 不停地同步时间
- 永远无法精确同步(网络通信延时影响时间同步精度)
NTP协议的分层结构
- 从核心向外0-16层
- 0代表时间源
- 1-15代表逐级同步的时间服务器(越接近0时间越精确)
- 16代表尚未同步(不作为时间同步源)
- 客户端服务器全部使用udp 123端口通信
每个移动设备都运行NTP协议
- 硬件时钟:RTC(主板电池)
- 系统时钟:Local time
NTP客户端
NTP客户端
- 客户端程序从时间服务器同步时间
- 系统启动时自动同步时间
- 网口激活时自动同步运行
- 手动同步时间
客户端命令:
- timedatectl
1 | cwz@ubuntu_server:~$ timedatectl |
ntp客户端命令
1 | timedatectrl list-timezones # 列出所有时区 |
早期linux客户端程序:ntpdate
先安装
1 | sudo apt install ntpdate # 安装 |
NTPD 时间服务器
新版本系统使用timesyncd替换ntpd的客户端功能
ntpd: 客户端 + 服务器
1 | sudo apt install ntp # 安装ntp服务 |
配置:
1 | pool 0.ubuntu.pool.ntp.org iburst |
1 | ntpq -p # 可以详细的查看时间服务器的运行情况 |
时间相关的命令
1 | date --set 2012-01-10 # 设置日期 |