关于 LINUX 的 IP 配置问题

2016-01-05 23:59:24 +08:00
 wex
测试环境是虚拟机,装的是 CENTOS7
我删除了 /etc/sysconfig/network-scripts/ifcfg-eth0(源文件是 eto166777714x,改名字成了 eth0),为什么还可以正常上网?虚拟机设置的网络环境是 NAT
1689 次点击
所在节点    问与答
6 条回复
lhbc
2016-01-06 00:03:53 +08:00
UUID
msg7086
2016-01-06 02:07:47 +08:00
因为你的网卡叫 eto16777714 。用 ip l 看看你网卡是不是叫这名字。
mzer0
2016-01-06 04:24:05 +08:00
@msg7086 @wex

这个是 CentOS 7 在 VMware 上已知的一个 BUG, 这个 BUG 会导致自动安装时网卡配置错误.

这个 BUG 是怎么来的呢? 储存网卡 ID 的变量有 24 位, 取值范围是 0 ~ 2^24 - 1. 错误配置的网卡名为 eto166777714x, 可见其 ID 为 166777714 = 2^24 - 2, 因此, 可以推断, 错误的代码大致为:

int24_t get_eth_id(void) { return (uint24_t) (-1); }

uint24_t eth_id = get_eth_id();
if(eth_id == (uint24_t) (-1)) { /* Error */ }

开发人员不小心把本应该是 uint24(无符号 24 位整数)的返回值类型写成了 int24_t(有符号 24 位整数), 换而言之, 他少打了一个字母 u.

已经有人把这个 bug 上报给 VMware 了(不是我), 不过我估计是 CentOS 的安装程序的问题. 楼主 @wex 你用的操作系统是不是 Win10? 因为 Win10 重写了硬件虚拟层的代码, 这样会导致安装网卡驱动的时候, 安装程序跳到一个不常见的分支(你的网卡驱动+虚拟硬件层+VMware), 而那个分支写错了返回值......

如果确定这个 Bug 只在 Win10 下出现, 我会考虑给 CentOS 发 PR, 毕竟我懂怎么修......
k9982874
2016-01-06 09:55:14 +08:00
@mzer0 有理有据 深入浅出赞一个
wex
2016-01-06 12:19:39 +08:00
@mzer0 感谢,我的电脑是 7 64 位,虚拟机版本 vm12
wex
2016-01-06 12:20:18 +08:00
@msg7086 我都说把名字改成了 ethO 了,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/248640

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX