检查当前机器是不是虚拟机并确认底层虚拟化技术

要确定当前运行的系统是否在虚拟机(VM)中,并了解底层虚拟化技术,可以使用一些命令和工具进行检查。以下是几种方法:

使用 dmidecode 命令: dmidecode 是一个用于获取 BIOS、系统、主板和处理器信息的工具。要使用 dmidecode,请确保您已安装它。然后,可以运行以下命令:

sudo dmidecode -s system-manufacturer

这将输出系统制造商的信息。如果输出包含虚拟化提供商的名称(如 VMware、VirtualBox、KVM 等),则表示您正在虚拟机中运行。例如,输出可能类似于:

VMware, Inc.

使用 lscpu 命令: lscpu 是一个显示 CPU 架构信息的命令。您可以运行以下命令查看虚拟化技术:

lscpu

在输出中,找到 Hypervisor vendor 这一行。如果它显示虚拟化提供商的名称(如 KVM、VMware、Microsoft 等),则表示您正在虚拟机中运行。

使用 virt-what 工具: virt-what 是一个用于确定当前系统是否在虚拟机中以及虚拟化技术的工具。首先,您需要安装 virt-what:

对于基于 Debian 的系统(如 Ubuntu):

sudo apt-get install virt-what

对于基于 RHEL 的系统(如 CentOS、Fedora):

sudo yum install virt-what

安装完成后,运行以下命令:

sudo virt-what

如果您正在虚拟机中运行,输出将显示虚拟化技术的名称(如 kvm、qemu、vmware 等)。如果您不在虚拟机中运行,输出将为空。

以上方法可以帮助您检查当前系统是否在虚拟机中运行,以及了解底层虚拟化技术。

Surge 从零开始配置

Surge for macOS 基于 这份 修改。

# Surge 的规则配置手册: https://manual.nssurge.com/

[General]
loglevel = notify
# 从 Surge iOS 4 / Surge Mac 3.3.0 起,工具开始支持 DoH
doh-server = https://doh.pub/dns-query, https://dns.alidns.com/dns-query
# https://dns.alidns.com/dns-query, https://13800000000.rubyfish.cn/, https://doh.360.cn/dns-query, https://dns.google/dns-query
dns-server = 223.5.5.5, 114.114.114.114
tun-excluded-routes = 0.0.0.0/8, 10.0.0.0/8, 100.64.0.0/10, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.0.0.0/24, 192.0.2.0/24, 192.168.0.0/16, 192.88.99.0/24, 198.51.100.0/24, 203.0.113.0/24, 224.0.0.0/4, 255.255.255.255/32
skip-proxy = localhost, *.local, injections.adguard.org, local.adguard.org, captive.apple.com, guzzoni.apple.com, 0.0.0.0/8, 10.0.0.0/8, 17.0.0.0/8, 100.64.0.0/10, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.0.0.0/24, 192.0.2.0/24, 192.168.0.0/16, 192.88.99.0/24, 198.18.0.0/15, 198.51.100.0/24, 203.0.113.0/24, 224.0.0.0/4, 240.0.0.0/4, 255.255.255.255/32

wifi-assist = true
allow-wifi-access = true
wifi-access-http-port = 6152
wifi-access-socks5-port = 6153
http-listen = 0.0.0.0:6152
socks5-listen = 0.0.0.0:6153

external-controller-access = 请指定密码@0.0.0.0:6170
replica = false

tls-provider = openssl
network-framework = false
exclude-simple-hostnames = true
ipv6 = true

test-timeout = 4
proxy-test-url = http://www.gstatic.com/generate_204
geoip-maxmind-url = https://cdn.jsdelivr.net/gh/Hackl0us/GeoIP2-CN@release/Country.mmdb

[Replica]
hide-apple-request = true
hide-crashlytics-request = true
use-keyword-filter = false
hide-udp = false

