基于docker实现openwrt软路由与OMV(NAS)应用

记录一下搭建过程

一、安装debian11

1、下载debian11安装光盘iso

建议下载DVD版本,netinst版本安装时比较慢

https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-11.3.0-amd64-DVD-1.iso

2、将ISO镜像写下到U盘或移动硬盘

使用Win32_Disk_Imager工具

加载下载的debian-11.3.0-amd64-DVD-1.iso

并制作启动盘

3、安装debian11

U盘启动后进入安装画面

  • 选择install
  • 语言选择english
  • 区域选择other,选择Asia,选择China
  • 语言集选择 United States - en_US.UTF-8
  • 键盘选择American English

​ ====等待文件复制过程完毕

  • 输入主机名,比如mynas

  • 输入域名(可不输入,保持为空)

  • 输入root账户密码

  • 再次输入root账户密码

  • 建立初始用户:输入初始建立的用户名称

  • 建立初始用户:输入初始建立的用户账号

  • 建立初始用户:输入密码

  • 建立初始用户:再次输入密码

  • 磁盘分区:小白用户直接选择 Guided - use entire disk

  • 磁盘分区:选择需要分区的磁盘,如果只有一个磁盘直接回车,多个磁盘注意选择

  • 磁盘分区:选择分区方案,小白用户直接选择使用一个分区,All files in one partition

  • 磁盘分区:确认分区信息,无误则选择Finish partitioning and write changes to disk

  • 分区信息是否写入磁盘:确认选择 yes

    ====等待基础系统安装

  • 配置包管理:扫描其他媒体,选择 no

  • 配置包管理:使用网络源,选择 yes

  • 配置包管理:选择china

  • 配置包管理:选择源站点,个人习惯选择中国科大 mirrors.ustc.edu.cn

  • 配置包管理:输入HTTP代理服务器信息,保持默认为空即可

    ====等待配置apt

  • 配置configuring popularity-contest:选择no

  • 选择安装的软件:只选择SSH server及standard system utilities(星号表示已选择)

    ====等待安装软件

  • 安装引导程序:选择yes

  • 安装引导程序: 选择 /dev/sda

    ====等待安装完成

  • 安装完成,选择Continue

  • 拨出U盘,等待系统重记完成

4、启用ssh

使用root账户登录debian

输入以下命令启用ssh

nano /etc/ssh/sshd_config

输入

PermitRootLogin yes

按Ctrl+x存盘退出

重启SSH服务

service ssh restart

去掉安装时的光盘源

nano /etc/apt/sources.list

注释掉deb cdrom行

apt-get update
apt-get install iptables
iptables -L -n

查看端口开放情况

二、安装omv6

执行

cat <<EOF >> /etc/apt/sources.list.d/openmediavault.list
deb http://packages.openmediavault.org/public shaitan main
# deb http://downloads.sourceforge.net/project/openmediavault/packages shaitan main
## Uncomment the following line to add software from the proposed repository.
# deb http://packages.openmediavault.org/public shaitan-proposed main
# deb http://downloads.sourceforge.net/project/openmediavault/packages shaitan-proposed main
## This software is not part of OpenMediaVault, but is offered by third-party
## developers as a service to OpenMediaVault users.
# deb http://packages.openmediavault.org/public shaitan partner
# deb http://downloads.sourceforge.net/project/openmediavault/packages shaitan partner
EOF
export LANG=C.UTF-8
export DEBIAN_FRONTEND=noninteractive
export APT_LISTCHANGES_FRONTEND=none
apt-get install --yes gnupg
wget -O "/etc/apt/trusted.gpg.d/openmediavault-archive-keyring.asc" https://packages.openmediavault.org/public/archive.key
apt-key add "/etc/apt/trusted.gpg.d/openmediavault-archive-keyring.asc"
apt-get update
apt-get --yes --auto-remove --show-upgraded \
    --allow-downgrades --allow-change-held-packages \
    --no-install-recommends \
    --option DPkg::Options::="--force-confdef" \
    --option DPkg::Options::="--force-confold" \
    install openmediavault-keyring openmediavault

