HOWTO: 在 Windows Server 2022 的 Core 环境下配置 NAT 服务
经常会在 Hyper-V 中搭建一些虚拟环境用于测试验证以及实践。尤其是当前算力成本越加低廉的情况下,可以轻松的模拟一个复杂的业务场景或基础架构。这些 Lab 可能要与宿主网络隔离,通常我们会为这些虚机配置一个独立的网络,但如果它们需要访问互联网时就需要借助软路由或 NAT 服务。曾几何时 gOxiA 的虚机模板中总会保留一个 TMG(ISA) VM,之后会用到国内的一款软路由,因为它支持 Hyper-V。现在可能更多的会用到 Windows Server 提供的 RRAS(RemoteAccess)Role,其中包含了 NAT 服务,并且宿主硬件越来越强,内存和磁盘性能可轻松应对一个 WS NAT 虚机,所以最近又开始琢磨起 Server Core 运行 NAT。
因为只用来做 NAT 服务,所以系统越简单,容量越小越好。而 Windows Server 提供的 Core 环境是最佳的选择。如果你对 Server Core 还不了解,可以先阅读官方文档“什么是服务器核心安装选项”。
本例选用了 Windows Server 2022,在 Windows Setup 过程选择了 Core 安装。完成安装后进入系统会发现是一个命令环境,在这里只能运行有限的图形化程序,基本要依靠命令进行相关的管理和配置任务,虽然 Server Core 也提供了一个 SConfig 工具来进行初始配置,但功能有限!如果之前已经有了 Windows 命令的一些基础,可以直接命令上手效率会更高些。
以下是 gOxiA 整理的一些简明扼要的步骤,也避免了大家踩坑!
- 重命名计算机
rename-computer -new natserver - 修改网络名称(因为使用了简中版,强烈建议命令行环境还是用英文为佳)
get-netadapter , 获取网卡信息
rename-netadapter -name "以太网" -newname "Private"
rename-netadapter -anme "以太网 2" -newname "Public" - 修改内网网卡(Private)地址
new-netipaddress -interfacealias Private -ipaddress 192.168.192.254 -prefixlength 24
get-netipaddress , 可查看网卡地址 - 禁止内/外网使用IPv6(看自己喜好或实际需求)
disable-netadapterbinding -componentid ms_tcpip6 -name Public
disable-netadapterbinding -componentid ms_tcpip6 -name Private
get-netadapterbinding , 可查看配置情况 - 允许 ICMP
new-netfirewallrule -name "Allow Ping" -displayname "Allow Ping" -protocol icmpv4 -icmptype 8 -enable true -profile any -action allow
set-netfirewallrule -name CoreNet-Diag-ICMP4-EchoRequest-In-Noscope -enabled true -profile any -action allow , 也可以不新建防火墙策略直接开启默认策略
set-netfirewallprofile -profile domain,public,private -enabled false , 如果考虑以后测试方便,在保障网络安全的前提下,也可以选择禁用防火墙保护 - 安装路由器角色
install-windowsfeature -name routing -includemanagementtools , 根据提示重启服务器 - 使用新模式配置
install-remoteaccess -vpntype routingonly
在新模式下将无法再使用 RRAS 管理器进行配置,如果你在 GUI Mode 下看到这个提示便可确认。如果要恢复,则 Uninstall-remoteaccess - 使用旧模式配置
sc config remoteaccess start= Auto
sc start remoteaccess
netsh routing ip nat add interface public
netsh routing ip nat set interface public mode=full
netsh routing ip nat add interface private
此外,貌似现在大家更推崇更加简单的方式,即使用系统内置的 new-netnat 命令,实际测试在不安装 Role 的情况下可以直接在 Windows 网络栈上启用 NAT 支持。
- new-netnat -name InternetNAT -internalIPInterfaceAddressPrefix 192.168.192.024
很是神奇,这个命令或者说功能原本是 Hyper-V 虚拟交换机的一个网络功能特性,可直接生成 NAT,而 RRAS 也更加关注的是远程访问的支持。借助这个命令应该也可直接在 Windows Client 上启用 NAT。
参考推荐: