马春杰杰博客
致力于深度学习经验分享!

服务器被DHCP服务器劫持,无法动态获取到正确IP,导致无法上网的问题。

最新目录

问题描述

服务器关机维护了4天,开机之后发现服务器无法连接网络,但是同个交换机上的多台服务器之间连接正常。

环境描述

服务器的网络配置采用单网卡双ip的配置方式,一个ip是DHCP动态获取用于连接外部网络,另一个ip是静态ip用于内网服务器的稳定通信。

问题分析

首先通过ip r查看当前设备的ip信息

我们发现除了172.16.x.x的静态ip配置之外,还有不明的192.168.x.x的一系列ip,动态获取到的ip为192.168.1.137,我们正常的DHCP获取的ip应该是10.x.x.x,因此可以确定,服务器被ip为192.168.1.1的DHCP服务器劫持了,无法从正确的DHCP服务器获取到ip,也就无法访问外部网络。

解决方案

联系上级网络管理员,得知在上级网络的其他服务器也出现了被劫持的情况,但是网络管理员不想麻烦,让我们自查自行解决。(😓)

两个解决方案,1. 不使用DHCP服务,而使用静态ip;2. 从服务器层面封锁192.168.1.1这个DHCP服务器。

方案一

既然 DHCP 环境不可信,直接手动指定正确的出口 IP、网关和 DNS,彻底摆脱对 DHCP 服务端的依赖。

这个方案有两个缺陷:1、 需要知道上级网络正确的出口IP、网关和DNS的信息;2、还需要避免与上级网络中的其他设备产生ip冲突。

编辑 /etc/netplan/01-network-manager-all.yaml,将 dhcp4: true 改为 no,并手动添加你原本应该获取的 10.x.x.x 地址和网关。

应用配置:sudo netplan apply

方案二

因为底层的网络接管程序是 systemd-networkd,而你又希望能继续使用 DHCP(为了获取那个正确的10.170.x.x地址),但要精准拒收 192.168.1.1的分配包,我们可以利用 systemd的原生高级特性。

需要注意的是:Netplan 的 YAML 配置文件本身比较精简,没有直接提供“DHCP 黑名单”的语法。但是,Netplan 在后台会把你的 YAML 转换成systemd-networkd的配置文件。

因此,我们可以通过添加一个 “覆盖配置 (Drop-in override)”,直接告诉底层的networkd:把 192.168.1.1 给我拉黑”。

以下是具体的操作步骤:

1. 确认 Netplan 生成的文件名
Netplan 通常会把配置渲染到 /run/systemd/network/ 目录下。对于你的 br0 网卡,它通常会被命名为 10-netplan-br0.network
你可以先运行下面这个命令确认一下:

(确认里面有没有类似 10-netplan-br0.network 这样的文件。如果有,请按以下步骤操作;如果名字不同,请把下面的文件名替换成你实际看到的名称。)

2. 创建 systemd-networkd 覆盖目录

我们要在/etc目录下创建一个专门的文件夹,用来存放你要追加的高级规则:

3. 编写 DHCP 黑名单规则

在这个目录下创建一个名为dhcp-deny.conf的文件:sudo nano /etc/systemd/network/10-netplan-br0.network.d/dhcp-deny.conf

把下面的内容粘贴进去:

保存并退出(在 Nano 中按 Ctrl+O 回车保存,Ctrl+X 退出)。

4. 重启 networkd 服务让规则生效

不需要运行 netplan apply,因为我们直接修改了底层的规则。直接重启 systemd-networkd 服务即可:

5. 验证结果

重启网络服务后,你的br0会重新发起 DHCP 请求。因为底层引擎已经拉黑了192.168.1.1,它会对那个流氓服务器的响应视而不见,只接受正确的 DHCP 服务器(10.170.255.254)发来的 IP。

此时你再次运行:ip r

你应该就能看到它成功获取到了正确的10.170.x.xIP,并且默认网关也恢复正常了。

 

赞(0) 打赏
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《服务器被DHCP服务器劫持,无法动态获取到正确IP,导致无法上网的问题。》
文章链接:https://www.machunjie.com/linux/1980.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

:smile: :sad: :arrow: :cool: :confused: :cry: :eek: :evil: :exclaim: :idea: :lol: :mad: :mrgreen: :neutral: :question: :razz: :redface: :rolleyes: :surprised: :wink: :biggrin: :twisted: