Docker 中运行 OpenWrt

在尝试过各种 x86/arm 路由,各种开发版,各种盒子。一圈下来,最后还是回到 OneCloud (玩客云)刷 Armbian,其内安装 Docker 跑 OpenWrt 作旁路网关为结局。

作为家用,性能足够,价格也足够便宜,到写这篇文章时,海鲜市场的价格大概 30 块左右包邮。

如何短接触点刷机,如何刷 Armbian, 略过不表。这篇文章只是用来记录,在 Armbian (Debian) 下将 OpenWrt 运行起来的流水账。

IPv6 隐私扩展

DHCPv6 方式管理 IPv6 不在本文讨论之列,这篇文章主要是介绍通过 SLAAC (Stateless Address Autoconfiguration) 来生成 IPv6 后,打开 IPv6 隐私扩展。

未打开 IPv6 隐私扩展前,SLAAC 生成的 v6 地址,其后缀可以通过一些方法算出 MAC 地址。默认 SLAAC 本身就是通过 IPv6 前缀 + MAC 地址来生成的。这对服务器而言是无所谓的,但是对个人用户来说,有隐私方面的问题。所以我们需要打开 IPv6 隐私扩展,来生成一个随机的临时 v6 地址,且远程连接时优先选用这个临时 v6 地址。

打开网卡的 promiscuous 模式

如果需要桥接网络设备,或者尝试 docker 的 macvlan 网络,那么势必要打开网卡的 promiscuous 模式。

首先,最近的 linux 发行版都支持用命令行临时打开。

sudo ip link set dev eth0 promisc on

只是绝大多数时候我们需要永久打开 promiscuous 模式。那么我们可能根据自己系统选择合适的方法。

双栈网络上优先使用 IPv4

随着 IPv6 的普及,对网络特定的需求也得到改变,一些特定的场景下,我需要系统优先访问 IPv4,但是访问 IPv6网络应用也要能正常访问。但是现代操作系统,默认基本都是 IPv6 优先,所以接下来需要做一些特定的设置。

Linux

GNU/Linux 比较简单,在系统已经安装 glibc 的前提下,编辑 /etc/gai.conf 文件,取消下面行的注释

precedence ::ffff:0:0/96  100

密钥是时候更换到曲线 25519

有关 Curve25519/Ed25519/X25519 介绍的文章已经很多,分别指的椭圆曲线加密/签名/密钥交换算法。由于 NIST 系列的不透明以及来历不明参数,被广泛怀疑。棱镜门后,25519 系列开始逐渐被大众接受。直至当下的部署情况: Things that use Curve25519

具体介绍就不多说了,以下简单说一下常用场景使用 25519 算法的过程。