标签: Windows

  • 云服务器的黑洞路由配置

    一、 什么是黑洞路由

    黑洞路由是一种网络配置方法,旨在将特定的网络流量引导到一个不存在的目标地址,导致这些流量被丢弃,仿佛进入了一个“黑洞”一样。这种技术通常被用于丢弃不需要的流量,或作为防御手段来应对网络攻击。

    在黑洞路由中,管理员通过配置路由表,将目标 IP 地址或 IP 段指向一个虚拟的“黑洞”地址,这个地址通常是一个不存在的地址或一个空地址。当网络流量被引导到这个黑洞地址时,它们将被直接丢弃,而不会被转发到实际的目标。

    黑洞路由在网络安全方面尤为重要,尤其是在对抗 分布式拒绝服务攻击(DDoS) 等恶意流量时。

    二、 黑洞路由的应用场景

    1. 防御分布式拒绝服务攻击(DDoS)

    背景:

    DDoS 攻击通过向目标网络或服务器发送大量恶意流量,迅速使其瘫痪,无法为正常用户提供服务。

    应用:

    通过设置黑洞路由,将攻击流量引导到“黑洞”地址,避免这些流量占用带宽,从而保护其他正常流量。例如,网络管理员可以通过添加黑洞路由来丢弃所有来自特定 IP 段的攻击流量,确保攻击不会对系统造成负面影响。

    案例:

    某在线服务提供商在遭遇大规模 DDoS 攻击时,立即将攻击来源的 IP 地址段引导到黑洞,从而成功减轻了攻击负担,保护了其正常的用户流量。

    2. 隔离受感染的主机或网络

    背景:

    网络中的设备可能会被病毒或恶意软件感染,成为攻击的源头。为了避免这些设备对其他主机造成威胁,可以通过黑洞路由将其流量隔离。

    应用:

    当发现某台设备或主机被感染时,可以设置黑洞路由将它的流量丢弃,避免它继续传播恶意流量或参与更大的攻击。

    案例:

    某公司发现内网中的一台计算机已经被勒索病毒感染,导致它向外发送大量垃圾流量。管理员通过黑洞路由将这台主机的所有流量引导到黑洞,有效隔离了感染主机,防止了病毒蔓延。

    3. 过滤不需要的流量或垃圾流量

    背景:

    许多网络流量可能是垃圾流量,来自无用的请求或恶意的爬虫,这些流量不仅浪费带宽,还可能影响正常服务的响应速度。

    应用:

    管理员可以设置黑洞路由,丢弃来自不需要的 IP 地址或流量类型。这种方法对于防止无意义的访问或爬虫流量尤为有效。

    案例:

    某网站为了防止爬虫和无效请求消耗带宽,在发现大量来自某些 IP 地址的恶意爬虫流量后,快速通过黑洞路由将这些 IP 阻断,从而保证正常用户的访问不受影响。

    4. 网络重定向和流量控制

    背景:

    在某些情况下,管理员可能希望控制流量的走向,或者强制执行某些安全策略,防止流量访问不安全的目标。

    应用:

    可以通过设置黑洞路由来引导特定流量到“黑洞”,从而控制哪些流量可以进入网络。例如,在企业内部网络中,可以使用黑洞路由来阻止员工访问某些危险的外部网站或 IP 地址。

    案例:

    某企业使用黑洞路由禁止员工访问特定的社交媒体网站,以避免员工在工作时间浪费过多时间,同时降低因不安全网站带来的潜在风险。

    5. IP 地址封禁

    背景:

    当发现某些 IP 地址是恶意的攻击源时,可能需要对这些 IP 进行封禁,防止它们继续发起攻击或进行其他不良行为。

    应用:

    黑洞路由可以被用于封禁特定 IP 地址或 IP 地址段,确保这些恶意源的流量不会进入目标网络。

    案例:

    一个在线游戏平台遭遇了来自某个国家的大规模暴力破解攻击,攻击者通过多个 IP 地址发起登录尝试。管理员通过设置黑洞路由,迅速将这些 IP 地址段的流量丢弃,防止了攻击对游戏服务器的影响。

    6. 流量监控与分析

    背景:

    有时需要对某些流量进行监控和分析,以便检测异常行为或进行故障排查。

    应用:

    可以将流量通过黑洞路由引导到特定地址,来检测是否有异常流量或网络行为,从而帮助网络管理员识别问题。

    案例:

    在某次流量审计中,网络管理员发现了一些异常的流量模式,怀疑可能是恶意活动。为了进一步分析,管理员将这些可疑流量引导到黑洞,从而有效隔离了这些流量并避免了对正常流量的干扰。

    7. 网络故障和故障转移管理

    背景:

    在分布式网络环境中,某些网络节点可能会出现故障,导致流量无法正常路由。此时需要一种快速的手段来避免流量流向故障节点。

    应用:

    黑洞路由可用于将故障节点的流量丢弃,避免错误的流量路径导致其他节点的负担增加。

    案例:

    某企业的外部路由节点发生故障,导致无法正常访问外部资源。管理员通过黑洞路由将所有经过该节点的流量丢弃,防止故障的流量影响到网络中的其他设备和服务。

    8. 临时流量丢弃

    背景:

    有时在系统维护期间,管理员需要暂时丢弃某些流量,以避免在维护过程中受到干扰。

    应用:

    通过黑洞路由,管理员可以在维护过程中临时将不需要的流量引导到黑洞,从而保护网络的正常运行。

    案例:

    某个大型网站在进行例行维护时,管理员通过黑洞路由临时丢弃所有来自外部的流量,以保证维护过程不被外部请求打断。维护结束后,恢复正常流量路由。

    三、 黑洞路由配置示例

    需要配置黑洞路由的条件
    • 防御 DDoS 攻击:当检测到来自特定 IP 地址段的 DDoS 攻击流量时,可以通过黑洞路由将这些流量丢弃,从而防止攻击占用带宽和系统资源。
    • 隔离感染主机:如果网络中某台设备被恶意软件感染,可能会发起大量恶意流量,管理员可以通过黑洞路由将其流量丢弃,防止对其他设备造成危害。
    • 阻止垃圾流量:当网站或服务器受到大量无效请求(如爬虫、扫描器)干扰时,管理员可以配置黑洞路由,将这些不需要的流量丢弃,保障网络的正常运行。
    • 故障恢复或冗余路径管理:如果某个网络节点发生故障或不再有效,黑洞路由可以用于暂时丢弃流量,避免流量被错误地路由到故障节点。
    • IP 封禁:某些 IP 地址在进行恶意行为(如暴力破解)时,管理员可以通过配置黑洞路由直接丢弃这些 IP 的流量,防止其继续攻击。

    1. Windows 配置

    1. 添加黑洞路由
      例如,黑洞路由将所有来自 192.168.1.0/24 网络的流量丢弃:
    route add 192.168.1.0 mask 255.255.255.0 0.0.0.0
    1. 添加永久黑洞路由
      如果需要在系统重启后保留黑洞路由,可以使用 -p 选项:
    route add 192.168.1.0 mask 255.255.255.0 0.0.0.0 -p
    1. 删除黑洞路由
      如果不再需要黑洞路由,可以删除指定的路由规则:
    route delete 192.168.1.0
    1. 查看当前路由表
      通过查看路由表,可以确认是否已配置黑洞路由:
    route print

    2. Linux 配置

    1. 添加黑洞路由
      例如,将 192.168.1.0/24 的流量引导到黑洞:
    ip route add blackhole 192.168.1.0/24
    1. 添加永久黑洞路由
      如果需要保持黑洞路由在重启后仍然有效,可以添加 permanent 标志(在某些 Linux 发行版中,可能需要将配置写入路由表配置文件中以实现永久生效):
    ip route add blackhole 192.168.1.0/24 permanent
    1. 删除黑洞路由
      如果需要删除已配置的黑洞路由,可以使用:
    ip route del blackhole 192.168.1.0/24
    1. 查看当前路由表
      使用以下命令查看当前的路由表,并检查是否存在黑洞路由:
    ip route show | grep blackhole

  • Windows11安装和配置Stable Diffusion web UI

    1. 安装 Git 和 Conda

    首先,确保你的系统中已安装 Git 和 Conda。如果尚未安装,可以通过以下链接下载并安装:

    2. 创建并激活 Conda 环境

    打开终端(推荐使用 Anaconda Prompt 或 PowerShell),输入以下命令来创建一个新的 Python 3.10.6 环境并激活它:

    conda create --name sdai python=3.10.6
    conda activate sdai

    这将创建一个名为“sdai”的Conda环境,并使用Python 3.10.6版本。激活后,你的终端将切换到该环境。

    3. 克隆 Stable Diffusion web UI 仓库

    使用 Git 克隆 Stable Diffusion web UI 的 GitHub 仓库,然后进入该目录:

    git https://github.com/AUTOMATIC1111/stable-diffusion-webui
    cd sdai

    这样你就成功克隆了仓库并进入相应目录。

    4. 启动 Stable Diffusion web UI

    安装完成后,在同一目录下运行以下命令启动Stable Diffusion web UI:

    python launch.py

    如果一切顺利,Stable Diffusion web UI将启动,你可以通过浏览器访问它的界面。

    在浏览器中访问 http://localhost:7860

  • Windows快速创建 Hyper-V 虚拟机的 PowerShell 脚本

    在 Windows 系统上使用 Hyper-V 虚拟化技术时,手动创建虚拟机可能会比较繁琐。可以通过 PowerShell 脚本来自动化这一过程,大大提高效率。今天我将分享一个简单的 PowerShell 脚本,用于快速创建一个 Debian 12 虚拟机,并配置相关的硬件资源和集成服务。

    我编写的 PowerShell 脚本能够自动化以下任务:

    • 创建一台 Debian 12 虚拟机。
    • 分配内存、CPU 核心、虚拟硬盘。
    • 配置网络适配器。
    • 启动虚拟机并设置增强会话模式。

    保存为hyperv-create.ps1

    #Requires -RunAsAdministrator
    #Requires -Modules Hyper-V
    
    $Name = "Debian12-hyperv"
    $Description = "
    Username: test
    Password: test
    (US keyboard layout)"
    
    # Create the virtual machine
    New-VM `
      -Generation 2 `
      -Name "$Name" `
      -MemoryStartupBytes 4096MB `
      -SwitchName "Default Switch" `
      -VHDPath ".\Debian12-hyperv.vhdx"
    
    # Set virtual machine notes
    Set-VM -Name "$Name" -Notes "$Description"
    
    # Enable enhanced session transport
    Set-VM -Name "$Name" -EnhancedSessionTransportType HVSocket
    
    # Disable secure boot
    Set-VMFirmware -VMName "$Name" -EnableSecureBoot Off
    
    # Set CPU cores
    Set-VMProcessor -VMName "$Name" -Count 2
    
    # Enable integration services
    Enable-VMIntegrationService -VMName "$Name" -Name "Guest Service Interface"
    
    # Start the virtual machine
    Start-VM -Name $Name
    
    Write-Host "Virtual machine $Name created and started successfully."
  • 使用 OpenSSL 在 Windows11上进行文件加密与解密

    数据安全已经成为了我们日常工作和生活中的重要课题。特别是对于包含敏感信息的文件,确保其在存储或传输过程中的安全性是至关重要的。加密是最常用的保护数据的方法之一。使用 OpenSSL 工具,通过一个简单的批处理脚本,基于密码进行文件的加密与解密操作。

    1. OpenSSL 简介

    OpenSSL 是一个强大的开源工具,提供了多种加密算法和功能,广泛应用于数据加密、SSL/TLS 协议等领域。它支持对文件和信息进行加密、解密以及生成密钥对等操作。

    2. 脚本功能概述

    批处理脚本可以通过 OpenSSL 命令行工具实现对文件的加密和解密,使用密码作为加密和解密的唯一凭证。以下是脚本的基本功能:

    • 加密:通过用户输入的密码,将指定的文件加密,并生成一个 .enc 后缀的加密文件。
    • 解密:通过用户输入的密码,解密 .enc 文件并恢复成原始文件。

    3. 脚本实现原理

    我们编写的批处理脚本使用 OpenSSL 命令行工具提供的加密功能,支持 AES-256-CBC 加密算法,同时通过 -salt-pbkdf2 参数增强加密的安全性。脚本根据文件的后缀名判断是进行加密操作还是解密操作,并且要求用户输入密码。

    4. 脚本代码

    以下是实现文件加密与解密的批处理脚本代码。该脚本能够根据文件后缀判断文件是需要加密还是解密,且加密和解密过程中都依赖用户输入的密码。

    保存为encrypt_decrypt.bat

    @echo off
    chcp 65001 >nul
    setlocal enabledelayedexpansion
    
    :: 检查 OpenSSL 是否可用
    where openssl >nul 2>nul
    if %errorlevel% neq 0 (
        echo OpenSSL 未安装或未加入环境变量,请检查。
        pause
        exit /b
    )
    
    :: 配置加密方式
    set "CIPHER=-aes-256-cbc -salt -pbkdf2"
    
    :: 检查是否传入文件名参数
    if "%~1"=="" (
        echo 错误: 请传入需要加密或解密的文件名。
        echo 示例: encrypt_decrypt.bat file.txt
        pause
        exit /b
    )
    
    set "input_file=%~1"
    set "file_ext=%~x1"
    set "output_file="
    
    :: 判断是加密还是解密
    if "%file_ext%"==".enc" (
        set "output_file=%input_file:.enc=%"
        echo 正在解密文件: !input_file!
        echo 请输入密码进行解密:
        set /p password=
        openssl enc %CIPHER% -d -in "!input_file!" -out "!output_file!" -pass pass:!password!
        echo 解密完成,输出文件: !output_file!
    ) else (
        set "output_file=!input_file!.enc"
        echo 正在加密文件: !input_file!
        echo 请输入密码进行加密:
        set /p password=
        openssl enc %CIPHER% -in "!input_file!" -out "!output_file!" -pass pass:!password!
        echo 加密完成,输出文件: !output_file!
    )
    
    echo 操作完成,按任意键退出...
    pause
    
    endlocal

    5. 脚本使用说明

    5.1 环境准备

    首先,确保你的系统上已经安装了 OpenSSL。你可以在命令行中运行以下命令来验证 OpenSSL 是否安装:

    where openssl

    如果返回 OpenSSL 的安装路径,说明已正确安装。如果没有安装,可以前往 OpenSSL 官网下载安装。

    5.2 使用方法

    加密文件
    将需要加密的文件拖放到 encrypt_decrypt.bat 脚本上,或者在命令行中运行以下命令:

    encrypt_decrypt.bat file.txt

    脚本会提示你输入密码,输入密码后,文件将被加密,并生成 .enc 后缀的加密文件。

    解密文件
    对于已经加密的文件(例如 file.txt.enc),你可以使用以下命令进行解密:

    encrypt_decrypt.bat file.txt.enc

    脚本会提示你输入密码,输入正确的密码后,文件将被解密为原始文件。

    5.3 注意事项

    • 密码的安全性:密码是加密和解密过程中的唯一凭证。请确保密码足够强大,并避免泄露。
    • 文件备份:在进行加密或解密操作前,建议备份文件,防止操作失误导致文件丢失。

    使用 OpenSSL 工具和批处理脚本,你可以轻松地对文件进行加密和解密,保障文件在存储或传输过程中的安全性。通过密码加密文件是一种简单且有效的保护文件的方式,适合大多数日常使用场景。

  • Windows 11 全新安装如何跳过微软账户创建本地账户

    Windows 11 的安装过程中,微软强制要求用户使用微软账户登录,这给一些不愿意绑定在线账户的用户带来了不便。不过,仍然有一种新的方法可以让你在 OOBE(Out-of-Box Experience,首次设置)期间跳过微软账户登录,直接创建本地账户。

    方法一

    进入 OOBE 设置界面

    安装 Windows 11 时,在 “让我们连接你到一个网络”“登录到你的 Microsoft 账户” 页面时,系统通常会强制要求你输入微软账户信息。

    打开命令提示符(CMD)

    按下 Shift + F10 组合键,弹出命令提示符窗口。

    输入命令跳过微软账户

    在命令提示符窗口中输入以下命令,并回车执行:

    OOBE\BYPASSNRO.cmd

    系统将会跳过微软账户登录界面,直接进入本地账户创建界面。

    方法二

    进入 OOBE 设置界面

    安装 Windows 11 时,在 “让我们连接你到一个网络”“登录到你的 Microsoft 账户” 页面时,系统通常会强制要求你输入微软账户信息。

    打开命令提示符(CMD)

    按下 Shift + F10 组合键,弹出命令提示符窗口。

    输入命令跳过微软账户

    在命令提示符窗口中输入以下命令,并回车执行:

    start ms-cxh:localonly

    系统将会跳过微软账户登录界面,直接进入本地账户创建界面。

  • 使用 Immich CLI 上传照片和视频

    要求

    在使用 Immich CLI 之前,请确保您的环境满足以下条件:

    • Node.js 20 或更高版本
    • npm(Node.js 包管理器)

    安装 Immich CLI

    全局安装

    使用 npm 进行全局安装 Immich CLI:

    npm i -g @immich/cli

    卸载旧版本

    如果您之前安装过旧版 CLI,建议先卸载以避免冲突:

    npm uninstall -g immich

    快速入门

    在使用 Immich CLI 之前,您需要先进行身份验证,并连接到您的 Immich 服务器。

    1. 认证登录

    您需要使用 API 密钥向 Immich 服务器进行身份验证。
    执行以下命令,将 [服务器地址][API 密钥] 替换为实际值:

    immich login [服务器地址] [API 密钥]

    示例:

    immich login http://192.168.1.216:2283/api HFEJ38DNSDUEG

    认证成功后:

    • CLI 会自动将您的凭据存储在 auth.yml 配置文件中。
    • 默认情况下,该文件位于 ~/.config/ 目录下。
    • 如果需要自定义存储目录,可以使用 -d 选项或 IMMICH_CONFIG_DIR 环境变量。

    安全提示:

    • 为确保账户安全,在使用完 CLI 后,建议执行 immich logout 注销,或手动删除 auth.yml 文件。

    2. 上传文件到 Immich 服务器

    上传单个或多个文件

    如果要上传单个文件或多个文件,可以直接指定文件路径:

    immich upload file1.jpg file2.jpg

    上传整个目录(默认不包含子文件夹)

    如果要上传目录中的所有文件(不包括子目录),可执行:

    immich upload directory/

    上传包含子文件夹的目录

    如果目录中包含多个子文件夹,并希望上传所有内容,请使用 --recursive 选项:

    immich upload --recursive directory/

    3. 预览上传内容

    如果不确定哪些文件会被上传,或者希望在执行前进行确认,可以使用 --dry-run 选项进行模拟运行:

    immich upload --dry-run --recursive directory/

    此命令不会实际上传文件,只会显示哪些文件将被上传。

    4. 提高上传性能

    跳过哈希计算

    默认情况下,Immich 在上传文件前会计算哈希值,以避免重复上传。
    如果您确定文件是唯一的,并希望加快上传速度,可以使用 --skip-hash 选项跳过哈希计算:

    immich upload --skip-hash --recursive directory/

    注意

    • Immich 服务器仍会进行哈希处理以执行重复数据删除,因此这个选项仅影响客户端性能。
    • 如果您的带宽充足,跳过哈希计算可以加快上传速度。

    5. 自动管理相册

    Immich CLI 支持自动创建相册,并根据文件夹名称或自定义名称进行管理。

    根据文件夹名称自动创建相册

    使用 --album 选项,Immich 会根据文件夹名称自动创建相册,并将对应文件上传到相册中:

    immich upload --album --recursive directory/

    上传文件到指定相册

    如果希望将所有文件上传到一个特定相册,可以使用 --album-name 选项:

    immich upload --album-name "My Summer Holiday" --recursive directory/

    6. 过滤上传文件

    有时,您可能需要跳过某些文件或目录,Immich 提供了 --ignore 选项来实现文件过滤。

    跳过特定文件或文件夹

    例如,如果您想跳过 Raw 文件夹下的所有内容,可以执行:

    immich upload --ignore **/Raw/** --recursive directory/

    排除多个文件类型

    可以使用多个 --ignore 规则,匹配不同的文件类型,例如排除 .tif 文件:

    immich upload --ignore **/Raw/** **/*.tif --recursive directory/

    7. 包含隐藏文件

    默认情况下,Immich 不会上传隐藏文件(文件名以 . 开头)。
    如果希望上传隐藏文件,可以使用 --include-hidden 选项:

    immich upload --include-hidden --recursive directory/

    获取 API 密钥

    使用 Immich CLI 之前,您需要一个 API 密钥,该密钥可以在 Web 界面的 用户设置面板 中获取。

    获取 API 密钥的步骤:

    1. 进入 Immich Web 管理界面
    2. 用户设置 页面中找到 API Key 选项
    3. 生成新的 API 密钥并复制,用于 CLI 登录