|
本帖最后由 谢春林 于 2021-1-25 21:07 编辑
缘起:本人设备为贝壳云P1,刷了小钢炮,稳定运行。最近开始接触旁路由,小白一枚,从论坛搜索各种docker和固件相关的帖子进行实验。
遇到的问题:
1.固件新老不一;
2.教程很多,但在如何实现v4 v6双栈这个问题上,总是失败;
3.启发来自:thread-4050223-1-1.html,感谢这位大大!
目前从各个教程来整,终于成功。不甚明白原理,但还是能成功!现在整理出来给大家共享!
一:宿主机篇(也就是小钢炮本身的修改):
1.创建macnet
我的路由是192.168.2.1,请根据自己的情况修改,IPv6默认是内网地址,不用动;
命令行创建macvlan
docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 --subnet=fe80::/16 --gateway=fe80::1 -o parent=eth0 macnet
2. 修改/etc/network/interfaces,主要是添加标红部分,命令是:vi /etc/network/interfaces,按i,用键盘箭头移动光标进行修改,然后esc,输入:wq,保存和退出
# interface file auto-generated by buildroot
#iface eth0 inet dhcp
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto macvlan
iface macvlan inet static
address 192.168.2.2
netmask 255.255.255.0
gateway 192.168.2.120
dns-nameservers 192.168.2.1
pre-up ip link add macvlan link eth0 type macvlan mode bridge
post-down ip link del macvlan link eth0 type macvlan mode bridge
3.编辑/etc/rc.local
命令行:vi /etc/rc.local
按i,用键盘箭头移动光标进行修改,然后esc,输入:wq,保存和退出
在exit 0 前面,加入下面的代码:
modprobe
modprobe pppoe
modprobe udp_tunnel
modprobe ip6_udp_tunnel
modprobe ip6table_nat
modprobe tun
重启一下,宿主机修改完成。
二、openwrt篇
1.拉取镜像和创建container
(1)建议的镜像:hub里的,buddyfly/openwrt-aarch64,fbrav/openwrt-aarch64,hibuddies/openwrt-aarch64,744287383/linux-arm64-ttnode,等,或者在论坛自己找吧,感谢各位大佬的无私分享。
命令行举例:docker pull buddyfly/openwrt-aarch64:latest
(2)对于精简原版的,建议用这位大佬的/thread-4050116-1-1.html,但很多服务插件得自己装,优点是,自己想怎么来怎么来!
应用举例:首先下在tar.gz包,放在root目录下,不用解包,但包内也不能是img文件(如果是这个,得先解压提取,然后压缩成tar)
docker import openwrt-armvirt-64-default-rootfs.tar.gz openwrt-armvirt-64,后面的是import后的image名称
(3)创建container (可先用docker images,查看确认具体的image名称)
命令行:docker run --name openwrt --restart always -d --network macnet --privileged openwrt-armvirt-64 /sbin/init
2.修改docker里的openwrt这部分设置了回复可见,主要是op里面的一些设置。
(1)命令行进入到container里,docker exec -it openwrt /bin/sh
(2)修改IP、dns、gateway等信息;
命令行: vi /etc/config/network 按i,用键盘箭头移动光标进行修改,然后esc,输入:wq,保存和退出
修改:
config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.2.120'
option gateway '192.168.2.1'
option dns '192.168.2.1'
option netmask '255.255.255.0'
option ip6assign '60'
添加:(这部分是用docker拨号的,如果不增加,应该也问题不大)
config interface 'wan'
option proto 'pppoe'
option username '123456'
option password '123456'
option keepalive '0'
option ifname 'wan_mac0'
option ipv6 'auto'
(3)修改/etc/sysctl.conf
命令行:vi /etc/sysctl.conf 按i,用键盘箭头移动光标进行修改,然后esc,输入:wq,保存和退出
添加下面的内容,这里是获取ipv6的关键
# Defaults are configured in /etc/sysctl.d/* and can be customized in this file
net.ipv6.conf.all.disable_ipv6=0
net.ipv6.conf.default.disable_ipv6=0
net.ipv6.conf.default.accept_ra=2
net.ipv6.conf.all.accept_ra=2
(4)修改/etc/rc.local
命令行:vi /etc/rc.local 按i,用键盘箭头移动光标进行修改,然后esc,输入:wq,保存和退出
添加以下内容到 exit 0前面
ip link set eth0 promisc on
ip link add link eth0 wan_mac0 type macvlan
ip link set wan_mac0 address 02:42:00:11:7C:01
ip link set wan_mac0 up
(5)openwrt重启reboot ,在浏览器输入 192.168.2.120,就可以进到管理界面了,也可以用winscp,直接IP用户密码登录了。如果是用来做旁路由,请去lan-关闭DHCP(忽略接口),IPv6的路由也全改为禁用,其他的,自己折腾吧,说不了那么多了
(6)修改IPtable(这部分,建议先不修改,因为我的并没有影响,如果出现不能上网,在去openwrt防火墙添加规则)
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
也可以尝试(有桥接存在的情况下)
iptables -t nat -I POSTROUTING -o br-lan -j MASQUERADE
如果是PPPoE拨号的
iptables -t nat -I POSTROUTING -o pppoe-wan -j MASQUERADE
如果使用usb网卡需要在防火墙里添加如果是自动获取ip的
iptables -t nat -I POSTROUTING -o eth1 -j MASQUERADE
三、主路由的修改
作为旁路由:
dhcp里的网关改为:192.168.2.120
dns服务器:改为:192.168.2.120(建议先在openwrt设置号adg或者dnsmasq之类的),其他上网啊,去广告啊,都先搞好。
电脑网卡禁用,然后重开获取dhcp。
至此,ipv6,ipv4都能获取到了,zerotier也可以有ipv6 了
作为主路由拨号:没玩过,自己尝试
稍晚点上传个镜像备份共享给大家。
这个帖子是一个小白专了好几天晚上,一点点折腾捣鼓出来的,测试了好几个固件,包括原版,包括一些原本没法获取v6的,也包括一些镜像的导入,都已经成功,应该说是ipv6的有效解决方案。
这也是整理和汇总了多个大大的经验分享,还有结合自己的一点点微弱的知识,觉得好的,赏个币吧,向大家讨个饭,小白缺币,感谢大家的支持。ps:某些看不起小白的就算了……也不求你回复……毕竟,谁都有小白的时候。我注册恩山很多年了
(原本,想设置主题售价1个币的,算了,改成求赏吧)
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
查看全部评分
|