AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 614216
Accepted
Andy
Andy
Asked: 2014-07-22 07:48:15 +0800 CST2014-07-22 07:48:15 +0800 CST 2014-07-22 07:48:15 +0800 CST

如何控制网络接口的顺序?

  • 772

我正在尝试配置一台具有 3 个 NIC 的机器,前两个是内置 GbE 控制器,第三个是 10GbE 控制器。通过 NetworkManager,我将“第一个”GbE NIC(当时是 eth0)配置为使用静态 IP 地址。第二个 GbE NIC 将配置在单独的专用网络上,并且目前未使用 10GbE NIC。

当我重新启动机器时,eth0、eth1、eth2 等的顺序似乎是随机的。有时 eth0 会获取静态 IP 地址,有时它会被识别为 eth1 并获取 DHCP 地址。在这种情况下,我需要在正确重新配置之前交换电缆。

如何控制顺序,以便特定物理 NIC 始终以 eth0 或 eth1 出现,而​​无需更改下次重新启动?

linux
  • 5 5 个回答
  • 39909 Views

5 个回答

  • Voted
  1. windoo
    2016-12-30T03:53:32+08:002016-12-30T03:53:32+08:00

    也许有人会发现这些信息很有用:首先,在 RHEL7 中,您无需重新安装系统即可更改接口命名约定。

    注意:需要引导参数:

    a) With no parameters or net.ifnames=1 used, the names will use systemd Predictable Network Interface Names
    b) With biosdevname=1 used, the names will be managed by udev (technically systemd-udev) using Consistent Network Device Naming
    c) With net.ifnames=0 and biosdevname=0 both specified, traditional ("kernel names") ethX names will be used; if udev rules are also added they can rename the interfaces to anything except eth
    

    例子:

    Edit /etc/default/grub
    append selected params eg.
    biosdevname=0 net.ifnames=0
    grub2-mkconfig -o /boot/grub2/grub.cfg
    

    并且在主题的情况下:当您需要调整所有接口程序的顺序时很容易:

    mv /etc/udev/rules.d/70-persistent-net.rules /root/ 
    (New udev rules will be generated at next boot)
    
    Adjust configuration files in
    /etc/sysconfig/network-scripts/ifcfg-eth*
    [Edit device name, connection name, HWADDR etc.] 
    
    Reboot and then udev will generate rules basing on configuration files - if you did it properely.
    
    • 6
  2. Best Answer
    HBruijn
    2014-07-22T07:59:01+08:002014-07-22T07:59:01+08:00

    RHEL 6 中仍然支持的方法是通过 udev 设备规则。

    应该有一个自动生成 /etc/udev/rules.d/70-persistent-net.rules的强制一致命名:

    # This file was automatically generated by the /lib/udev/write_net_rules
    # program, run by the persistent-net-generator.rules rules file.
    
    # PCI device 0x8086:0x10c9 (igb)
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:90:1d:d1:30", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
    
    # PCI device 0x8086:0x10c9 (igb)
    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:25:90:1d:d1:31", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
    

    如果不是,您可以使用与您自己的 MAC 地址类似的语法来强制永久设备命名。

    • 5
  3. Michael Hampton
    2014-07-22T07:52:01+08:002014-07-22T07:52:01+08:00

    对于 RHEL 6 和未来,支持的方法是一致的网络设备命名。这可确保所有接口都获得一个有意义的名称,该名称基于硬件并且在系统的整个生命周期中保持不变(如果您不更改硬件,无论如何,通常即使您这样做了)。

    (请注意,在 RHEL 7 中,使用了不同的命名格式。)

    要在 RHEL 6 上切换到它,需要重新安装系统biosdevname=1,并且在安装时,启动安装介质时和每次启动系统时都必须传递内核命令行选项。

    • 4
  4. grekasius
    2014-07-22T07:52:34+08:002014-07-22T07:52:34+08:00

    正如 RedHat文档所建议的,您可以在接口配置文件中指定HWADDR=MAC-address参数。

    HWADDR=MAC-address 其中 MAC-address 是以太网设备的硬件地址,格式为 AA:BB:CC:DD:EE:FF。该指令必须在包含多个 NIC 的机器中使用,以确保为接口分配正确的设备名称,而不管为每个 NIC 模块配置的加载顺序如何。该指令不应与 MACADDR 一起使用。

    • 2
  5. tonioc
    2014-07-22T22:57:33+08:002014-07-22T22:57:33+08:00

    正如 HBruijn 提到的,rhel6 中的排序是 /etc/udev/rules.d/70-persistent-net.rules。该文件由 /lib/udev/write_net_rules 编写。

    如果出于某种原因您需要对网络接口进行任意和预先确定的排序,您可以用自己的脚本替换此脚本,以创建 70-persistent-net.rules 文件。这确保它不会被覆盖。

    您可以使用以下方式获取设备信息

    lspci | grep -i ethernet
    

    获取设备列表

    ethtool -i ethx
    ethtool -P ethx
    

    得到每一个的MAC-addr(关联PCI@/MAC@)。

    • 0

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve