• 【2022.04.21】在docker中搭建openwrt软路由系统,实现多网口以及主路由功能


    【2022.04.21】在docker中搭建openwrt软路由系统,实现多网口以及主路由功能

    前言

    没搞完,不知道为啥一直重启,下次再补上这篇博客

    因为大多docker搭建软路由时,实现的是旁路由单网口的拓扑

    这次想要尝试下多网口搭建openwrt,以便实现主路由功能

    本次使用的docker镜像:raymondwong/openwrt_r9 - Docker Image | Docker Hub

    网口设置

    先用ifconfig查看一下接口名称,我这里是enp2s0与enp3s0

    image-20220421114628588

    那么将对应的网卡启动混淆模式

    ip link set enp3s0 promisc on
    ip link set enp2s0 promisc on
    

    后期要关闭的话,把on改成off

    为了以防万一,比如外接网卡可能在服务器重启后失效,那么还要加入开机自启动

    nano /etc/init.d/iplinkset.sh
    

    将上面的两句命令,和脚本规范开头一起复制进来

    #!/bin/sh
    ip link set enp3s0 promisc on
    ip link set enp2s0 promisc on
    

    ctrl+x y entel 保存退出

    增加可执行权限

    chmod +x /etc/init.d/iplinkset.sh
    

    设置开机启动

    update-rc.d iplinkset.sh defaults
    

    如果想要删除这个启动项

    update-rc.d -f iplinkset.sh remove
    

    虚拟网卡

    • 我们现在要基于现有的网卡创建两个 macvlan 类型的网卡,这样后面创建的容器才能有网卡进行挂载使用,并且使用独立的网卡进行数据报文的通讯。macnet1 我们作为后面 openWRT容器 运行的 Wan口 使用, macnet2 则是 Lan口
    • OPENWRT 使用网络说明
      • wan: 192.168.1.0/24
      • lan:192.168.22.0/24

    macvlan模式

    docker 的 macvlan 模式,这个模式通俗一点讲就是在一张物理网卡上虚拟出两个虚拟网卡,具有不同的MAC地址,可以让宿主机和docker同时接入网络并且使用不同的ip,此时 docker 可以直接和同一网络下的其他设备直接通信,相当的方便,但是这种模式有一个问题,宿主机和容器是没办法直接进行网络通信的,如宿主机ping容器的ip,尽管他们属于同一网段,但是也是ping不通的,反过来也是。因为该模式在设计的时候,为了安全禁止了宿主机与容器的直接通信,不过解决的方法其实也很简单——宿主机虽然没办法直接和容器内的 macvlan 接口通信,但是只要在宿主机上再建立一个 macvlan,然后修改路由,使数据经由该 macvlan 传输到容器内的 macvlan 即可,macvlan 之间是可以互相通信的。

    创建网络

    因为我现在双网口只接了一条,这条是入网的wan口,且在enp3s0上

    image-20220421140418291

    因此在shell中输入以下命令

    docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=enp3s0 macnet1
    

    可以在可视化界面见到新建的网络

    image-20220421140632554

    建立lan口的网络,这里我还没接上线

    docker network create -d macvlan -o parent=enp2s0 macnet2
    

    同理也是进入可视化界面验证一下

    创建容器

    输入以下命令

    这句命令可以让现在未接入的LAN口分配地址192.168.1.254

    docker run --name openwrt --restart always -d --network macnet2 --privileged -v /lib/modules:/lib/modules raymondwong/openwrt_r9:autobuild-main-x86_64 /sbin/init
    

    输完这条命令后,可以进入192.168.1.254,默认密码password

    参考链接

    Docker 部署多网口 openWrt 软路由 - 「Yang'zun」PlayGround (treesir.pub)

    Docker 部署的 openWrt 软路由, 并解决无法与宿主机通信问题 - 「Yang'zun」PlayGround (treesir.pub)

    Docker跨主机通信之macvlan · Docker实战 (baoshu.red)

  • 相关阅读:
    python GUI
    Python 博客网站资源
    Python 100 天学习计划
    pycharm基本设置
    MySQL 57安装部署(Zip版)(Windows版)
    nginx在centos下的安装
    仓位计算
    python笔记
    vue(一)--监听事件
    Hibernate(五)--级联
  • 原文地址:https://www.cnblogs.com/mokou/p/16173553.html
Copyright © 2020-2023  润新知