linux网卡下有两个system,systemd-networkd 作为网络管理服务,导致dhcp给所有网卡分配同样的IP...
我们虚拟机之前的网卡配置是交给 init的 networking 服务来管理的, 具体配置不同系统系统可能不一样。
比如 Debian/Ubuntu系列操作系统配置在 /etc/network/interfaces文件中,
而Redhat/CentOS系列操作系统配置在 /etc/sysconfig/network-scripts/ifcfg-XXX 网卡配置中。
但是如果我们希望所有网卡通过 DHCP 动态获取IP地址, 那我们就需要在对应的网卡配置中, 配置动态获取功能。
例如 Ubuntu
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet dhcp
allow-hotplug eth1
iface eth1 inet dhcp
如果我们网卡数量较多, 就需要在网卡配置文件中添加所有网卡的 dhcp 配置信息。 但是有些时候我们又不定有多少张网卡的化, 那这种配置就带来很大问题。 无法提前预制好配置。
当然有个比较low的办法就是在network服务启动之前, 添加一个服务采集所有网卡名称, 将dhcp的配置写进去。这种方式最大的问题, 就是要添加自定义网卡配置采集和配置服务,
同时要求该服务要在网络服务启动之前启动。但是这种基础服务, 要我们插入我们自定义的服务才能,还是不能酸完美
较新的发行版, 都使用systemd作为init进程, 为什么网络服务还在使用 /etc/init.d/networking服务? 所以查找了下 systemd 下的网络管理模块,可以使用 systemd-networkd来管理网卡配置。
对于我们的需求, 可以使用模式匹配模式, 比如 eth* 来匹配所有 eth0/eth1/...等等网卡。在 /etc/systemd/network/50-dhcp.network 配置如下:
[Match]
Name=eth*
[Network]
DHCP=ipv4
相比 /etc/init.d/networking 最后使用 dhclient 来进行dhcp操作, 默认是将网卡的 mac 作为 DHCP 的 Client ID,而 systemd-networkd 模式则是有 networkd 程序处理 DHCP请求。
因此在按 /etc/systemd/network/50-dhcp.network 这种模式配置, 所有网卡以及所有虚拟机通过DHCP获取的IP变成了同样的。查找 systemd-networkd 的配置选项之后, dhcp部分有如下选项
[DHCP]
ClientIdentifier=duid
使用什么样的 DHCPv4 客户端标识符: "mac" 表示连接的MAC地址; "duid" 表示一个符合RFC4361规范的客户端ID(也就是 IAID 与 DUID 的组合); "duid-only" 表示仅使用 DUID (可能与 RFC 规范不兼容,但某些场合需要这样做)。 默认值是 "duid"
默认是使用 duid 来作为 DHCP 客户端的标识, 而 duid 又依赖 /etc/machine-id, 因为所有虚拟机的都是基于同一个原始qcow2镜像, 我们并没有清理 /etc/machine-id 的内容。因此相当于所有虚拟机均使用的同样的 /etc/machine-id, 导致最终 DHCP Server来分配IP的时候, 发现所有请求都是基于同一个 客户端标识, 因此分配同样的IP给客户端。问题找到, 最终的配置如下:
[Match]
Name=eth*
[Network]
DHCP=ipv4
[DHCP]
ClientIdentifier=mac
将 ClientIdentifier指制定为根据 mac 地址来分配IP, 就不存在上述问题了。
linux网卡下有两个system,systemd-networkd 作为网络管理服务,导致dhcp给所有网卡分配同样的IP...相关推荐
- linux下安装两个nginx教程,在linux系统下安装两个nginx的简单方法
在linux系统下安装两个nginx的简单方法 发布时间:2017-03-09 12:08 来源:互联网 当前栏目:web技术类 在linux下安装nginx的时候,一般在./configure的阶段 ...
- 在linux系统下安装两个nginx以及启动、停止、重起
如果没有安装过nginx请看:linux下nginx部署以及配置详解 1.第一个nginx已经安装完成后,现在安装第二个nginx 启动:sudo /usr/sbin/nginx3 重起:sudo / ...
- linux系统下安装两个或多个tomcat
编辑环境变量:vi /etc/profile 加入以下代码(tomcat路径要配置自己实际的tomcat安装目录) ##########first tomcat########### CATALINA ...
- vulnhub-Brainpan (考点:windows exe和linux elf下的两种缓冲区溢出)
这个靶机前面考exe文件的缓冲区溢出,后面的提权方法还有对linux-elf文件的缓冲区溢出.可以熟悉ollydbg &immunitydebugger & gdb 几个常用调试工具和 ...
- linux 分区下的两主要硬盘的意思
查看linux硬盘分区情况的命令 fdisk -l 那么怎么查看我系统里某个文件属于哪个分区 或者说跟哪些分区有关系呢 df 绝地路径的文件就能看到 一个文件夹里有多个文件 就是 里面的文件挂载在该文 ...
- linux系统下进行两个硬盘之间的拷贝
1:对考前准备 一个做好启动盘的U盘,,(linux 做启动盘可使用unetbootin) .一块硬盘 2:通过U盘启动盘进入U盘启动系统(类似WindowsPE概念),插入移动硬盘,,查看电脑分 ...
- 一个网卡下设置两个ip地址
(1)开启方法 (2)关闭方法 开启/proc/sys/net/ipv4/ip_forward
- Linux系统下网卡网络配置基础
Ifconfig命令使LINUX核心知道软件回送和网卡这样一些网络接口,这样Linux就可以使用它们.除了上面介绍的这些用法之外,ifconfig命令用来监控和改变网络接口的状态,并且还可以带上很多命 ...
- linux 网卡驱动编译,在linux系统下安装编译网卡驱动的方法
安装linux操作系统后发现没有网卡驱动,表现为 system → Administration → Network下Hardware列表为空. 以下为安装编译网卡驱动的过程,本人是菜鸟,以下是我从网 ...
最新文章
- Rendering failed with a known bug ,Please try a rebuild
- win7删除计算机库文件,win7怎么将“库”从资源管理器导航栏中删除【图文】
- mysql如果索引为uid间隙锁_mysql 开发进阶篇系列 10 锁问题 (使用“索引或间隙锁”的锁冲突)...
- C语言使用QR(正交三角)求特征值eigen values(附完整源码)
- 6.Strings and Dictionaries
- 西电计算机学院导师苗启广,Xidian Media Lab
- pythonwhile爬虫教程_Python 爬虫从入门到进阶之路(十一)
- 什么是预热 压测_全链路压测探索实践之路
- 锐度越高越好吗_德国瑞好和德国GC地暖哪个好
- flash制作文字笔顺_flash动画课件制作有什么优点
- 是德科技成功开发广泛的测试与测量产品
- java中递归算法_java中递归算法是什么怎么算的?
- 初学数学建模软件MATLAB的笔记
- Java使用apache的poi将PPT转PDF文件,支持并兼容PPT和PPTX文件
- 留学生的英文期刊论文怎么写?
- 机器学习读书笔记:神经网络
- backdrop-filter
- java web分层和层间数据传递 vo bo po
- C语言用循环写出新年祝福语图案,如何用C语言写新年祝福
- 如何用一根网线实现在两台电脑之间传输数据