排查 SSH 客户端无法绑定转发端口的问题(Windows)

问题现象

在 Windows 10 中,使用 Bitvise SSH Client 配置本地代理转发端口(127.0.0.1:10800)时失败,报错:

Could not enable SOCKS/HTTP proxy forwarding on 127.0.0.1:10800: Address is already in use; bind() failed: Windows error 10013

排查步骤与命令记录

1. 检查是否有进程监听 10800(无结果)
# PowerShell 方式
Get-NetTCPConnection -LocalPort 10800 | Select-Object OwningProcess

# 或使用 netstat(CMD/PowerShell 均可)
netstat -ano | findstr :10800

→ 无输出,说明没有常规 TCP 监听。

2. 检查是否有隐藏的端口转发规则
netsh interface portproxy show all

→ 无输出,排除 portproxy 占用。

3. 使用 Process Explorer 深度扫描(GUI 工具)
  • 下载 Process Explorer
  • 以管理员身份运行 → Ctrl+F → 搜索 10800
    → 未发现任何句柄或线程绑定。
4. 关键一步:检查 Windows “排除端口范围”
netsh int ipv4 show excludedportrange protocol=tcp

输出示例(问题存在时):

开始端口    结束端口
----------    --------
     10745       10844   ← 10800 被包含在此区间!
     10845       10944
     ...

结论:端口 10800 被 Windows NAT 服务动态保留,普通程序无法绑定。


解决方案:重启 winnat 服务重置端口预留

适用于个人开发机,不影响日常使用。若使用 WSL2/Docker,操作后可能需重启相关服务。

# 以管理员身份运行 PowerShell

# 停止 Windows NAT Driver
net stop winnat

# 启动 Windows NAT Driver(会重建排除范围,通常大幅缩小)
net start winnat
验证是否生效:
netsh int ipv4 show excludedportrange protocol=tcp

正常输出(问题解决后):

开始端口    结束端口
----------    --------
        80          80
      5357        5357
     50000       50059     *

10745–11144 的“端口块” 范围已消失,这样所需的 10800 就可用了!


验证
  1. 重新连接 SSH,并启用本地代理转发到 127.0.0.1:10800
  2. 成功启动,无报错!

总结

问题根源Windows 自动将一些 端口段 加入“排除端口范围”
表象报“Address already in use”,但 netstat 查不到
核心命令netsh int ipv4 show excludedportrange protocol=tcp
快速修复net stop winnat && net start winnat

(Qwen3-Max 帮助整理文档与格式)

根域名(Root Zone)与 顶级域名(Top-Level Domain, TLD)的 DNS 解析

顶级域名

例如:.nl顶级域名(Top-Level Domain, 简称 TLD)。


✅ 详细解释:

🌐 什么是顶级域名(TLD)?

顶级域名是域名系统(DNS)中最高层级的域名之一,位于根域之下。它通常表示一个国家、地区或类别。

例如:

  • .com.org.net → 通用顶级域名(gTLD)
  • .cn(中国)、.uk(英国)、.de(德国)→ 国家代码顶级域名(ccTLD)
  • .nl(荷兰)→ 也是 国家代码顶级域名(country code Top-Level Domain, ccTLD)

.nl 中的 nl 是“Netherlands”(荷兰)的国家代码。


❌ 为什么不是“根域名”?

  • 根域名(Root Zone)指的是 DNS 层级中的最顶层,用一个空标签或点表示(即 .),比如 example.com. 后面的那个点。
  • 根域名本身不直接供公众注册使用,它管理所有顶级域名(如 .com, .org, .nl 等)。
  • 所有 TLD 都隶属于根域名之下。

📚 域名层级示例:www.example.nl

.        ← 根域名(Root)
└── nl   ← 顶级域名(TLD,国家代码)
    └── example  ← 二级域名(由 .nl 注册局管理)
        └── www  ← 主机名(子域名)

✅ 总结

名称类型说明
.nl顶级域名(TLD)荷兰的国家代码顶级域名(ccTLD)
.根域名DNS 最顶层,不可注册

👉 所以答案是:.nl顶级域名,不是根域名。


反过来理解

域名从解析层面来讲是反过来的:
. 根域名(Root)) → nl 顶级域名(TLD,国家代码) → example 二级域名(由 .nl 注册局管理) → www 主机名(子域名)

这个点 “ . ”非常重要,它就是根(Root)

是的,非常正确!👏

DNS 解析的查询过程 来讲,域名确实是 “反过来”逐级查找的,即从根开始,向下一级一级递归解析。你描述的方向完全符合 DNS 的实际工作原理。


✅ 正确的 DNS 解析顺序(由根向叶子):

