采用macvlan绕过某些软件需要MAC授权的问题

采用macvlan绕过某些软件需要MAC授权的问题

一.背景介绍

  • 某些软件需要跟MAC绑定,新的设备需要单独授权,特别费事
  • 因此,采用macvlan方式,为容器指定已经授权的MAC,绕过授权

二.macvlan原理

Dockermacvlan 网络驱动程序允许容器直接连接到物理网络接口,使其能够像物理网络设备一样与网络上的其他设备通信。了解 macvlan 的原理对于掌握其使用方法及适用场景非常重要。以下是 macvlan 的关键原理:

1. 支持多层网络架构

macvlan 允许多个容器共享单个物理网络接口 (eth0 或其他),并通过不同的 MAC 地址进行通信。这使得多个容器可以在同一子网中各自拥有独立的 IP 地址。

2. 通过 MAC 地址进行区分

每个 macvlan 容器可以分配一个唯一的 MAC 地址,这样物理网卡可以识别并正确转发数据包。物理网络中的交换机使用 MAC 地址来转发帧到正确的目的地,这样容器之间的通信不会因为它们共享同一个物理网络接口而发生冲突。

3. 网络架构

  • 主机:运行 Docker 守护进程(daemon)的宿主机。
  • 物理网卡 :宿主机上连接到物理网络的以太网接口,例如 eno3
  • macvlan 网络 :在 Docker 中创建的虚拟网络,允许容器以 macvlan 的方式连接到物理网卡。

4. 直接与外部网络通信

由于容器具有自己的 MAC 地址和 IP 地址,它们可以直接与外部网络上的设备通信,不需要过多的中间处理或 NAT 操作。这适用于需要直接访问网络服务、设备或资源的场景。

5. 限制与注意事项

  • 容器与宿主机的通信macvlan 网络的一个限制是,容器与宿主机之间不能直接通信。如果需要容器能够与宿主机进行通信,可能需要使用其他网络模式(例如 bridge 网络)。
  • 路由和设置:在某些情况下,您可能需要设置具体的路由与防火墙规则,以确保容器通过宿主机的网络接口访问外部网络。
  • 混杂模式 :使用 macvlan 网络时,通常需要将物理网卡设置为混杂模式,以允许它接收网络中的所有数据包。

6. 实际应用场景

  • 虚拟化环境:多个容器需要直接连接到特定的物理网络。
  • 需要单独网络配置的服务:如负载均衡、专用服务实例等。
  • 去中心化的部署:如 microservices,需要独立的 IP 以便进行服务发现等。

通过了解 macvlan 的原理,您可以更高效地利用 Docker 的网络功能,满足不同的网络需求。

三.操作步骤

1.开启混杂模式[必须]

bash 复制代码
sudo ip link set eno3 promisc on
ip link show eno3

2.创建macvlan网络

bash 复制代码
docker network rm my_macvlan_network
docker network create -d macvlan \
    --subnet=192.168.10.0/24 \
    --gateway=192.168.10.254 \
    -o parent=eno3 \
    my_macvlan_network
  • eno3为可以联网的网卡
  • 192.168.10.254为eno3网卡的网关
  • 192.168.10.0为eno3所在的网段

3.创建容器

bash 复制代码
docker run -it --rm --network my_macvlan_network \
    --mac-address=00:e1:1e:8c:65:19 \
    --ip=192.168.10.116 \
	-v $PWD:/home -w /home \
    ghcr.io/intel/llvm/ubuntu2204_base /bin/bash
  • 00:e1:1e:8c:65:19 为获得授权的MAC地址

4.安装软件并验证

bash 复制代码
相关推荐
好像是个likun19 分钟前
使用docker拉取镜像很慢或者总是超时的问题
运维·docker·容器
玖疯子3 小时前
介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
docker
暴富的Tdy3 小时前
【快速上手Docker 简单配置方法】
docker·容器·eureka
Karoku0663 小时前
【k8s集群应用】kubeadm1.20高可用部署(3master)
运维·docker·云原生·容器·kubernetes
saynaihe5 小时前
安全地使用 Docker 和 Systemctl 部署 Kafka 的综合指南
运维·安全·docker·容器·kafka
G_whang6 小时前
centos7下docker 容器实现redis主从同步
redis·docker·容器
认真学习的小雅兰.6 小时前
如何在Ubuntu上利用Docker和Cpolar实现Excalidraw公网访问高效绘图——“cpolar内网穿透”
linux·ubuntu·docker
the丶only7 小时前
单点登录平台Casdoor搭建与使用,集成gitlab同步创建删除账号
linux·运维·服务器·docker·gitlab
书生-w7 小时前
Docker部署GitLab服务器
服务器·docker·gitlab
塔克拉玛攻城狮7 小时前
私有网盘+在线文档:内网离线搭建NextCloud+OnlyOffice详细指南
docker·在线文档·网盘