惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
Google DeepMind News
Google DeepMind News
云风的 BLOG
云风的 BLOG
WordPress大学
WordPress大学
Vercel News
Vercel News
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
I
InfoQ
小众软件
小众软件
Recent Announcements
Recent Announcements
博客园 - 【当耐特】
The GitHub Blog
The GitHub Blog
大猫的无限游戏
大猫的无限游戏
美团技术团队
T
The Blog of Author Tim Ferriss
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
MongoDB | Blog
MongoDB | Blog
V
V2EX
J
Java Code Geeks
有赞技术团队
有赞技术团队
博客园 - 聂微东
B
Blog RSS Feed
博客园 - 司徒正美

Kenvix's Blog

实现带有Nvidia GPU+Rootless Podman+Docker+Systemd+自动驱动注入支持的systemd nspawn容器 | Kenvix's Blog 手动保留常用端口,解决 Windows 端口被 Hyper-V / WinNAT 占用的问题 免Telent/TTL屏蔽运营商新版光猫的远控、TR069和RMS,获取动态随机超级管理员密码并固化权限 | Kenvix's Blog 利用Windows卷影副本(Volume Shadow)找回被覆盖和删除的数据 | Kenvix's Blog 在Windows下实现WireGuard动态DNS解析(DDNS)的正确方法:避免无意义的开销 | Kenvix's Blog OpenWRT/DNSMasq 配置DHCP静态路由主动推送 实现流量直达和旁路由流量零代价分载 | Kenvix's Blog 解决 Windows 打开视频/图片文件夹很慢的问题 | Kenvix's Blog AltA2DP - 向支持Sony LDAC协议的耳机提供Windows下蓝牙LDAC音频编码器支持 | Kenvix's Blog (2024更新)修复黑群晖 DSM7.0 + Btrfs 存储空间/磁盘损毁/堪用 的问题 校园网白嫖思路分享:局域网中转-不花钱、不认证、高速上网 | Kenvix's Blog 在 Windows 上配置网卡多个 VLAN、多个虚拟网卡、实现单线多拨网速叠加(无需驱动支持) | Kenvix's Blog 解决视频彩铃、语音通话自动转视频通话导致打电话自动挂断的问题 | Kenvix's Blog 超低成本廉价考研教程:如何用小于¥500甚至¥300的开销考个研 | Kenvix's Blog 在 Ubuntu 21.10 上启用蓝牙 LDAC/AAC/AptX 高质量音频编码支持 在 VMware Workstation 桥接模式的网卡上让虚拟机使用 VLAN 的正确方法 自编译 红米 AC2100 OpenWRT R21.7.26 Linux 内核结构和子系统简介 | Kenvix's Blog Java 快速读取文本 (算法竞赛适用) | Kenvix's Blog 利用 ThreadLocal + Lambda,实现有状态变量的单例模式 | Kenvix's Blog 状态压缩的动态规划问题:骨牌完全覆盖棋盘问题 | Kenvix's Blog 我的 Windows 10 2004 新增 Bug 解决办法记录 解决 Android Studio 及 IDEA 中 Gradle 错误信息乱码的问题 Kotlin 的那些骚操作 | Kenvix's Blog 在普通的 Gradle Java/Kotlin 项目中使用 BuildConfig 修复国行 MIUI 打开 Google Play 始终提示 DF-DFERH-01 的问题 解决 VSCode 持续调用 WMIC 导致一个 CPU 核心完全被占满的问题 扔鸡蛋问题 | Kenvix's Blog 计算机幻觉从入门到入土 | Kenvix's Blog Java 注解预处理 Annotation Processing & 代码生成 Ubuntu 上通过以太网分享网络连接(NAT) | Kenvix's Blog
在 Windows 上设置 NAT 或网络共享的正确方法——避免Wi-Fi热点...
2022-01-05 · via Kenvix's Blog

最近在我的笔记本上用 WireGuardServerForWindows 项目搭了一个 WireGuard 服务端,但是发现一个问题,我一给 WireGuard 开网络共享,我就没法开 Wi-Fi 热点了

目前的NAT的普遍做法是用 SharedAccess 服务,也就是你在控制面板看到的那个 “Internet 连接共享”

但是这个服务是针对热点的设计的,只能支持一个 NAT 实例,这意味着,由于SharedAccess服务已经被wireguard服务器的NAT占用掉了,你就没办法建立一个有 Internet 的 Wi-Fi热点

但是,如果,使用New-NetNat命令,就能够设置许多NAT实例,同时可以用热点。

方法

要求

  • Windows 10周年纪念更新(Windows 10 Anniversary Update)或以上版本

  • Hyper-V 已启用(但是如果你不想使用Hyper-V,你可以在 bcdedit.exe 中将 hypervisorlaunchtype 设置为 off 经过个人测试,在 Win10 21H2 上不需要安装 Hyper-V 也可以使用

操作过程

  1. 先关掉“Internet 连接共享”(把上图的钩去掉)

  2. 打开管理员 PowerShell

# 首先,找到你要设置的网卡的 InterfaceIndex,例如这里是 wg_server 
Get-NetAdapter
# 给网卡 wg_server 设置 IP
New-NetIPAddress -IPAddress 172.22.0.1 -PrefixLength 24 -InterfaceIndex 68 # 68 是我的 wg_server 的 InterfaceIndex
# 添加 NAT
# Name: 设置 NAT的名称,随便起,我这里是 wgservernat。
# InternalIPInterfaceAddressPrefix: CIDR
New-NetNat -Name wgservernat -InternalIPInterfaceAddressPrefix 172.22.0.0/24
Get-NetNat 

效果应该如图:

更多资料,请查看本文

请注意 New-NetIPAddress 每次重启都需要执行一次

附录

设置开机启动

New-NetIPAddress 每次重启都需要执行一次,可以用计划任务实现:

  1. 随便找个地方,新建 SetupWireGuardNat.ps1 代码如下
#Requires -RunAsAdministrator

$ifName = "wg_server" # 修改为网卡名称

function Get-IfIndex() {
    return (Get-NetAdapter | Where -Property Status -eq 'Up' | Where -Property Name -Like $ifName | select -ExpandProperty ifIndex -first 1)
}

$ifIndex = Get-IfIndex

while ( $ifIndex -eq $null -Or $ifIndex  -eq "" ) {
    echo "Waiting interface $ifName up ..."
    sleep 3s   
    $ifIndex = Get-IfIndex
}

echo "$ifName Interface index is $ifIndex"
echo "Setting up IpAddr"

# 如果是配合 Wireguard 使用,不需要New-NetIPAddress,这里主要是强调需要为网卡分配IP才能NAT
New-NetIPAddress -IPAddress 172.22.0.1 -PrefixLength 24 -InterfaceIndex $ifIndex
exit 0

用户修改为 SYSTEM

勾选“使用最高权限运行

触发器为 在系统启动时

操作为 启动程序,程序或脚本为 powershell.exe,参数为:

-NonInteractive -NoLogo -NoProfile -File "脚本路径"

例如

-NonInteractive -NoLogo -NoProfile -File "C:\Work-Station\Scripts\SetupWireGuardNat.ps1"

WinNAT 导致你遇到了端口冲突问题?

本文会启用 Windows NAT 组件,如果你遇到了端口冲突问题,请参考 这篇文章:手动保留常用端口,解决 Windows 端口被 Hyper-V / WinNAT 占用的问题

测试

出于测试目的,可以禁用SharedAccess服务,可以发现NAT仍在运行: