赞
踩
本篇记录Linux 的网卡配置以及网络服务的相关配置,期望在了解的网卡的配置内容的基础上,对网络问题能进行配置文件的排查。网络问题是非常复杂的,本篇不涉及抓包和网络的其他问题排查。
网络配置文件有很多,常见的有网口配置文件,DNS 配置,网关配置,主机地址解析配置等。
先从简单的开始入手,最简单就是我们最常见但是容易忽略的主机名了,默认都是localhost
- /etc/hostname
- localhost
-
- [root@localhost ~]#
- root 用户 登录的 localhost 主机名的机器,当前工作目录在root 用户家目录
- [user@localhost ~]$
- 普通用户 user 登录的 localhost 主机名的机器,当前工作目录在 user 用户家目录
主机名写入 /etc/hostname 文件中,可以只写一段,也可以用 '.' 分割,一般不会在上面花太多功夫。主要是用来区分服务器的一个名字。如果有更新主机名,记得顺带更新一下/etc/hosts
- # 更新主机名,更新HOSTNAME 以及hostname 返回值,但不会修改/etc/hostname
- hostname your_hostname
-
- # 更新主机名,更新HOSTNAME 以及hostname 返回值,会修改/etc/hostname 推荐方式
- hostnamectl set-hostname your_hostname
- man /etc/resolv.conf
- nameserver Name server IP address
- search Search list for host-name lookup.
- The domain directive is an obsolete name for the search directive that handles one search list entry only.
-
- 案例:
- nameserver 8.8.8.8
- /etc/hosts 解析优先级比DNS高
-
- 案例: 加上解析后,ping baidu.com 会解析成ping localhost
- localhost baidu.com
主机名、网关也可能在这里配置,这里的网关配置优先级比网口配置的低,影响默认路由;这个文件可以为空,但是不能删除。
- /etc/sysconfig/network
- GATEWAY=10.0.0.1
如下两个文件可以通过IP 限制访问,貌似8版本上面没有了
- man 5 hosts_access
-
- /etc/hosts.allow
- /etc/hosts.deny
一些 IANA 记录的服务名称和传输协议端口号注册表,可以看看端口一般对应的是什么服务,或者服务的默认端口是什么
/etc/services
网口配置文件很大程度上决定了服务器网络是否正常,值得仔细了解一下;网口配置文件都在/etc/sysconfig/network-scripts 目录下,网口的命名规范可以看看如下博客
/etc/sysconfig/network-scritps 目录下,所有ifcfg-开头的文件都会被识别成网口文件,备份网口文件请注意文件名前缀要修改。另外 # 号注释 。配置文件可以自己建,但是具体到网口的设备名,写错了无法生效的。ip a 可以看到所有的网口。
- 常见配置解释:
- DEVICE=eth0 网卡的名字
- HWADDR=00:00:00:00:12:d9 HWADDR HardWare Address 硬件地址 MAC地址
- TYPE=Ethernet 网络类型 以太网
- UUID=ae779ae6-044d-43d5-a33b-48c89e8de10e UUID 做到系统中独一无二
- ONBOOT=yes BOOT ON ? 在开机或重启网卡的时候是否启动网卡
- NM_CONTROLLED=yes 是否受network程序管理
- BOOTPROTO=none 网卡是如何获取到ip地址 网卡获取ip地址的方式
- a. dhcp 自动获取ip地址
- b. none 固定的ip地址
- c. static 固定的ip地址
- IPADDR=10.0.0.100 IPADDR ip地址
- NETMASK=255.255.255.0 子网掩码
- GATEWAY=10.0.0.2 网关
- DEFROUTE=yes 使用默认路由
- VLAN=yes trunk 模式的网络,需要启用VLAN
- 极简配置(如下配置网络服务就能跑起来,但是建议加上MAC和BOOTPROTO):
- DEVICE=ens3
- ONBOOT=yes
- IPADDR=10.0.0.100
- NETMASK=255.255.255.0
- GATEWAY=10.0.0.1
有时候需要在网卡上绑定多个IP(不太建议使用),有两种办法:
- 方式一:
- 在网口配置文件上加一行,IPADDR=XXX.XXX.XXX.XXX 适合同网段IP
-
- 方式二:
- 复制一份网口文件,命名ifcfg-xxx:0 区分,修改DEVICE 和 相关的网络配置重启网络服务即可
-
- 注意:
- 1、如果要配置其他网段的IP,需要主机交换机端口是否支持,虚拟机得注意是否有支持对应网段
- 2、配置其他网段,还需要注意路由配置,很容易因为路由错误导致访问不通
如果控制台不方便访问,修改网口配置请注意留定时任务来恢复到可以访问的状态,修改网络配置是很容易断网,导致访问不了服务器的情况。
为了保障服务器的高可用,一般物理机会接入多条网线来减少网络中断的概率。此时需要做网口的汇聚或者主备,目前工作中见到的主要分两类,6版本系统上面在运行的bond 绑定以及7及7以上的team 绑定。都支持多种模式,这里主要用到主备模式。
目前6版本上貌似不支持team的配置,所以还是用的bond 绑定。主要分两类配置,一个是bond 的配置文件,另外就是绑定网口配置的配置文件
在6版本上面配置bond 有很多奇奇怪怪的问题,尽量保证控制台可以访问到再操作吧
1、创建网卡配置文件
- vi /etc/sysconfig/network-scripts/ifcfg-bond0
- DEVICE=bond0
- NAME=bond0
- TYPE=Bond
- BONDING_MASTER=yes
- IPADDR=#IP地址
- NETMASK=#子网掩码
- GATEWAY=#网关IP
- ONBOOT=yes
- BOOTPROTO=static
- #下面的mode=1是表示主备模式,primary=em1中的em1是主网卡名称(根据自己网卡名称变动)
- BONDING_OPTS="mode=1 miimon=100 updelay=600000 primary=em1"
2、配置slave 节点
从网卡一: 注意MATSTER 别用bond0的UUID,踩过坑,可能对不上,直接用bond的设备名就行
- vi /etc/sysconfig/network-scripts/ifcfg-em1
- DEVICE=em1
- NAME=em1
- TYPE=Ethernet
- BOOTPROTO=none
- ONBOOT=yes
- MASTER=bond0
- SLAVE=yes
从网卡二 就是设备名不一样,其他内容都一样
- vi /etc/sysconfig/network-scripts/ifcfg-em2
- DEVICE=em2
- NAME=em2
- TYPE=Ethernet
- BOOTPROTO=none
- ONBOOT=yes
- MASTER=bond0
- SLAVE=yes
3、生效和检查
- service network restart # 重启网络服务 有的是NetworkManager
- ip a # 查看IP 是否在bond0 上
- cat /proc/net/bonding/bond0|grep -A3 "Interface" # 查看bond0 状态
team 绑定会更常见,大致流程都是一样的。不过team 有管理命令,维护更便捷
- whereis teamdctl
- teamdctl: /usr/bin/teamdctl /usr/share/man/man8/teamdctl.8.gz
- rpm -qf /usr/bin/teamdctl
- teamd-1.31-4.el8.x86_64
-
- # 查看模板文件 (版本不同可能存在不同的位置,如果没有,请检查是否有安装teamd软件)
- ls -l /usr/share/doc/teamd*/example_ifcfgs/
-
- 1 目录下是 roundrobin 模板
- 2 目录下是 lacp 模板
- 3 目录下是 activebackup 模板
roundrobin模式是一种简单的轮询方式,适用于负载均衡,但不够灵活
当某个物理网卡出现故障时,流量不会立即切换到其他网卡
lacp模式支持动态负载均衡,具有更好的性能和可靠性,但需要团队成员都支持LACP协议
成员之间动态地分配流量,并在链路出现故障时立即将流量切换到其他可用链路
active-backup模式在性能和可靠性方面表现出色,适用于高可用性场景,主备模式
活动连接和备份连接之间实时监控,当活动连接出现故障时,备份连接立即接管流量
1、编辑网卡配置文件 (这里记录主备模式)
- vi /etc/sysconfig/network-scripts/ifcfg-team0
- DEVICE="team0"
- DEVICETYPE="Team"
- ONBOOT="yes"
- BOOTPROTO=static
- NETMASK=255.255.255.0
- IPADDR=10.0.0.100
- GATEWAY=10.0.0.1
- TEAM_CONFIG='{"runner":{"name":"activebackup"},"link_watch":{"name":"ethtool"}}'
2、编辑从网卡配置文件
- DEVICE="em1"
- DEVICETYPE="TeamPort"
- ONBOOT="yes"
- TEAM_MASTER="team0"
- DEVICE="em2"
- DEVICETYPE="TeamPort"
- ONBOOT="yes"
- TEAM_MASTER="team0"
3、生效和查看状态
- systemctl restart NetworkManager # 如果有关闭NetworkManager的会用network
- teamdctl team0 state
- setup:
- runner: activebackup
- ports:
- em1
- link watches:
- link summary: up
- instance[link_watch_0]:
- name: ethtool
- link: up
- down count: 0
- em2
- link watches:
- link summary: up
- instance[link_watch_0]:
- name: ethtool
- link: up
- down count: 0
- runner:
- active port: em1
docker 的网桥模式,kvm 主机的网桥模式,需要将流量转发到虚拟的网桥处理,最后从绑定的实际网口出入。可以用 brctl 或者 ip 命令配置也可以自己编辑配置文件,这里介绍编辑配置文件的方式。
- cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-br_10_0_8
- TYPE=Bridge
- NAME=br_10_0_8
- DEVICE=br_10_0_8
- ONBOOT=yes
- BOOTPROTO=static
- EOF
然后在口配置文件上面添加BRIDGE=br_10_0_8 ,来将网桥绑定到网口上。也可以通过命令操作
- brctl addif <bridge> <device> add interface to bridge
- brctl show [ <bridge> ] show a list of bridges
交换机端口一般配置access 模式和trunk模式,一般服务器常见的都是access模式。
access 模式属于一个VLAN,可以简单理解为只能在同一个VLAN中通信(不走路由的情况下);
trunk 模式可以携带多个VLAN ,简单理解就是支持多个VLAN 间通信(不走路由的情况下);
一个VLAN 可以简单理解为一个网段;
如果我们需要在网卡或者聚合链路上面支持多个网段,例如在KVM主机上需要支持多个网段的虚拟机网络通信,或者docker 需要支持多个网段的容器实例网络通信时,我们需要在交换机开启trunk 模式,并修改操作系统上的网口配置;注意,如果从access切换到trunk 网口配置未更新,网络是会断开的。
这里用team 聚合的方式演示,直接用网口也是一样的:
我们需要一个网口,这里用team0 聚合代替单个网口,配置team 的salve节点这里省略
- cat > ifcfg-team0 << EOF
- DEVICE=team0
- DEVICETYPE=Team
- ONBOOT=yes
- BOOTPROTO=none
- USERCTL=no
- TEAM_CONFIG='{"runner":{"name":"activebackup"},"link_watch":{"name":"ethtool"}}'
- EOF
这个配置的意思是,是启用VLAN模式,设备名写什么不重要,重要的是绑定到team上,后续从这个设备出去的网络包,就会带上VLAN标签。trunk 模式配置主机 IP 也必须如此。
- cat > ifcfg-team0.11 << EOF
- DEVICE=team0.11
- DEVICETYPE=Team
- VLAN=yes
- ONBOOT=yes
- BOOTPROTO=none
- IPADDR=10.0.0.100
- NETMASK=255.255.255.0
- GATEWAY=10.0.0.1
- USERCTL=no
- EOF
这个是指将网桥绑定到这个team0.162 网口上,网桥流量给到网口,并启用VLAN模式
- cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-team0.10
- DEVICE=team0.10
- VLAN=yes
- DEVICETYPE=Team
- ONBOOT=yes
- BOOTPROTO=none
- BRIDGE=br_10_0_8
- EOF
早些时候,Centos 系列都是用的 network 服务通过脚本来管理和维护网络的,后来有了NetworkManager 服务,这个能做的事情更多。目前8版本 network 剥离出来,不是必须安装的软件了
- # 查看文件属于哪个软件包
- rpm -qf /etc/sysconfig/network-scripts/
如果你发现网口配置文件没问题,网络服务怎么重启也不生效,而且你正在控制台而不是远程,那么建议试试如下方式:
- ll /sys/class/net/ # 查看当前网络设备
- ip a flush dev em1 # 清除 em1 网卡信息 慎重操作,会断网
-
- 逐个清除网口配置后,再重启网络,此时一般就能按照配置文件加载网络信息了
这里简单记录一些有点关系,但不多的东西
平时服务器上有连接存储的需要或者对网速要求比较高的情况,比如用SAN存储的得用HBA卡,而用NAS存储的得用万兆网卡。然而,放眼望去,都是光口啊,这哪分得清?
光纤网卡多是1G和10G,HBA卡多是4G和8G的16G,这个够明显了吧。一般在网卡上会有写速率
交换机上面能看到链路是否正常,通信是否正常
链路 UP:(无法在交换机上面单独看到交换机端口或者网卡是否UP,)
通信 UP:
注意:检查链路是否正常,需要开启网卡后再找交换机查看链路情况,ethtool devicename 可以查看网口的链路状态,如果是物理网口,会有详细信息(链路、速率、网口类型)。
后续,整理整理目前工作中有遇到过的网络问题排查,另外写一篇,可能会很长,写了就把链接加到后面。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。