# -----------------------------
# Surge 的几种策略配置规范,请参考 https://manual.nssurge.com/policy/proxy.html
# 不同的代理策略有*很多*可选参数,请参考上方连接的 Parameters 一段,根据需求自行添加参数。
#
# Surge 现已支持 UDP 转发功能,请参考: https://trello.com/c/ugOMxD3u/53-udp-%E8%BD%AC%E5%8F%91
# Surge 现已支持 TCP-Fast-Open 技术,请参考: https://trello.com/c/ij65BU6Q/48-tcp-fast-open-troubleshooting-guide
# Surge 现已支持 ss-libev 的全部加密方式和混淆,请参考: https://trello.com/c/BTr0vG1O/47-ss-libev-%E7%9A%84%E6%94%AF%E6%8C%81%E6%83%85%E5%86%B5
# -----------------------------

[Proxy]
ProxyHTTP = http, 1.2.3.4, 443, username, password
ProxyHTTPS = https, 1.2.3.4, 443, username, password
ProxySOCKS5 = socks5, 1.2.3.4, 443, username, password
ProxySOCKS5TLS = socks5-tls, 1.2.3.4, 443, username, password
ProxySS = ss, 1.2.3.4, 8000, encrypt-method=chacha20-ietf-poly1305, password=abcd1234
ProxyTrojan = trojan, 192.168.20.6, 443, password=password1
ProxySnell = snell, 1.2.3.4, 8000, psk=password

[Proxy Group]
Proxy = select, ProxyHTTP, ProxyHTTPS, ProxySOCKS5, ProxySOCKS5TLS, ProxySS, ProxyTrojan, ProxySnell

[Rule]
# 自定义规则
## 您可以在此处插入自定义规则

# 实用规则片段集
# RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/Basic/Apple-News.list,Proxy
RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/Basic/Apple-proxy.list,Proxy
RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/Basic/Apple-direct.list,DIRECT
RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/Basic/CN.list,DIRECT
RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/Basic/common-ad-keyword.list,REJECT-TINYGIF
RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/Basic/foreign.list,Proxy
RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/App/social/Telegram.list,Proxy
RULE-SET,LAN,DIRECT

# 最终规则
GEOIP,CN,DIRECT
FINAL,Proxy,dns-failed

[URL Rewrite]
# 请开启 MITM 并在域名中加入 www.google.cn
^https?://(www.)?(g|google).cn https://www.google.com 302

References

dnsmasq 多网卡分网段配置

在 dnsmasq 的配置文件 /etc/dnsmasq.conf 中使用类似下面的配置:

bind-interfaces
dhcp-range=eth1,10.192.10.50,10.192.10.200,12h
dhcp-range=eth2,10.192.20.50,10.192.20.200,12h
dhcp-range=eth3,10.192.30.50,10.192.30.200,12h
dhcp-option=option:dns-server,119.29.29.29

接口实现一个 dnsmasq 实例,同时在多张网卡启动 DHCP 服务,并分配不同网段的 IP 地址。

AutoGPT 用法

git clone https://github.com/Torantulino/Auto-GPT.git
cd 'Auto-GPT'
pip install -r requirements.txt
# Rename .env.template to .env and fill in your OPENAI_API_KEY. If you plan to use Speech Mode, fill in your ELEVEN_LABS_API_KEY as well.
python scripts/main.py
# You will find activity and error logs in the folder ./output/logs
python scripts/main.py --debug

References

apt 查看软件库中软件包所有可用版本

要查看软件库中现有的所有可用版本,您可以使用以下命令:

apt-cache madison <package-name>

<package-name> 替换为您要查看版本信息的软件包名称。此命令将显示所有可用版本的软件包及其详细信息,包括软件包名称、版本号、发行版、构建日期和软件源等信息。

例如,要查看 Node.js 的所有可用版本,请使用以下命令:

apt-cache madison nodejs

此命令将显示所有可用版本的 Node.js 软件包及其详细信息。

您还可以使用以下命令来查看软件包的详细信息,包括其依赖项、描述、文件列表等:

apt-cache show <package-name>

例如,要查看 Node.js 的详细信息,请使用以下命令:

apt-cache show nodejs

此命令将显示 Node.js 软件包的详细信息,包括其依赖项、描述、文件列表等。

希望这些命令可以帮助您查看软件库中现有的所有可用版本。

判断 IP 或端口被封(墙)

IP 检测

命令行方式

最简单的是在命令行窗口上测试

$ ping x.x.x.x.

在线方式

