踩坑: systemd 的网卡命名规则 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Comphuse
V2EX    Linux

踩坑: systemd 的网卡命名规则

  •  
  •   Comphuse 2018-03-26 20:46:28 +08:00 4894 次点击
    这是一个创建于 2757 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://chaoticvoid.net/posts/systemd-network-interface-naming/

    踩到这个坑的起源是在 Vultr 上开了一个 Debian 9 的机器,运行过初始化脚本,结果发现脚本中的 iptables 规则没有生效。检查了规则,一切正常; ifconfig 后发现问题所在:

    ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet x.x.x.x netmask 255.255.254.0 broadcast x.x.x.x inet6 x::x:x:x:x prefixlen 64 scopeid 0x20<link> ether 56:00:xx:xx:xx:xx txqueuelen 1000 (Ethernet) RX packets 172 bytes 19821 (19.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 175 bytes 18906 (18.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 

    网卡名称竟然不是 eth0。好吧,“竟然”这个词用的不准确。这两年用 Linux 作为自己唯一桌面系统,早就发现网卡名称变了。之前折腾用的虚拟机用的都是 CentOS 7,自己 kickstart 出来的虚拟机模板和 DigitalOcean 上的机器网卡名都是 eth0,就默认 Debian 9 也是了。

    搜索一番找到了源头,systemd 在 v197 之后采用了区别与 ethX 的新命名策略[1]。传统命名策略的缺陷在于在多网卡情况下会出现重启后网卡命名混乱,比如之前的 eth0 和 eth1 换了名字。<del>贫穷限制了我的想象力</del>。细读下来还发现 Debian 和 CentOS/Fedora 用的竟然还是不同的新的命名策略,有心的可以自己试试。这套新的命名策略在 VPS 上显然没有意义。

    解决方案:

    1. /etc/default/grub 里的启动参数加上 net.ifnames=0,然后 update-grub
    2. 把配置文件里用到的网卡名称都改掉,grep -R stupid_if_names /etc
    3. 开 ticket 建议 Vultr 改虚拟机模板
    4. 这里赞一下 Vultr,十分钟内回复了 ticket,说已经反馈给开发团队。

    [1] https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/

    10 条回复    2018-03-27 14:02:19 +08:00
    kiwi95
        1
    kiwi95  
       2018-03-26 20:55:36 +08:00 via iPhone
    新的命名策略明显更清晰明了,当然要是就一个 interface 是没有必要,但也算不上坑吧
    dbw9580
        2
    dbw9580  
       2018-03-26 21:03:11 +08:00 via Android
    udev .link 了解一下
    wwqgtxx
        3
    wwqgtxx  
       2018-03-27 00:06:03 +08:00   1
    对于某些有双网卡的 VPS 还是很有意义的,比如国内某云
    miyuki
        4
    miyuki  
       2018-03-27 00:14:28 +08:00 via Android
    有的记得要去 /etc/network/interfaces 里改下名字
    mephisto
        5
    mephisto  
       2018-03-27 01:4:31 +08:00
    兄 dei,链接里的 release-note 了解一下,里面有解释,叫我雷锋。好像是从某个版本的内核开始,网卡的命名机制就变了。https://www.debian.org/releases/stretch/amd64/release-notes/ch-whats-new.en.html#new-interface-names
    Showfom
        6
    Showfom  
    PRO
       2018-03-27 01:15:41 +08:00
    很久很久以前就这样了啦
    OscarUsingChen
        7
    OscarUsingChen  
       2018-03-27 01:16:34 +08:00 via iPhone
    msg7086
        8
    msg7086  
       2018-03-27 12:29:51 +08:00   1
    这玩意儿对于虚拟机来说比较麻烦,可预测接口名称会变得完全不可预测。
    比如说你 ESXi 下的小鸡,开三个网卡,很可能一个叫 ens160,一个叫 ens192,一个叫 ens256,因为命名是按照虚拟机上插槽的编号来计算的。你多插一块或者少插一块 SAS 控制器,网卡的插槽就变了……
    zhjits
        9
    zhjits  
       2018-03-27 12:43:48 +08:00 via iPhone
    @msg7086 实体机也比较麻烦,换了个 CPU,网卡名字就变了
    tomychen
        10
    tomychen  
       2018-03-27 14:02:19 +08:00
    唉...我是不支持 systemd 的那波人中的一个.

    搞得我现在感觉我原来学的 linux 和我现在认识的 linux 不是一个东西。

    我现在一直在坚持不用 systemd 的系统,除非没办法在要特定的版本环境上测试演示。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     925 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 18:47 PVG 02:47 LAX 11:47 JFK 14:47
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86