黑群晖折腾之路

自己折腾黑群晖以及其他网络相关记录。

折腾之前的琐碎

本人家里有台服务器,本来是用来安装linux学习的。配置是R5 1400,还是第一代锐龙cpu。也够用了,添加了华硕的750ti显卡。不过只是用来当亮机卡,买过就后悔了,不玩游戏太浪费,作为服务器的显卡又太浪费电。后来就把供电pin拔下来了。

之后有相当长的一段时间没有实际大用过,安装了Ubuntu之后,没跑啥服务,就安装了可道云,KodExplorer可道云,原名芒果云,是基于Web技术的私有云在线文档管理解决方案,以及基本的种子下载软件Transmission。硬盘也是随便买的希捷酷鱼2T机械。就这样服务器跑了两三年,当然不是一直运行。不下载东西,不储存文件的时候还是关机,怕费电。期间塞满了我三张2T的盘。都是一些raw的番剧以及一些PC游戏。

当时是通过花生壳免费送的域名加穿墙功能,也不是完全免费,支付了6块钱开通了什么功能似乎是。一直都是1M小水管,在外的时候都是找到好的资源,然后通过transmission下载。很少访问可道云进行文件传输,因为1M小水管太慢了,每秒最高128KB。花生壳还有流量限制。一个月只有1G流量。但用来传种子文件还是绰绰有余。

后来一直这样子,但最近一次账号注销中,觉得要注重隐私,就把花生壳注销了。不再使用他家的穿透产品。之后因为这个小站的建立。自己算是拥有了一台自己的服务器。所以通过开源的frp穿透技术实现了当初花生壳的条件,并且没有流量限制。

但问题还有一个一直没有解决。就是外网访问仍然是没有无限制上传下载文件。这就很头疼。frp文件传输依赖于拥有公网ip的服务器的带宽。而无论是腾讯的还是阿里的。带宽都很贵。对于个人来说负担不起。这个时候就突然很想让自己的家庭网要一个公网ip。中国移动不给,这简直是灾难,活在中国移动的大局域网内。这便引出了下面的解决方法。

早在很多年前就听说ipv4即将用尽,但最近几年也从来没有听说过ipv6大力推广的新闻。不过当我网上查询时,发现其实中国移动已悄悄支持了ipv6,每个家庭网其实都是分配了ipv6的。于是我动起了直接用ipv6直连的想法。

说干就干,自己的主路由器是2020年7月份买的小米AX3600.而光猫是中国移动定制 F623。网上都是有相应教程。

一开始是使用默认设置。光猫进行拨号。下级是小米路由。然后所有的网络设备都是连接小米AX3600。一开始要打开小米路由器的ipv6,设置成NAT方式获得ipv6。之后电脑手机、服务器呀都有了ipv6地址。通过ipv6 test也是正常,但是无法通过外网访问自己的服务器。一开始不懂ipv6的地址组成。有些设备虽然测试没有问题,但ipv6开头是fe80,是一个内网地址,我就将小米路由器的DMZ打开,光猫的DMZ打开,然后外网访问,但还是没有用。还有就是光猫离自己的主机还有段距离,不得不连接小米路由器,解决的方案是按照网上的介绍,将光猫设置了桥接模式,用自己的路由器进行直接拨号获得ipv6,这样就不是内网ipv6了。注意,设置ip协议版本设置ipv4/ipv6 必须打开改写否则路由器拨号不成功。

教程:中国移动光猫F623路由模式改桥接模式(拨号模式)

之后在小米路由器页面进行PPPOE拨号连接。这样就路由器直接获取中国移动下发的64位的ipv6前缀。将ipv6上网模式改成native即可。之前在光猫之下时,需要设置NAT才能获得ipv6.

ps:为了改成桥接可是费了很大功夫,因为网关不同了。一开始光猫网关是192.168.1.1。小米路由器网关是192.168.31.1.通过连接小米路由器的pc电脑。可以访问这两个网关分别进入管理页面。但光猫改成桥接后。再也进不去光猫管理页面了。而自己也没有打开光猫的wifi。这就很尴尬了,明明设置的不对需要重新设置。DCHP也没有打开。最后只能pc直连光猫,然后设置固定ip 192.168.1.2才算是直接进入了管理页面。

这样就不用直接连光猫了。但这只是踩天坑的开始>>>>>>>

