docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker安装openwrt immortalwrt

docker安装openwrt immortalwrt全过程

作者:Unen030

本文主要介绍了如何通过OpenWrt和Docker结合使用,以提供路由器的功能并接管无法安装软件的Switch的流量,首先,通过阿里镜像加速下载并安装Docker,然后配置网络,包括开启网卡混杂模式和创建虚拟网络MACVLAN,接着,在OpenWrt中配置网络,最后拉取OpenWrt镜像并启动

openwrt因为提供的是路由器的功能,可以接管无法安装软件的switch的流量。

而且手机连接wifi把网关改为openwrt后,科学上网时远比启动手机的软件方便

一:安装docker

1.使用阿里镜像加速(从官网下载可能很慢)

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

命令详细解释:

​从"https://get.docker.com"下载一个脚本,通过bash命令执行该脚本,同时将docker作为参数传递给脚本,使用Aliyun作为镜像加速器​。

-fsSL:

使用-fsSL选项可以以静默模式运行curl命令,在发生错误时终止操作,并支持自动跟随重定向。

这是一种常见的配置,用于在下载和执行脚本、获取远程文件等操作中提供更可靠和干净的执行环境

2.不使用阿里云加速,直接从官网下载

curl -sSL https://get.daocloud.io/docker | sh

命令解释:

二:配置网络

1.开启网卡混杂模式

(在该模式下,网卡会接收到经过它所连接的网络上所有的数据包,而不仅仅是目标MAC地址是自己的数据包,因此方便进行网络流量捕获和分析。)

输入ifconfig查看有局域网IP的是哪个网卡(如果只启用了一个网卡),然后开启混杂模式

[root@192 ~]# ifconfig
enp3s0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1500
        inet 192.168.50.109  netmask 255.255.255.0  broadcast 192.168.50.255
        inet6 fe80::dc42:1f26:c32b:5bdf  prefixlen 64  scopeid 0x20<link>
        ether 00:e0:4c:68:19:69  txqueuelen 1000  (Ethernet)
        RX packets 10019437  bytes 7646766799 (7.1 GiB)
        RX errors 0  dropped 10119  overruns 0  frame 0
        TX packets 9294960  bytes 10802889814 (10.0 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  
# 从上面可以看见我的网卡是enp3s0
[root@192 ~]# ip link set enp3s0 promisc on

2.创建虚拟网络MACVLAN

(macvlan是一种Linux内核网络虚拟化技术,它可以用于创建和管理虚拟网络接口。

它可以为每个虚拟机或容器创建一个与主机物理网卡绑定的虚拟网卡,并且每个虚拟机或容器都有自己的IP地址。

这使得虚拟机或容器能够直接和物理网络中的其他设备通信,就像它们是直接连接在物理网络上一样)

docker network create -d macvlan --subnet=192.168.50.0/24 --gateway=192.168.50.1 -o parent=enp3s0 macnet

命令解释:

此命令使用Docker创建一个名为macnet的macvlan网络。

2.1创建好网络后,可以通过以下指令查看设置好的网络

[root@192 ~] docker network ls
NETWORK ID     NAME              DRIVER    SCOPE
6e1a0e16742d   bridge            bridge    local
136b63f0da30   host              host      local
3b647a96f9dc   macnet            macvlan   local  #就是这个
b0265f7d9516   none              null      local

3.给openwrt配置网络(上一步是对宿主机进行的网络配置)

注:如果没有安装vim,请输入 sudo yum install vim 进行安装

# 创建配置文件存放的目录
mkdir -p /home/docker/openwrt
# 创建网络配置文件并编辑
vim /home/docker/openwrt/network

进入编辑界面后,ctrl+shfit+v粘贴如下配置文件,然后按要求修改

其中只有config interface 'lan'中的ipaddr,gateway和dns需要修改。

gateway自然和前面一样是路由器,dns也填路由器,ipaddr则是你希望openwrt使用的ip,如我这样设置后就在浏览器输入192.168.50.254进入openwrt后台

config  interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option packet_steering '1'

config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'
        option proto 'static'
        option netmask '255.255.255.0'
        option ip6assign '60'
        option ipaddr '192.168.50.254'
        option gateway '192.168.50.1'
        option dns '192.168.50.1'

config interface 'vpn0'
        option ifname 'tun0'
        option proto 'none'

注:如果粘贴后发现格式不对,按以下步骤操作:

三:拉取openwrt镜像并启动

docker run --restart always --name openwrt -d --network macnet --privileged --ip 192.168.50.254  -v /home/docker/openwrt/network:/etc/config/network registry.cn-shanghai.aliyuncs.com/suling/openwrt:x86_64 /sbin/init

命令解释:

此命令会使用指定的OpenWrt镜像在后台运行一个容器,容器将连接到名为macnet的macvlan网络。

容器将具有特权权限(意味着容器内的进程将具有与宿主机上的进程相同的特权级别,可以执行一些普通容器不允许的操作),并使用IP地址192.168.50.254。

容器内的/etc/config/network目录将与宿主机的/home/docker/openwrt/network目录进行挂载(可以理解为这两个network文件其实都是宿主机上的network文件)。

容器启动时将执行OpenWrt的初始化进程

四:一些常用指令

如果前面的步骤正常执行,openwrt应该过一会就启动成功了,可以输入设置的ip地址进入openwrt后台管理界面

1.查看正在运行的docker容器,可以查看openwrt是不是在运行:

docker ps

2.进入openwrt容器内部:

docker exec -it openwrt bash

注:因为openwrt有自己的ip,也可以通过ssh连接。如果没在openwrt后台管理界面设置密码,只需要用户名为root,不需要输入密码就可ssh连上

3.停止openwrt

docker stop openwrt

4.删除已创建的docker容器(如果被玩坏了,可以删了再从镜像创一个)

docker rm openwrt

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文