Apple Silicon(M1)使用体验与软件配置

Published: 2022年10月02日

In Misc.

背景板

为啥买啊

大学时玩过黑苹果,作为一个颜值党太喜欢它的UI了,当然它的外观自不必多说,很漂亮,狂舔!当然还有些其他因素就不多说了,本来20年就打算换的,可是大学室友突然找我借钱于是只能先放弃了,又隔一年苹果出的M1芯片生态基本成熟,于是买了丐版(~~因为想着换工作肯定得配顶配MBP啊!~~)的MBA试试水,开箱瞬间就被惊艳到了,啊,这触感,啊,这质量...接下来感受到它的续航,OMYGA!想想我那坚如磐石硕刚入手也只能用两小时,而它10几个小时无压力太爽了再也不用到哪去都背着几公斤的充电器(指之前游戏本的充电器),用了一年由于丐版8G内存让自己总有内存焦虑,就升级了14寸的MBP 32G 次顶配CPU版(~~唔想多了新东家不提供电脑~~),再也没有内存焦虑了!

推荐买吗

墙裂推荐,但是...需求不同啊,可能很多人并不习惯/喜欢Mac,然后接受不了它的一些不便...

工作起来如何

因为已经推出快两年了,苹果的生态,它的能力,你懂的,那是相当滴厉害,因此mac上的程序基本都能运行了,目前我遇到还不能运行不了的有:

1.gdb:arm版还不支持,可用lldb替代

2.android模拟器:三方的都还没适配,讲道理都是arm的应该性能会高很多,现在就android studio可用(附root方式),等吧

image-20221017223047733

3.arm版的windows无法支持底层软件,如需要加载驱动的VPN,ida里的scyllahide插件等,当然也无法调试x86的程序...

其他应该没了,想不起了,windows上的程序可装arm版的windows11虚拟机,它自动转译x86/x64的程序,因此大多数软件也是运行一点问题都没有(它和rosetta2性能也挺强普通程序根本感觉不到卡顿),但它无法装x86的驱动,这类软件是跑不起来的。

很重要的,虚拟机咋样,众所周知,现代的处理器还能不支持虚拟化?M1本身支持,且Apple也给了框架,并把以前的Hypervisor框架再封了一层,现在PD/Vmware Fusion/UTM都可以以原生速度跑ARM虚拟机了(GPU支持还不好)

img

而x86虚拟机嘛,基于QEMU的UTM当然也能跑,但是我之前说过QEMU跑其他CPU平台的系统时,很容易出现各种问题,所以运气好是能跑的,速度嘛,能用的水平,要是运气不好就只能用x86的硬件跑了!!!

注:新版系统的rosseta2可以在linux上运行咯!这意味着在arm版linux上运行x86的程序,妙不妙,妙啊~

如何使用x86资源

由于rosetta2和windows11自带的转译功能,基本能无感的使用任何arm/x86的程序,但是有时还是有使用真实x86硬件的需求

网络连接

由于这里的光猫管理页进不去,改不了桥接和端口转发,且不能进行P2P打洞,只能通过第三方中转了。下面规定提供资源的为资源端,如家里的NAS/台式机为资源端,而使用资源的为用户端,如在手机/公司里的笔记本儿电脑儿。

frp+lighted server

买了轻量级服务器,毕竟就用它做中转,标准就是其他不论带宽要大,可惜囊中羞涩只买的起8M带宽的,不过勉强能用了,再配置下:

1.服务端把6000-7000范围的端口放开,并安装frps服务,配置下:

[common]
bind_port = 7000
authentication_method = token
authenticate_heartbeats = false
authenticate_new_work_conns = false
token = A413D0A7-83CF-45AC-AA57-18947443A794 # 防止别人乱用
log_file = /var/log/frps.log
log_level = info

2.资源端安装frpc服务(windows可创建计划任务,开机自启),配置下:

[common]
server_addr = mylighted.betamao.me
server_port = 7000
log_file = ./frpc.log
log_level = info
log_max_days = 3
token = A413D0A7-83CF-45AC-AA57-18947443A794

