关于在isc-dhcp-server和dnsmasq中推送带自定义非零度量值的无类静态路由的技术咨询
在isc-dhcp-server和dnsmasq中推送带自定义非零度量值的无类静态路由
没问题,我来帮你解决这个度量值的问题——你说的情况确实很典型,默认0度量的路由很容易和物理直连路由抢优先级,导致连通性异常。下面分别说下isc-dhcp-server和dnsmasq怎么配置自定义度量的路由:
一、给isc-dhcp-server配置带自定义度量的路由
首先,isc-dhcp-server需要用RFC3442定义的无类静态路由选项(code 121),同时为了兼容Windows客户端,最好也配上微软的私有选项(code 249)。
- 先在你的
dhcpd.conf里确认是否已经定义了这两个选项,如果没有的话,先加上:option rfc3442-classless-static-routes code 121 = array of integer 8; option ms-classless-static-routes code 249 = array of integer 8; - 然后就可以推送带度量值的路由了,格式是:
度量值, 前缀长度, 目标网络字节, 网关字节。比如你要推送192.168.10.0/24走192.168.42.10,度量值设为10,就这么写:
解释下:第一个数是度量值,24是前缀长度,然后是目标网络的前3个字节(因为/24,所以不用写第四个0),最后是网关的完整4个字节。option rfc3442-classless-static-routes 10, 24, 192,168,10, 192,168,42,10; option ms-classless-static-routes 10, 24, 192,168,10, 192,168,42,10; - 改完配置后,重启服务生效:
systemctl restart isc-dhcp-server
二、给dnsmasq配置带自定义度量的路由
dnsmasq的配置更简单直接,用dhcp-option指令结合无类静态路由选项就行:
- 在
dnsmasq.conf里添加推送路由的配置,格式是:dhcp-option=option:classless-static-routes, 度量值, 前缀长度, 目标网络, 网关。比如你要推送192.168.42.0/24走192.168.10.10,度量值设为10,就写:
同样,加上ms-classless-static-routes是为了兼容Windows客户端。dhcp-option=option:classless-static-routes, 10, 24, 192.168.42.0, 192.168.10.10 dhcp-option=option:ms-classless-static-routes, 10, 24, 192.168.42.0, 192.168.10.10 - 如果要推多条路由,直接在后面用逗号接下一个路由的参数就行,比如:
dhcp-option=option:classless-static-routes, 10,24,192.168.42.0,192.168.10.10, 15,16,10.0.0.0,192.168.10.1 - 重启dnsmasq服务让配置生效:
systemctl restart dnsmasq
最后提个小建议:把度量值设得比物理直连路由的度量值高(比如10、20这类),这样物理直连的路由会被优先选用,只有当物理链路不可达时,才会触发这些VPN相关的路由,正好匹配你的网络场景需求。
备注:内容来源于stack exchange,提问作者Adam Ryczkowski
相关产品推荐
相关产品推荐

