在粒子云上使用docker安装openwrt做旁路由
本文最后更新于 400 天前,其中的信息可能已经有所发展或是发生改变。

准备工作

刷机

刷机工具包下载地址:https://pan.baidu.com/s/1EI6nlbFnPdl8hNvjoTsxHA 提取码: iagi

安装驱动

双击DriverInstall开始安装驱动,过程中所有提示全部点击确定

刷机

插上双公头USB线,打开刷机软件,选择镜像,开始刷机

这个固件是openwrt的

详细刷机教程查看粒子云线刷教程.pdf。

刷机完成后拔掉电源、USB线。然后插上电源、网线连接路由器LAN口,浏览器访问路由器管理后台查看粒子云的IP地址

可以看到主机名为Chainedbox的设备已经成功连上路由器,分配的IP地址为192.168.1.119。

优化设置

使用SSH软件登录粒子云,默认帐号root,密码1234。输入密码1234,然后输入新密码,密码不可见。最后提示新建用户,我直接使用的root账户。

ssh会断开链接,重新使用刚才设置的密码登录。

PS:可选安装导航,但是我感觉我用不上,还是自己折腾好了。安装导航命令

armbian-config

修改源配置文件

sudo nano /etc/apt/sources.list

将原来的源注释,也就是在最前面添加#号,然后再下面添加中科大的源

deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable main contrib non-free
deb http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free

# deb http://mirrors.ustc.edu.cn/debian stable-proposed-updates main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable-proposed-updates main contrib non-free

按住Ctrl+x退出编辑,输入y回车保存文件。删除arm源

rm /etc/apt/sources.list.d/armbian.list

然后更新系统

apt update && apt upgrade -y

不知道怎么选的一路回车。更新完成重启系统

reboot

安装宝塔面板

Debian安装命令

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh

输入Y回车,等待大概十几分钟安装完成,照例删除安全入口

rm -f /www/server/panel/data/admin_path.pl

推荐安装5.9版

wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && bash install.sh

使用生成的帐号密码访问http://ip:8888管理面板。

安装docker

使用国内源安装

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

配置镜像加速

停止docker服务

service docker stop

修改配置文件

nano /etc/docker/daemon.json

添加以下命令

{
"registry-mirrors": ["https://nekh84mp.mirror.aliyuncs.com"]
}

如果系统空间不够的话,还可以移动docker到挂载的硬盘,如移动到data的docker目录

mv /var/lib/docker /data/docker

建立软连接

ln -s /data/docker /var/lib/docker

重启docker服务

systemctl restart docker

安装Portainer

docker run -d -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes/portainer:/data portainer/portainer:linux-arm64

浏览器输入ip:9000访问。创建帐号密码,选择local本地模式。

宿主机网络设置

开启网卡混杂模式

查看网口名

ifconfig

我这里是 eth0。输入命令开启混杂模式

ip link set eth0 promisc on

docker网络设置

为 docker 创建 macvlan 模式的虚拟网卡,并关联到宿主机。

docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 macnet

此处的ip地址根据实际情况修改。比如我的主路由后台地址是192.168.1.1,网段192.168.1.0/24。

登录docker管理后台portainer,进入networks页面,可以看到新增了一条名为macnet的网络模式。

开机启动

部分设备重启后混杂模式可能丢失,可以使用将上面的两条命令添加到开机启动文件中来自动启动。

编辑文件

nano /etc/rc.local

然后在文件最后一行添加要执行的命令,注意,你的命令应该添加在:exit 0 之前。例如

ip link set eth0 promisc on
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 macnet
exit 0

docker配置

导入容器

首先上传准备好的固件到root目录,可以修改缩短文件名方便后面输入命令,需要保留后缀名为 .tar.gz.。

创建容器镜像

docker import openwrt.tar.gz openwrt:r20.09.12

docker import+文件名称+镜像名称:标签,标签可以自定义修改,或者不写。