[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389          # 远程桌面:将本地的3389端口映射到服务器的6000端口
remote_port = 6000

[plugin_socks5]
type = tcp
remote_port = 6001          # 再映射个socks5代理,记住设置账号密码
plugin = socks5
plugin_user = wangdawei
plugin_passwd = A331949A-AA72-4E59-9F12-F237148BECE1

3.客户端使用RDP直接连就好了,但是要访问内网的其他资源,如虚拟机上的数据,则需要通过socks代理,这里mac可用proxfier,配置下代理规则就好啦,例如下,则相关IP的访问会自动转发:

image-20221015172946286

附:proxifier Mac v3 激活码:3CWNN-WYTP4-SD83W-ASDFR-84KEA

cloudflare zero trust

CF嘛财大气粗,cloudflare零信任是免费的,可惜在国内是减速器,但是有时它还是挺要用的!

准备工作

1.注册cloudflare(下文简称cf)账号

2.将自己的域名接入到cf(在原始解析处设置转出,在cf面板的站点里选择接入)或在cf面板的域名里注册一个新的域名

资源端配置

1.在资源端上下载并安装cloudflared,运行cloudflared tunnel login登录,它会打开web页面进行登录,之后自动下载证书到~/.cloudflared/目录(后简称家目录)

2.运行cloudflared tunnel create b3tama0创建一个隧道,此时会在家目录创建<tunnelid>.json的凭证文件

3.手动在家目录创建config.yml文件:

tunnel: <tunnel id>
credentials-file: ~/.cloudflared/<tunnel id>.json
ingress:
  - hostname: rdp.b3tama0.me
    service: rdp://127.0.0.1:3386
  - hostname: web.b3tama0.me
    service: http://127.0.0.1:8888
  - service: http_status:404

4.执行cloudflared tunnel --config ~/.cloudflared/config.yml run运行隧道

5.执行cloudflared tunnel route dns b3tama0 {web|rdp}.b3tama0.me将上面的两条dns注册解析

6.执行cloudflared.exe service installcloudflared安装为服务

7.修改服务配置,如Linux需要将配置放到/etc/cloudflared,而windows修改注册表

此时对于web服务就可以直接使用浏览器访问,而对于其他协议的服务,则需要用户端也是用相关软件连接cf来建立隧道。

用户端配置

用户端可使用cloudflaredwarp,以前者为例:

1.先登录,同资源端第一步

2.执行cloudflared access rdp --hostname rdp.b3tama0.me --url localhost:3389将服务映射到本地的3389端口

3.使用rdp工具,如royal tsx连接localhost:3389即可访问rdp资源

优化方式

套隧道

它支持任意TCP协议,但是每个服务需要单独配置,可以ssh/web套socks隧道或直接装台vpn

优选IP

cloudflare使用anycast ip,可使用better-cloudflare-ip/cfip等工具获取延迟低的IP,再修改host将上面注册的域名与IP绑定

文件资源

由于工作中需要安装大量的虚拟机,需要大量空间,因此我是在x86的台式上装了共8T的硬盘,大部分不常用的数据都是放这上面的,需要时再远程获取就好了。

小文件:everything

x86的windows上装了evetything,那是相当的好用,而且它自带http/ftp的支持,因此将端口暴露即可进行文件上传和下载,而且这两个功能都支持密码保护,不过实际还是有点不放心,万一有漏洞或后门咋办,于是在前面再加一道门吧!

1.windows安装nginx最新版

2.配置为反向代理给everything的http服务

3.配置nginx鉴权,并限制登录错误限制(注意此时真实IP需要从请求头里获取)

4.配置everything开启http服务设置密码并绑定到127.0.0.1接口

image-20221013085119305

大文件:百度云/onedrive

如果文件特别大,那么用百度云或one drive做中转速度会更快,不多说...

虚拟机资源

RDP+VMware Workstation

这是最直接的办法,既然网络已经通了直接RDP连回台式机,再使用上面的vmware workstation/virtualbox等就好了,远程桌面可使用微软官方提供的mac客户端也可以使用royal tsx,只是需要注意默认的配置对网络要求较高,可能需要根据网速调整分辨率,动画效果等...

image-20221013090044914

Fusion+Vsphere

但如果只是想用虚拟机,那么client+hypervisor会更舒服,比如这里的fusion+vsphere或者用hyperv,由于vmware的镜像更通用,且hyperv管的太宽了(开启直接把windows作为guest了),因此选择者,vsphere的esxi本应装在物理机上的,但通常的家用主机网卡驱动需要手动安装(另外原有的物理机可以直接转换为虚拟机)且可能没有驱动,而且我对性能要求没那么高因此选择嵌套虚拟化方案,将其装在workstation上,如上节的图。

装好后给它分配块大的磁盘(比如2T),之后直接把ova等导入即可远程使用:

image-20221013091134067

注:其实vmware workstation的共享虚拟机在此处更方便,但是它从v16开始不再支持该功能,实在要用可以下v16.1或v15及其之前的版本。

常用软件

开发

Jetbrains

JB家的,当然还是使用知了的ja-netfilter,顾名思义它是个网络请求过滤器,hook java的api匹配特定请求并可决定拒绝还是修改请求响应等,下好后配合jetbrai.in checker里提供的规则与注册码就可以破解使用最新版的全家桶。

java

java版本太多了,用jenv管理...

审计

understand

下载mac版根据这个破解

BeyondCompare

下载mac版根据这个破解,说实话它其实挺良心的,试用时间都是按照实际使用天数算,也可以直接删除文件清空试用,这样最方便:

rm "/Users/$(whoami)/Library/Application Support/Beyond Compare/registry.dat"

安全

Burpsuite

下载后,使用BurpLoaderKeygen破解,202209之后的版本需要用ja-netfilter才行了...

Charles

直接去官网下载最新版,使用如下注册码注册:

Registered Name:    https://zhile.io
License Key:        48891cf209c6d32bf4

其他

royal tsx

直接使用盗版,要使用X11先安装XQuartz,再设置Advanced -> SSH -> "Enable X11 Forwarding"

最近发现有个设备的ssh连不上了,搜索发现是openssh新版hostkey算法默认不允许使用ssh-rsa协议了,参考MacOS Ventura 系统 ssh 不再支持 ssh-rsa 的原因及解决办法文章说明,可直接修改ssh客户端配置启用该协议。

iterm2

颜值即正义的终端

ParallelDesktop

使用这个补丁...

AppCleaner

该页面下载,特别小巧的专注于软件卸载的app

010Editor

直接去官网下载最新版,安装后先憋启动而是禁止它联网(用上面提到的proxifier添加一条block规则,应用选择它),之后直接用下面的注册码即可:

macwk.com
A92E-EE9C-7B86-9DB0     

如果之前安装过,最好把下面几个目录先删掉再重装:

rm -rf ~/Documents/SweetScape
rm -rf ~/.config/SweetScape
rm -rf "~/Library/Application Support/SweetScape" # 模板等文件

ByteCode-Viewer

Java反编译全家桶,这里主要关注的是令其到launchpad处执行:

1.打开自动操作应用

2.新建文稿选择应用程序,在操作里选择运行Shell脚本

3.输入java -jar sss.jar,可先点击右上角的运行看看命令是否正确

4.cmd+s保存到应用程序目录下,记得名称需要为xxx.app

之后就可以在launchpad里看到机器人图标,点击即可启动。

image-20230223093114235

使用树莓派

1.上面已经提到经常有访问家里资源的需求,由于我使用的网络没有公网IP只能通过代理服务器建隧道

2.还有种需求,玩switch等时需要挂代理,作为穷逼通常都是自己使用自己的小飞机但这得开电脑或手机(挂服务器上也行但我的服务器带宽有限)

所以我想要在家里弄台软路由实现这些功能,本来一位搞IOT安全的师傅给推了香蕉派,看硬件确实很顶,但奈何囊中羞涩,只能暂且作罢,今天无事收拾东西摸出了一直吃灰的树莓派,遂决定用它暂时顶着,想要它实现的也就上面这两目的。

树莓派上的操作

刷系统

由于年久失修,掏出来插电开机只有红灯常量,查了下状态码意思是可能系统坏了,于是打算刷个最新的img,直接去官网下载Raspberry Pi Imager,该工具可自动下载镜像(但可能会由于网络原因下载失败)并写入SD卡,结果发现坑一个接着一个,于是就打算仅用它格式化SD卡,接着手动下载镜像刷入:

# 查看SD卡分区
diskutil list
# 可能会自动挂载,卸载它
diskutil unmountDisk /dev/disk5
# 写入镜像
sudo dd if=lite.img of=/dev/disk5 bs=1m
# 弹出
diskutil eject /dev/disk5

插回去就可以开机了,由于这个过程没有写配置文件,那么在初始化过程会让配置账号和密码,之后登录用raspi-conf配置Wi-Fi等

注意官方镜像的默认键盘布局不适合国内,需要修改(可自行百度)

配置clash

直接下载clash的arm32版,直接运行会在~/.config/clash下创建默认配置和国家数据库,把MBP上已有的yaml直接复制到config.yaml里先让他跑起来,能远程访问rest api,之后使用clash dashboard去管理它即可(注意安全性,可食用ssh隧道),一切配置好添加到systemd自启动服务即可。

配置frpc

配置同上,还是把它加入systemd里自启动就行

唤醒命令

先安装apt install wakeonlan再添加别名alias wake='wakeonlan <MAC ADDR>',之后直接用wake就可以唤醒了

windows11上的操作

配置比较简单,唤醒时Wi-Fi/网线都行,我这里用的网线:

1.bios开启网卡唤醒(可能名字不同,例如叫PCI-e唤醒)

2.windows的设备管理器里选择对应网卡开启WOL

3.使用ssh来管理它,于是需要先运行服务,以管理员权限在powershell里执行:

# 查看ssh server安装没
Get-WindowsCapability -Online | Where-Object Name -like  'OpenSSH*'
# 没安装就执行它安装
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# 修改~/.ssh/下的配置(安全加固)后启动服务
Start-Service sshd
# 讲sshd设置为自启动
Set-Service -Name sshd -StartupType 'Automatic'

# 确保防火墙22端口放过了(默认会开的)
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
    Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
    New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
    Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}

这样就可以利用ssh连上去了,推荐使用公私钥,关机主要目的是为了省电所以可以用shutdown /h命令来控制休眠。

未完待续...