因为连接上小米路由器ax3600后,虽然获得了真实的唯一的ipv6地址。但用手机4G连接仍然是打不开网址。明明不是内网ipv6了。网上搜答案,也知道了终极。原来是小米路由器的ipv6防火墙问题,进站端口没有开启。所以一开始如果是主机直连光猫绕过小米路由器,是可以外网ipv6访问的。不过我没有尝试。反正离得远,而且要共享的话主机还是和其他网络设备在同一网段下比较好。局域网内传输快。还有就是光猫只有一个千兆WAN。连其他百兆口对于200M的宽带就小了。所以问题就回到了小米路由器身上。

光猫的桥接问题解决了,接下来就是应付路由器了。

破解小米AX3600路由器的SSH,并永久开启。

于近期2020-12月,小米AX3600路由器推送了1.0.79。而网上的开启ssh的固件版本都是1.017.所以首先需要下载造气固件版本。链接

其次主要流程是看的这个帖子:小米AX3600自动开启IPV6防火墙端口外网访问的方法

首先是降级到1.017.之后开启ssh:链接

之后开启永久ssh:链接

遇到的问题首先是一定按照链接的做。使用winscp。使用telnet链接。不要使用其他工具。

最后wifi失效了。需要进行flash擦除。上述链接也讲到。

最后进行ipv6端口开启。即主要流程流程中的链接。直接修改rc.local也是可以的。

群晖需要开启的端口包括5000 5001 80 443 6690 16881 1900 差不多是这些。

ip6tables -I forwarding_rule -p tcp --dport 5000 -j ACCEPT

至此才算把网络给通掉。

安装Proxmox VE(PVE)虚拟机安装黑群晖

如链接,我家里的主机进行了系统切换。就是想用用群晖的系统。毕竟在家庭市场群晖还是占有很大份额。但群晖的主机一直很贵。明明不是很强的cpu和内存。但这几天使用情况也算是渐渐理解了一些。至少群晖的配套软件还是很齐全的。

又因为可道云+transmission的方式不够安全。虽然frp时期使用了网登录密码验证。但总觉得当ipv6暴露出去后,主机很危险。看在小米路由器这强大防火墙的份上,我也安心了些。便直接换成了黑群晖系统。

问题出在硬盘的格式上。以前都是格成了ext4。我也为群晖也是运行在linux上的,应该也支持ect4,没想到打不开。不过只是后话,稍后再讲。

当决定更换系统之后,就把pc上一块ssd换给了服务器。因为一开始搭建服务器的时候这块ssd在pc上当作系统盘,当时ssd猛涨价格。就没有多余的钱购置新的ssd.后来去年ssd普遍降价,虽然是四层叠加技术成熟的原因。我就买了一个NVMe的m.2接口1T固态。直接把这个sata口的ssd当作了副盘,这次换系统正好换给服务器使用了。

Proxmox VE(PVE)虚拟机的安装就不多说,开源的虚拟机,到官网下载镜像,然后使用ultraISO烧录进U盘,然后启动选项选为U盘即可。无非就是有用到了我的750Ti显卡,哎,也就这个时候才派上用场。

安装成功后在浏览器中直接敲入192.168.1.X:8000即可开始配置虚拟机。

参考Proxmox VE(PVE)虚拟机安装黑群晖

遇到的问题:当使用破解引导镜像之后。总是没有ip地址新出现。也就是并没有开机成功。但出现了教程中列举的界面。后来才发现是硬盘挂接的方式不对,应该使用sata口而不是scsi上古接口。这个点真真是浪费了很多时间。

正确启动后按教程一步一步配置即可。

由于路由器设置的是每天重启一次,所以需要进行ddns设置,好让域名指向的访问地址同步更新。我使用的是dynv6的服务,所以执行如下脚本。hostname写自己的域名token在dynv6网站获取。device写自己ipv6所在的网卡设备名。

然后在群晖中添加计划。将文件保存在群晖中,执行频率每20分钟一次即可。

#!/bin/sh -e
hostname=example.com
token=***************
device=eth0
file=$HOME/.dynv6.addr6
[ -e $file ] && old=`cat $file`
if [ -z "$hostname" -o -z "$token" ]; then
  echo "Usage: your-name.dynv6.net <your-authentication-token> [device]"
  exit 1
fi
if [ -z "$netmask" ]; then
  netmask=128
fi
if [ -n "$device" ]; then
  device="dev $device"
fi
address=$(ip -6 addr list scope global $device | grep -v " fd" | sed -n 's/.*inet6 \([0-9a-f:]\+\).*/\1/p' | head -n 1)
if [ -e /usr/bin/curl ]; then
  bin="curl -fsS"
elif [ -e /usr/bin/wget ]; then
  bin="wget -O-"
else
  echo "neither curl nor wget found"
  exit 1
fi
if [ -z "$address" ]; then
  echo "no IPv6 address found"
  exit 1
