前言
N1的性能比较强,这里可以在N1上运行一个openwrt来方便的进行科学上网。
开始
准备
首先要在N1中运行armbian并且安装docker:
curl -fsSL https://get.docker.com | bash
关于N1的刷机可以参考:斐讯N1刷机并配置SMB
完成了docker的安装我们就可以进行下一步了。
运行openwrt
先将openwrt的docker镜像导入到本地
docker pull unifreq/openwrt-aarch64:r9.10.24
打开网卡的混杂模式(IPV6可不开混杂模式)
ip link set eth0 promisc on
接着给docker创建网络,这里的192.168.2.1是主路由的IP,根据实际情况修改
docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=eth0 macnet
如果需要IPv6则需要做如下配置
1.允许docker使用ipv6,编辑vi /etc/docker/daemon.json
,并添加如下内容
{ "experimental": true, "ip6tables": true }
2.创建网络时,添加IPv6配置
docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 --subnet=IPv6网段 --gateway=IPv6网关 -o parent=eth0 macnet
运行openwrt
docker run --name op2 --restart always -d --network macnet --cap-add ALL unifreq/openwrt-aarch64:r9.10.24 /sbin/init
使用--cap-add ALL
权限运行会导致部分功能不可用,此时可将--cap-add ALL
换成--privileged
但是可能会导致停止容器时宿主机重启,这是因为使用了--privileged
创建容器, 在内部关机或重启时拥有把HOST OS也关机的权限,具体讨论可见https://github.com/SuLingGG/OpenWrt-Docker/issues/8。
如果需要使用IPV6,则使用下列命令运行
docker run --name op2 --restart always --sysctl="net.ipv6.conf.all.disable_ipv6=0" --sysctl="net.ipv6.conf.default.disable_ipv6=0" --sysctl="net.ipv6.conf.default.accept_ra=2" --sysctl="net.ipv6.conf.all.accept_ra=2" -d --network macnet --cap-add ALL unifreq/openwrt-aarch64:r9.10.24 /sbin/init
修改docker内网络设置
docker exec -it op2 /bin/bash
此处可能会出现错误,那么改用
docker exec -it op2 /bin/sh
要注意,执行完上面的命令后,我们这里就已经进入了docker的容器内,此时修改的是openwrt的设置了
修改网络设置vi /etc/config/network
输入i
开始编辑,编辑完成之后按ESC
退出编辑,然后输入:wq
(不要忘记冒号)回车保存。这里要确保设置的IP和主路由的IP在同一个网段内。
现在退回到bash-4.4#这个界面了,这里输入exit
退出容器回到n1的armbian终端。
重启openwrt容器使得设置生效
docker restart op2
重启完成之后,就可以访问docker内的openwrt了,IP为你在容器内设置的IP,例如192.168.2.2
,用户名为:root
,密码为:password
。
进入管理后台之后打开网络→接口
修改LAN接口的参数,将网关地址设置为主路由的IP。
如果你需要使用N1自动管理DHCP,则在主路由的网络-接口中关闭DHCP
重启电脑后,在电脑中运行
ipconfig
查看默认网关是否已经修改成了N1的openwrt的IP,如果是,那么就成功了。
但是这样设置下的N1如果出现了故障,那么整个局域网可能都会出现网络故障。另外一种方案则是使用主路进行DHCP管理,在需要特殊功能的设备上手动设置网关,打开主路由的DHCP设置,并且关闭N1内的DHCP。
windows打开网络和Internet设置→更改适配器选项,选择正在使用的网卡(网线一般为以太网,WiFi为WLAN)→右键属性→Internet协议版本4
防火墙设置:
在N1
的openwrt的管理后台,打开网络→防火墙→自定义规则
,添加
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
重启防火墙即可,自此n1内使用docker运行openwrt设置完成。
补充
有的时候IPV6会出现问题(科学上网的gfw模式不生效等),可以尝试将主/旁路由的IPV6都禁用来解决。
参考资料:
斐讯N1小钢炮固件docker安装最新版openwrt实现旁路由伪软路
N1刷电视盒子&主旁路由&小钢炮教程
N1及贝壳云Armbian 5.98(加强版), 内核5.3.x, 及 Docker Openwrt
https://docs.docker.com/network/drivers/macvlan/
https://meta.appinn.net/t/topic/46007/8
请问下添加的这句防火墙的意义在哪里
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
不添加的话我也一直可以用
有的时候连接会出现断续,这个可能能解决该问题
请问如果我使用主路由管理DHCP,armbian中的openwrt开启科学上网功能,如何使得armbian也能科学上网呢?网上找了一圈也没搞定。 谢谢[undefined]
请问在使用主路由管理DHCP,armbian中openwrt开启科学上网的情况下,如何使得armbian也能科学上网?
我采用的方法是proxychains4代理。