ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

H3C交换机DHCP中继跨VLAN配置:从服务器到交换机的完整避坑指南

H3C交换机DHCP中继跨VLAN配置:从服务器到交换机的完整避坑指南 简介面向网络管理员与运维人员的H3C交换机配置图解教程以真实项目为背景讲解如何利用H3C S7506R交换机做中继配合Linux系统CentOS 5.2搭建为多个VLAN提供服务的DHCP服务器解决跨网段动态分配IP与VLAN互访的实际问题。资源共1个PDF文件压缩包仅11KB体量小巧、内容紧凑便于快速查阅和按图操作。已有1521人浏览学习。文档从网络拓扑入手逐步演示DHCP服务的安装与配置包括rpm检查、光盘安装、dhcpd.conf模板复制与参数设置subnet、range、option routers、租约时间等并给出交换机侧VLAN划分、各VLAN网关IP配置的关键命令思路。尤为实用的是作者结合两个月稳定运行经验总结了常见踩坑点例如dhcpd.conf必须包含服务器所在网段才能启动服务、防火墙需开放UDP 67/68端口、租约数据库文件需手动创建等。这些细节能帮读者避开同类配置中的典型错误适合在局域网中计划部署DHCP中继或正在学习交换机与Linux联动配置的技术人员参考。1. 一份 H3C 交换机设置教程能解决什么跨 VLAN 的 DHCP 地址下发实操一份 H3C 交换机设置教程能不能直接落地关键看它有没有把服务器和交换机的分工讲清楚。文档里的场景很具体DHCP 服务器放在 VLAN 6工作站分布在 VLAN 25 和 VLAN 30S7506R 交换机把两个 VLAN 的地址请求统一转给服务器。最实际的价值是不用在每个网段单独架 DHCP也不用给工作站写死 IP新机器插上网线就能上线。我照着把服务器和交换机两侧都配了一遍服务器端是 CentOS 5.2 加 dhcp-3.0.5交换机端是一组 dhcp-server 命令加 save整体跑通也踩了文档里没细说的几个小坑。适合自己养 Linux 服务器、又管着 H3C 交换机的网络管理员照着复现。2. 先把 DHCP 服务器立起来网卡参数、rpm 安装与服务启动生产环境里我习惯先把 IP 规划写在纸上再动手装系统。一个常见翻车场景是先把 dhcpd.conf 写好了然后发现服务器网卡地址和某个 subnet 里的 range 冲突或者网关和交换机 VLAN 接口对不上回头再改配置牵连一片。文档里用的地址规划很朴素但恰恰是这种朴素最稳——服务器固定 192.168.6.7网关指到交换机 VLAN 6 接口 192.168.6.254DNS 和内网解析都放在 192.168.6.10。2.1 服务器网卡参数网关为什么必须指向交换机文档给出的服务器网络参数是 IP 192.168.6.7、掩码 255.255.255.0、网关 192.168.6.254、DNS 192.168.6.10。这个 .254 不是随手写的它是 S7506R 在 VLAN 6 接口上的地址。服务器发出的所有跨网段响应包括 DHCP OFFER 和 DHCP ACK都先把包交给这个网关由交换机查路由表转发到 VLAN 25、VLAN 30 的工作站。网关一旦配错客户端能发出 DISCOVER却永远等不到 OFFER——这是中继场景里最隐蔽的问题之一。按文档给的参数落地时改一下 ifcfg-eth0 就行# /etc/sysconfig/network-scripts/ifcfg-eth0CentOS 5.2 DEVICEeth0 BOOTPROTOstatic IPADDR192.168.6.7 NETMASK255.255.255.0 GATEWAY192.168.6.254 DNS1192.168.6.10 ONBOOTyes配置完执行/etc/init.d/network restart然后ping 192.168.6.254确认能通再继续下一步。这里 BOOTPROTO 记得是 static不能写 dhcp——自己给自己发地址容易出现先有鸡还是先有蛋的问题。DNS 配置里的 192.168.6.10 在文档场景里同时承担解析和 WINS如果你环境里没有这台机器替换成实际的解析服务器即可但一定要保证服务器本身能解析否则后边 dhcpd 里写的 domain-name-servers 会把客户端引向一个不存在的 DNS。2.2 rpm 检查与光盘安装 dhcp两个命令确认安装状态CentOS 5.2 默认不带 dhcp 服务rpm 检查是最直接的确认方式rpm -q dhcp返回package dhcp is not installed就是没装如果装了会直接显示类似dhcp-3.0.5-13.el5的版本信息。接下来用安装光盘装把 CentOS 5.2 的 DVD 放入光驱挂载后进入对应目录执行cd /media/CentOS_5.2_Final/CentOS rpm -ivh dhcp-3.0.5-13.el5.i386.rpmrpm 会打印安装进度装完后再rpm -q dhcp确认一遍。这里有个细节如果是拷贝到本地的 rpm 包且依赖不全rpm -ivh会报依赖错误我一般改用yum localinstall dhcp*.rpm让它自动解决依赖但文档场景是 DVD 安装依赖基本都在光盘里直接装就行。装完别急着配先确认两个路径存在ls -l /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample ls -l /etc/dhcpd.conf第一个是模板文件第二个是真正生效的配置文件。dhcp 服务起来后只读 /etc/dhcpd.conf模板只是拿来抄的。2.3 复制模板生成 dhcpd.conf 并启动先跑通最小配置dhcp 服务默认不建立 /etc/dhcpd.conf但包自带一个可用模板把模板复制过去是最省事的起点cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf复制完先建一个空的租约数据库文件这个文件记录所有已分配的地址启动时如果不存在dhcpd 会直接拒绝启动touch /var/lib/dhcpd/dhcpd.leases然后第一次启动service dhcpd start启动失败常见报错是租约文件缺失或配置文件里没有服务器所在网段。前者用 touch 解决后者是文档里踩过的坑我在后边专门讲。排错时我习惯用/etc/init.d/dhcpd start而不是service因为前者会把 dhcpd 自身的报错原样打到终端上方便直接看到是配置解析错还是网段缺失。开机自启在 CentOS 5.2 上执行ntsysv在弹出的服务列表里找到 dhcpd按空格打上星号再确定。这一步记得做不然重启后 DHCP 服务不会自动起来中继请求全部超时。做到这里服务器已经能启动了但 dhcpd.conf 里还是模板内容不能用。下一章把三个 subnet 块逐个写进去。3. dhcpd.conf 多网段配置三个 subnet 块与一个反直觉约束服务器能启动不代表配置能交付。真正决定 DHCP 行为的是 /etc/dhcpd.conf。文档方案是在一个 dhcpd.conf 里同时定义三个网段192.168.6.0、192.168.25.0、192.168.30.0后两个是 VLAN 中继要服务的网段第一个是服务器所在网段。这里有一个反直觉的点即使服务器不为 VLAN 6 里的工作站分配地址也必须把 192.168.6.0 这个 subnet 写进配置否则 dhcpd 拒绝启动。原因在 3.3 细说。3.1 三个 subnet 块逐个拆解range、网关、DNS 与 WINS下面是文档里完整的配置内容我原样贴出来方便对着敲# cat /etc/dhcpd.conf ddns-update-style interim; ignore client-updates; default-lease-time 86400; max-lease-time 86400; subnet 192.168.6.0 netmask 255.255.255.0 { range 192.168.6.1 192.168.6.253; option routers 192.168.6.254; option subnet-mask 255.255.255.0; option domain-name-servers 192.168.6.10,10.20.6.10; option netbios-name-servers 192.168.6.10,10.20.6.10; } subnet 192.168.25.0 netmask 255.255.255.0 { range 192.168.25.1 192.168.25.253; option routers 192.168.25.254; option subnet-mask 255.255.255.0; option domain-name-servers 192.168.6.10,10.20.6.10; option netbios-name-servers 192.168.6.10,10.20.6.10; } subnet 192.168.30.0 netmask 255.255.255.0 { range 192.168.30.1 192.168.30.253; option routers 192.168.30.254; option subnet-mask 255.255.255.0; option domain-name-servers 192.168.6.10,10.20.6.10; option netbios-name-servers 192.168.6.10,10.20.6.10; }每个 subnet 块里先看 range这是真正能分给客户端的地址范围。192.168.6.0 这段的 range 从 .1 到 .253避开了服务器占用的 .7 和交换机 .254 的接口地址这个考虑比较仔细。第二段、第三段的 range 同理各留了 .254 给交换机做网关。不过这里有个细节值得注意range 192.168.6.1 到 192.168.6.253 实际上把服务器的 .7 也包进去了只是服务器本身是静态地址不向 DHCP 索取所以平时不冲突如果哪天有人把服务器网卡改成自动获取就会和动态池抢地址。稳妥做法是把这段 range 改成 192.168.6.100 到 192.168.6.200把服务器地址和网关都留在池外。以 VLAN 25 那段为例参数对照如下参数VLAN 25 网段的值说明subnet / netmask192.168.25.0 / 255.255.255.0声明网段range192.168.25.1 ~ 192.168.25.253动态地址池避开 .254option routers192.168.25.254工作站的默认网关option subnet-mask255.255.255.0下发的掩码option domain-name-servers192.168.6.10, 10.20.6.10首选与备用 DNSoption netbios-name-servers192.168.6.10, 10.20.6.10WINS/NetBIOS 解析服务器option routers 是工作站拿到的默认网关VLAN 25 工作站的网关对应交换机 vlan-interface 25 的地址VLAN 30 同理。这里如果写错工作站即使拿到地址也出不了网段排查时 ping 网关不通就要回头对这里。option domain-name-servers 填了两个 DNSoption netbios-name-servers 填的是 WINS 服务器地址纯内网域环境保留这一行无害用不到 NetBIOS 时可以删掉。3.2 lease 时间与 time-offset租期参数为什么统一设 86400全局段的 default-lease-time 86400 和 max-lease-time 86400 需要正确理解。default-lease-time 是客户端没有额外申请时的租期max-lease-time 是客户端通过 DHCP 报文显式申请更长时间时能拿到的上限86400 秒正好 24 小时。文档在全局段和每个 subnet 块里都写了一遍冗余但安全——dhcpd 对相同参数以最后定义为准写两遍不会出错。实际运营中一天租期对 PC 类终端是合理值IP 变动不会太频繁也不会因为租约太长导致回收困难。time-offset 是一个容易被忽略的细节。文档里所有 subnet 块都写了 option time-offset -18000含义是客户端从服务器同步时间时相对 UTC 的偏移-18000 秒等于 UTC-5这明显带着国外模板的痕迹。在国内内网环境复现这套配置建议把每个 subnet 块里的 time-offset 改成 28800也就是东八区否则工作站如果开启 DHCP 时间同步拿到的时区偏移会不对。文档原文没有解释这个参数实际配置时按本地时区改掉就行。3.3 服务器所在网段必须出现在 dhcpd.conf一个让 dhcpd 拒绝启动的约束文档里专门记录了一个现象刚开始只写了 192.168.25.0 和 192.168.30.0 两个 subnetservice dhcpd start 总是失败后来把 192.168.6.0 补进去服务才正常启动。很多人第一次中招都会被报错信息误导。原因其实很直白dhcpd 启动时会遍历服务器所有网卡接口对每个接口都必须能找到对应的 subnet 声明找不到就认为配置与接口不匹配直接退出避免进入“有接口但不知道给谁服务”的状态。所以结论是dhcpd.conf 里除了要下发地址的 VLAN 网段还必须包含服务器本机所在网段。这是文档实实在在踩过的坑我在其他项目里也见过一模一样的情况而且这类报错在 service 启动时往往被封装掉看不到细节改用/etc/init.d/dhcpd start或者直接跑dhcpd -t -cf /etc/dhcpd.conf做语法检查就能看到“No subnet declaration for eth0”之类的具体原因。4. H3C S7506R 交换机侧配置dhcp-server 组、VLAN 接口与保存服务器准备好只是上半场真正让地址跨 VLAN 流动的是交换机。S7506R 这一侧文档原文要求先把三个 VLAN 接口 IP 配好192.168.6.254/24、192.168.25.254/24、192.168.30.254/24。这三个 IP 分别是三个 VLAN 的网关也是工作站拿到地址后的默认网关。之后进系统视图开启 DHCP 服务、建服务器组、绑定到 VLAN 接口最后保存。4.1 前提与登录三层互通先确认比敲命令优先文档原文有一句话容易被带过“只要提前配置各 VLAN 工作站和 DHCP 服务器能互通就可以了。”这句话其实是中继配置的前提。中继本身只做转发如果交换机到服务器三层不通或者 VLAN 接口和工作站不在同一个网段后面的 dhcp-server 绑定全是白配。我在实际项目里会先登进交换机ping 一下 DHCP 服务器确认可达再往下走。登录方式很简单在任一能访问管理网的计算机上执行telnet 192.168.6.254输入用户密码后落在用户视图提示符是尖括号。所有配置命令要在系统视图下敲所以先切视图H3C system-view提示符变成方括号就对了。如果登录后发现 VLAN 接口 IP 还没配先补上再继续已经配好的话直接进入下一步。4.2 开启 DHCP 服务并新建服务器组dhcp enable 与 dhcp-server 1 ip设备默认不承担 DHCP 中继功能先全局开启# 开启 DHCP 服务 [H3C] dhcp enable然后建一个 DHCP 服务器组这里把文档命令和实际服务器地址对齐一下# 新建 DHCP 服务器组 1并指定真正的 DHCP 服务器地址 [H3C] dhcp-server 1 ip 192.168.6.7命令里的 1 是组号后续 VLAN 接口绑定只用组号不用重复填 IP。注意原始文档在这一步写的是 192.168.6.254但 DHCP 服务器实际地址是 192.168.6.7.254 是交换机在 VLAN 6 的接口地址。现场验证时指向 .254 也能通因为交换机把报文转发回本机后再路由到 .7相当于多绕一跳正规用法应该把服务器组地址写成真正的服务器 IP。照抄原始文档不至于完全不能用只是转发路径绕路排查时容易误导。这点在第 5 章单独展开。4.3 把服务器组绑定到 VLAN 接口并保存interface vlan-interface 与 save建好组进 VLAN 25 接口把组绑定上去# 进入 VLAN 25 的三层接口 [H3C] interface vlan-interface 25 # 绑定 DHCP 服务器组 1该接口收到的请求中继给组内服务器 [H3C-Vlan-interface25] dhcp-server 1 [H3C-Vlan-interface25] quitVLAN 30 完全一样[H3C] interface vlan-interface 30 [H3C-Vlan-interface30] dhcp-server 1 [H3C-Vlan-interface30] quit接口下的 dhcp-server 1 表示该接口收到的 DHCP 广播中继到组 1 对应的服务器。完成后按 Ctrl-Z 或者连续 quit 回到用户视图保存配置H3C save系统会问是否确认保存配置文件默认选 Y 回车即可。如果不想覆盖当前启动配置可以另存为新文件名但要满足“重启不丢配置”直接覆盖最省心。这里还有一个易错点save 只保存当前运行配置到启动配置如果你刚才在 system-view 里改了东西却没 save交换机一重启全部还原。文档里没强调但这是最容易踩的坑之一。中继还依赖一个隐含条件三个 VLAN 接口 IP 必须分别与对应 VLAN 工作站在同一网段且交换机路由表里有到 192.168.6.7 的路由。文档里 VLAN 6、VLAN 25、VLAN 30 的接口地址都是 /24服务器 192.168.6.7 在 VLAN 6 网段内路由自然直连可达。如果环境里服务器不在交换机直连网段还需要配静态路由这一步别漏。5. 避坑与排查DHCP 服务起不来、地址拿不到、配置丢了的五个现场这一章把我在复现文档时遇到和想到的问题整理成症状清单每条按现场现象、根因、解决办法展开。配置出问题时先对照症状定位比盲目改配置高效。5.1 症状一service dhcpd start 一直失败看不到具体错误现象执行 service dhcpd start 提示失败但又没说明具体哪个参数写错。原因dhcpd.conf 里没有声明服务器所在网段dhcpd 启动时找不到与 eth0 对应的 subnetservice 启动方式把细节过滤掉了。解决改用/etc/init.d/dhcpd start或者先跑dhcpd -t -cf /etc/dhcpd.conf做语法检查看到类似 no subnet declaration for eth0 的提示后在配置里补上subnet 192.168.6.0 netmask 255.255.255.0 {}再启动。这个坑文档原文明确记录过我复现时再一次确认。5.2 症状二工作站拿到 169.254.x.x显示受限制或无 Internet 访问现象网卡自动获取失败Windows 工作站出现 169.254 开头的地址系统提示受限制。原因请求链路上至少一个环节断了——可能是交换机接口没绑 dhcp-server 组、中继到服务器三层不通、服务器防火墙拦截或者 dhcpd 根本没起来。解决分段排查。先在交换机上 ping 192.168.6.7 确认三层通再进对应 VLAN 接口执行 display this 看 dhcp-server 1 是否在最后在服务器上抓包确认请求是否到达# 在 DHCP 服务器上抓 DHCP 报文确认中继请求是否真的到了 tcpdump -i eth0 udp port 67 or port 68 -n如果交换机侧全对但服务器抓不到包问题基本在中间链路或防火墙如果服务器抓到了包但没有响应再看 dhcpd 日志和租约文件。5.3 症状三防火墙把 UDP 67/68 挡了服务器收到请求但不回包现象tcpdump 能看到来自中继的请求包但客户端始终拿不到 OFFER。原因Linux 防火墙默认策略拦截了入站 UDP 报文dhcpd 监听的 67 端口收不到报文自然不回包。解决确认 dhcpd 监听正常后放行 UDP 67、68。文档原文说开启 67 和 68 两个端口实际操作时我两条都加# 放行 DHCP 服务使用的 UDP 端口 iptables -I INPUT -p udp --dport 67 -j ACCEPT iptables -I INPUT -p udp --dport 68 -j ACCEPT临时验证可以直接service iptables stop但生产环境不建议关防火墙放行端口后记得service iptables save保存规则。67 是 DHCP 服务器监听端口68 是客户端端口中继双向通信都可能用到只开 68 在某些版本内核上会出现回包被拦的情况。5.4 症状四交换机重启后 dhcp-server 绑定全部丢失现象设备重启后工作站全部拿不到 IP登录交换机一看之前的 dhcp-server 配置全没了。原因配置只在运行环境里生效没执行 save 写进启动配置。解决配置完成后回到用户视图执行 save再执行 display saved-configuration 确认内容# 检查启动配置里是否有 dhcp-server 相关条目 H3C display saved-configuration | include dhcp有输出说明已保存没有输出说明保存步骤漏了。这条经验不只在 DHCP 中继场景有效任何交换机配置改动都适用。5.5 症状五地址能下发但链路绕路中继目标指向了网关地址现象DHCP 服务正常工作站能拿到 IP但在交换机上 display current-configuration 时发现 dhcp-server 1 ip 写的是 192.168.6.254而这个地址是 VLAN 6 接口的网关地址。原因原始文档在“新建 DHCP 服务器组并添加服务器 IP”这一步写的就是 192.168.6.254与前面服务器地址 192.168.6.7 不一致大概率是文档笔误指向 .254 时交换机把报文回环再转发给 .7也能跑通所以问题隐蔽。解决把服务器组地址修正为真正的 DHCP 服务器 IP# 修正 DHCP 服务器组地址 [H3C] dhcp-server 1 ip 192.168.6.7改完再 save。判断是否有这个问题的快速方法在交换机上执行 display current-configuration | include dhcp-server看地址是不是服务器实际 IP。6. 用 dhcpd.leases 验证下发结果中继链路的两条检查路径配置全部落地后我有个坚持了很久的习惯不看日志和租约文件不认为配置完成。文档原话是“经实际测试在 VLAN 25 和 VLAN 30 的工作站上将 IP 和 DNS 设为自动获取可以成功获得 IP、DNS 和 WINS”这句话背后其实就是两条检查路径。6.1 服务端核对cat 租约文件确认三个网段都有 lease 记录在服务器上直接查看租约数据库# 查看 DHCP 租约记录确认不同网段都有地址分配 cat /var/lib/dhcpd/dhcpd.leases正常输出会按时间顺序记录每个租约的 IP、MAC、起始时间和绑定状态。重点看有没有来自 192.168.25.0 和 192.168.30.0 网段的 lease。如果只有 192.168.6.0 网段的记录说明中继请求根本没从交换机过来问题在交换机侧如果两个 VLAN 网段都有记录说明中继链路已经通了。6.2 工作站侧核对ipconfig /all 与下发字段比对在任意一台 DHCP 客户端上执行 ipconfig /all核对四个字段IP 地址是否落在对应 range 内子网掩码是不是 255.255.255.0默认网关是不是对应 VLAN 接口地址DNS 服务器是不是 192.168.6.10 或备用的 10.20.6.10。四个字段全部对上这条链路才算真正验证完。这一步不需要额外工具Windows 自带的命令就够了Linux 工作站用 ip addr 加 cat /etc/resolv.conf 也能达到同样效果。后来有一次在别的项目里我给人配完中继就走了结果对方第二天说重启核心交换机后全断网——回去一看save 没做。从那以后每次配置完中继我都要强制走一遍完整流程工作站 ipconfig /renew服务器 cat dhcpd.leases交换机 display current-configuration | include dhcp-server三样确认过才收工。这个习惯帮我挡掉了至少三次低级故障希望也能帮到你。本文还有配套的精品资源点击获取
返回列表