摘要¶
网络拓扑¶
硬件¶
- 网线
- 软路由准系统
- 内存
- SSD
- 安装系统过程中使用的显示器、键盘鼠标、U盘
如果需要在软路由上挂在2.5寸硬盘的话推荐使用12v 5a的电源。最少12v 3a电源。
更新BIOS¶
EXSI安装¶
原定方案是采用PVE作为底层的操作系统,但是已知双内存在PVE系统中尚不支持N5105的板子。因此选择EXSI作为底层系统。
步骤:
- 将EXSI系统的镜像烧录进一个空白的U盘。
刷写系统¶
换源
外部标记名 | 系统设备名 | 设备位置 | 软路由内设备名 |
---|---|---|---|
ETH0(虚拟网桥) | enp2s0 | 0000:02:00.0 | eth0(桥接) |
ETH1 | enp3s0 | 0000:03:00.0 | eth1 |
ETH2 | enp4s0 | 0000:04:00.0 | eth2 |
ETH3 | enp5s0 | 0000:05:00.0 | eth3 |
自动启动网口
/var/lib/vz/template/iso
Openwrt扩容¶
Openwrt的镜像大小往往为了更小的安装需求,一般空间会给的很小。因此在空间足够的情况下,推荐堆Openwrt的空间进行扩容。如果只是简单的增加Docker的空间,可以直接增加一个硬盘空间,再挂载Docker空间即可。
基于squashfs的扩容¶
https://www.youtube.com/watch?v=YwbwzuXKNlg&t=4s
基于镜像改造的扩容¶
https://www.bilibili.com/video/BV1Ja411m7XA?spm_id_from=333.880.my_history.page.click&vd_source=c07358badb8d5ebd07b117510e0b6f6e
在https://drive.google.com/drive/folders/1dqNUrMf9n7i3y1aSh68U5Yf44WQ3KCuh下载了最新的系统后,找一个linux机器进行操作。因为Mac没有parted命令。
- 将镜像解压成img格式
dd if=/dev/zero bs=1M count=10240 >> <镜像名>.img
parted <镜像名>.img
- 在parted中print看下当前镜像的分区状态
resizepart <分区编号> 100%
- 操作完成后print查看修改效果
- quit退出parted
- 转换成虚拟机系统格式
- 创建相应的op虚拟机
Docker推荐¶
百度网盘¶
docker create \
--name=baidunetdisk \
-p 5800:5800 \
-p 5900:5900 \
-e VNC_PASSWORD=<vnc密码> \
-v <百度网盘配置文件地址>:/config \
-v <下载地址>:/config/baidunetdiskdownload \
-e DISPLAY_WIDTH=1920 \
-e DISPLAY_HEIGHT=1080 \
--restart unless-stopped \
johngong/baidunetdisk:latest
青龙面板¶
docker run -dit \
-v $pwd/ql/config:/ql/config \
-v $pwd/ql/log:/ql/log \
-v $pwd/ql/db:/ql/db \
-v $pwd/ql/scripts:/ql/scripts \
-v $pwd/ql/jbot:/ql/jbot \
-p 5700:5700 \
-e ENABLE_HANGUP=true \
-e ENABLE_WEB_PANEL=true \
--name qinglong \
--restart unless-stopped \
whyour/qinglong:latest
home assistant¶
aliyunwebdav¶
alist¶
挂载各种云盘,支持映射到webdav。
Openwrt开启ipv6[1]¶
光猫拨号且有下发pd,ipv6地址由光猫分配¶
目标:开启二级路由的ipv6中继,ipv4使用nat方案不变,两者相互独立。
解法:
-
首先确认下openwrt的接口,我这边有两个接口,一个是lan口,还有一个wan口,为什么是两个呢,因为wan和wan6其实是同一个接口,只不过为了方便配置,分成了两个逻辑接口,也正因为这样分了,才更有利于ipv4和ipv6分开配置。
-
选择WAN6接口,协议设置为dhcpv6客户端,这里配置这个客户端就是为了使(wan wan6) 口能够自动获取到一级路由分配的ipv6地址,从而是ipv6的流量可以流向(wan wan6)口。
-
点开wan口,协议配置成静态地址,填写你wan口需要配置的ipv4信息,为什么要配置静态的?因为如果不配置静态,下面图中的dhcp的ipv6设置不出现,当然如果ssh连接后命令下配置,这边就不需要配成静态的,但是我觉得做路由器配置能在图形化上配置就应该在图形化上配置,这样可以规避一些配错修正问题。
-
下面ipv6设置全部选择中继模式,wan口的中继模式配置的意思是可以让这个wan口继承一级路由的ipv6地址分配功能,从来进一步往lan口分发这种能力。
-
切换到lan口,协议配置成静态,ipv4同样按需配置,由于进入了lan口,它和wan就不能在同一个网段,所以这里是ipv4的常规配置,按需配置即可,配置静态也是因为下面能够出现ipv6设置选项。
-
在ipv6设置同样全部选择中继模式,配置完成后,lan口也就继承了wan口分发过来的ipv6分配能力,这样lan下面的设备就能像一级路由下的设备一样获取ipv6地址了。
-
ssh登陆openwrt,在/etc/config/dhcp文件中查找到wan口配置,在下面加一行 option master ‘1’,只有配置了这一行,前面的ipv6中继能力才能生效。
Tailscale¶
qnap安装tailscale¶
同一内网无法正常访问的解决方法[2]¶
问题:tailscale客户端广播路由导致同一内网无法访问
原因:tailscale开启--accept-routes
解法:
-
Windos:在广播了路由的客户端上,将原本广播的子网范围扩大即可。比如原本广播的是192.168.1.0/24,则修改为192.168.0.0/23,这样就会优先走物理网卡访问内网了。
-
Linux:Tailscale会使用52号路由表,优先级高于主路由表,这就导致上面的方法不适用于Linux客户端,因为不管怎么改,都是先从Tailscale的路由表里走。不过Linux可以通过对路由表做修改来解决。以广播192.168.1.0/24为例,有以下两种修改方法:
- 从Tailscale的路由表中删除该子网路由:
ip route delete table 52 192.168.1.0/24
使用这种方法,如果Tailscale断开重连,这条路由会被重新添加到路由表中,因此需要每次重连后执行一遍。
- 为子网添加一条更高优先级的路由规则:
ip rule add to 192.168.1.0/24 priority 5000 table main
这种方法更好用一些,Tailscale重连也依然生效,目前没发现什么副作用。
但是安装在openwrt上的可能还是有问题,而openwrt的路由表比较复杂,因此只使用
tailscale up --advertise-exit-node
ACL¶
定义tag¶
在Access controls
中先定义需要使用的tag标签。
// Define the tags which can be applied to devices and by which users.
"tagOwners": {
"tag:self": ["autogroup:admin"],
"tag:work": ["autogroup:admin"],
}
然后在Machines
中点击对应机器的Edit ACL tags
,选择需要使用的tag。
访问限制¶
可以使用别名简化host:
// 为主机设置别名
"hosts": {
"op": "1.1.1.1",
"inner": "192.168.10.1",
}
限制访问权限:
// Define access control lists for users, groups, autogroups, tags,
// Tailscale IP addresses, and subnet ranges.
"acls": [
// Allow all connections.
// Comment this section out if you want to define specific restrictions.
// {"action": "accept", "src": ["*"], "dst": ["*:*"]},
{"action": "accept", "src": ["tag:self"], "dst": ["*:*"]},
{
"action": "accept",
"src": ["tag:work"],
"dst": ["inner:80"],
},
// Users in group:dev and devices in subnets 192.168.0.0/24 and
// 192.168.1.0/24 can access devices in subnets 192.168.0.0/24 and
// 192.168.1.0/24
{ "action": "accept",
"src": ["group:dev","192.168.0.0/24", "192.168.1.0/24"],
"dst": ["192.168.0.0/24:*", "192.168.1.0/24:*"]
}]
subnet¶
开启subnet,tailscale可以通过这个客户端访问指定内网段中的所有内网机器。
sudo tailscale up --advertise-routes=192.168.0.0/24,192.168.1.0/24
需要ipv6理论上也可以。- 客户端启动,需要在admin端中启用这个subnet。
- 在需要访问内网的设备上
sudo tailscale up --accept-routes
允许这个额外的路由。不能默认只有tailscale100.x
的路由解析。
exit-node¶
-
开启IP转发
-
linux系统中有
etc/sysyctl.d
目录的:echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
-
没有的:
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf sudo sysctl -p /etc/sysctl.conf
-
如果有防火墙的
firewall-cmd --permanent --add-masquerade
-
-
sudo tailscale up --advertise-exit-node
-
在admin console中允许
小米BE6500 ssh开通¶
老规矩,先登录系统,Chrome 浏览器上面的地址栏可以看到 Stok 变量:
然后打开 cmd,依次输入以下代码,小米 Be6500 解锁 SSH 命令:(<STOK>
整体替换为你浏览器地址栏看到的数值)
curl -X POST http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/arn_switch -d "open=1&model=1&level=%0Anvram%20set%20ssh_en%3D1%0A"
curl -X POST http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/arn_switch -d "open=1&model=1&level=%0Anvram%20commit%0A"
curl -X POST http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/arn_switch -d "open=1&model=1&level=%0Ased%20-i%20's%2Fchannel%3D.*%2Fchannel%3D%22debug%22%2Fg'%20%2Fetc%2Finit.d%2Fdropbear%0A"
curl -X POST http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/misystem/arn_switch -d "open=1&model=1&level=%0A%2Fetc%2Finit.d%2Fdropbear%20start%0A"
ssh 即可打开用户名root。由于路由使用的是rsa加密算法。高版本ssh可能无法直接访问,显示错误Unable to negotiate with 192.168.31.1 port 22: no matching host key type found. Their offer: ssh-rsa
此时需要制定加密类型ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa root@192.168.31.1
ssh 密码在 https://miwifi.dev/ssh 输入路由器的SN可以得到SSH密码,SN可以看路由器屁股,也可以进小米路由器后台看。