• 记录如何在 docker 中部署运行 openwrt 系统


    因以下操作有风险会导致相关设备不能上网,请确保在操作前确定自己拥有足够多的 linux、docker 及网络相关知识经验,能够理解以下命令的含义,请不要盲目跟从操作

    以下内容参考自:https://mlapp.cn/376.html

    实际操作环境基于群晖 DSM 7.1-42661 Update 1 版本系统,使用其内置的 docker 套件(版本 20.10.3-1306)部署运行

    1、Docker 的安装在群晖中可以直接使用套件安装,这里不再赘述

    2、需要在群晖系统配置的终端机中开启 SSH 功能

    3、使用 SSH 登录群晖系统,然后依次执行以下命令来准备网络环境:

    # 打开网卡的混杂模式(eth0 为当前在使用的网卡名称)
    ip link set eth0 promisc on
    
    # 在 docker 中增加一个 macvlan 模式的网卡(子网和网关请根据 eth0 所在网络信息设置)
    docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 macnet

    4、拉取并运行 openwrt 容器

    # 拉取 openwrt 镜像(请根据实际设备自行选择镜像标签)
    docker pull sulinggg/openwrt:x86_64
    
    # 运行 openwrt 容器(请根据 eth0 所在网络设置 ip,不要与现有网络设备冲突)
    docker run -d \
    --restart always \
    --network macnet \
    --ip 192.168.1.2 \
    --privileged \
    --name openwrt \
    sulinggg/openwrt:x86_64 /sbin/init

    5、进入 openwrt 容器修改默认配置

    # 进入容器
    docker exec -it openwrt bash
    
    # 编辑网络配置
    vim /etc/config/network

    将 config interface 'lan' 下的 option 根据 eth0 所在网络信息进行修改

    option netmask '255.255.255.0' # 子网掩码
    option ipaddr '192.168.1.2'   # 为 openwrt 设置 ip 地址
    option gateway '192.168.1.1' # 网关
    option dns '192.168.1.1'     # DNS

    保存退出,重启容器内网络

    # 重启网络
    /etc/init.d/network restart

    6、此时 openwrt 已经部署运行完成,可以通过上述配置中的 ip 地址(示例为 192.168.1.2)访问到 openwrt 的 web 界面了

    默认账号:root
    默认密码:password

    7、登录 web 界面后,请进入 “网络” -> “接口” -> “LAN” -> “修改”,检查最下方 “基本设置” 中的 “忽略此接口” 要是勾选状态,如果不是,请修改保存

    8、如何使用 openwrt 作为旁路由?

    到这一步应该就知道该怎么做了,这里也简单记录一下几种方案,根据所需情况进行选择:

    方法①:可以修改主路由的 dhcp 配置,将其下发的网关与DNS改为 openwrt 的 ip 地址

    方法②:关闭主路由的 dhcp,打开 openwrt 的 dhcp,由 openwrt 来分配网络中的 ip 地址和下发相关信息

    方法③:直接修改设备上的网络信息,不从 dhcp 获取,直接手动填写

    9、使用 openwrt 做旁路由后,在 openwrt 中检测网络通畅,但设备不能正常上网?

    应该是 openwrt 防火墙的配置问题,因为 docker 的网络环境可能跟正常的硬件网络环境还有些许区别,目前在网上找到以下几个解决方案:

    首先进入“网络”->“防火墙”

    方法①:在“基本设置”中,“转发” 的选项从 “拒绝” 改为 “接受” 试试
    来自:https://github.com/SuLingGG/blog-comments/issues/2#issuecomment-903896998

    方法②:“自定义规则”中,注释规则 “iptables -t nat -I POSTROUTING -j MASQUERADE” 试试
    来自:https://github.com/SuLingGG/OpenWrt-Docker/issues/13

    方法③:“自定义规则”中,添加规则 “iptables -I FORWARD -j ACCEPT”、“iptables -I INPUT -j ACCEPT” 试试
    来自:https://www.bilibili.com/video/BV1d3411J7bp

  • 相关阅读:
    rmq +二分暴力 hdu 5726
    8.25 ccpc 比赛总结
    莫比乌斯反演题目总结
    HDU 4848 Wow! Such Conquering! (搜索+floyd)
    Codeforces 982 C Cut 'em all!(DFS)
    Codefoces 986C AND Graph(DFS)
    CodeForces 986A Fair(BFS)
    ACM经验贴
    Kattis A+B Problem(FFT)
    CF E. Porcelain (双向dp)
  • 原文地址:https://www.cnblogs.com/xwgli/p/16249437.html
Copyright © 2020-2023  润新知