|
本帖最后由 heq 于 2020-5-27 11:48 编辑
过去近一年时间跑docker版本的OpenWRT作为家里的主路由,总体来说非常满意。过程中先后试用了3个armbian,分别是
经过近一年的试用,基本选定第1个即官方5.77版本。原因都跟我现在的远程连接家庭网关方案有关,具体如下:
- XQ7版对IPv6支持不够完善,具体表现在手机如果有IPv6地址,则首先试图的IPv6连接总是失败,只能通过远程网关的IPv4地址连接。因为现在IPv6基本普及,导致的结果就是先行试图的IPv6连接时间浪费。
- flippy版对IPv6的支持很好,每次连接都是IPv6优先。但其firewall 支持不够完善,具体说就是container openwrt不能正确初始化netfilter的基本规则,导致的结果是远程连接家庭网关方案中/etc/firewall.user规则全部失效,手机连入家庭网关后无法普通上网。
但官版5.77自身也有几个痼疾,现在基本都得到了满意的处理。
- 无线无极限解决了Ethernet MAC地址持续变化的问题,不过我一直未能试验成功。只能在interface中通过设定hwaddress解决。
- Flippy解决了WiFi MAC地址相同的问题。不过这个方案我未能在他的新版Armbian中试验成功。
- dmesg 充斥了
- ttyS ttyS0: tty_port_close_start: tty->count = 1 port count = 4
复制代码 这些信息其实在启用container openwrt 前不会发生,所以问题源自container openwrt。WiKi OpenWRT提供了解决方案。我的实践是只需屏蔽container openwrt中/etc/inittab的ttyS0即可解决。这个问题解决后,更换DTB长期运行过程中荷载仍会飙升至2.0的问题似乎也得到了解决。- vi /etc/inittab
- ...
- #ttyS0::askfirst:/usr/libexec/login.sh
- ...
复制代码
- host与container firewall隔离不好,导致container openwrt重启firewall时,host 关于设定container DNS重定向规则被清除,container这侧DNS解析失败。解决方案是openwrt启动时保留初始重定向规则,重启firewall后再行加载。(这个问题在flippy版得到了很好的解决,无须下面的解决办法)
- # vi /etc/rc.local
- ...
- # inspired by S*S*-rules from Jian Chang <aa65535@live.com>
- export_docker_fwrule() {
- FWI=$(uci get firewall.docker.path 2>/dev/null)
- [ -n "$FWI" ] || return 0
- cat <<-CAT > $FWI
- iptables-save -c | grep -v DOCKER | iptables-restore -c
- iptables-restore -n <<-EOF
- $(iptables-save | grep -E "DOCKER|^\*|^COMMIT" |\
- sed -e "s/^-A \(OUTPUT\|PREROUTING\)/-I \1 1/" | sed -e ":begin;$!N;/\*\(mangle\|filter\)\nCOMMIT/d;tbegin;P;D")
- EOF
- CAT
- return $?
- }
- export_docker_fwrule
- exit 0
复制代码
- # vi /etc/config/firewall
- config include 'docker'
- option type 'script'
- option path '/var/etc/docker.include'
- option reload '1'
复制代码
|
评分
-
查看全部评分
|