故障现象
- 基础现象:通过映射的域名/地址(如https://10.0.0.234:8443 或 https://idrac-mapping:8443)登录 iDRAC 时,浏览器直接弹出「Bad Request」提示,部分浏览器会显示「400 Bad Request」错误码,无法进入 iDRAC 登录页面;
- 排查特征:跳过映射,直接使用 iDRAC 静态IP(如 https://192.168.0.120)登录,可正常进入登录页面、完成认证,排除 iDRAC 本身故障、账号密码错误、网络不通等问题;
- 辅助特征:更换浏览器、清除缓存/Cookie后,映射登录仍报相同错误;若映射地址带自定义端口(非443),错误现象一致,核心原因均为「映射地址与 iDRAC Host Header 校验不匹配」。
方法核心原理
iDRAC Web 服务器默认开启 Host Header 校验(防止 Host Header 攻击),当映射的域名/访问地址与 iDRAC 自身配置不匹配时,请求会被拒绝,报 400 Bad Request。
本方法通过 racadm 命令关闭 Host Header 校验,快速绕过地址匹配限制,实现正常登录,属于应急解决方案,不推荐长期开启。
问题解决逻辑
核心矛盾:映射地址未被 iDRAC 识别,导致其发送的 Host 请求头被 iDRAC Web 服务器拒绝;
解决思路:不修改映射配置、不调整 iDRAC DNS 配置,直接临时关闭 iDRAC 的 Host Header 校验功能,允许所有 Host 请求头访问,快速解决登录问题(应急优先);
后续衔接:登录成功、完成所需操作(如配置修改、固件升级、故障排查)后,建议立即恢复 Host Header 校验,降低安全风险,同时建议切换为长期解决方案(方法1)。
前置准备
- SSH工具
- iDRAC 的账号密码(需管理员权限)
- SSH 直连:电脑通过SSH连接 iDRAC 静态IP(默认端口22),账号密码为 iDRAC 管理员账号(如root/calvin);
完整操作步骤
- 连接 iDRAC(以 SSH 直连为例):打开终端/CMD,输入命令:ssh root@iDRAC静态IP(替换为自己的 iDRAC IP,如 ssh [email protected]),回车后输入 iDRAC 管理员密码(输入时不显示,输完回车即可)。
关闭 Host Header 校验:
输入命令(复制即可,无需修改):racadm set idrac.webserver.HostHeaderCheck 0说明:0=关闭校验,1=开启校验(默认值),执行后会提示“Success”,表示命令执行成功。
重启 iDRAC Web 服务(实际测试不重启好像也可以):
输入命令:racadm racreset soft说明:soft 表示软重启,仅重启 Web 服务,不影响 iDRAC 其他功能,也不影响服务器正常运行,重启耗时约1-2分钟。
验证操作结果:
等待1-2分钟后,用映射的域名/地址重新登录 iDRAC,若能正常进入登录页面,无 Bad Request 提示,即为操作成功。
关键注意事项
- 安全风险:关闭 Host Header 校验会降低 iDRAC Web 服务的安全性,可能遭受 Host Header 欺骗攻击,仅用于应急登录,问题解决后建议尽快改回开启状态
- 重启说明:必须执行 racreset soft 命令重启 Web 服务,否则配置不生效;软重启不影响服务器业务,无需担心业务中断。
命令补充:后续恢复开启校验的命令:
racadm set idrac.webserver.HostHeaderCheck 1执行后同样需重启 Web 服务(racadm racreset soft)。
- 异常处理:若执行命令提示“Permission denied”,说明账号无管理员权限,更换 root 账号重试;若提示命令不存在,检查 racadm 工具是否安装到位,或 SSH 连接是否正常。
其他补充建议
- 应急优先,长期优化:本方法仅用于紧急登录,登录后建议立即配置「方法1:添加手动DNS条目」,既保证映射正常使用,又开启 Host Header 校验,兼顾安全与可用性(具体命令可参考相关操作文档);
- 提前备份配置:操作前建议通过 iDRAC Web 界面或 racadm 命令备份 iDRAC 当前配置(racadm getconfig -f idrac-backup.cfg),避免误操作导致配置丢失,便于快速回滚;
- 固件定期升级:若频繁出现映射登录异常,建议升级 iDRAC 固件至最新稳定版(如 iDRAC9 升级至6.20+),修复已知的 Host Header 校验相关 Bug,减少故障复发;
- 映射配置规范:映射时优先使用 HTTPS 协议(与 iDRAC 默认协议一致),禁用 HTTP 映射;若需使用自定义端口,需在 iDRAC 中添加对应端口配置,同时更新 ManualDNSEntry,避免端口不匹配导致的二次故障;
- 账号权限管控:避免使用 root 账号长期操作,可创建具有 racadm 操作权限的普通管理员账号,仅在应急操作时使用,降低账号泄露带来的安全风险;
- 故障记录归档:每次出现 Bad Request 错误时,记录映射地址、操作时间、解决步骤及恢复情况,形成故障台账,后续出现同类问题可快速定位,提升排查效率。
其他方案
方案1:添加手动DNS条目
让 iDRAC 识别映射的 FQDN/域名,通过 racadm(本地/SSH/远程)执行:
# 替换为你的映射域名(如 idrac-server01.example.com)
racadm set idrac.webserver.ManualDNSEntry "idrac-server01.example.com"
# 重启Web服务生效
racadm racreset soft- 若有多个映射域名,用逗号分隔:
racadm set idrac.webserver.ManualDNSEntry "idrac01.example.com,idrac01.bmc" - 验证:
racadm get idrac.webserver.ManualDNSEntry
参考链接:
- [iDRAC8内网访问webserver没有任何问题,但是通过公网访问或者二级代理请求访问出现400访问错误的解决方案。 - 星小梦 - 博客园]
https://www.cnblogs.com/XingXiaoMeng/p/17060182.html
[PowerEdge:iDRAC9固件版本5.10.00.00上的HTTP和HTTPS FQDN连接失败 |戴尔美国版]
[Dell服务器idrac9内网登录正常公网端口映射访问异常_idrac端口映射-CSDN博客]
https://blog.csdn.net/weixin_44923842/article/details/132753884