以访问 www.example.nl 为例,DNS 解析流程如下:

Step 1: 询问根域名服务器(Root Servers)
        "谁管理 .nl 域?"
        ↓
Step 2: 根服务器回复:
        "去找负责 .nl 的顶级域名服务器(TLD nameservers)"
        ↓
Step 3: 询问 .nl 的 TLD 域名服务器
        "谁管理 example.nl?"
        ↓
Step 4: .nl 注册局的服务器回复:
        "去找 example.nl 的权威域名服务器(Authoritative Nameservers)"
        ↓
Step 5: 询问 example.nl 的权威服务器
        "www.example.nl 的 IP 是什么?"
        ↓
Step 6: 权威服务器返回:
        "www.example.nl 的 IP 是 93.184.216.34"

🌐 所以从逻辑结构上看:

虽然我们写域名是:
👉 www.example.nl (从左到右)

但在 DNS 层级和解析路径中,它是:
👉 . → .nl → example.nl → www.example.nl
也就是从 右到左从根到叶 的树状结构。

.
└── nl                          ← TLD(顶级域名),由荷兰 SIDN 管理
    └── example                 ← 二级域名(注册者购买)
        └── www                 ← 子域名 / 主机名

🔁 因此:书写顺序是从左到右,但解析顺序是从右到左,自顶向下。


🧠 类比理解

就像文件路径:

  • Windows: C:\Users\Alice\Documents\file.txt
  • Linux: /home/alice/docs/file.txt

路径是从根 / 开始,逐级进入子目录。同样地,DNS 域名也是从根 . 开始,逐级进入更具体的域。


✅ 总结

说法是否正确说明
.nl 是顶级域名荷兰的国家代码顶级域名(ccTLD)
根域名是 .DNS 层级的最顶层
域名解析是从根开始,逐级向下即:..nlexample.nlwww.example.nl
写作顺序与解析路径相反我们从左写到右,但系统从右查到左

✅ 所以你的理解完全正确:

DNS 解析是从根域名开始,一步步“向下”查找,直到找到最终主机名的 IP 地址。

这正是互联网域名系统设计的核心机制 —— 分层、分布式、可扩展。

设置XFCE4 桌面不自启动(默认进入命令行模式)

在 Debian 系统下,让 XFCE4 桌面不自启动(默认进入命令行模式),但需要时仍能手动启动它,可以通过以下方法实现:


方法 1:修改默认运行级别(推荐)

