Linux 网口配置文件及网络服务

发布时间:2024年01月17日

本篇记录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

DNS配置文件

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 目录下,网口的命名规范可以看看如下博客

Linux 网卡命名规范笔记-CSDN博客

基础网口配置

/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 绑定。都支持多种模式,这里主要用到主备模式。

bond 绑定

目前6版本上貌似不支持team的配置,所以还是用的bond 绑定。主要分两类配置,一个是bond 的配置文件,另外就是绑定网口配置的配置文件

在6版本上面配置bond 有很多奇奇怪怪的问题,尽量保证控制台可以访问到再操作吧

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"
slave配置

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 状态
team0 绑定

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模式在性能和可靠性方面表现出色,适用于高可用性场景,主备模式

活动连接和备份连接之间实时监控,当活动连接出现故障时,备份连接立即接管流量

team 配置

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"}}'
slave配置

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

VLAN 网口配置

交换机端口一般配置access 模式和trunk模式,一般服务器常见的都是access模式。

access 模式属于一个VLAN,可以简单理解为只能在同一个VLAN中通信(不走路由的情况下);

trunk 模式可以携带多个VLAN ,简单理解就是支持多个VLAN 间通信(不走路由的情况下);

一个VLAN 可以简单理解为一个网段;

如果我们需要在网卡或者聚合链路上面支持多个网段,例如在KVM主机上需要支持多个网段的虚拟机网络通信,或者docker 需要支持多个网段的容器实例网络通信时,我们需要在交换机开启trunk 模式,并修改操作系统上的网口配置;注意,如果从access切换到trunk 网口配置未更新,网络是会断开的。

这里用team 聚合的方式演示,直接用网口也是一样的:

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
管理IP 配置

这个配置的意思是,是启用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:

  • 网卡已配置IP,可以通过协议进行通信的情况

注意:检查链路是否正常,需要开启网卡后再找交换机查看链路情况,ethtool devicename 可以查看网口的链路状态,如果是物理网口,会有详细信息(链路、速率、网口类型)。


后续,整理整理目前工作中有遇到过的网络问题排查,另外写一篇,可能会很长,写了就把链接加到后面。

文章来源:https://blog.csdn.net/weixin_43839586/article/details/135616972
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。