# Populate the database.
omv-confdbadm populate

# Display the login information.
cat /etc/issue

三、安装docker

执行

sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

sudo add-apt-repository \
   "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian \
   $(lsb_release -cs) \
   stable"

   
sudo apt-get update
sudo apt-get install docker-ce   

四、安装openwrt-旁路模式

1、开启网卡混杂模式

2、建立容器

3、改配置参数

sudo ip link set ens33 promisc on 

ip route show

docker network create -d macvlan --subnet=192.168.83.0/24 --gateway=192.168.83.2 -o parent=ens33 macnet

docker network ls

docker run -d --restart always --name openwrt --privileged --network macnet --ip=192.168.83.10 sulinggg/openwrt:x86_64 /sbin/init


docker exec -it openwrt bash

nano /etc/config/network

#修改配置
        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.83.10'
        option gateway '192.168.83.2'
        option dns '192.168.83.2 114.114.114.114 8.8.4.4'


#只做旁路由
#删除wan配置
#删除vpn0配置
        
        
#存盘退出
/etc/init.d/network restart
#重置openwrt密码
passwd

浏览器进入openwrt

http://192.168.83.10

进入 【网络】->【接口】->LAN(br-lan)->修改

【物理设置】

去掉【桥接接口】的勾选

DHCP基本设置

勾选【忽略此接口】

点击【保存&应用】

五、安装openwrt-主路由模式

参考https://www.zhihu.com/question/50679880

1、宿主机设置网卡混杂模式

ip link set eno1 promisc on
ip link set enp4s0 promisc on

修改网卡配置
nano /etc/network/interfaces

allow-hotplug enp4s0
#iface enp4s0 inet dhcp
iface enp4s0 inet static
  address 172.16.10.250
  netmask 255.255.255.0
  gateway 172.16.10.1
  dns-nameservers 172.16.10.1

allow-hotplug eno1
iface eno1 inet dhcp

2、宿主机加载pppoe模块

echo pppoe >> /etc/modules
modprobe pppoe

3、配置docker

# 为 docker 创建 macvlan 虚拟接口,并链接到 host 网卡
# LAN 口  enp4s0
docker network create -d macvlan \
    --subnet=172.16.10.0/24 --gateway=172.16.10.1 \
    --ipv6 --subnet=fe80::/16 --gateway=fe80::1 \
    -o parent=enp4s0 \
    -o macvlan_mode=bridge \
    macvLan
# WAN 口   eno1
docker network create -d macvlan \
    --subnet=192.168.254.0/24 --gateway=192.168.254.1 \
    --ipv6 --subnet=fe81::/16 --gateway=fe81::1 \
    -o parent=eno1 \
    -o macvlan_mode=bridge \
    macvWan
    
#创建容器
docker run -d \
    --restart always  \
    --network macvLan \
    --privileged \
    --name openwrt \
    sulinggg/openwrt:x86_64 \
    /sbin/init

#将第二网卡的 macvlan 挂接到 openwrt
docker network connect macvWan openwrt

4、配置openwrt

#进入容器
docker exec -it openwrt /bin/sh

#编辑 
nano /etc/config/network
config interface 'lan'
        option type 'bridge'
        option ifname 'eth0'   # 需要与 docker netwrok 中的虚拟接口匹配(macvLan)
        option proto 'static'
        option ipaddr '172.16.10.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

config interface 'wan'
        option ifname 'eth1'  # 需要与 docker netwrok 中的虚拟接口匹配(macvWan)
        option proto 'dhcp'
        option ip6assign '60'

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

#改密码
passwd

5.宿主机出口

由于 docker 网络采用 macvlanbridge 模式,即使宿主机与容器在同一网段,相互之间也是无法通信的。 为了解决这个问题,需利用多个 macvlan 接口之间是互通的原理,在 LAN 口新建一个 macvlan 虚拟接口:

# 使用 ip 命令
ip link add link enp4s0 mac40 type macvlan mode bridge # 在 enp4s0 接口下添加一个 macvlan 虚拟接口
ip addr add 172.16.10.253/24 brd + dev mac40 # 为 mac40 分配 ip 地址
ip link set mac40 up
ip route del default #删除默认路由
ip route add default via 172.16.10.250 dev mac40 # 设置静态路由
echo "nameserver 172.16.10.1" > /etc/resolv.conf # 设置静态 dns 服务器

# 或者使用 nmcli
nmcli connection add type macvlan dev enp4s0 mode bridge ifname mac40 autoconnect yes save yes

或者,若是在 debian 中可以编辑 /etc/network/interface 并加入:

auto mac40
iface mac40 inet manual
  pre-up ip link add link enp4s0 mac40 type macvlan mode bridge
  pre-up ip addr add 172.16.10.249/24 brd + dev mac40
  up ip link set mac40 up
  post-up ip route del default
  post-up ip route del 172.16.10.0/24 dev enp4s0
  post-up ip route add default via 172.16.10.1 dev mac40
  post-down ip link del dev mac40

六、安装防火墙

执行

apt-get install ufw
ufw default deny incoming
ufw allow 22/tcp
ufw allow 80/tcp
ufw enable
  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 您好!感谢您的提问。如果您想使用 DockerOpenWrt 搭建一个旁路由,可以按照以下步骤进行: 1. 安装 Docker,这里假设您已经安装好了 Docker。 2. 搜索并下载 OpenWrt 镜像,可以使用以下命令: ``` docker pull openwrtorg/rootfs:latest ``` 3. 创建并启动一个 OpenWrt 容器,可以使用以下命令: ``` docker run -itd --name openwrt --privileged openwrtorg/rootfs /sbin/init ``` 4. 进入 OpenWrt 容器,可以使用以下命令: ``` docker exec -it openwrt /bin/bash ``` 5. 配置 OpenWrt 为旁路由,具体步骤可以参考 OpenWrt 官方文档。 6. 配置 Docker 容器的网络为桥接模式,这样可以将 Docker 容器与 OpenWrt 容器连接到同一个网段。可以使用以下命令: ``` docker network create --driver=bridge --subnet=192.168.2.0/24 mybridge docker network connect mybridge openwrt ``` 7. 在 Docker 容器中配置网络,使其可以通过 OpenWrt 容器进行网络访问。具体步骤可以参考 Docker 官方文档。 以上就是使用 DockerOpenWrt 搭建旁路由的基本步骤,希望对您有所帮助。如果您还有其他问题,请随时提出。 ### 回答2: Docker是一种开源的容器化平台,用于帮助开发人员将应用程序及其依赖项打包到可移植的容器中,以便在任何环境中运行。而OpenWrt是一个基于Linux的嵌入式操作系统,主要用于路由器和网络设备。 将DockerOpenWrt结合使用可以实现OpenWrt作为旁路由的功能。旁路由是指在主路由器之后的一个额外路由器,用于增强网络性能、安全性或特定任务的目的。 使用Docker容器化OpenWrt可以有效地将其部署为旁路由,具有以下好处: 1. 灵活性:Docker容器可以在不同的操作系统和硬件平台上运行,因此可以轻松在各种环境中部署OpenWrt。 2. 隔离性:Docker容器提供了隔离的运行环境,使得在同一主机上运行多个OpenWrt实例成为可能,从而实现多路由器功能。 3. 扩展性:通过使用Docker的镜像和容器技术,可以轻松扩展和管理多个OpenWrt实例,而无需对主机进行频繁的配置更改。 4. 安全性:Docker容器提供了一层额外的安全性,可以隔离主机系统和网络,使得在使用OpenWrt进行网络防护时更加可靠。 要在Docker中部署OpenWrt作为旁路由,需要相应的Docker镜像和配置文件。可以通过在Docker Hub上搜索相关的OpenWrt镜像,并根据需要进行设置和配置。然后通过Docker命令将OpenWrt容器化,并将其与主路由器连接起来。 总之,将DockerOpenWrt结合使用可以实现旁路由功能,并提供灵活性、隔离性、扩展性和安全性等优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值