作者: AI最严厉的父亲

  • 如何在中国大陆以便宜的方式购买iPhone SE 3?

    iPhone SE 3是一款备受期待的手机,然而,在中国大陆购买这款手机可能会面临高价的问题。一些用户听说在北美可以以低至99美元的价格购买iPhone SE 3,于是产生了一个问题:如何以便宜的方式将这款手机带到中国大陆?在本文中,我们将探讨一些方法和注意事项,帮助您在中国大陆购买iPhone SE 3时节省一些费用。

    背景故事

    故事始于一位用户在社交媒体上提出了一个问题,他听说在北美可以以99美元的价格购买iPhone SE 3,而他希望知道如何将这款手机带到中国大陆,并了解最终的成本。

    方法一:亲自购买

    第一种方法是亲自前往北美购买iPhone SE 3,然后携带回中国大陆。这种方式的优势是您可以获得较低的购买价格,但也需要考虑飞行和税费等额外成本。此外,您需要确保手机是解锁的,以便在中国大陆使用。

    方法二:找代购

    如果您不方便亲自前往北美购买,可以考虑找代购。代购是一种将商品从其他地区购买并运送到您所在地的服务。在这种情况下,您可以寻找信誉良好的代购商,他们可以帮助您购买iPhone SE 3,并将其送到中国大陆。请注意,代购服务可能会收取一定的手续费,这会增加总成本。

    方法三:关注特价活动

    有时候,电子产品在特定时期或促销活动期间会以更低的价格出售。例如,有用户提到在感恩节/黑五活动期间,可以在北美购买iPhone SE 3,搭配特定手机套餐,最终价格大约为99美元。这种方式需要您密切关注促销活动,以确保能够抓住合适的机会。

    注意事项

    在尝试购买便宜的iPhone SE 3时,有一些注意事项需要考虑:

    1. 手机解锁: 确保手机是解锁的,以便在中国大陆使用不同的运营商卡。

    2. 额外费用: 考虑包括飞行费用、关税和代购费用在内的额外费用,以便更准确地估算最终成本。

    3. 保修和售后服务: 确保您了解手机的保修政策,以及如何在中国大陆获得售后服务。

    4. 合法性: 确保您的购买方式合法,不涉及任何违法行为或假冒伪劣产品。

    结论

    购买iPhone SE 3是一项值得考虑的投资,但在中国大陆以便宜的方式购买可能需要一些策略和谨慎。无论您选择哪种购买方式,都要确保手机是解锁的,并充分了解额外费用和保修政策。这样,您可以在不花费太多的情况下享受到这款优秀手机带来的便利。

  • 打造大型提词器:电视拼接方案探讨

    在现代社交媒体和网络直播时代,大型提词器成为了许多主持人和演讲者的必备工具。然而,要找到适合的提词器设备并不容易,尤其是对于需要大尺寸提词器的场合。在这篇文章中,我们将探讨一种创新的解决方案:使用多台60-75寸电视拼接成大型提词器,以满足大屏幕提词需求。

    背景故事

    故事始于一位用户提出了一个问题:他需要一个大型提词器,用于放在30米外,相当于150寸的提词器。此外,他希望边框尽可能窄,下巴没有突出,分辨率1080P以上,对安卓配置和色彩表现没有特别要求,但要求亮度尽可能高。每台价格预算在2000-3500元之间。

    这个需求看似简单,但在实际选择中可能会遇到困难。因此,我们将提供一种创新的解决方案,即使用多台60-75寸电视拼接成大型提词器。

    电视拼接方案的优势

    为什么选择电视拼接方案而不是传统的提词器或LED拼接屏呢?让我们一一分析电视拼接方案的优势。

    1. 低成本

    首先,电视拼接方案通常比LED拼接屏成本更低。LED拼接屏需要专门的安装和维护,而电视拼接则可以利用现有的电视设备,节省了额外的成本。

    2. 易于操作

    大多数电视都配备了遥控器,使用起来非常方便。相比之下,LED拼接屏可能需要更多的专业知识来操作。对于一般用户来说,电视拼接更加友好。

    3. 视觉效果

    虽然LED拼接屏可以提供卓越的视觉效果,但对于一般用途,多台电视的拼接也可以获得出色的画质。所选电视型号应具有高分辨率和高亮度,以确保提词器内容清晰可见。

    如何选择适合的电视

    选择适合的电视是电视拼接方案的关键。以下是一些建议:

    1. 尺寸

    根据需求,选择60-75寸的电视是合适的。这个尺寸范围能够提供足够大的显示屏,以满足150寸提词器的需求。

    2. 边框

    为了确保边框尽可能窄,可以选择一些近年来发布的电视型号,它们通常具有更窄的边框设计。这将有助于提升整体外观和观感。

    3. 亮度

    亮度对于提词器的使用至关重要,尤其是在远距离观看的情况下。因此,选择具有高亮度的电视型号是明智之举。

    4. 价格预算

    根据预算范围,可以在2000-3500元之间选择适合的电视型号。在这个价格范围内,有许多不错的选项可供选择。

    结论

    在选择大型提词器时,电视拼接方案是一种经济实惠且有效的解决方案。它具有低成本、易于操作和良好的视觉效果等优势。通过选择合适尺寸、边框窄、高亮度的电视型号,可以满足需求,并为用户提供一个出色的提词器体验。

  • 生活的波折:重拾开心的快乐

    生活,是一段曲折而美丽的旅程。每个人都会在人生中经历不同的挫折和困难,有时候会感到丧失了开心的味道,但正是这些挑战让我们变得更加坚强和成熟。在本文中,我们将探讨生活中的波折,以及如何重新找回开心的快乐。

    重新审视挫折

    生活中的挫折是不可避免的,它们可能来自于工作、家庭、健康或人际关系。当我们遭遇挫折时,常常会感到沮丧和失落,甚至可能忘记了什么是开心的感觉。然而,挫折并不是生活的终点,而是通往成功和成长的必经之路。

    挫折教会了我们坚韧,让我们更加珍惜幸福。它们是一次次的考验,检验着我们的毅力和决心。当我们努力克服困难时,最终成功的那一刻,带来的不仅仅是成就感,还有无比的快乐。

    重拾开心的秘诀

    虽然生活中会有各种挫折,但我们可以通过一些方法来重新找回开心的快乐。

    1. 感恩之心

    感恩是一种强大的情感,能够帮助我们重新审视生活中的美好。每天都可以花一点时间思考并记录下让你感到感恩的事物,无论是一个温馨的笑容、一杯热茶还是一个支持你的朋友。通过培养感恩之心,你将更加珍惜生活中的每一个瞬间,从而找回开心的快乐。

    2. 培养兴趣爱好

    追求自己的兴趣爱好是找回开心的一种有效方式。不管是阅读、绘画、运动还是音乐,投入到自己热爱的活动中,可以帮助你放松身心,充实自己的生活。这些爱好能够带来满足感和成就感,让你重新感受到开心的味道。

    3. 与亲朋好友分享

    与亲朋好友分享你的忧虑和喜悦是重新找回开心的另一种途径。与他们交流,倾听他们的建议,或者只是聊聊天,都能够让你感到被理解和支持。亲情和友情是生活中宝贵的财富,它们能够给予你温暖和快乐。

    结语

    生活的波折是无法避免的,但它们不应成为我们失去开心的理由。通过重新审视挫折、培养感恩之心、追求兴趣爱好和与亲朋好友分享,我们可以重新找回开心的快乐。生活中的每一天都是一次重新开始的机会,让我们积极面对挑战,重新享受生活的美好。

  • ARM Cortex-M3 深度研究 – 慎用 volatile 关键字修饰 double longlong 等64位长度类型的变量

    ARM Cortex-M3处理器是一种嵌入式系统中广泛使用的微控制器核心,它以高性能和低功耗而闻名。在嵌入式系统开发中,经常需要处理各种类型的数据,包括整数、浮点数和64位长整数。本教程将深入研究在ARM Cortex-M3上使用volatile关键字修饰数据类型,特别是double、long long等64位长度类型的变量。我们将讨论何时使用volatile以及如何正确使用它,以避免潜在的问题和错误。

    了解volatile关键字

    1. volatile的作用

    volatile是C/C++编程语言中的关键字,它告诉编译器不要对被修饰的变量进行优化,以确保每次访问该变量都从内存中读取,而不是从寄存器中读取。这对于处理外部硬件、多线程编程和嵌入式系统非常重要,因为这些情况下变量的值可能会在编译器无法预测的时候被修改。

    2. volatile的适用场景

    volatile通常用于以下情况:

    • 处理硬件寄存器:当你需要访问外部硬件寄存器的值时,这些寄存器的值可能会在任何时候被硬件修改。
    • 多线程编程:在多线程环境中,一个线程修改的变量可能会影响其他线程。使用volatile可以确保变量的可见性。
    • 中断处理程序:在中断处理程序中,变量的值可能会在任何时候被中断修改。

    问题与挑战

    尽管volatile关键字在某些情况下非常有用,但在ARM Cortex-M3上,对于一些数据类型,特别是64位长度类型(如double和long long),滥用volatile可能会导致问题和性能下降。

    1. volatile与优化

    在ARM Cortex-M3上,对于基本的整数和浮点数,使用volatile通常不会引起问题,因为编译器可以正确处理它们。然而,对于64位长度类型,volatile可能会导致性能下降,因为它们需要更多的内存和处理时间来访问。

    2. 原子性

    volatile不能确保操作是原子性的。在多线程环境中,如果多个线程同时访问一个volatile变量,可能会导致竞态条件和不确定的行为。因此,在需要原子性操作的情况下,应该使用其他同步机制,如互斥锁或信号量。

    如何正确使用volatile

    1. 了解数据类型

    首先,要了解你正在使用的数据类型。对于64位长度类型,特别是double和long long,在ARM Cortex-M3上,使用volatile可能会导致性能问题。如果你只需要访问这些变量的值而不需要原子性保证,最好不要使用volatile

    2. 原子性操作

    如果你需要对变量进行原子性操作,不要仅仅依赖于volatile。在多线程环境中,应该使用适当的同步机制,如互斥锁或信号量,来确保操作的原子性。

    3. 使用volatile的场景

    volatile仍然有其用武之地,特别是在处理硬件寄存器、中断处理程序和多线程环境中。在这些情况下,确保变量的可见性是非常重要的,但要注意不要滥用volatile,以避免性能问题。

    总结

    在ARM Cortex-M3上使用volatile关键字需要谨慎,特别是对于64位长度类型的变量。了解何时使用volatile以及何时不使用是非常重要的,以避免潜在的问题和性能下降。在多线程环境中,应该谨慎使用volatile,并使用其他同步机制来确保原子性操作。

    了解volatile的适用场景和限制可以帮助你更好地编写嵌入式系统代码,确保代码的可维护性和性能。

  • MBR+BIOS与GPT+UEFI启动系统的区别

    在计算机领域,启动系统是一项至关重要的功能。它决定了操作系统如何加载和运行,以及硬件和软件之间的交互方式。在这个教程中,我们将深入探讨MBR+BIOS和GPT+UEFI两种不同的启动系统,分析它们的区别以及各自的优势和劣势。无论你是计算机爱好者还是专业人士,了解这些知识都将对你的计算机操作和维护有所帮助。

    MBR+BIOS启动系统

    1. MBR(主引导记录)

    MBR是主引导记录的缩写,是一个位于硬盘的第一个扇区(通常为512字节)的特殊区域。它包含了启动计算机所需的信息,包括引导加载程序和分区表。MBR通常与传统的BIOS(基本输入/输出系统)一起使用。

    2. BIOS(基本输入/输出系统)

    BIOS是计算机上的固件,负责初始化硬件和加载操作系统。在MBR+BIOS系统中,计算机首先启动BIOS,然后BIOS读取MBR中的引导加载程序,该程序进一步加载操作系统。这种方式具有以下特点:

    • 32位地址空间:MBR+BIOS系统仅支持32位地址空间,因此在处理大容量硬盘时存在限制。
    • 主引导记录:MBR只能管理4个主分区,或者3个主分区和1个扩展分区,因此分区管理受限。
    • 有限的启动安全性:MBR启动系统对恶意软件攻击较为脆弱,因为它不具备安全启动功能。

    GPT+UEFI启动系统

    1. GPT(GUID分区表)

    GPT是GUID分区表的缩写,它是一种现代的分区表格式,用于管理硬盘上的分区信息。GPT使用全局唯一标识符(GUID)来标识分区,支持更大的硬盘容量和更多分区。它通常与UEFI(统一扩展固件接口)一起使用。

    2. UEFI(统一扩展固件接口)

    UEFI是一种现代的固件接口,取代了传统的BIOS。UEFI提供了更强大的启动和管理功能,支持64位地址空间,使计算机能够处理更大的硬盘和更多的内存。这种方式具有以下特点:

    • 安全启动:UEFI引入了安全启动功能,可以防止恶意软件在启动时加载。
    • 多操作系统支持:GPT+UEFI系统可以轻松支持多个操作系统,而不需要主引导记录的限制。
    • 更大的分区支持:GPT允许管理更多和更大容量的分区,适应了现代硬盘的需求。

    区别和优劣势对比

    1. 地址空间

    • MBR+BIOS:32位地址空间,有限制。
    • GPT+UEFI:64位地址空间,更大的硬盘和内存支持。

    2. 分区管理

    • MBR+BIOS:最多4个主分区或3个主分区+1个扩展分区,分区管理受限。
    • GPT+UEFI:支持更多的分区,适应现代硬盘需求。

    3. 启动安全性

    • MBR+BIOS:相对较弱的启动安全性,容易受到恶意软件攻击。
    • GPT+UEFI:支持安全启动,提高了启动系统的安全性。

    4. 操作系统支持

    • MBR+BIOS:有限的多操作系统支持。
    • GPT+UEFI:轻松支持多个操作系统,更灵活。

    结论

    MBR+BIOS和GPT+UEFI是两种不同的启动系统,各自具有自己的特点和优势。选择哪种启动系统取决于你的硬件需求和安全性要求。对于现代计算机和大容量硬盘,GPT+UEFI是更好的选择,它提供了更大的灵活性和安全性。

    了解这些区别和优劣势可以帮助你更好地管理和维护你的计算机系统,确保它在最佳状态下运行。

  • 创建Microsoft 365 E5 Renew Plus教程

    Microsoft 365 E5 Renew Plus是Microsoft 365 E5 Renew的升级版,提供了更多功能和灵活性。在本教程中,我们将详细介绍如何使用Microsoft 365 E5 Renew Plus,包括配置API权限、创建应用程序、以及查询续订剩余天数。让我们开始吧!

    步骤一:注册Azure应用程序

    1. 登录Azure管理中心,使用你的Microsoft 365 E5管理员账户。

    2. 在搜索栏中输入“应用注册”,然后点击进入应用注册页面。

    3. 点击“新注册”按钮,开始配置应用程序。

    4. 为应用程序取一个名称,选择可访问性选项中的最后一项,并且在重定向URL中暂时不填写,然后点击注册。

    5. 在应用程序注册成功后,点击“概述”选项卡,进入应用程序的概述页面。

    6. 点击“添加重定向URL”并配置重定向URL为“https://login.microsoftonline.com/common/oauth2/nativeclient”,然后点击保存

    7. 在默认客户端类型下,选择“是”,然后点击保存。

    步骤二:配置应用程序的API权限

    选择“委托的权限(用户登录)”类型的API

    1. 点击“API权限”-“添加权限”-“Microsoft Graph”。

    2. 选择“委托的权限”。

    3. 根据下面列出的API权限需求表,勾选所需的API权限,然后点击"添加权限"。

      • BookingsAppointment.ReadWrite.All
      • Calendars.Read
      • Contacts.Read
      • Directory.Read.All
      • Files.Read.All
      • Files.ReadWrite.All
      • Group.Read.All
      • Mail.Read
      • Mail.Send
      • MailboxSettings.Read
      • Notes.Read.All
      • People.Read.All
      • Presence.Read.All
      • Sites.Read.All
      • Tasks.ReadWrite
      • User.Read.All
    4. 最后点击“代表XXX授予管理员同意”,并选择“是”。

    选择“应用程序权限(非用户登录)”类型的API

    1. 点击“API权限”-“添加权限”-“Microsoft Graph”。

    2. 选择“应用程序权限”。

    3. 根据下面列出的API权限需求表,勾选所需的API权限,然后点击"添加权限"。

      • Calendars.Read
      • Contacts.Read
      • Directory.Read.All
      • Files.Read.All
      • Files.ReadWrite.All
      • Mail.Read
      • Mail.Send
      • MailboxSettings.Read
      • Notes.Read.All
      • Sites.Read.All
      • User.Read.All
    4. 最后点击“代表XXX授予管理员同意”,并选择“是”。

    创建客户端密码

    1. 点击“证书密码”-“新客户端密码”-“24个月”-“添加”。

    2. 在“值”列中的“复制”按钮,将该密码保存至电脑,这个值即为“客户端密码”,请立即保存,否则无法再次查看。

    步骤三:使用程序进行API调用

    1. 现在,你可以使用Microsoft 365 E5 Renew Plus程序进行API调用。

    2. 点击“开始运行”,然后选择添加账号。

    3. 根据你的需求,选择登录调用方式或非登录调用方式,然后填写相应的信息。

    4. 点击确定,开始运行程序。

    结束语

    使用Microsoft 365 E5 Renew Plus可以提高E5续订的概率,但请注意,续订操作具有一定的技术门槛,需要具备一定的自学能力。在使用过程中,请查阅帮助文档,遇到问题再发起提问。希望这个教程对你有所帮助!

  • 使用树莓派在ZeroTier和本地网络之间创建桥接

    你是否有一些家中的设备无法运行ZeroTier?你是否想要远程访问这些设备?你是否已经在使用ZeroTier?你可以使用一台小型Linux PC作为ZeroTier虚拟网络和物理网络之间的桥接设备。

    假设和要求

    在开始之前,请确保满足以下假设和要求:

    • 你正在在家庭网络上进行操作,并可以登录到你的路由器并找到DHCP设置。
    • 你有一个键盘、显示器和以太网电缆连接到你的树莓派。因为在配置过程中可能会破坏网络,导致无法远程连接,所以这些物理设备很重要。
    • 你对命令行和SSH有一定的了解。
    • 本教程将使用systemd networking。如果你对systemd有异议,你可能需要自行适应不同的Linux网络配置系统。
    • 我们在编写本文时使用的是树莓派2,但树莓派3或4也应该可以正常工作。任何运行基于Debian 10的发行版的设备都应该可以正常工作。不一定非要使用树莓派,但某些指令可能特定于Raspbian系统。

    准备信息

    在开始之前,请准备以下信息以在配置过程中使用:

    • 物理LAN子网
    • 物理LAN DHCP范围
    • ZeroTier自动分配范围
    • 默认网关IP地址(路由器)
    • 桥接IP地址(将静态分配)
    • 创建一个新的ZeroTier网络并获取其ID。保留旧网络以作为连接已使用ZeroTier的设备的备用方法。
    • DHCP范围和ZeroTier自动分配范围应该位于相同的子网中,但不重叠。你可能会基于已在你的路由器上配置的内容进行设置。

    以下是一个示例计划:

    • 物理LAN子网:192.168.192.0/24
    • 物理LAN DHCP范围:192.168.192.65到192.168.192.126
    • ZeroTier自动分配范围:192.168.192.129到192.168.192.190
    • 默认网关IP地址:192.168.192.1
    • 桥接IP地址:192.168.192.2/24(或使用DHCP)
    • ZeroTier网络ID:d5e04297a19bbd70

    步骤

    步骤1:使你的桥接设备运行起来

    首先,确保你的树莓派设备已经启动并运行。按照以下步骤进行操作:

    1. 遵循树莓派的安装指南,下载并安装操作系统。你可以使用以下版本:Raspbian Buster Lite

    2. 启用SSH以便远程登录到树莓派,详细说明请参考这里

    3. 使用SSH连接到树莓派,例如:

      ssh [email protected]

      或者

      ssh pi@<树莓派的IP地址>
    4. 更新操作系统:

      sudo apt update && sudo apt -y full-upgrade && sudo reboot
    5. 在重启后重新登录。

    步骤2:安装ZeroTier

    接下来,安装ZeroTier。请遵循Linux系统的安装指南,具体指南请参考这里。基本上,你可以运行以下命令:

    curl -s https://install.zerotier.com | sudo bash

    在安装完成后,设置一些shell变量以在后续配置中使用:

    NETWORK_ID=<你的网络ID>
    BR_IF="br0"
    BR_ADDR=<你的桥接地址>
    GW_ADDR=<你的网关地址>

    然后,加入ZeroTier网络:

    sudo zerotier-cli join $NETWORK_ID
    sudo zerotier-cli listnetworks

    我们不希望ZeroTier在$ZT_IF上管理地址或路由,我们会在下面的步骤中手动进行配置。

    sudo zerotier-cli set $NETWORK_ID allowManaged=0

    再设置一个变量,用于存储ZeroTier网络接口的名称,你可以从listnetworks输出中找到它,它通常会类似于:zt3jvirser。

    ZT_IF=<你的ZeroTier接口名称>

    步骤3:在my.zerotier.com上配置设备

    前往my.zerotier.com,找到你的ZeroTier网络($NETWORK_ID),然后在“Members”部分添加你的设备。打开高级设置的扳手图标,并选中以下选项:

    • 允许桥接
    • 不自动分配
    • 授权成员

    步骤4:切换到systemd networking

    现在,我们将切换到systemd networking。首先,删除已有的网络配置:

    sudo apt remove --purge --auto-remove dhcpcd5 fake-hwclock ifupdown isc-dhcp-client isc-dhcp-common openresolv

    然后,启用systemd-networkd:

    sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf;
    sudo systemctl enable systemd-networkd;
    sudo systemctl enable systemd-resolved;
    sudo systemctl enable systemd-timesyncd;

    接下来,配置网络接口。我们将在下面的步骤中创建网络配置文件。以下是示例配置文件:

    cat << EOF | sudo tee /etc/systemd/network/25-bridge-br0.network
    [Match]
    Name=$BR_IF
    
    [Network]
    Address=$BR_ADDR
    Gateway=$GW_ADDR
    DNS=1.1.1.1
    EOF
    
    cat << EOF | sudo tee /etc/systemd/network/br0.netdev
    [NetDev]
    Name=$BR_IF
    Kind=bridge
    EOF
    
    cat << EOF | sudo tee /etc/systemd/network/25-bridge-br0-zt.network
    [Match]
    Name=$ZT_IF
    
    [Network]
    Bridge=$BR_IF
    EOF
    
    cat << EOF | sudo tee /etc/systemd/network/25-bridge-br0-en.network   
    [Match]
    Name=eth0 # 可能是en*
    
    [Network]
    Bridge=$BR_IF
    EOF

    完成配置后,请检查网络配置文件:

    tail -n+0 /etc/systemd/network/*

    如果需要,使用你喜欢的文本编辑器编辑这些文件。如果一切看起来正常,重新启动树莓派以应用配置:

    sudo reboot

    你现在应该能够从物理LAN连接到树莓派,使用$BR_ADDR作为目标地址。

    如果在启动过程中等待网络连接时间较长,有时物理接口可能会出现长的“可预测接口名称”,例如“enb827eb0d4176”,有时只是“eth0”,这取决于Raspbian版本。如果出现这种情况,请连接键盘和显示器,并检查/etc/systemd/network/25-bridge-br0-en.network以匹配接口名称。

    步骤5:配置ZeroTier网络

    前往my.zerotier.com/network/$NETWORK_ID,然后在“设置” -> “Advanced”中进行以下配置:

    • 删除默认的Managed Route,添加新的Managed Route $ZT_ROUTE
    • 将IPv4自动分配更改为Advanced,
    • 删除现有的Pool,创建新的Pool,其范围从$ZT_POOL开始和结束。

    为了文档记录,将$BR_ADDR分配给ZeroTier桥接成员。

    结论

    至此,你已经成功创建了一个树莓派桥接设备,用于将ZeroTier虚拟网络和物理网络连接起来。你可以从物理LAN连接到树莓派,并通过它访问ZeroTier网络中的设备。

    如果一切正常,你应该能够在一分钟后通过$BR_ADDR重新使用SSH连接到树莓派。如果有任何问题,树莓派不再在网络上,你需要使用键盘和显示器来查找问题。

    希望这个教程能够帮助你成功创建一个ZeroTier和本地网络之间的桥接,以便更轻松地管理和访问你的设备。

  • 在ZeroTier和物理网络之间进行路由设置

    在网络管理中,有时需要在ZeroTier虚拟网络和物理网络之间进行路由设置,以便实现远程访问你的局域网(LAN)。本教程将介绍一种简单的模式,可以帮助你实现这一目标,而不需要访问LAN的路由器或遇到桥接的一些问题。这个模式需要在你的LAN上运行Linux PC或虚拟机,以及运行iptables的设备,如树莓派。本教程将指导你进行NAT/Masquerade设置,以便在ZeroTier和物理网络之间进行路由。

    请注意,如果你的路由器支持运行ZeroTier,那么最好使用路由器厂商提供的ZeroTier包,而不是使用本文的方法。许多路由器厂商和操作系统都提供了ZeroTier包。

    可能的缺点

    在使用这种方法时,可能会遇到一些限制,包括:

    • 不能在不同网络之间进行广播/多播(但移动操作系统通常也不允许这样做)。
    • 不能从LAN主动连接到外部ZeroTier客户端。

    摘要

    下面是在ZeroTier和物理网络之间进行路由设置的摘要步骤:

    1. 安装ZeroTier。
    2. 添加管理路由到ZeroTier网络(在my.zerotier.com上进行)。
    3. 启用IP转发。
    4. 配置iptables。

    所需信息

    在开始之前,请收集以下所需信息,以便在配置过程中使用:

    • ZeroTier网络ID($NETWORK_ID)
    • ZeroTier接口名称($ZT_IFACE)
    • 物理接口名称($PHY_IFACE)
    • ZeroTier子网
    • 物理子网($PHY_SUB)
    • ZeroTier路由器的IP地址($ZT_ADDR)

    步骤

    步骤1:安装ZeroTier

    首先,安装ZeroTier。你可以从ZeroTier的官方网站下载安装程序并进行安装。安装完成后,运行以下命令以加入ZeroTier网络,并在my.zerotier.com上进行授权:

    sudo zerotier-cli join $NETWORK_ID
    sudo zerotier-cli listnetworks 

    步骤2:配置ZeroTier管理路由

    登录到my.zerotier.com,找到你的ZeroTier网络($NETWORK_ID),然后在“设置”中添加管理路由。管理路由会自动添加到所有加入该ZeroTier网络的设备上。配置管理路由时,请确保目标设置如下:

    • 目标:$PHY_SUB
    • 通过:$ZT_ADDR

    例如:

    • 目标:192.168.100.0/23
    • 通过:172.27.0.1

    请注意,目标路由应设置为略大于实际物理子网的范围,以便既在物理网络上又在ZeroTier网络上的设备优先选择物理连接。

    步骤3:启用IP转发

    启用IP转发的方法可能因Linux发行版而异,但通常包括以下步骤:

    编辑/etc/sysctl.conf文件,取消注释net.ipv4.ip_forward以在启动时启用转发。

    立即启用IP转发,运行以下命令:

    sudo sysctl -w net.ipv4.ip_forward=1

    步骤4:配置iptables

    在进行iptables配置之前,请分配一些shell变量以便在命令中使用。个性化这些变量以匹配你的网络设置:

    PHY_IFACE=eth0
    ZT_IFACE=zt7nnig26

    然后,添加iptables规则以进行NAT设置和数据包转发:

    sudo iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE
    sudo iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
    sudo iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT

    最后,保存iptables规则以便在下次启动时生效:

    sudo apt install iptables-persistent
    sudo bash -c iptables-save > /etc/iptables/rules.v4

    步骤5:测试

    现在,你已经完成了路由设置。可以通过以下步骤测试它是否正常工作:

    1. 关闭手机上的Wi-Fi。
    2. 将手机连接到ZeroTier网络并进行授权。
    3. 尝试访问物理LAN上的某些内容。

    结论

    通过本教程,你学会了如何在ZeroTier虚拟网络和物理网络之间进行路由设置,以实现远程访问你的LAN。这个模式可以在不访问LAN路由器的情况下实现,同时避免了一些桥接引发的问题。

    希望这个教程对你有所帮助。如果你有任何其他问题或需要更多的帮助,请随时联系我们。祝你成功配置你的ZeroTier网络!

  • ZeroTier命令行界面(zerotier-cli):网络管理与配置

    ZeroTier是一个强大的网络虚拟化工具,它可以帮助你轻松管理和配置虚拟网络。虽然在Mac和Windows平台上有图形界面,但在所有平台上都可以使用zerotier-cli命令行界面来执行各种任务,包括加入和离开网络以及检查zerotier-one服务的状态。本教程将介绍如何使用zerotier-cli进行网络管理和配置。

    获取ZeroTier地址和检查服务状态

    首先,你可以使用以下命令获取你的ZeroTier地址并检查服务状态:

    zerotier-cli status

    这个命令会返回类似以下的信息:

    200 info 998765f00d 1.2.13 ONLINE

    这表示你的ZeroTier服务处于在线状态,同时提供了你的ZeroTier地址。

    加入、离开和列出网络

    你可以使用zerotier-cli命令来加入、离开和列出网络。请记住,ZeroTier网络由类似于8056c2e21c000001的16位ID标识。

    要加入网络,使用以下命令,将################替换为网络的ID:

    zerotier-cli join ################

    要离开网络,使用以下命令,同样替换################为网络的ID:

    zerotier-cli leave ################

    要列出网络,使用以下命令:

    zerotier-cli listnetworks

    这将返回类似以下的信息:

    200 listnetworks 8056c2e21c000001 earth.zerotier.net 02:99:35:84:f9:dc OK PUBLIC 29.152.27.109/7

    这表示你已经成功连接到该网络。

    请求配置

    如果你的连接需要与网络控制器协商,可能需要一分钟左右。如果协商时间太长,可以参考路由器配置技巧以解决问题。

    常见错误和解决方法

    在使用zerotier-cli时,可能会遇到一些常见错误,以下是一些常见错误和解决方法:

    • Not Found – Typo in the Network ID?:这个错误可能是由于网络ID拼写错误引起的,请仔细检查并确保输入正确的网络ID。

    • Access Denied – You node needs to be Authorized on this network (via my.zerotier.com). Talk to you friendly network administrator.:如果你收到这个错误,说明你的节点需要在该网络上授权。请与网络管理员联系以获得授权。

    • Port Error – Something went wrong with the ZeroTier installer. PORT_ERROR on Mac – On Linux, make sure the tun driver is loaded.:这些错误可能是由于ZeroTier安装程序出现问题引起的。请检查安装程序并确保一切正常。

    • missing authentication token and authtoken.secret not found (or readable):如果你收到这个错误消息,可能是因为你尝试从非管理员帐户运行zerotier-cli。在macOS、Linux或其他基于Unix的系统上,请使用sudo zerotier-cli。在Windows上,请使用管理员命令提示符。

    收集调试信息

    如果你需要向支持团队提供调试信息,可以使用以下命令生成调试输出:

    zerotier-cli dump

    这个命令将在你的桌面上创建一个文件,其中包含有关你的设备和ZeroTier的信息。请注意,其中的一些信息可能被视为私人信息,因此请谨慎在公共场合发布。

    结论

    通过本教程,你已经学会了如何使用zerotier-cli命令行界面来管理和配置ZeroTier网络。这个工具可以帮助你更灵活地控制你的虚拟网络,确保它满足你的需求。

    希望这个教程对你有所帮助。如果你有任何其他问题或需要更多的帮助,请随时联系我们。祝你在使用ZeroTier时取得出色的结果!

  • ZeroTier路由器配置技巧:优化网络连接

    ZeroTier被设计用于在尽可能多的环境中工作。我们提供多层备用方案,以确保即使在最受限制或故障的物理网络下,也能实现某种程度的连接性。但是,“某种程度的连接性”并不意味着“最佳连接性”。本页面将详细介绍我们推荐的物理网络配置,以获得最佳效果。

    问题描述

    在使用ZeroTier时,如果你的网络配置不友好,可能会导致大部分ZeroTier流量通过中继间接传输,从而降低速度。其他设置,比如“本地隔离”,也可能对性能产生显著干扰,强制本地流量在互联网上进行传输。

    解决方法

    1. 更新所有节点至最新版本

    确保你的所有节点都已更新到最新版本,以确保你使用的是最新的功能和性能优化。

    2. 推荐的本地网络和Internet网关配置

    以下是一些推荐的本地网络和Internet网关配置,这些配置适用于大多数典型的部署情况:

    • 不要限制出站UDP流量。
    • 在你的网络上支持UPnP或NAT-PMP可以极大地提高性能,允许ZeroTier端点映射外部端口,从而避免NAT遍历。
    • 如果双方都支持IPv6,建议使用IPv6,它可以极大地提高直接连接的可靠性。如果存在IPv6,应该在没有NAT的情况下实现(IPv6与NAT完全不必要,只会增加复杂性),并配备有允许双向UDP会话的有状态防火墙。
    • 不要使用“对称”NAT。使用“全锥形”或“端口限制锥形”NAT。对称NAT对点对点流量非常不友好,会降低VoIP、视频聊天、游戏、WebRTC以及ZeroTier等许多协议的性能。

    3. 多重NAT层次

    在ZeroTier端点和互联网之间不应该存在多重NAT层次。多层NAT会引入连接不稳定性,因为不同层次的状态和行为之间会发生混乱的相互作用。不要使用双重NAT。

    4. NAT端口映射和连接超时

    NAT应该具有不短于60秒的端口映射或连接超时时间,以确保每个设备都可以映射足够数量的端口。

    5. 允许本地设备间的直接流量

    交换机和无线接入点应该允许本地设备之间的直接本地流量。关闭任何“本地隔离”功能。一些交换机可能允许更精细的控制,在这些设备上,只需允许本地UDP流量在9993端口上进行。

    6. ZeroTier使用的端口

    ZeroTier监听三个UDP端口:

    • 9993 – 默认端口
    • 从你的ZeroTier地址派生的一个随机高端口号
    • 用于UPnP/NAT-PMP映射的一个随机高端口号

    这意味着你的对等方可以在任何端口上监听。为了直接与它们通信,你需要能够发送到任何端口。

    7. 是否需要在路由器中转发端口?

    不需要。让ZeroTier和UPnP、NAT-PMP和IPv6自动处理端口转发。

    8. 系统防火墙和安全软件

    如果你的计算机有本地防火墙,请允许与UDP端口9993的流量进出。某些情况下(比如Windows内置防火墙),如果使用我们的安装包之一安装,ZeroTier会自动执行此操作。在其他情况下,比如Linux iptables,我们将此任务留给用户,因为有太多的变化,我们不想尝试手动修改用户设置以避免意外损坏。

    一些系统可能还有安全软件,只允许特定应用程序与互联网通信。在这种情况下,你可能需要找到ZeroTier服务二进制文件并进行授权。

    最后,需要注意的是,ZeroTier One的虚拟网络端口对于你的系统就像正常的LAN或WiFi端口一样,并受到本地防火墙规则的约束。如果一切看起来正常但你无法访问本地服务,比如SSH或HTTP,请检查本地防火墙规则,确保允许虚拟网络本身上的所需流量。

    9. 如何判断我的设备是否在中继?

    查看ZeroTier Central的网络成员列表。如果一个成员没有列出物理IP,那么它可能在进行中继。

    如果你熟悉命令行,可以尝试使用以下命令行界面:zerotier-cli命令(可能需要管理员/超级用户权限):

    • zerotier-cli info -j:是否为“tcpFallbackActive” true?TCP回退是中继的最慢形式,是最后的手段。
    • zerotier-cli listpeers:查找你要通信的设备的节点ID ,并查看下是否列出了IP地址。如果没有IP地址,则正在进行中继。

    结论

    通过本教程,你已经学会了如何配置路由器以优化ZeroTier网络连接,确保你能够获得最佳性能。这些配置和技巧将有助于你解决ZeroTier网络中的连接问题,使其更加稳定和高效。

    希望这个教程对你有所帮助。如果你有任何其他问题或需要更多的帮助,请随时联系我们。祝你在使用ZeroTier时取得出色的结果!