ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

VMware中Windows Server搭建Web与DNS内网测试沙箱

VMware中Windows Server搭建Web与DNS内网测试沙箱 拿 VMware 装一台 Windows 服务器再让它同时扛着 Web 站点和 DNS 解析这套环境我前后搭过十几次。最早一次是为了复现客户内网里才出现的页面报错——本地怎么调都没事一连上他们的网络就崩最后只能自己从零攒一个服务器 Web DNS 解析的沙箱出来。后来这套东西就留下来了前端联调用它挂测试域名、做内网系统对接前先拿它验一遍、教新人理解域名是怎么一步步变成页面的都靠它。这篇内容适合几类人刚入行想把服务端环境摸一遍的运维新手需要在本地造一套带自定义域名的 Web 环境的开发同学还有准备做内网系统部署验证的人。整套流程我会从虚拟机的资源规划讲到 DNS 区域记录再讲到 Web 站点绑定和最后一步的排错中间所有容易卡住的地方我都会标出来。照着走一遍正常情况下两个小时以内能跑通。1. 先把实验目标拆清楚Web和DNS为什么要挤在同一台虚拟机里1.1 三个角色各自的职责边界先把这件事想明白后面配置才不会乱。这套环境里其实有三个独立的角色VMware 负责提供硬件抽象和网络出口Windows 服务器负责承载服务Web 和 DNS 是两个互不认识的独立服务。DNS 的活是翻译。浏览器地址栏里敲一个域名操作系统会先问 DNS 服务器这个名字对应哪个 IPDNS 回答一个 IP 地址浏览器才拿着这个 IP 去发起连接。DNS 全程不参与任何数据传输它只在前面指路指完就退场。Web 的活是接客。它监听某个端口HTTP 默认 80收到请求后根据请求头里的 Host 字段决定用哪个站点、哪个目录的文件来响应。把两者放在同一台机器上好处是省资源、快照好管理、IP 只有一个不容易乱代价是排错时如果只有一个症状你很难判断是 DNS 没指对还是 Web 没起来。所以后面我在第 5 节专门留了一整节讲排查顺序就是为了把这两层剥离开。1.2 网络模式这一步选错后面一半的坑都在这儿VMware Workstation 新建虚拟机时会让你选网络类型NAT、桥接、仅主机三种。这个选择的影响远比大多数人以为的大。NAT 模式虚拟机会进入VMnet8这个虚拟网络网段通常是192.168.x.0/24。虚拟机通过宿主机做地址转换访问外网宿主机也能直接访问虚拟机。**关键点这个网段里宿主机的虚拟网卡地址一般是192.168.x.1而网关是192.168.x.2。**我在这一步见过太多人把网关写成.1结果虚拟机完全上不了网转发器也失效还以为是 DNS 装错了。桥接模式虚拟机直接出现在宿主机所在的那张物理网络里会拿到和宿主机同网段的 IP。好处是同一局域网内其他设备也能访问你的站点坏处是 IP 容易和别人撞而且公司网络里给虚拟机申请地址有时候会触发一些管理策略不太方便。仅主机模式只有宿主机能访问适合完全隔离的测试场景。做这套 Web DNS 的沙箱我的建议是NAT。理由是宿主机能访问、虚拟机也能上网配转发器需要网段固定不会乱同时不会污染真实局域网。1.3 版本与资源配置的取舍操作系统版本上Windows Server 2019 和 2022 都可以两者在这套场景下几乎没有区别。如果你只是想练手Server 2019 的社区资料多一些遇到问题好搜。配置上我的常用值是项目建议值说明处理器2 核少于 2 核图形界面会明显卡顿内存4 GB跑图形界面 IIS DNS 的舒适下限磁盘60 GB拆分多个文件拆分便于复制迁移虚拟化引擎勾选 Intel VT-x/EPT不勾某些场景会非常慢网络NAT见上一小节内存别给 2 GB。虽然 Server 2019 官方说 2 GB 能动但装了图形界面之后再开 IIS 管理器切个页面要等好几秒调试体验很差。1.4 动手前先定稿IP、主机名、域名的规划表很多人上来就装装到一半发现域名取名不合适、IP 和现有网段打架。花五分钟先把这张表填了项目我这次的取值说明虚拟机 IP192.168.10.10由 VMnet8 网段决定子网掩码255.255.255.0对应 /24默认网关192.168.10.2NAT 模式下是.2首选 DNS127.0.0.1装完 DNS 后指向自己计算机名LAB-DNSWEB01别用中文、别超 15 字符内部域名lab.internal下面细说域名这里单独说一下。**不要拿你真实注册过的公网域名去做内网解析。**比如你有个example.com的域名在跑线上业务本地把它解析到一个内网 IP哪天调试完忘了清理客户端拿去用就会指向内网地址问题非常隐蔽。用lab.internal、corp.lab这类明显是内部的命名一眼就知道不是给公网用的。有争议的是.local。这个后缀被 mDNSBonjour、部分打印机发现协议占用在多播环境里可能互相干扰。小规模练手问题不大但既然能换就换个干净的。2. 在VMware里把Windows Server装成一台能用的机器2.1 新建虚拟机时值得多看一眼的四个选项点新建虚拟机选自定义高级不要用典型。典型模式会帮你做几个决定后面想改反而麻烦。第一个安装来源选稍后安装操作系统。如果你直接选 ISO 文件VMware 的简易安装会试图帮你自动填计算机名、自动设密码、自动登录看起来省事实际上它填的密码策略和一些无人值守配置在后续做 DNS、IIS 角色时会带来莫名其妙的干扰。手动装一遍慢十分钟换来的是一个完全可预期的环境。第二个客户机操作系统选Microsoft Windows版本选对应的 Server 版本。这个主要影响 VMware 给的推荐配置选错了不会崩但推荐的磁盘类型会不合适。第三个固件类型。选 BIOS 或者 UEFI 都行Server 2019 两者都支持。如果选 UEFI记得把安全引导的勾去掉某些安装镜像在安全引导下会卡在启动界面。我一般直接选 BIOS省心。第四个磁盘拆分。将虚拟磁盘拆分成多个文件这个选项建议勾上。好处是单个文件不会太大往移动硬盘里拷的时候友好。缺点是理论性能略低于单文件但对这套用途完全感知不到。2.2 安装介质与版本选择桌面体验是底线挂载 ISO 之后开机安装向导走到选择要安装的操作系统这一步务必选带桌面体验字样那一项。默认高亮的那一项通常是 Windows Server 2019 Standard不带桌面体验。装出来是 Server Core全黑命令行没有开始菜单没有图形化的服务器管理器。对刚上手的人来说配 DNS 和 IIS 全靠命令行学习曲线陡得离谱。选错了就得重装没有别的办法。安装过程里会让你设 Administrator 密码。Server 默认的密码复杂度要求是长度够、含大小写、含数字、含符号中的至少三类。随便设个Pssw0rd123这类的你自己记着就行因为后面登录要反复输。2.3 装完系统后的三件收尾事第一件装 VMware Tools。菜单里点虚拟机 安装 VMware Tools然后进虚拟机打开光驱运行里面的setup.exe一路下一步重启。装完之后有两个直接收益分辨率能自适应窗口不装就是 800×600 固定死的看得眼睛疼宿主机和虚拟机之间能复制粘贴文本。后者在你后面往虚拟机里粘命令的时候能省大量时间。第二件关掉服务器管理器自动启动。每次登录都弹一个大窗口很烦。服务器管理器里点管理 服务器管理器属性勾上在登录时不自动启动服务器管理器。第三件改计算机名。打开控制面板 系统和安全 系统 更改设置把名字改成规划表里定好的那个。改完必须重启才生效。这一步别偷懒跳过因为 DNS 记录、日志文件、站点标识里都可能用到主机名后面再改会牵连一堆东西。2.4 静态IP的两种配置方式和网关地址的陷阱图形界面路径是控制面板 网络和共享中心 更改适配器设置 右键网卡 属性 Internet 协议版本 4 使用下面的 IP 地址。填完确定。命令行我更推荐快而且不会点错netsh interface ip set address nameEthernet0 static 192.168.10.10 255.255.255.0 192.168.10.2 netsh interface ip set dns nameEthernet0 static 127.0.0.1网卡名称要先确认。Server 2019 在 VMware 里通常叫Ethernet0用ipconfig /all或者Get-NetAdapter看一眼。这里有个顺序问题要注意**DNS 指向127.0.0.1这件事应该等 DNS 服务角色装完、区域建好之后再设。**如果提前设了DNS 服务还没起来这台机器会连自己的名字都解析不了Windows 的域发现、更新检查这类功能会变慢。所以严格来说这一步可以放到第 3 节做完之后。配完之后立刻验证网络连通性ping 192.168.10.2 ping 114.114.114.114第一条通说明虚拟网络正常第二条通说明 NAT 出去的路由没问题。如果第二条不通回去看 VMware 的虚拟网络编辑器里 VMnet8 的 NAT 设置是不是被关了。3. DNS服务角色落地从建区域到解析生效3.1 添加DNS服务器角色的两种路径图形化路径服务器管理器 添加角色和功能 基于角色或基于功能的安装 从服务器池中选择服务器 在角色列表里勾选DNS 服务器。弹窗提示需要附加功能点添加。一路下一步到安装。命令行一条搞定Install-WindowsFeature -Name DNS -IncludeManagementTools-IncludeManagementTools这个参数别省不然后面没有图形化的 DNS 管理器得靠dnscmd干活。安装完成后在工具菜单里能看到DNS。打开它左边会展开出你的服务器名下面挂着正向查找区域、反向查找区域、条件转发器这几项。刚装完的时候正向区域里可能只有几个系统自动建的比如TrustAnchors之类的特殊区域别去动它。3.2 正向查找区域区域名怎么取才不埋雷右键正向查找区域 新建区域向导里三件事区域类型选主要区域。辅助区域是从别的 DNS 服务器同步过来存根区域是维护委派信息这两个都用不上。在 Active Directory 中存储区域这个勾去掉。这台机器没有加入域勾了会报错或者建出来的区域行为诡异。区域名称填lab.internal。填完之后向导会提示允许动态更新选不允许。动态更新是说客户端能自己往区域里注册记录域环境下有用这里开着只会让区域文件慢慢变脏出现一堆你不认识的记录。建完之后正向区域下面多出lab.internal这个节点点开能看到里面已经自动有两条记录SOA起始授权机构和 NS名称服务器。这两条是区域自己能工作的基础不要删。3.3 主机记录、别名与泛解析分别解决什么问题A 记录主机记录是最基本的。右键区域 新建主机(A 或 AAAA)名称填wwwIP 填192.168.10.10。如果之前建了反向区域可以顺手勾上创建相关的指针(PTR)记录省一遍手工操作。还想让lab.internal这个裸域名也能访问站点就再建一条主机记录名称留空向导里显示为与父文件夹相同IP 填同一个。CNAME别名解决的是多个名字指向同一台机器的问题。比如希望portal.lab.internal、web.lab.internal都指向www就建两条 CNAME别名分别填portal、web目标填www.lab.internal.注意末尾那个点表示这是完整限定名不加点的话系统会自动补上当前区域名容易搞错。什么时候用 CNAME 而不是直接建 A 记录当 IP 可能变化时。改了www的 A 记录所有指向它的 CNAME 自动跟着变。如果全用 A 记录就得一条条改。泛解析是建一条主机名为*的 A 记录。它会匹配所有没有明确定义的子域名。测试阶段偶尔方便但排错时是噩梦——你以为是拼错了域名结果它照样能解析出一个 IP会把你带偏。我的建议是除非有明确需求别建。3.4 反向查找区域和PTR记录的价值反向区域解决的是给一个 IP反查它叫什么名字的需求。日常上网用不到但很多服务在日志里会做反查没有反向记录的话日志里全是一串 IP出问题的时候排查效率差很多。创建方式右键反向查找区域 新建区域 主要区域区域名称填192.168.10这一段的网络 ID向导会帮你生成10.168.192.in-addr.arpa这样的区域名。建好之后可以在里面手工加 PTR 记录也可以在新建 A 记录的时候勾选自动生成。验证方法是nslookup 192.168.10.10能返回www.lab.internal之类的名字就对了。3.5 转发器让这台服务器自己也能解析外网域名DNS 服务器默认带着一组根提示理论上能自己从根服务器一级级问下来。但实际环境里很多网络会阻断直接访问根服务器的查询导致外网域名解析超时。配置转发器更实际右键服务器名 属性 转发器 编辑 添加。填114.114.114.114和8.8.8.8这两个常用地址或者填你当前网络实际使用的那个本地解析地址。这里有个逻辑要说清楚一旦你把本机的 DNS 指向127.0.0.1这台服务器所有的域名解析请求都会先问到自己的 DNS 服务。 www.lab.internal 由本地区域直接回答其他地方的名字 本地区域不知道就会转发给转发器。所以设置顺序是转发器配好 → 本机 DNS 指向127.0.0.1→ 测试外网解析。如果转发器没配、网络又不通根服务器本机会变成内网名字能解析、外网名字全失败的状态看起来像断网了。3.6 用nslookup把整条解析链路走一遍依次执行这几条nslookup www.lab.internal nslookup lab.internal nslookup www.lab.internal 127.0.0.1 nslookup www.qq.com第一条返回192.168.10.10说明本地区域生效。第二条如果返回了 IP说明裸域名那条记录也建对了。第三条显式指定用本机 DNS 查询排除了Windows 用了别的接口的 DNS这种干扰。第四条是验证转发器能返回真实公网 IP 就说明转发链路通了。如果第一次查返回的是非权威应答别慌那多半是缓存。执行ipconfig /flushdns清一下再查。还有一个细节用nslookup时它会先打印默认服务器和Address两行显示当前用的是哪个 DNS。如果你看到默认服务器指向的不是127.0.0.1说明网卡的 DNS 配置没生效或者存在多网卡优先级问题需要回去检查。4. IIS建站把域名真正指到一个页面上去4.1 安装IIS时要额外勾选的功能项图形化路径服务器管理器 添加角色和功能 勾选Web 服务器(IIS)。中间会有一步选择功能这一步的默认勾选是不完整的我建议手动补几个分类建议勾选用途常见 HTTP 功能默认文档、目录浏览、HTTP 错误、静态内容静态页面必备运行状况和诊断HTTP 日志记录、请求监视出问题时看日志性能静态内容压缩减小响应体积安全性请求筛选挡掉异常请求应用程序开发ASP.NET 4.x、ISAPI 扩展、ISAPI 筛选器后续跑动态页面管理工具IIS 管理控制台必须有管理工具里的IIS 管理控制台一定要勾不然装完了没图形界面。命令行版本Install-WindowsFeature -Name Web-Server -IncludeManagementTools Install-WindowsFeature -Name Web-Default-Doc,Web-Dir-Browsing,Web-Http-Errors,Web-Static-Content,Web-Http-Logging,Web-Stat-Compression,Web-Filtering,Web-Asp-Net45,Web-Mgmt-Console装完后工具菜单里出现IIS 管理器。4.2 默认站点到底该删还是该留打开 IIS 管理器展开网站会看到一个叫Default Web Site的站点物理路径是C:\inetpub\wwwroot绑定是http *:80:注意主机名那一栏是空的。这个空主机名的绑定意味着**凡是发到 80 端口、Host 头没被其他站点匹配的请求全都落到它头上。**它的作用是兜底。要不要删取决于你的规划。如果你只打算建一个站点并且让它绑定具体主机名www.lab.internal那默认站点留着不会有冲突——因为请求的 Host 是www.lab.internal时会被你的站点匹配匹配不到的时候才落到默认站点。但如果你之后想用http://192.168.10.10直接访问来测试看到的会是 IIS 的欢迎页而不是你的页面容易造成站点没生效的误判。所以我的习惯是**先停掉默认站点右键 管理网站 停止不要删。**停掉之后不会有兜底任何请求要么被正确站点接住要么明确报错排查时信号更干净。真需要恢复右键启动就行。4.3 新建站点的完整配置与权限处理先建目录注意别放在C:\inetpub下面那个目录的默认权限是给默认站点准备的混在一起以后理不清。New-Item -ItemType Directory -Path D:\sites\lab -Force icacls D:\sites\lab /grant IIS_IUSRS:(OI)(CI)(RX) /Ticacls这行是给IIS_IUSRS组授予读取和执行权限(OI)(CI)表示继承到子文件夹和文件。**这一步是 403 错误的头号来源。**如果你不自建目录而是直接放桌面或者 C 盘根目录NTFS 权限里没有IIS_IUSRSIIS 拿不到文件直接返回 403.14 或 401.3。然后在 IIS 管理器里右键网站 添加网站网站名称LabWeb应用程序池点旁边的选择新建一个叫LabWebPool的池.NET CLR 版本选无托管代码纯静态页面情况下这个最轻托管管道模式选集成物理路径D:\sites\lab绑定类型httpIP 地址选192.168.10.10或者全部未分配端口80主机名填www.lab.internal点确定。站点会立刻启动。4.4 主机头绑定的工作原理这里解释一下为什么同一个 80 端口能挂多个站点。HTTP 协议在请求头里有一个Host字段浏览器会把你要访问的域名放进去。IIS 收到请求后先看端口再看Host值拿它和所有站点绑定里的主机名比对匹配上哪个就走哪个站点的配置。所以请求的 Host匹配到的站点www.lab.internalLabWebportal.lab.internal如果建了绑定这个主机名的站点就匹配它否则落到默认站点或报 404192.168.10.10主机名不匹配落到空主机头的站点这也解释了一个常见现象用 IP 直接访问一个绑定了主机名的站点会看到 404 或者是别的站点内容。这不是故障是路由规则本来就该这样。如果你想省事绑定里的主机名留空那这个站点就变成兜底的任何 Host 都接。单站点场景下这么配最快。4.5 一个能立刻验证的最小页面IIS 的默认文档列表里包含index.html所以直接放这个文件就能被自动识别。用 PowerShell 生成$html !DOCTYPE html html langzh-CN head meta charsetutf-8 titleLab Web 站点/title /head body h1lab.internal 站点已运行/h1 p主机名$env:COMPUTERNAME/p p当前时间$(Get-Date -Format yyyy-MM-dd HH:mm:ss)/p /body /html Set-Content -Path D:\sites\lab\index.html -Value $html -Encoding UTF8-Encoding UTF8在 PowerShell 5.1 里会写入带 BOM 的文件。带 BOM 的 UTF-8 在 HTML 页面里浏览器通常能正确识别加上meta charsetutf-8双保险中文不会乱码。然后在虚拟机的浏览器里访问http://www.lab.internal。**第一次用 IE 访问可能会被增强安全配置拦住弹一堆警告。**关掉它的位置是服务器管理器 本地服务器 IE 增强的安全配置 把 Administrator 那一项设为关闭。关完重启 IE。页面出来了说明 DNS 和 Web 两层都通了。接下来要把这套东西从虚拟机自己能访问变成宿主机也能访问这时候才会冒出真正的问题。5. 排错链路实录解析通但网页打不开的四种典型症状这部分是我踩坑最多的地方按照遇到问题的顺序写每一条都是实际发生过的。5.1 症状一nslookup正常浏览器超时nslookup www.lab.internal返回192.168.10.10说明 DNS 没问题。浏览器转圈或者报连接超时说明 TCP 层没通。先确认端口通不通不要靠猜Test-NetConnection www.lab.internal -Port 80TcpTestSucceeded是False那就是防火墙。Windows Server 默认开启防火墙IIS 在新建站点时通常会自动加一条 HTTP 入站规则但如果你改过端口、或者手工删过规则就没了。手工加New-NetFirewallRule -DisplayName LabWeb-HTTP-80 -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow如果TcpTestSucceeded是True但页面还是不对那问题在应用层。最典型的是主机头不匹配你用http://192.168.10.10访问但站点的绑定里主机名填了www.lab.internalHost 字段对不上IIS 会返回 404或者返回 Bad Request - Invalid Hostname。这种时候改用域名访问就正常了。还有一种情况是站点被停掉了。IIS 管理器里站点名称前面如果是灰色方块加停止标记右键启动就行。5.2 症状二服务器本机能开宿主机打不开这种情况基本都是网络层的问题跟 DNS 和 IIS 没关系。第一步从宿主机ping 192.168.10.10。不通的话先看 VMware 的虚拟网络编辑器里 VMnet8 是不是启用的再看虚拟机防火墙有没有放行 ICMP 回显请求。Windows 防火墙默认拦 ping需要单独开New-NetFirewallRule -DisplayName Allow-ICMP-In -Protocol ICMPv4 -IcmpType 8 -Direction Inbound -Action Allow第二步ping 通了但网页打不开就是 80 端口的事回到 5.1 的排查。第三步网页也开了但宿主机上敲域名解析不了。这是宿主机自己的 DNS 配置问题跟虚拟机无关。宿主机要解析www.lab.internal得让它知道去问谁。做法是给宿主机的 VMnet8 虚拟网卡配上 DNS 为192.168.10.10。这里要提醒一句宿主机是多网卡环境Windows 的域名解析会涉及多接口的优先级策略有时候配了也不一定按你预期走。最稳妥的做法是在宿主机的 hosts 文件里加一行192.168.10.10 www.lab.internal位置在C:\Windows\System32\drivers\etc\hosts。改完执行ipconfig /flushdns。测完记得删掉不然过几个月你会忘了这回事。5.3 症状三DNS改了解析结果还是旧的这条我单独列出来因为它坑过我不止一次。**第一层是系统缓存。**桌面系统的 DNS 客户端会缓存解析结果。改完记录执行ipconfig /flushdns。命令行的nslookup是直接发查询的不走客户端缓存所以经常出现nslookup 是新的浏览器还是旧的这种矛盾现象原因就在这里。**第二层是浏览器的安全 DNS。**现在的 Edge 和 Chrome 默认可能开着安全 DNS也叫 DNS over HTTPS它会绕过操作系统的 DNS 直接去问公共的加密解析服务。注意这个功能一旦开着你在本地 DNS 里加的任何记录它都看不到因为它压根不问你的服务器。关掉的位置在 Edge 的设置 隐私、搜索和服务 安全性 使用安全 DNS把它关掉。或者把lab.internal加到不安全的 DNS 例外里。这个问题表现得很隐蔽——ping 域名是通的ping 走系统 DNS浏览器就是打不开因为浏览器自己走了另一条路。**第三层是记录本身没生效。**检查是不是在错误的区域里建了记录比如本来该建在lab.internal结果建在了TrustAnchors或者别的区域里。5.4 症状四IIS抛出一堆HTTP错误码IIS 的错误码是很明确的信号看懂能省很多时间。错误码含义常见原因403.14禁止列出目录内容没配默认文档且目录浏览未启用401.3未授权NTFS 权限里缺IIS_IUSRS404.0找不到文件路径错、文件名错、主机头不匹配500.19配置数据无效web.config里有被锁定的配置节503服务不可用应用程序池崩溃或被停403.14 最典型的场景是你放了default.htm之外的默认文档名或者只放了index.php却没装 PHP。IIS 找不到默认文档时会尝试列目录列目录功能默认关闭就返回 403.14。解决方式是确认文件名在默认文档列表里或者在 IIS 的默认文档里手工加一条。500.19 在处理web.config时很常见。默认情况下 IIS 锁定了一部分配置节需要在配置编辑器里解锁特定节或者用命令%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/handlers503 的话先看应用程序池的状态右键回收一下。如果一回收就好、过一会又挂就是代码层面的问题去看 Windows 事件查看器里的应用程序日志。5.5 一份可以照着走的排查顺序表遇到打不开这个问题按这个顺序走不要跳步nslookup 域名—— 确认 DNS 解析出的 IP 是不是你期望的那个Test-NetConnection 域名 -Port 80—— 确认 TCP 端口通不通在服务器本机用http://127.0.0.1访问 —— 绕开 DNS确认 IIS 服务本身活着在服务器本机用http://域名访问 —— 确认本机 DNS 解析链路没问题检查 IIS 绑定里的主机名和端口 —— 确认请求能被正确站点接住查C:\inetpub\logs\LogFiles\W3SVC1下当天的日志 —— 看 IIS 实际收到了什么、返回了什么状态码查 Windows 事件查看器应用程序日志 —— 看有没有服务层面的异常第 6 步的日志很多人不知道在哪。文件名形如u_ex250101.log用记事本打开就是一堆空格分隔的字段重点看cs-uri-stem请求路径、cs(Host)请求的主机头、sc-status返回状态码这几列。IIS 到底收到了什么请求这里面写得清清楚楚比任何猜测都可靠。6. 让这套沙箱更接近真实环境几个后续值得做的调整6.1 hosts与DNS的取舍什么时候别折腾DNS看完上面的配置你可能会觉得为了几个测试域名搞一台 DNS 服务器是不是太重了。确实如果只有一台客户端要解析改 hosts 文件十秒钟就完事。两者的差别在于hosts 是每台客户端各自维护一份DNS 是集中一份所有客户端共用。一台机器用 hosts三台以上、而且以后可能加更多就值得搞 DNS。另外如果你要验证的正是解析流程本身比如测一批客户端的域名切换、测 TTL 生效时间那必须用真的 DNShosts 绕过了整个解析链路验证不出任何东西。我的习惯是临时调试用 hosts固定环境用 DNS。6.2 一个IP挂多个站点与后续上HTTPS的预留现在只有一台机器一个 IP但 80 端口可以挂无数个站点靠主机头区分。比如再建一个portal.lab.internal的站点物理路径换一个绑定里主机名填portal.lab.internal其他照旧。DNS 那边加一条 A 记录或 CNAME 指向同一个 IP。一套流程复制一遍就是一片站点群。如果以后要上 HTTPS有个点要提前知道**443 端口上的多个站点如果共用同一个 IP 和端口必须启用 SNI服务器名称指示。**IIS 8 之后支持在建 HTTPS 绑定时勾选需要服务器名称指示就行。不启用 SNI 的话一个 IP 上一个端口只能绑一张证书第二个站点就加不进去了。至于证书从哪来本地测试场景用自签名证书就够了。IIS 管理器里有创建自签名证书的入口生成后绑定上去浏览器会报证书不受信任点继续访问即可不影响功能验证。6.3 快照节奏与虚拟机磁盘的维护习惯VMware 的快照是这套环境里最值钱的功能。我的建议是在三个节点各打一个节点一操作系统装完、VMware Tools 装完、静态 IP 配完节点二DNS 角色装完、区域和记录建完、解析验证通过节点三IIS 装完、站点跑通、宿主机能访问有了这三个快照后面无论怎么折腾出问题五分钟就能回到一个已知正常的状态。但快照别堆太多。每多一个快照虚拟机磁盘的写放大就越严重时间长了整个虚拟机卡得没法用。同一个节点上有新的快照时把旧的合并掉快照管理器 删除注意删除是把改动合并回磁盘不是回滚。6.4 时间同步、日志与区域文件备份**时间同步。**虚拟机的时间默认跟着宿主机走VMware Tools 提供的同步一般没问题。但如果你后面把这台机器拉进域环境Kerberos 认证对时间偏差的容忍度是 5 分钟超了就登不进域。可以手工指定时间源w32tm /config /manualpeerlist:ntp.aliyun.com /syncfromflags:manual /update w32tm /resync**日志位置。**IIS 日志在C:\inetpub\logs\LogFiles\W3SVC站点ID站点 ID 在 IIS 管理器的站点列表里能看到。默认按天生成新文件。DNS 的查询日志默认是关的需要排错时可以在 DNS 管理器的服务器属性 调试日志里临时开启它会把每一个查询都记下来量非常大用完记得关。**区域文件备份。**DNS 区域其实就是一个文本文件放在C:\Windows\System32\dns\下面文件名就是区域名比如lab.internal.dns。想导出成可读格式dnscmd /zoneexport lab.internal lab.internal.backup.txt导出后会出现在同一个目录下。改配置改崩了把这个文件拷回去重启 DNS 服务就能恢复。区域记录不多的时候直接把这个文件复制一份留档比什么备份方案都简单。这套环境我从最开始只是想试试 DNS 怎么配到后来变成日常一直在用的沙箱中间反复装过很多次。真正让配置变快的原因不是记住命令而是每次都把 IP、主机名、域名先在纸上定死——配置过程里 90% 的返工都是因为中间改了一次名字或者改了一次网段然后所有关联的地方都要跟着改一遍。另外把快照当成撤销键来用比事后修配置的效率高得多尤其是在试一些不确定的参数时。最后补一个小习惯站点跑通之后我会顺手在那台虚拟机桌面写个readme.txt记录 IP、域名、站点目录、快照点的用途。过一个月再打开这套环境看一眼就知道当初是怎么搭的省掉重新摸一遍的时间。
返回列表