启动容器

docker run --name='openwrt' --restart always -d --network macnet --privileged openwrt:r20.09.12 /sbin/init

打开portainer面板,可以看到名称为openwrt 的容器已经启动了。

openwrt配置

点击容器名称后面的Console,点击connect进入容器内部命令行管理界面。连接失败的切换Command模式。

修改openwrt网络信息

vi /etc/config/network

键盘切换为英文输入法,按一下键盘上的“i”键,进去编辑模式。使用键盘方向键移动,找到”lan”配置项,修改ipaddr的值,这就是openwrt的后台地址了。

再按一下键盘左上角“esc”键退出编辑模式,输入

:wq

保存退出。返回容器列表,点击restart重启openwrt。

设置为旁路由

浏览器输入上面设置的openwrt后台地址,输入默认密码password进入后台。

点击系统→管理权,修改登录密码。

选择网络→接口→LAN,ipv4网关设置为主路由地址192.168.1.1,dns任意。下拉基本设置,勾选忽略此接口,保存并应用。

进网络诊断ping以下百度,正常的话是可以ping通的

连接旁路由

以下设置都是默认处于同一网段,即192.168.1.0/24

自动方式

方法一

在主路由的LAN口设置里,修改IPv4网关为旁路由地址

方法二

openwrt系统,DHCP服务器,选择高级设置,DHCP选项填写3,192.168.1.100,给区域网内客户端通告网关地址

手动方式

就是在当前连接的wifi属性中手动指定网关,例如win10

与宿主机通信

还有个问题,这样是不能与宿主机通信的,比如我在docker里部署了ADGuard Home 服务,openwrt使用不了。

新建macvlan接口

以下操作都在宿主机上运行,新增一个叫mynet(不要和容器的macvlan重名)的macvlan接口

ip link add mynet link eth0 type macvlan mode bridge

为该接口分配ip,并启用

ip addr add 192.168.1.10 dev mynet
ip link set mynet up

我这里分配的是192.168.1.10,与主路由和openwrt在同一网段

修改路由,使宿主机到192.168.0.100的通信全部经由mynet进行

ip route add 192.168.1.100 dev mynet

此时再次ping宿主机就可以了

设置开机启动

粒子云

使用宝塔面板在/etc/init.d文件夹内新建一个名字为openwrt的文件,将上面的四条命令按照以下格式填写

#!/bin/sh

### BEGIN INIT INFO
# Provides: MyTest
# Required-Start: $network $remote_fs $local_fs
# Required-Stop: $network $remote_fs $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: openwrt
# Description: openwrt docker mcvlan
### END INIT INFO

ip link add mynet link eth0 type macvlan mode bridge
ip addr add 192.168.1.10 dev mynet
ip link set mynet up
ip route add 192.168.1.100 dev mynet

exit 0

给权限774

添加开机自启

update-rc.d openwrt defaults

蜗牛

蜗牛是Debian9系统

添加rc-local.service

#以下为一整条命令,一起复制运行

cat > /etc/systemd/system/rc-local.service <<EOF
[Unit]
Description=/etc/rc.local
ConditionPathExists=/etc/rc.local
 
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
 
[Install]
WantedBy=multi-user.target
EOF

新建rc-local文件

#以下为一整条命令,一起复制运行

cat > /etc/rc.local <<EOF
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
 
# bash /root/bindip.sh
 
exit 0
EOF

添加权限并设置开机自启

chmod +x /etc/rc.local
systemctl enable rc-local
systemctl start rc-local.service

检查状态:

systemctl&nbsp;status&nbsp;rc-local.service

返回Active:active信息,则成功。

最后我们就可以在/etc/rc.loacl里,添加开机的自启命令什么的了。记住添加在exit 0之前。

输入

reboot

重启系统验证成功!

注意:更改自启脚本后,需要重新运行一下命令已使其生效。

systemctl enable rc-local

systemctl start rc-local.service
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