可使用网站 Ping检测 进行测试

判断

  • 如果国内和国外都 ping 不通,则是海外服务器的问题
  • 如果国内 ping 不通,国外能 ping 通,那么 IP 被封了

端口检测

命令行方式

使用 telnet 命令测试端口:

# 可以直接测试 IP 或域名
$ telnet ip port

# 成功举例
telnet bus1.skybyte.me 443
Trying 104.243.19.12...
Connected to bus1.skybyte.me.
Escape character is '^]'.

# 失败举例
telnet x.x.x.x 500
Trying x.x.x.x...
telnet: connect to address x.x.x.x: Connection refused
telnet: Unable to connect to remote host

在线方式

判断

  • 如果国内和国外都不能连通,是服务器问题
  • 如果国内不能连通,国外能连通,那么端口被封了

References

Ubuntu 安装指定版本 docker

如果你过去安装过 docker,先删掉:

sudo apt-get remove docker docker-engine docker.io containerd runc

首先安装依赖:

sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common

信任 Docker 的 GPG 公钥并添加仓库: 发行版

sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirror.nju.edu.cn/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装最新

sudo apt-get update
sudo apt-get install docker-ce

安装指定版本

首选查看都有哪些版本可选

apt-cache madison docker-ce | awk '{ print $3 }'

选择版本并安装

# 以 5:20.10.13~3-0~ubuntu-jammy 为例
VERSION_STRING=5:20.10.13~3-0~ubuntu-jammy

sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin

Reference

debmirror 镜像 nexus3 apt 仓库

nexus3 没有很好的目录重命名方法。

使用 apt-mirror 镜像会出错,实测 debmirror 没问题。下面记录方法:

首先导入公钥

导入 apt 公钥

如果你已经有了公钥文件(如 public.key),你可以使用以下命令将其导入到 GPG 密钥环和 APT 的受信任密钥列表中:

  1. 导入 GPG 密钥到密钥环:
gpg --import public.key
  1. 查找密钥 ID。在导入密钥后,gpg 将显示类似于以下内容的输出:
gpg: key 1234567890ABCDEF: public key "Your Name <your.email@example.com>" imported

在这个示例中,1234567890ABCDEF 是密钥 ID。

  1. 将 GPG 公钥导出到 APT 的受信任密钥列表中:
gpg --export --armor 1234567890ABCDEF | sudo tee /etc/apt/trusted.gpg.d/1234567890ABCDEF.gpg

1234567890ABCDEF 替换为你的 GPG 密钥 ID。

现在,你已经成功地将公钥导入到 GPG 密钥环和 APT 的受信任密钥列表中。在使用 aptdebmirror 时,它们应该能够验证签名的仓库。

镜像仓库

为了使用 debmirror 镜像你的 Nexus3 APT 仓库,请按照以下步骤操作:

  1. 首先确保你已经安装了 debmirror。在基于 Debian/Ubuntu 的系统上,可以使用以下命令安装:
sudo apt-get install debmirror
  1. 在运行 debmirror 之前,首先确保已经导入了 GPG 密钥。你可以使用以下命令导入密钥:

见上一步。

  1. 运行 debmirror 命令,指定仓库地址、发行版、组件和架构等参数。这里是一个示例命令:
debmirror --host=192.168.25.8:8081 \
    --root=repository/test-apt-host \
    --method=http --progress --dist=bullseye \
    --section=main --arch=arm64 \
    --rsync-extra=none \
    --ignore-release-gpg ./pve-arm/

这个命令将从 http://192.168.25.8:8081/repository/test-apt-host 镜像别名为 bullseye 的发行版中 arm64 架构的相关 apt 包到本地的 ./apt-arm/ 目录。

根据需求,可以修改这些参数。

注意:--ignore-release-gpg 参数会跳过 GPG 签名检查。在确认仓库是可信的情况下,可以使用此参数。

--rsync-extra=none 会跳过 rsync 下载额外文件。

  1. 等待 debmirror 完成镜像过程。这可能需要一段时间,具体取决于仓库的大小。

完成这些步骤后,你应该在本地 ./pve-arm/ 目录中找到镜像的仓库。如果遇到任何问题,请确保检查命令中的参数是否正确。