<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Developer on NetUtil</title>
    <link>https://www.netutil.app/zh-hans/tags/developer/</link>
    <description>Recent content in Developer on NetUtil</description>
    <generator>Hugo</generator>
    <language>zh-Hans</language>
    <lastBuildDate>Sat, 16 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.netutil.app/zh-hans/tags/developer/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Mac上的nslookup：DNS查询命令及各自的适用场景</title>
      <link>https://www.netutil.app/zh-hans/blog/dns-lookup-mac/</link>
      <pubDate>Sat, 16 May 2026 00:00:00 +0000</pubDate>
      <guid>https://www.netutil.app/zh-hans/blog/dns-lookup-mac/</guid>
      <description>&lt;p&gt;您需要检查DNS记录。可能您刚换了托管服务商，想确认域名是否指向了新服务器；可能您的邮件退件了，怀疑是MX记录的问题；或者一个网站加载了错误的内容，您想弄清楚是DNS问题还是其他原因。&lt;/p&gt;&#xA;&lt;p&gt;macOS内置了三个用于DNS查询的终端命令：&lt;code&gt;nslookup&lt;/code&gt;、&lt;code&gt;dig&lt;/code&gt;和&lt;code&gt;host&lt;/code&gt;。它们都查询DNS，但各自以不同的方式呈现结果，适用于不同的场景。&lt;/p&gt;&#xA;&lt;h2 id=&#34;dns查询实际上做了什么&#34;&gt;DNS查询实际上做了什么&lt;/h2&gt;&#xA;&lt;p&gt;当您在浏览器中输入域名时，Mac会询问DNS解析器（通常是您ISP的服务器或公共解析器如1.1.1.1）将该名称转换为IP地址。解析器查找答案，然后您的计算机连接到该IP地址。&lt;/p&gt;&#xA;&lt;p&gt;DNS查询让您可以自己运行这个转换过程并检查结果。您可以看到域名解析到哪个IP地址，哪些邮件服务器处理其邮件，哪些名称服务器对其具有权威性。这涵盖了日常调试的大多数情况。&lt;/p&gt;&#xA;&lt;p&gt;常见的记录类型：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;A&lt;/strong&gt;：IPv4地址（最常查询的类型）&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;AAAA&lt;/strong&gt;：IPv6地址&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;MX&lt;/strong&gt;：邮件服务器，含优先级&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;CNAME&lt;/strong&gt;：指向另一个域名的别名&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;TXT&lt;/strong&gt;：文本记录，用于SPF、DKIM、域名验证&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;NS&lt;/strong&gt;：对该域名具有权威性的名称服务器&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;mac上的nslookup熟悉的起点&#34;&gt;Mac上的nslookup：熟悉的起点&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;nslookup&lt;/code&gt;是大多数人首先想到的命令。它存在于每个操作系统上，所以如果您在其他地方做过DNS查询，语法会感觉很熟悉。&lt;/p&gt;&#xA;&lt;h3 id=&#34;基本a记录查询&#34;&gt;基本A记录查询&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nslookup google.com&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;输出显示回答了查询的DNS服务器以及IP地址。&amp;ldquo;Non-authoritative answer&amp;quot;这一行只是意味着结果来自缓存，而不是域名本身的名称服务器。这是正常的。&lt;/p&gt;&#xA;&lt;h3 id=&#34;查询特定记录类型&#34;&gt;查询特定记录类型&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nslookup -type&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;MX google.com&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;将&lt;code&gt;MX&lt;/code&gt;替换为任何记录类型：&lt;code&gt;A&lt;/code&gt;、&lt;code&gt;AAAA&lt;/code&gt;、&lt;code&gt;CNAME&lt;/code&gt;、&lt;code&gt;TXT&lt;/code&gt;、&lt;code&gt;NS&lt;/code&gt;、&lt;code&gt;SOA&lt;/code&gt;。例如，检查用于邮件故障排查的SPF和DKIM：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nslookup -type&lt;span style=&#34;color:#0550ae&#34;&gt;=&lt;/span&gt;TXT google.com&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;查询特定dns服务器&#34;&gt;查询特定DNS服务器&lt;/h3&gt;&#xA;&lt;p&gt;这是&lt;code&gt;nslookup&lt;/code&gt;真正有用的地方。不必向默认解析器提问（它可能有缓存的旧数据），您可以直接向特定服务器查询：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nslookup google.com 8.8.8.8&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nslookup google.com 1.1.1.1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查询多个服务器可以让您看到DNS更改是否已经传播。如果8.8.8.8显示您的新IP但1.1.1.1仍显示旧IP，说明传播仍在进行中。&lt;/p&gt;&#xA;&lt;h3 id=&#34;nslookup交互模式&#34;&gt;nslookup交互模式&lt;/h3&gt;&#xA;&lt;p&gt;不带参数输入&lt;code&gt;nslookup&lt;/code&gt;，您会看到一个提示符。从那里您可以运行多个查询，而无需每次都重新输入命令：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;gt; set type=MX&#xA;&amp;gt; google.com&#xA;&amp;gt; set type=A&#xA;&amp;gt; example.com&#xA;&amp;gt; exit&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;nslookup&lt;/code&gt;的主要缺点是其输出将信息性消息和实际结果混合在一起。不同记录类型的格式不一致，使其难以一眼看懂。&lt;/p&gt;&#xA;&lt;h2 id=&#34;digmac上dns查询的强力工具&#34;&gt;dig：Mac上DNS查询的强力工具&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;dig&lt;/code&gt;（Domain Information Groper）是经常进行DNS故障排查的系统管理员和开发者的首选工具。其输出结构化且一致，控制选项比&lt;code&gt;nslookup&lt;/code&gt;丰富得多。&lt;/p&gt;&#xA;&lt;h3 id=&#34;基本查询&#34;&gt;基本查询&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dig google.com&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;输出默认非常详细：您的问题、答案部分、时间以及响应的服务器。在调试时，这些额外信息很有用，因为您可以看到确切返回了什么以及花了多长时间。&lt;/p&gt;&#xA;&lt;h3 id=&#34;使用short获取简洁答案&#34;&gt;使用+short获取简洁答案&lt;/h3&gt;&#xA;&lt;p&gt;当您想要快速得到答案而不需要周围的详细信息时：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dig google.com +short&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这只输出IP地址。适合编写脚本或当您只想知道结果时：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dig google.com MX +short&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;返回带优先级的MX记录，每行一条。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何在Mac上检查开放端口：lsof、netstat和nc</title>
      <link>https://www.netutil.app/zh-hans/blog/check-port-open-mac/</link>
      <pubDate>Sat, 16 May 2026 00:00:00 +0000</pubDate>
      <guid>https://www.netutil.app/zh-hans/blog/check-port-open-mac/</guid>
      <description>&lt;p&gt;您运行了&lt;code&gt;rails server&lt;/code&gt;但页面无法加载，或者您尝试连接远程服务器却没有任何响应。第一个问题永远是：这个端口真的开着吗？&lt;/p&gt;&#xA;&lt;p&gt;在Mac上检查端口状态只需一条命令。关键是要知道：检查自己的Mac还是检查远程主机，应该使用不同的命令。&lt;/p&gt;&#xA;&lt;h2 id=&#34;检查本机开放端口&#34;&gt;检查本机开放端口&lt;/h2&gt;&#xA;&lt;p&gt;这是开发者最常遇到的情况。您的开发服务器应该运行在3000端口，但浏览器说无法连接。这个端口根本在监听吗？&lt;/p&gt;&#xA;&lt;h3 id=&#34;lsof--i-端口最快的答案&#34;&gt;lsof -i :端口（最快的答案）&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lsof -i :3000&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果有程序在监听，您会看到如下输出：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;COMMAND   PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME&#xA;ruby     8421  aaron  13u  IPv4 0x3f8a2b4c      0t0  TCP *:3000 (LISTEN)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果输出为空，说明没有任何程序绑定到该端口。要么您的Rails服务器没有运行，要么它启动在了其他端口上。&lt;/p&gt;&#xA;&lt;p&gt;检查8080端口：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lsof -i :8080&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;检查80端口（需要sudo，因为这是特权端口）：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo lsof -i :80&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;lsof--i--grep-listen一次看到所有端口&#34;&gt;lsof -i | grep LISTEN（一次看到所有端口）&lt;/h3&gt;&#xA;&lt;p&gt;要查看Mac当前正在监听的所有端口：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lsof -i &lt;span style=&#34;color:#1f2328&#34;&gt;|&lt;/span&gt; grep LISTEN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;输出显示所有拥有开放监听端口的进程：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ruby      8421  aaron  13u  IPv4  TCP *:3000 (LISTEN)&#xA;node      9102  aaron  21u  IPv6  TCP *:8080 (LISTEN)&#xA;postgres  1234  aaron   5u  IPv4  TCP localhost:5432 (LISTEN)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;注意&lt;code&gt;localhost:5432&lt;/code&gt;和&lt;code&gt;*:3000&lt;/code&gt;的区别。Postgres只接受来自同一台机器的连接，而Rails接受来自网络中任何地方的连接。当您试图从另一台设备连接时，这个区别至关重要。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
