Context for newbies: Linux refers to network adapters (wifi cards, ethernet cards, etc.) by so called “interfaces”. For the longest time, the interface names were assigned based on the type of device and the order in which the system discovered it. So, eth0, eth1, wlan0, and wwan0 are all possible interface names. This, however, can be an issue: “the order in which the system discovered it” is not deterministic, which means hardware can switch interface names across reboots. This can be a real issue for things like servers that rely on interface names staying the same.

The solution to this issue is to assign custom names based on MAC address. The MAC address is hardcoded into the network adaptor, and will not change. (There are other ways to do this as well, such as setting udev rules).

Redhat, however, found this solution too simple and instead devised their own scheme for assigning network interface names. It fails at solving the problem it was created to solve while making it much harder to type and remember interface names.

To disable predictable interface naming and switch back to the old scheme, add net.ifnames=0 and biosdevname=0 to your boot paramets.

The template for this meme is called “stop doing math”.

  • mlg@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 day ago

    me setting my interface into monitor mode manually because it can’t handle being split into mon and managed.

  • neclimdul@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    3 days ago

    I really appreciate this change. Prior to it was always a struggle to deploy servers successfully. You’d reboot and your database would be on the wrong interface and you could even remote in because the management interface was suddenly on a firewalled external only network. Ask me how I know.

    With virtualization and containers this just got more complicated. I would constantly have to rewrite kvm entire configs because I’d drop a new nic in the machine. A nightmare.

    Sure, it’s gibberish for the desktop user but you can just use the UI and ignore the internal name. Not even sure the last time I saw it on my laptop. So no big deal.

  • fruitycoder@sh.itjust.works
    link
    fedilink
    arrow-up
    0
    ·
    3 days ago

    No idea what mactab is, but maybe it solves it for me, but being able to go from interface name back to a rack full of heterogeneous PCI cards and go “yep it should be this port” was a wildly useful feature.

    I feel like there should be automatic alias creation for simply interface names though.

  • 🐍🩶🐢@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    3 days ago

    I had to change mine to mac address naming on my proxmox server after the second time the name changed due to a GPU or SSD being added. It was kind of like, so what, if an SSD dies suddenly or I have some issue with a device you are going to rename my fucking nic card again while I am trying to troubleshoot? Absolutely deranged.

  • NutWrench@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    3 days ago

    Also, make sure your password contains L’s, 1’s, 0’s and O’s in a font deliberately chosen to make them hard to tell apart.

  • blackstrat@lemmy.fwgx.uk
    link
    fedilink
    arrow-up
    0
    ·
    4 days ago

    As someone who worked on a pre-systemd linux system with multiple NICs and needed them all configured automatically from an OS image based on where it was in the rack, I can’t stress enough how good deterministic interface names are.

    Booting up a system and each time having different names for each NIC was a nightmare.

    Frankly 90+% of what systemd has done is tremendously positive and makes linux a better operating system to use, both for sys admins and end users.

    • laurelraven@lemmy.blahaj.zone
      link
      fedilink
      arrow-up
      0
      ·
      4 days ago

      Couldn’t they be configured to always set each interface to a particular name? I’d think that would be the better solution anyway…

  • maxinstuff@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    4 days ago

    Here I am on a laptop with no ethernet ports (probably works over USB-C? No idea, haven’t tried), and a single wifi adapter. Guess I’ll give it a try:

    ip link show

    What I expected

    wlan0

    What I got

    wlp242s0

    Neat 👍 😎 👍

  • suction@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    4 days ago

    Small world thinking. Because you haven’t seen the need for it doesn’t mean it doesn’t exist. Also, did you lose your CTRL, C, and V keys?

    • laurelraven@lemmy.blahaj.zone
      link
      fedilink
      arrow-up
      0
      ·
      3 days ago

      Yes, because everyone has need of this solution, and wants to have to copy and paste interface names every time they need to touch them, rather than having deterministic naming be an option to enable for those who actually need it…

        • laurelraven@lemmy.blahaj.zone
          link
          fedilink
          arrow-up
          0
          ·
          edit-2
          3 days ago

          You know Linux isn’t just used by enterprise sysadmins, right?

          And even speaking as an enterprise sysadmin myself, I’ve not had need or use for deterministic interface naming once in my career. I have no clue how common that is, but most of the servers, both physical and virtual, that I’ve worked on only had one Ethernet port connected.

          I see the purpose of this, but don’t see a reason why it should be the default, or why it couldn’t have been implemented like HHD/SSD UUIDs where the old dev names were left intact for easy use outside of fstab and the like where consistency could become a problem

          ETA: you also seemed to miss the part of my initial reply to you about it being something that can be enabled by those who need it… And if you’re going to say that the enterprise professionals who need it shouldn’t have to turn it on every time they spin up a system, I’ll remind you that enterprise admins working at that level where they’re setting up enough servers for that to be a hassle are probably using orchestration like Ansible, Chef, or Puppet, and can just add that into their configs once

  • d00phy@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    4 days ago

    So I do HPC installations, and using Mellanox/NVIDIA adapters in Ethernet mode absolutely sucks. First, when you initially install them, they’re named something like ens2f0, where “2” generally corresponds to the PCI slot. Pretty easy, until you install MOFED. Yeah, I know you don’t need MOFED, but the drivers included in RHEL are waaay old. Anyway, after installing the newer drivers, that exact same interface becomes ens2f0np0!

    What’s even better is there’s no guarantee that a PCI Ethernet card in PCI slot 2 will be “ens2…” which I would argue is predictive!

    • Murdoc@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      0
      ·
      4 days ago

      I came here to say this. I don’t really do networking so I don’t have much care for this issue, but the clarity of the explanation was enjoyable. Plus I learned a couple of little things too.