fi
# address with netmask
current=$address/$netmask
if [ "$old" = "$current" ]; then
  echo "IPv6 address unchanged"
  exit
fi
# send addresses to dynv6
$bin "http://dynv6.com/api/update?hostname=$hostname&ipv6=$current&token=$token"
# save current address
echo $current > $file

群晖自带的ddns也可以用,不过除本家之外都不支持ipv6,这就很麻烦,因为我是黑群晖,所以没有注册相应的群晖账号。所以才采用了上述方法。其实也可以用腾讯云阿里云这类的ddns。无非是api不同。脚本不同而已。

硬盘转换问题

直到群晖装好,我才知道ext4并不是通用的。我将硬盘连上主机,然后按照网上教程:

进入PVE shell

#安装 lshw
apt-get update
apt-get install lshw
lshw -C storage -C disk

磁盘ID来列出所有的磁盘设备

ls -l /dev/disk/by-id/

解释一下:

  • apt-get update为升级为最新的版本
  • apt-get install lshw 安装磁盘直通的工具
  • ls –l /dev/disk/by-id/查看所有硬盘的信息(包含硬盘id)
  • qm set 101 –sata1 /dev/disk/by-id/硬盘id 为直通硬盘的命令(101是PEV虚拟机的ID)

这里讲一下磁盘ID怎么找,你必需选择的是整个硬盘(物理硬盘)而不是分区,比如sda、sdb、sdc对应的id,而不是(sda1、sda2…)

比如:qm set 100 -sata1 /dev/disk/by-id/ata-ST8000VN0022-2EL112_ZA1F8YX4

之后盘便自动进入虚拟机,之后挂载即可。


但是群晖不认ext4文件系统。之前是因为觉得主机使用linux是不会变的,所以一直格的都是ext4,然后不停的换硬盘即可。但没想到群晖不认。好吧,网上也没有搜到可靠的方法,如何将一张旧盘插进去使用。也只有挂载成esata才能被识别。但实验时候还是不能识别ext4,只能识别ntfs。所以一狠心下我将3张满的2T数据盘格成了ntfs。当然也是怕群晖自己的格式我在pc上没法读出来。这就很麻烦。

这里面也有其他原因。首先是数据备份。使用硬盘读写器连接pc,之后使用转换软件(之后补名字)进行了读取。本来以为已经挂载的方式是读写,但是,因为自己手贱,在传输途中又插了一个盘(硬盘读写器有两个盘位),或者安装某个软件突然pc的文件管理器进程重启。都导致传输失败,更奇葩的是,我向ext4盘里面写进去的文件,在我正常断电,拔usb后,再插上去后数据不见了,恢复到了写文件之前的状态。吐血,但我已经将pc里面的数据删除了,就这样白白丢失了200多G的数据再也找不回来了,以后我就只能先全部读出来,格式化成ntfs,再拷回去。不过数据量真是大,2T需要4个小时。

网上有将群晖sata口转为esata口的教程。所以保证了ntfs格式在pc和群晖里面都可以读。

之后我还买了一根8G的内存条。想着以后PVE装别的系统。

ipv6艰苦探索

其实家里面ipv6地址都没有问题。新加的设备也都有各自的ipv6地址。但外部访问变成了问题。

首先就是公司网络。手机现在都已经分配了ipv6,直接访问家里的主机没有问题。速度我觉得还行。上传下载屈取决于手机的4G网络速度。问题是办公网络。只有ipv4地址,且是内网。之前通过frp能穿透是因为使用了拥有公网ip的服务器。这下是很麻烦。因为没办法更改拓扑结构,路由器又不是自己掌控。所以不好获得ipv6。以前搜到过ipv 4 to 6 的技术。比如plat6.org。不过2020一整年消失了,好像是平台跑路不干了。第二种方法是使用设置 Teredo 服务器。是一种隧道指令。但目前Teredo 服务器很少,而且都不在国内。唯二能用的就是teredo.iks-jena.de与teredo.remlab.net。但ping不同自家的主机地址,似乎屏蔽了。第三种方法是使用高校的isatap进入ipv6隧道。但现存没有可用的isatap。

于是第四种便被我摸索了上来。透过v2ray进行ipv4转发到ipv6。我在洛杉矶正好有台vps服务器。但没有发放ipv6,只有公网ipv4。使用https://tunnelbroker.net/进行隧道建立,便可以获得自己vps的ipv6。之后全局使用v2ray便可以访问到我的家庭主机了。无非就是太慢。但如果只是下载bt的话足够了。

最终倒腾来,还是没能实现在公司以百兆的速度访问家庭NAS的愿望。不过这样也已经离实现不远了。

end;