前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云原生家庭网络(四):部署 dnsmasq 启用 DHCP 与 DNS 缓存

云原生家庭网络(四):部署 dnsmasq 启用 DHCP 与 DNS 缓存

原创
作者头像
imroc
发布2024-05-16 09:32:25
1030
发布2024-05-16 09:32:25
举报

dnsmasq 介绍

DHCPDNS 服务需在主路由上开启,如果用的主路由方案,可用云原生的方式部署一个 DHCP 和 DNS 服务,dnsmasq 是一个同时支持这两种功能的开源软件,我们可以用下面的方法进行部署。

docker-dnsmasq 开源项目

本文部署的 dnsmasq 服务使用这个开源项目所自动编译出的容器镜像:https://github.com/4km3/docker-dnsmasq

目录结构

代码语言:txt
复制
dnsmasq
├── config
│   └── dnsmasq.conf
├── daemonset.yaml
└── kustomization.yaml

配置 dnsmasq.conf

代码语言:txt
复制
log-queries=extra
no-resolv
no-poll
server=61.139.2.69
strict-order
log-dhcp
cache-size=2000
dhcp-range=10.10.10.11,10.10.10.254,255.255.255.0,12h
dhcp-authoritative
dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases
dhcp-option=option:router,10.10.10.2
dhcp-option=option:dns-server,61.139.2.69,218.6.200.139

要点解析:

  • server 指向上游的 DNS 地址,主路由在 PPPoE 拨号后会自动获取上游 dns 地址并写到 /etc/resolv.conf,可以复制过来。
  • dhcp-range 指定内网设备自动获取的 IP 地址范围以及子网掩码。
  • dhcp-option=option:router 指定内网设备的默认网关,即当前主路由的内网静态 IP 地址。
  • dhcp-option=option:dns-server 指定内网设备自动获取的 DNS 地址,通常写 dnsmasq 自身的地址,即主路由的内网静态 IP 地址,不过由于我用了透明代理,希望内网设备直接用 PPPoE 拨号获得的运营商的 DNS 地址(好处是如果透明代理故障,停掉流量拦截规则后,内网设备也能正常从运营商 DNS 解析域名)。

配置 daemonset.yaml

代码语言:yaml
复制
apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: dnsmasq
  name: dnsmasq
  namespace: default
spec:
  selector:
    matchLabels:
      app: dnsmasq
  template:
    metadata:
      labels:
        app: dnsmasq
    spec:
      terminationGracePeriodSeconds: 3
      containers:
        - image: 4km3/dnsmasq:2.85-r2
          imagePullPolicy: IfNotPresent
          name: dnsmasq
          securityContext:
            privileged: true
          args:
            - '--log-facility=-'
          volumeMounts:
            - mountPath: /etc/dnsmasq.conf
              name: dnsmasq-config
              subPath: dnsmasq.conf
            - mountPath: /var/lib/dnsmasq
              name: lease
      hostNetwork: true
      restartPolicy: Always
      volumes:
        - configMap:
            name: dnsmasq-config
          name: dnsmasq-config
        - name: lease
          hostPath:
            path: /data/lease
            type: DirectoryOrCreate
  updateStrategy:
    rollingUpdate:
      maxSurge: 0
      maxUnavailable: 1
    type: RollingUpdate

要点解析:

  • 注意修改账号密码,本例使用 roc 作为账号名,111111 作为密码。
  • 将要共享的目录通过 hostPath 挂载进去,本例挂载和共享 /data 目录。

配置 kustomization.yaml

代码语言:yaml title="kustomization.yaml"
复制
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - daemonset.yaml

configMapGenerator:
  - name: dnsmasq-config
    files:
      - config/dnsmasq.conf

namespace: default

参考资料

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • dnsmasq 介绍
  • docker-dnsmasq 开源项目
  • 目录结构
  • 配置 dnsmasq.conf
  • 配置 daemonset.yaml
  • 配置 kustomization.yaml
  • 参考资料
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档