修改 systemd 目标(target),使系统默认启动到 多用户命令行模式(multi-user.target,需要时再手动启动 graphical.target(图形界面)。

步骤:

  1. 禁用图形界面自启动
   sudo systemctl set-default multi-user.target

(这会修改 /etc/systemd/system/default.target 链接)

  1. 需要时手动启动 XFCE4 桌面
   sudo systemctl start graphical.target

(或直接启动 lightdm 显示管理器)

   sudo systemctl start lightdm
  1. 恢复默认图形界面启动(可选):
   sudo systemctl set-default graphical.target

方法 2:禁用 LightDM 自动登录

如果系统使用 LightDM 作为显示管理器,可以修改其配置,使其不自动登录 XFCE4。

步骤:

  1. 编辑 /etc/lightdm/lightdm.conf
   sudo nano /etc/lightdm/lightdm.conf

修改以下内容:

   [Seat:*]
   autologin-user=  # 留空
   autologin-user-timeout=0
  1. 重启 LightDM
   sudo systemctl restart lightdm

(系统启动后会停留在登录界面,手动选择 XFCE4 登录)


方法 3:修改 GRUB 启动参数

在 GRUB 引导时手动选择是否进入图形界面。

步骤:

  1. 编辑 /etc/default/grub
   sudo nano /etc/default/grub

修改 GRUB_CMDLINE_LINUX_DEFAULT 行:

   GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

改为:

   GRUB_CMDLINE_LINUX_DEFAULT="quiet splash text"  # 默认进入文本模式

或:

   GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"  # 默认进入图形界面
  1. 更新 GRUB 配置
   sudo update-grub
  1. 重启后,在 GRUB 菜单选择 Advanced options,手动选择 multi-user.targetgraphical.target

方法 4:直接禁用 XFCE4 会话

如果只想临时关闭 XFCE4,但不影响系统默认行为,可以:

pkill xfce4-session  # 直接关闭 XFCE4

或:

systemctl isolate multi-user.target  # 切换到命令行模式

总结

方法适用场景优点缺点
systemctl set-default multi-user.target长期禁用图形界面最干净,不影响系统服务需要手动 start graphical.target
修改 LightDM 配置防止自动登录可保留图形界面仍需选择 XFCE4 登录
修改 GRUB 参数临时切换灵活需重启生效
pkill xfce4-session临时关闭立即生效重启后恢复

推荐使用 方法 1(修改默认运行级别),既保证系统启动高效,又能在需要时手动启动 XFCE4。

使用 hping 时报错的处理

Linux中使用Nmap , hping, ping 提示以下错误时

PHP: [main]	can't	open	raw	socket

Bash: Couldn’t open a raw socket. Error: Permission denied (13)

非root进程调用带有网络原始套接字(raw socket) 的相关命令时,会报错,需要使用getcap 设置 capabilities

(具体参考:https://cloud.tencent.com/developer/article/1539041)

# 以 ping 为例,先 which 查看命令地址
which ping

# 如无返回就是没有设置cap
getcap /usr/bin/ping

# 设置cap
sudo setcap cap_net_raw+ep /usr/bin/ping

# 再次getcap 已有设置值
getcap /usr/bin/ping
#/usr/bin/ping cap_net_raw=ep

setcap 之后问题就解决了。

中国网络出口、海陆光缆相关汇总

中国运营商海陆光缆的布局、挑战与破局

https://www.eet-china.com/mp/a204489.html

海底光缆(下称“海缆”)和陆地光缆(下称“陆缆”),是当今全球网络通信的重要基础设施。

它们不仅代表一个国家的通信发展水平,还影响着科教能力、经济发展和民生福祉,甚至安全层面

既然海陆缆于一国而言具有如此重要的意义,那么,中国运营商在海外有哪些布局?当前面临着什么挑战?如何破局?


本期,笔者将带着这些问题,为您做一个分享。

█ 海陆缆简介

关于海陆缆的特点,笔者之前在《海缆通信 VS 陆缆通信》一文中作过详细介绍,总结起来,有以下四个方面。

● 带宽容量:一般而言,海缆的容量比陆缆更大。

● 网络时延:海缆与陆缆的时延各有千秋,取决于具体的物理路由。

● 运行稳定性:海缆要么正常,要么中断,修复起来慢;陆缆中断的情况较少,但抖动(倒换)可能较多。

● 市场价格:对于中长距离的国际传输,一般情况下陆缆的价格要高于海缆。

█ 我国海陆缆的特点

我国国际海陆缆发展的特点是:起步较晚,发展较快,瓶颈较多。

1、起步较晚

世界上第一条光缆,是 1988 年美国与英国、法国之间铺设的大西洋海底光缆(TAT-8),全长 6700 公里。

这条光缆含有 3 对光纤,每对的传输速率为 280 Mbps,中继站距离为 67 公里。大西洋海底光缆的建成,标志着海底光缆时代的到来。

我国直至 1993 年底,才开通第一条海底光缆——中日海底光缆。中日海底光缆从上海南汇至日本九州宫崎,全长 1252 公里,通信总容量达 7560 条通话电路。中日海底光缆的开通,使得当时中国国际通信能力增长 80% 以上,标志着中国从此向互联网进军。

中日海底光缆成功登陆,引用自互联网公开信息

2、发展较快

在国际海缆方面,根据中国信通院发布的信息,经过多年的建设,目前在中国大陆登陆的国际海缆共有 9 条,中国运营商在登陆海缆上现有带宽超过 40 Tbps 的带宽,并且这一数字还在不断增长,具体如下。

在中国大陆登陆的海缆(引用自中国信通院发布的《中国国际光缆互联互通白皮书》)

在跨境陆缆方面,中国更是取得了长足的进步。通过跨境陆缆,中国已经建成了连接周边国家、通达欧洲的陆地光缆网络架构,系统带宽超过 70 Tbps,具体如下。

中国跨境陆缆统计表(引用自中国信通院发布的《中国国际光缆互联互通白皮书》)

3、瓶颈较多

然而,尽管近年来中国运营商在国际海陆缆建设方面发展较快,但相比一些发达国家,仍然存在较大差距和诸多不足,具体有以下几个方面。

● “马六甲困境”

目前几乎所有从中国去往中东、欧洲或非洲地区的海缆,均需要途经马六甲海峡,由于某些因素,万一马六甲海峡局势有变化,这必然会影响中国与世界的通信,进而波及中国“一带一路”发展战略的推进。

图:中国海缆通信的“马六甲困境”

● 美国无法上岸

目前,中国运营商投资建设了一些在美国登陆的海缆,并拥有一定的带宽权益,例如 TPE、FASTER 和 NCP 等。而随着中国电信、中国联通的 “214 牌照”于 2021 年和 2022 年相继被美国吊销,导致中国运营商的海缆资源将无法在美国上岸,而面临被动局面。

注:“214 牌照”,是指根据美国通信法(1934 年版及 1996 年修订版)第 214 条规定,取得的 FCC 颁发的国际电信业务授权——在美国与外国之间提供国际公共运营商通信服务。

● 非洲存量为零

非洲作为中国“一带一路”战略的重要区域,聚集了大量的中资企业。这些企业背靠强大的祖国,在非洲投资、建设与生产,不少已经扎根非洲。然而,非洲相对落后的通信基础设施,将日益成为中资企业进一步发展的瓶颈。

据了解,当前非洲国家之间主要依靠海缆进行通信(陆缆资源发展落后),而可选的只有 SAT-3/WASC、EASSy 和 ACE 等寥寥数条由欧洲运营商主导建设的海缆,且价格昂贵。这客观上制约了中国运营商在当地的网络服务能力。

█ 未来动向

可喜的是,面对上述发展的困境,中国运营商背靠强大的祖国,在海陆缆发展方面进行了前瞻性的战略布局,并取得了重要积极的进展。

1.打通中巴陆缆——冲破“马六甲困境”

首先是中国电信于 2018 年率先开通中国-巴基斯坦首条跨境陆地光缆系统(下称“中巴光缆系统”),这标志着中巴两国通信网络基础设施互联互通建设取得重大进展。

中巴光缆系统,引用自《中国电信建成开通中国-巴基斯坦首条跨境陆地光缆》

中巴光缆系统只是一个开始,随着中巴两国战略合作的进一步深入,相信在不久的将来,中巴光缆将有望从伊斯兰堡延伸至港口城市卡拉奇,并与卡拉奇海缆对接。如此一来,海缆通信的“马六甲困境”将迎刃而解,对中国的战略意义不言而喻。

中巴光缆系统(图中橙色实线),及其延伸段(图中橙色虚线)

2.投资建设 2Africa 海缆——强化非洲网络覆盖能力

非洲人口众多,市场广阔,发展潜力巨大,是中国“一带一路”发展战略的重要阵地,然而,通信基础设施落后也是许多非洲国家在经济发展中绕不开的问题。

为了更好地助力中资企业出海,增强中国在非洲乃至全球的影响力,中国移动于 2020 年,投资建设 2Africa 海缆系统。

2Africa 海缆(含中东 PEARLS 分支)全长45000 公里,预计于 2023 年末建成投产,届时将是世界上人最长的海底光缆系统,覆盖超过全球超过三分之一的人口。

2Africa 海缆,引用自《2Africa to become world’s longest subsea cable post Arabian, Asian expansion》

3.积极拓展中越、中泰、中缅和中老等方向的对接

中国人西南邻国众多,与中国的经济、政治和文化联系紧密。在“睦邻友好、和平发展”方针下,近年来中国运营商正积极与越南、泰国、缅甸和老挝等国进行陆网方面的合作。

根据公开资料显示,目前中国电信已建成中老泰陆缆系统,中国移动也已打通中越、中泰等方向的陆缆通信信道。

向西南方向的陆缆拓展,一方面加强了中国与东南亚国家的联系,另一方面也是为信息出海方向提供更多的选择性。

中国电信中老泰陆缆,引用自《中国电信成功开通中老泰陆缆》

信息化是智能制造的前提,而海陆缆则是信息化的重要基础设施。伴随着中国“一带一路”发展战略的推进,接下来我们将在全球海陆缆建设中看到更多的中国身影和中国元素。

https://www.submarinenetworks.com/zh/zx/hll/20220512

中国移动国际、中国联通国际等携手华海通信 共同宣布建设SEA-H2X国际海缆 使能亚洲互联新时代

2022年5月12日,【天津,中国】—— 中国移动国际有限公司(CMI)、中国联通国际有限公司(CUG)、Converge Information and Communications Technology Solutions, Inc.(Converge)以及PPTEL SEA H2X Sdn. Bhd(PPTEL SEA H2X)近日宣布计划合作铺设SEA-H2X国际海缆系统,为亚洲及全球数字化转型扩容提速。SEA-H2X将连接中国海南、中国香港、菲律宾、泰国、马来西亚及新加坡等地,进一步可延伸至越南、柬埔寨以及印度尼西亚,建成后将极大提升亚洲区域内的网络连接性。SEA-H2X由国际海缆联盟成员共同运营,由华海通信技术有限公司(HMN Tech)承建。

SEA-H2X国际海缆全长将超过5,000公里,采用高规格光纤布线,其设计容量高达160 Tbps,新加坡和中国香港两地间线路将采用至少8对光纤部署。SEA-H2X海缆计划于2024年投入使用,届时将有效满足亚洲地区对网络带宽和高速连接日益增长的需求,助力共建5G演进的网络新生态,为全球数字经济蓬勃发展提供更大助推力。

SEA-H2X海缆系统由华海通信提供海缆系统的端到端解决方案,包含海缆系统及水上水下设备的设计、生产、建设和施工。该系统应用了先进的 Open Cable技术,使其可灵活地选择最优的海底线路终端设备(SLTE),达到传输能力最大化。此外,该项目还应用了全球领先的海底线路分支器(BU)和海底线路动态光分插复用器(ROADM)将为SEA-H2X海缆系统提供超高的可靠性和光电线路的高灵活性。

路由图:

https://www.submarinenetworks.com/zh/zx/hll/peace-20180829

https://www.submarinenetworks.com/zh/zx/hll/20211020

https://www.submarinenetworks.com/zh/zx/hll/2018102201

PEACE国际海缆网络系统有限公司(亨通集团子公司)和华为海洋网络有限公司今日联合宣布,PEACE海缆项目进入海缆和设备生产环节。该海缆项目全程12,000公里,将连接亚洲、非洲和欧洲,并计划在2020年第一季度提供商用服务。


https://www.submarinenetworks.com/en/stations/asia/china

China

现在有以下海底电缆登陆中国大陆:

通往美国的电缆:

  • China-US CN (retired)
  • TPE
  • NCP

连接亚洲的电缆:

  • APCN-2
  • APG
  • EAC-C2C
  • SJC
  • SJC2 (2021)
  • TSE-1
  • Xiamen-Jinmen
  • Hainan to Hong Kong Express (H2HE)

通往非洲和欧洲的电缆:

  • FLAG Europe-Asia
  • SMW3

这些电缆降落在中国的 9 个海底电缆登陆站。

中国电信拥有三个光缆登陆站,包括

中国联通拥有四个电缆登陆站,包括:

中国移动拥有两个电缆登陆站:

  • Lingang Cable Landing Station for NCP and SJC2;
  • Wenchang Cable Landing Station for Hainan to Hong Kong Express (H2HE)

Debian 安装 .NET 的汇总

1.APT 安装

使用 APT 进行安装可通过几个命令来完成。 安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加包存储库。

打开终端并运行以下命令:

Bash复制

wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

安装 SDK

.NET SDK 使你可以通过 .NET 开发应用。 如果安装 .NET SDK,则无需安装相应的运行时。 若要安装 .NET SDK,请运行以下命令:

Bash复制

sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-8.0

2.脚本安装

dotnet-install 脚本用于 SDK 和运行时的自动化和非管理员安装。

Bash复制

wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
chmod +x ./dotnet-install.sh
./dotnet-install.sh --version latest

有关详细信息,请参阅 dotnet-install 脚本参考

若要在命令行上启用 .NET,请参阅设置系统范围的环境变量

在 shell 配置文件中设置以下两个环境变量:

手动安装 .NET 不会添加系统范围的环境变量,并且通常仅适用于安装 .NET 的会话。 应为操作系统设置两个环境变量:

  • DOTNET_ROOT此变量设置为 .NET 安装到的文件夹,例如 $HOME/.dotnet(对于 Linux 和 macOS )和 PowerShell 中的 $HOME\.dotnet(对于 Windows)。
  • PATH此变量应同时包含 DOTNET_ROOT 文件夹和用户的 .dotnet/tools 文件夹。 通常,在 Linux 和 macOS 上为 $HOME/.dotnet/tools,在 Windows 上为 PowerShell 中的 $HOME\.dotnet\tools

 提示

对于 Linux 和 macOS,请使用 echo 命令在 shell 配置文件中设置变量,例如 .bashrc:

Bash复制

echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc
echo 'export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools' >> ~/.bashrc

问题处理:bash: dotnet: command not found

某些情况下,当使用APT安装完成之后,dotnet --info 显示 命令没有找到!使用ll查看 “/usr/bin/dotnet” 链接 指向 “/usr/share/dotnet/dotnet”,但是/usr/share/dotnet/dotnet中并没有dotnet文件。

ll /usr/bin/dotnet
lrwxrwxrwx 1 root root 24 Dec 28 19:22 /usr/bin/dotnet -> /usr/share/dotnet/dotnet

发现APT安装时缺少文件,产生的文件数量不完整。

处理方法:先使用安装脚本安装到 “.dotnet/”文件夹下,拷贝文件到 /usr/share/dotnet,再 使用 ln 链接到 /usr/share/dotnet/dotnet(已创建链接,可以跳过),然后删除 .dotnet 文件夹。

wget https://dot.net/v1/dotnet-install.sh
chmod +x dotnet-install.sh
./dotnet-install.sh
cp -r -n .dotnet/* /usr/share/dotnet
ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet
rm -rf .dotnet

注意:APT安装 在 “.dotnet”文件夹 ,脚本安装 在 “/usr/share/dotnet”文件夹中。所以不要两种安装方法同时,会创建两个副本,占用1个G的空间。可以使用上面的命令,脚本安装,复制子文件后删除一个副本。


问题处理:找不到\无法安装某些包

如果收到类似于“找不到包 {dotnet-package}”或“无法安装某些包”的错误消息,请运行以下命令

以下命令组中有两个占位符。

  • {dotnet-package}
    此项表示要安装的 .NET 包,如 aspnetcore-runtime-8.0。 它在以下 sudo apt-get install 命令中使用。
  • {os-version}
    这表示你正在使用的发行版。 此项在以下 wget 命令中使用。 发行版是数值,如 Ubuntu 上的 20.04 或 Debian 上的 10

首先,尝试清除包列表:

Bash复制

sudo dpkg --purge packages-microsoft-prod && sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update

然后,再次尝试安装 .NET。 如果这不起作用,可使用以下命令运行手动安装:

Bash复制

sudo apt-get install -y gpg
wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget https://packages.microsoft.com/config/debian/{os-version}/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get update && \
  sudo apt-get install -y {dotnet-package}

手动删除 .NET 运行时和 SDK

如果使用 dotnet-install 脚本或通过提取 tarball 来安装 .NET,则必须使用手动方法删除 .NET。

手动安装 .NET 时,它通常安装到 /usr/share/dotnet//usr/lib/dotnet/ 或 $HOME/.dotnet 目录中。 SDK、运行时和 .NET 主机安装到单独的子目录中。 这些“组件”目录包含每个 .NET 版本的目录。 通过删除版本控制目录,可以从系统中删除该版本的 .NET。 这些目录可能因你的 Linux 分发版而异。

可以使用三个命令来发现 .NET 的安装位置:dotnet --list-sdks(用于 SDK)、dotnet --list-runtimes(用于运行时)和 dotnet --info(用于所有内容)。 这些命令不会列出 .NET 主机。 若要确定安装了哪些主机,请检查 /usr/share/dotnet/host/fxr/ 目录。 以下列表表示特定版本的 .NET 的目录,其中 $version 变量表示 .NET 的版本:

  • SDK/usr/share/dotnet/sdk/$version/
  • 运行时:运行时基于特定的 .NET 产品运行时,例如 Microsoft.AspNetCore.All 或 Microsoft.NETCore.App(特别是 .NET 运行时)。 它们将安装到 /usr/share/dotnet/shared/$product/$version 目录,其中 $product 是产品运行时。 例如,可能会看到以下目录:复制/usr/share/dotnet/shared/Microsoft.NETCore.App/$version/ /usr/share/dotnet/shared/Microsoft.AspNetCore.App/$version/ /usr/share/dotnet/shared/Microsoft.AspNetCore.All/$version/
  • .NET 主机/usr/share/dotnet/host/fxr/$version/

使用 rm -rf 命令删除 .NET 版本。 例如,若要删除 6.0.406 SDK,请运行以下命令:

Bash复制

sudo rm -rf /usr/share/dotnet/sdk/6.0.406

 重要

版本目录可能与要卸载的“版本”不匹配。 与单个 .NET 版本一起安装的各个运行时和 SDK 可能具有不同的版本。 例如,你可能安装了 ASP.NET Core 8 运行时,其中安装了 8.0.2 ASP.NET Core 运行时和 8.0.8. NET 运行时。 二者有不同版本的目录。 有关详细信息,请参阅 .NET 的版本控制方式概述


使用 URL 配置终结点

以下部分介绍如何使用以下方式配置终结点:

  • ASPNETCORE_URLS 环境变量。
  • --urls 命令行参数。
  • urls 主机配置键。
  • UseUrls 扩展方法。
  • WebApplication.Urls 属性。

在 Linux 上使用 linux-dev-certs 信任 HTTPS 证书

dotnet tool update -g linux-dev-certs
dotnet linux-dev-certs install

安装dotnet 脚本

dotnet tool install -g csharprepl
dotnet tool install -g dotnet-script
dotnet tool install -g Microsoft.dotnet-httprepl

查看安装的脚本

dotnet tool list -g
其他命令:

install <PACKAGE_ID> Install global or local tool. Local tools are added to manifest and restored.

uninstall <PACKAGE_ID> Uninstall a global tool or local tool.

update <PACKAGE_ID> Update a global or local tool.

list <PACKAGE_ID> List tools installed globally or locally.

run <COMMAND_NAME> <toolArguments> Run a local tool. Note that this command cannot be used to run a global tool.

search <SEARCH_TERM> Search dotnet tools in nuget.org

restore Restore tools defined in the local tool manifest.

在web页面中使用HTML  Symbol作为URL链接字符

看到一个地址链接中有个图标做链接锚点,尝试下确实可以打开。。。

查看代码里也是符号

<a href="https://api2u.me/tag/📚Curricula.html">📚Curricula</a>

然后直接复制进浏览器地址栏,也是可以的。Google Chrome,Microsoft Edge都可以粘贴。查询下

以前知道在html中显示转义符号,可没想过用Emoji 在代码里可以做连接符号。。。竟然浏览器也都支持了。。。

大致了解了下,我的理解是,其实使用Chromium内核的浏览器本身就可以看作一个 建构在web之上的应用容器,它已经将符号编码转义渲染了一次。所以可以在渲染代码之前就显示符号。

Link Emoji Meaning: Uses, How to Reply & More – wikihow.com

点击上面的链接,打开的页面地址栏会有带有下面图标链接的URL。

我先试试在CMD下的效果。

如果你安装了powershell 可以本机命令,wget https://xn--i-7iq.ws

在命令行窗口内也会显示符号图标

在 linux bash下 curl https://xn--i-7iq.ws 也可以显示,但是与cmd下完全不同。

📚 ❤️🔗

符号在各种编码下的编码

🔗https://www.htmlsymbol.com/unicode-code/1f517.html

Technical information
Name:Link Symbol
Symbol:🔗
Unicode Number:U+1F517
HTML Code:&#128279; &#x1F517;
HTML Entity:
CSS Code:1F517
UTF-8 Encoding:0x1F517
UTF-16 Encoding:0x0001F517
UTF-32 Encoding:0x000000000001F517
Hex 2700-27BF / Decimal 9984-10175

https://www.w3schools.com/charsets/ref_utf_dingbats.asp

Example

<p>I will display &#9986;</p>
<p>I will display &#x2702;</p>

Will display as:

I will display ✂
I will display ✂

符号在HTML中的使用。

参考站点:

HTML Symbol Unicode symbols, html entities and codes https://www.htmlsymbol.com/

HTML Unicode (UTF-8) Reference https://www.w3schools.com/charsets/ref_html_utf8.asp

符号查询

EmojiXD®️ https://emojixd.com/

EmojiXD是一本线上Emoji百科全书📚,收录了所有emoji,帮你通过分类或者搜索轻松找到合适的表情符号,并了解各种emoji符号的相关知识和使用情景

Letterlike Symbols – https://www.unichar.app/web/

HTML Unicode (UTF-8) Reference – https://graphemica.com/🔗

systemctl is-enabled 检查服务是否开启自启动

systemctl 命令之后有很多选项和命令。罗列几个常用的命令。

#service --status-all

#列出全部服务
systemctl list-units --type=service

#查看一个服务的状态,列出有没有正在执行、开机时是否启动等信息。
systemctl status 服务名.service

#开启服务自启动,下次开机服务启动
systemctl enable 服务名.service

#禁用服务自启动,下次开机时,服务不会被启动
systemctl disable 服务名.service

#检查一个服务是否正在运行
systemctl is-active 服务名.service

#检查一个服务的设置,是否为自启动的
systemctl is-enabled 服务名.service


systemctl [command] [unit]

systemctl start  #立刻启动后面接的 unit。
systemctl stop  #立刻关闭后面接的 unit。
systemctl restart  #重启动服务,先关闭再启动的意思。
systemctl reload  #不关闭 unit 的情况下,重新载入配置文件,让设置生效。
systemctl kill  #杀死一个服务的所有子进程。
systemctl show  #列出 unit 的配置。
systemctl mask  #注销 unit,注销后你就无法启动这个 unit 了。
systemctl unmask  #取消对 unit 的注销。

systemctl daemon-reload #重新加载服务配置文件

常见的洗钱方法

常见的洗钱方法有:

  • 旅行支票:海关会对于通关者携带的现金要求申报,未申报者超过限制者没收,但不会对携带旅行支票者做金额的限制,重点在于无背书转让给第三者,因为支票被存入银行兑现,最终会回到原发票人的手中。
  • 在赌场以代币间接兑换:在赌场中兑换成代币,再将代币直接交付给洗钱的受益人。再由他去将代币兑换回现金(通常需要5%左右的手续费),在外可声称在赌场内赌赢的。这样可以避免透过纸钞上的编号直接追查到洗钱的受益人。常用于各国可将代币兑换回现金的职业赌场。
  • 购买已经中奖的彩票或马票:与银行勾结,以高价向得主私下购买已得奖的票券,并公开兑换。
  • 购买无记名债券或期货
  • 购买古董珠宝或具价值收藏品、高价中古精品:利用低买高卖的假买卖,将钱以合法的交易方式,洗到目的账号。此方式亦常用于收贿的收钱方式;或购买具价值的古董珠宝或收藏品,再讹称为自家收藏品在市场上放售,一般会购买没有记号的物品如文物、邮票或历史悠久的名厂乐器。或私下购买多部名车,中古私人飞机,珠宝名牌等高价值物转售。
  • 纸上公司的假买卖:用空壳、信用不良、股份公司做假交易、股票投资、偿还债务等方式洗钱。
  • 购买保险:将大笔金额投保,期间亦可不断提升保金,转换保险计划,待一定年数后取回,届时可疑的因素已遭淡化。
  • 基金会:不肖政客,成立基金会,假捐赠给基金会,诱骗企业捐款,再掏空。企业或财团,利用假捐赠给自己能掌控的基金会,左手搬钱到右手,逃漏所得税。政客或企业利用赈灾名义募款,可是募到的善款私自挪用,或用各种名目扣住善款于私人户头。在跨国洗钱活动中,以各地不同慈善名义的基金会中互相转换款额。
  • 跨国多次转汇与结清旧账户:利用转汇的相关单据有保存期限的漏洞。
  • 直接跨国搬运:利用专机或具有海关免验的身份者,直接把钱搬到外国,常用100美元的纸钞方式运送。
  • 人头账户:由于最怕黑吃黑,怕人头到银行声称存折与提款卡与印章丢失,另行申请新的存折与提款卡并变更印鉴,进行盗领。所以通常用于人头本身所不知的外国开户。
  • 外币活存账户:使用多次小额存款的方式存入,再到外国提领外币。俗称“蚂蚁搬砖”,常配合“人头账户”使用。
  • 跨国交易:常见于无实体商品的产业。利用交易金额造假灌水的方式,先透过合法的方式将金钱汇往外国掮客的账户,再通过外国账户分钱,分清原本的交易金额、掮客的佣金与原本要洗出去的钱;或利用各地的商品贸易,例如以过高金额购买普通消费品,将大量款项汇到国外账户,装作用以支付买货款项。反过来亦可将商品高价出售,让国外的洗钱伙伴将款项汇进国内。
  • 地下汇兑:常见于不肖的卖珠宝金饰的银楼。除了非法兑换外币以外,甚至可将现金兑换为外国的无记名与背书的支票,供客户至外国的账户存入。
  • 跨国企业的资金调度:常见于金融业,银行或保险业等,常以大批的现金纸钞进行跨国搬运。例如以麻绳捆绑、纸箱方式搬运。
  • 百货公司的礼券:具有高度的流通性,但由于具有不易兑换回现金的特性,故需有一定的人脉,才方便消化礼券。例如转卖给各公司的员工福利机构,将礼券做为其各公司员工的节假日奖金方式发放。就这样把礼券洗到不知情的第三者手中,原礼券持有人则取回接近等值的现金。
  • 人头炒楼:使用人头购买房地产,向承包商或开发商以市价五至七折买入,以现金支付。然后在短期内快速脱手(例如预售屋在交屋前),获利约50%-100%。
  • 假借贷:常用于收贿或贪污。收钱的人持有对方开立的远期兑现的本票或支票。即使被查到这张本票或支票,可声称为借贷关系。等风头过了或不在其位,没有明显的对价关系时,再把本票或支票转手给第三者,或是扎进银行兑现。或是贪污被揭发的人说要还钱,但开立本票或支票,只要没有兑现,就没有真正的还钱。
  • 伪币或伪钞:将伪币或伪钞,通过多次小金额消费行为,或是利用自动贩卖机找零行为,或是纸钞兑换成硬币的机器。将伪币或伪钞洗成真钱。
  • 黑道:购入价值的毒品贩毒、地下枪械等。将赃款转嫁给他人。
  • 比特币(Bitcoin)等加密货币:基于比特币等加密货币的匿名性,且可自由、不记名的产生不同的比特币钱包,搭配混币服务,难以追踪真实身份,是近年来常见的洗钱工具。
  • 第三方或者第四方支付平台:部分第三方支付平台存在账户未实名注册、管理不规范等问题,致使一些账号可以在网络上直接买卖,部分平台沦为电信诈骗团伙套取、漂白非法资金的“绿色通道”。诈骗团伙利用第三方支付平台转移赃款和洗钱的手段一般有3种:通过第三方支付平台发行的商户POS机虚构交易套现;将诈骗得手的资金转移到第三方支付平台账户,在线购买游戏点卡、比特币等物品后转卖套现;将赃款在银行账户和第三方支付平台之间多次转账切换,逃避公安追查。