网卡基本信息查看与配置
lspci | grep -i eth 查看主板上连接的网卡
# 02:00.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
# 02:01.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
mii-tool eth0 查看网卡上连接的网线是否正常
# eth0: negotiated 1000baseT-FD flow-control, link ok
ifconfig
常用的选项
- 查看网卡的信息
ifconfig 查看正在启用的网卡信息
ifconfig -a 查看全部网卡信息(没有启用的网卡信息也会显示)
ifconfig eth0 只查看eth0的网卡信息
- 网卡的开启与关闭
1. 不重新加载配置文件
ifconfig eth0 down 关闭eth0网卡
ifconfig eth0 up 开启eth0网卡
2. 重新加载配置文件
ifdown eth1 关闭eth1网卡
# Device 'eth1' successfully disconnected.
ifup eth1 开启eth1网卡
# Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/8)
- 网卡的配置
ifconfig eth1 192.168.80.126 将eth1的IP地址修改成192.168.80.126(临时修改)
ifconfig eth0:0 172.168.50.125/24 设置子端口,同一个网卡配置多个IP地址(临时添加)
ifconfig eth0:0 down 关闭eth0子端口
ifconfig eth1 mtu 2000 设置网卡eth1的最大传输单元为2000(临时修改)
# mtu一般都是搭配交换机使用
ifconfig
的详细信息
ifconfig eth0
# eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
# inet 192.168.80.100 netmask 255.255.255.0 broadcast 192.168.80.255
# inet6 fe80::1af5:8729:4b78:31f1 prefixlen 64 scopeid 0x20<link>
# ether 00:0c:29:ca:a8:27 txqueuelen 1000 (Ethernet)
# RX packets 1087 bytes 85710 (83.7 KiB)
# RX errors 0 dropped 0 overruns 0 frame 0
# TX packets 596 bytes 72847 (71.1 KiB)
# TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
UP(激活状态) BROADCAST(支持广播) RUNNING(正在运行) MULTICAST(支持多播)
ether 00:0c:29:ca:a8:27(网卡的mac地址) txqueuelen 1000(网卡的传输队列为1000个包)
RX packets 1087(开机之后累积收了多少个包) bytes 85710 (83.7 KiB)(收的包总共多少个字节和大小)
errors 0(错误的包)
dropped 0(丢弃的包(crc校验))
overruns 0(溢出的包(缓冲区))
- ;与&& 的差别
ls;aaaaaa;pwd ;多个命令一起运行,一个命令执行完成不管会不会报错,都会运行下一个命令
# anaconda-ks.cfg
# -bash: aaaaaa: command not found
# /root
ls && aaaaaa && pwd &&多个命令一起运行,前面一个命令运行完,如果没有报错,继续运行下一个命令,报错即停止
# anaconda-ks.cfg
# -bash: aaaaaa: command not found
- 网卡配置文件信息
vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet 类型=以太网协议
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none 网卡获取IP地址的方式:static(手动配置指定IP) dhcp(动态获取IP) none(根据其他选项决定是动态还是静态)
NM_CONTROLLED=no 如果NetworkManager服务启用,该网卡配置文件也不受该服务管理。通常我们会直接关闭
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=eth0
UUID=86ad5d60-7c01-4ee5-a7aa-1957e64335a1
DEVICE=eth0
ONBOOT=yes 网络服务启动的时候,网卡是否被激活
IPADDR=192.168.80.100 IP地址
PREFIX=24 子网掩码
GATEWAY=192.168.80.2 网关IP地址
PEERDNS=yes 网卡配置文件的DNS信息是否同步到/etc/resolv.conf
DNS1=114.114.114.114 指定DNS服务器IP
NM_CONTROLLED=no 如果NetworkManager服务启用,该网卡配置文件也不受该服务管理。通常我们会直接关闭
systemctl stop NetworkMangaer 关闭NetworkMangaer服务
systemctl disable NetworkMangaer 设置NetworkMangaer服务为开机不启动
企业级部署项目的三套环境
- 测试环境 (写好脚本)
- staging环境==》与线上一比一的环境 (验证脚本有没有bug)
- 线上环境 (直接部署)
路由转发
-
Linux内核处理数据包过程如下
-
网卡接收到数据后,会产生软硬件中断,把数据读入操作系统内核空间后,对其做路由决策(对比路由策略)。路由决策分为两种情况:
- 将数据流入本机用户空间
- 不进入用户内存空间,直接在内核空间进行转发(路由转发)
- 将数据流入本机用户空间
-
查看路由表
route -n 查看当前路由表信息
Gateway 显示0.0.0.0(默认子网掩码为/24),表示没有下一跳,在交换机内部进行广播。
标志位的三种状态: U(正在生效) G(指定的网关) H(主机路由)
- 开启Linux主机路由转发功能
- 临时开启
方式1:
echo 1 > /proc/sys/net/ipv4/ip_forward
方式2:
sysctl -w net.ipv4.ip_forward=1
# net.ipv4.ip_forward = 1
- 永久开启
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p 立即生效
# net.ipv4.ip_forward = 1
-
一台Linux主机能够当成路由器使用的三大前提
- 必须开启路由转发功能
- 对方必须把自己当成网关
- 该Linux主机必须有对应的路由转发条目
-
Linux分为3种路由 :
- 主机路由 : 子网掩码为32位,直接把范围缩小到最小,就一个IP地址
添加主机路由 route add -host ip地址/32 dev 网卡名
- 网络路由 : 子网掩码小于32位,所包含的地址是一个范围,子网掩码越大所容纳的范围越小
添加网络路由 route add -net 网段/24 dev 网卡名
- 默认路由 : 目标地址为0.0.0.0/0,所包含的范围最大
添加默认路由 方式一 : route add -net 0.0.0.0/0 dev 网卡名
方式二 : route add default dev 网卡名
- 添加路由指定网关
指定网关,让网关帮我们做后续的转发,不指定网关则在局域网内进行广播
1. 主机路由
route add -host 192.168.4.7/32 gw 1.1.1.1/24 dev eth0 去往192.168.4.7的包由1.1.1.1/24这个网关通过eth0网卡进行转发
2. 网络路由
route add -net 192.168.4.0/24 gw 1.1.1.1/24 dev eth0 去往192.168.4.0这个网段的包由1.1.1.1/24这个网关通过eth0网卡进行转发
3. 默认路由
route add default gw 1.1.1.1/24 dev eth0 去往所有IP地址的包(0.0.0.0/0)由1.1.1.1/24这个网关通过eth0网卡进行转发
- 删除路由命令
route del -host ip地址/32 删除主机路由
route del -net ip地址/24 删除网络路由
route del default 删除默认路由
- 路由的优先级
- 越精确路由优先级越高;子网掩码越大越精确
- 主机路由>网络路由>默认路由
实验
- 网络拓扑图
- 实验环境
- 关闭防火墙和selinux
- 添加4块网络适配器,模拟4个交换机
- 创建4个仅主机模式的虚拟机(无需设置网关),要求连接在同一个交换机之间同一个网段的IP地址可以互相ping通
第一台虚拟机网卡的IP地址为:1.1.1.8(eth0)
第二台虚拟机网卡的IP地址为:1.1.1.2(eth0),2.2.2.2(eth1)
第三台虚拟机的网卡IP地址为:2.2.2.3(eth0),3.3.3.3(eth1)
第四台虚拟机的网卡IP地址为:3.3.3.4(eth0),4.4.4.3(eth1)
-
实验要求:所有的虚拟机之间都可以ping通
-
实验分析:
一台Linux主机能够当成路由器使用的三大前提:
1. 必须开启路由转发功能
2. 对方必须把自己当成网关
3. 该Linux主机必须有对应的路由转发条目
- 添加路由条目可以设置为增加网络路由
- 实验结果
- 虚拟机1
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
1.1.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
2.2.2.0 1.1.1.2 255.255.255.0 UG 0 0 0 eth0
3.3.3.0 1.1.1.2 255.255.255.0 UG 0 0 0 eth0
4.4.4.0 1.1.1.2 255.255.255.0 UG 0 0 0 eth0
- 虚拟机2
echo 1 > /proc/sys/net/ipv4/ip_forward 开启路由转发功能
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
1.1.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
2.2.2.0 0.0.0.0 255.255.255.0 U 101 0 0 eth1
3.3.3.0 2.2.2.3 255.255.255.0 UG 0 0 0 eth1
4.4.4.0 2.2.2.3 255.255.255.0 UG 0 0 0 eth1
- 虚拟机3
echo 1 > /proc/sys/net/ipv4/ip_forward 开启路由转发功能
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
1.1.1.0 2.2.2.2 255.255.255.0 UG 0 0 0 eth0
2.2.2.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
3.3.3.0 0.0.0.0 255.255.255.0 U 101 0 0 eth1
4.4.4.0 3.3.3.4 255.255.255.0 UG 0 0 0 eth1
- 虚拟机4
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
1.1.1.0 3.3.3.3 255.255.255.0 UG 0 0 0 eth0
2.2.2.0 3.3.3.3 255.255.255.0 UG 0 0 0 eth0
3.3.3.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
4.4.4.0 0.0.0.0 255.255.255.0 U 101 0 0 eth1
路由条目优化
- 虚拟机1
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 1.1.1.2 0.0.0.0 UG 0 0 0 eth0
1.1.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
- 虚拟机2
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 2.2.2.3 0.0.0.0 UG 0 0 0 eth1
1.1.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
2.2.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
- 虚拟机3
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
1.1.1.0 2.2.2.2 255.255.255.0 UG 0 0 0 eth0
2.2.2.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
3.3.3.0 0.0.0.0 255.255.255.0 U 101 0 0 eth1
4.4.4.0 3.3.3.4 255.255.255.0 UG 0 0 0 eth1
- 虚拟机4
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 3.3.3.3 0.0.0.0 UG 0 0 0 eth0
3.3.3.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
4.4.4.0 0.0.0.0 255.255.255.0 U 101 0 0 eth1
注意 : 我们做路由条目优化的时候,设置万能IP地址0.0.0.0/0(默认子网掩码为0),千万不要设置成0.0.0.0/24 ! ! !
实验结论
- 每台Linux主机一旦配置好网卡的IP地址,系统会默认配置一条路由,路由的Destination(去往什么目标)会设置成网卡(IP)同网段的地址,下一跳会设置成0.0.0.0,也就是说跟本机同网段的IP地址是通过交换机在广播域通过mac地址进行通信的。
- 我们可以把Destination(去往什么目标)的地址设置成0.0.0.0。(这就是默认路由,优先级最低!)
那么我们送往其他所有的IP地址的数据包都由1.1.1.2这个IP地址进行转发。