基于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 

原文链接:https://blog.csdn.net/leiy000/article/details/124477999?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171836987416800182718150%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171836987416800182718150&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-9-124477999-null-null.nonecase&utm_term=%E7%BB%BF%E8%81%94NAS

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享