前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云原生家庭网络(五):部署 radvd 让内网设备支持 IPv6

云原生家庭网络(五):部署 radvd 让内网设备支持 IPv6

原创
作者头像
imroc
发布2024-05-17 10:06:18
1260
发布2024-05-17 10:06:18
举报

为什么需要 radvd ?

如果你使用主路由方案,宽带也支持 IPv6,且希望家里的设备也都可以使用 IPv6,那就需要在主路由上部署 radvd 作为路由通告服务,类似 IPv4 的 DHCP 服务,为内网设备分配 IPv6 地址。

编译 radvd 镜像

Dockerfile 示例:

代码语言:dockerfile
复制
FROM ubuntu:22.04
RUN apt update -y
RUN apt install -y radvd
ENTRYPOINT ["/usr/sbin/radvd", "--config", "/etc/radvd.d/radvd.conf", "--logmethod", "stderr_clean", "--nodaemon"]

目录结构

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

配置 radvd.conf

代码语言:conf
复制
interface enp2s0 {
  # 网卡启用路由通告(RA)
  AdvSendAdvert on;
  # 启用 Home Agent(iOS、macOS等移动设备加入网络时发送Home Agent请求获取ipv6信息)
  AdvHomeAgentFlag on;
  AdvHomeAgentInfo on;
  MinRtrAdvInterval 10;
  MaxRtrAdvInterval 60;
  prefix fddd:dddd:dddd:dddd::2/64 {
    AdvOnLink on;
    AdvAutonomous on;
    AdvRouterAddr on;
  };
  route fddd:dddd:dddd:dddd::2/64 {
    AdvRoutePreference high;
    AdvRouteLifetime 3600;
    RemoveRoute off;
  };
};
  • 我的 enp2s0 网口连的交换机,与其它内网设备在同一个二层网络,在此网口配置路由通告。
  • routeprefix 都写这个网口的静态 IPv6 地址。

配置 daemonset.yaml

代码语言:yaml
复制
apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: radvd
  name: radvd
  namespace: default
spec:
  selector:
    matchLabels:
      app: radvd
  template:
    metadata:
      labels:
        app: radvd
    spec:
      initContainers:
        - image: imroc/radvd:2.18
          imagePullPolicy: IfNotPresent
          name: sysctl
          securityContext:
            privileged: true
          command:
            - sh
            - -c
            - |
              sysctl -w net.ipv6.conf.all.accept_ra_rt_info_max_plen=128
              sysctl -w net.ipv6.conf.default.accept_ra_rt_info_max_plen=128
              sysctl -w net.ipv6.conf.all.forwarding=1
              sysctl -w net.ipv6.conf.default.forwarding=1
      containers:
        - image: imroc/radvd:2.18
          imagePullPolicy: IfNotPresent
          name: radvd
          securityContext:
            privileged: true
          args: ["--debug", "5"]
          volumeMounts:
            - mountPath: /etc/radvd.d
              name: radvd-config
      hostNetwork: true
      restartPolicy: Always
      volumes:
        - configMap:
            name: radvd-config
          name: radvd-config
  updateStrategy:
    rollingUpdate:
      maxSurge: 0
      maxUnavailable: 1
    type: RollingUpdate

使用 initContainer 自动修改内核参数以启用 IPv6 转发和接收路由通告(拨号的网卡通过路由通告接收来自运营商分配的 IPv6 地址)。

配置 kustomization.yaml

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

resources:
  - daemonset.yaml

namespace: default

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

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

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

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

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

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