比利牛仔 發表於 2022-6-29 17:41:00

通过 hosts 文件配置本地域名

<h1 id="通过-hosts-文件配置本地域名">通过 hosts 文件配置本地域名</h1>
<br>
<br>
<h2 id="概念">概念</h2>
<ol>
<li>
<p><code>DNS</code>: 域名系统(Domain Name System),是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。</p>
<ul>
<li>将域名映射到对应的IP地址。</li>
<li>互联网通过IP定位浏览器建立连接,但是我们不易区别IP,为了方便用户辨识IP所代表的意义,操作系统会将IP和域名进行转换</li>
<li>DNS服务器可以看作注册表,记录域名及对应的IP。浏览器访问网址时会根据域名在此服务器获得IP.</li>
</ul>
</li>
<li>
<p><code>hosts文件</code>: 操作系统操作的 <code>IP</code> 和 <code>域名</code> 本地映射文件。</p>
<ul>
<li>可以视为DNS server的重写,一旦查到了指定的域名,就不会继续查找DNS server, 所以可以节省时间</li>
<li>hosts设置的IP地址是静态的,如果web app的宿主机地址发生改变,对应的hosts也要改写。</li>
</ul>
</li>
</ol>
<br>
<h2 id="域名查询顺序">域名查询顺序</h2>
<blockquote>
<p>浏览器缓存&gt;本地操作系统缓存&gt;DNS服务器(路由缓存 &gt; 互联网DNS缓存服务器)&gt;递归搜索</p>
</blockquote>
<ul>
<li>
<p>浏览器缓存: 只存下浏览器自己访问过的域名.</p>
<ul>
<li>为了加快访问速度,Google Chrome浏览器采用了预提DNS记录,在本地建立DNS缓存的方法,加快网站的连接速度。</li>
<li>chrome://net-internals/#dns 这里可以看各域名的DNS 缓存时间。</li>
<li>chrome对每个域名会默认缓存60s。</li>
</ul>
</li>
<li>
<p>本地操作系统缓存: 电脑访问过的, 具体可通过hosts文件设置</p>
<ul>
<li>Windows查看缓存: <code>ipconfig /displaydns</code></li>
<li>Windows刷新缓存: <code>ipconfig /flushdns</code></li>
</ul>
</li>
<li>
<p>DNS服务器: 包括路由缓存和互联网DNS服务器, 以及13台根服务器</p>
</li>
</ul>
<br>
<h2 id="hosts文件配置">hosts文件配置</h2>
<blockquote>
<p>通过上面介绍可知域名查询顺序,所以我们可以通过修改操作系统的hosts文件,来配置本地域名。</p>
</blockquote>
<h3 id="windows">Windows</h3>
<ol>
<li>
<p>配置</p>
<pre><code class="language-sh"># 打开 hosts文件,文件路径如下:
C:\Windows\System32\drivers\etc\hosts

# 添加域名配置
192.168.1.1   www.test.com
</code></pre>
<p>Tips</p>
<ul>
<li>文件修改时,注意域名后不要有空格</li>
<li>如果是用第三方工具编辑hosts,保存文件时注意编码格式,必须是<code>ANSI</code>。</li>
</ul>
</li>
<li>
<p>刷新与查看</p>
<pre><code class="language-sh"># 进入 csh终端窗口(小黑窗)
win + r&gt;csh&gt;回车

# 查看 DNS缓存
ipconfig /displaydns

# 如果没生效, 则刷新 DNS缓存
ipconfig /flushdns
</code></pre>
</li>
</ol>
<h3 id="linux">Linux</h3>
<ol>
<li>
<p>配置</p>
<pre><code class="language-sh"># 打开 hosts文件,文件路径如下:
sudo vim /etc/hosts

# 添加域名信息
192.168.1.1   www.test.com
</code></pre>
</li>
<li>
<p>刷新</p>
<p>如果域名未生效,则可以重启网络来刷新,下面是centos操作</p>
<p><code>service network restart</code></p>
</li>
</ol>
<br>
<h2 id="测试">测试</h2>
<p>直接ping域名即可,如:</p>
<p><code>ping www.test.com</code></p>
<p>Windows还可以查看DNS缓存。</p>
<br>
<h2 id="常见问题">常见问题</h2>
<ol>
<li>
<p>Windows中的 hosts文件编辑后无法保存</p>
<ul>
<li>原因: hosts文件只有可读权限
<ul>
<li>
<p>处理: 去掉hosts属性中的“可读”即可,如图所示:</p>
<p><img src="https://gitee.com/librarookie/picgo/raw/main/images/md_20220629171821.png" alt="20220629171821" loading="lazy"></p>
</li>
</ul>
</li>
</ul>
</li>
<li>
<p>修改了hosts文件,添加了域名映射信息,但是不生效,试过了重新启动和刷新DNS都不行</p>
<ul>
<li>原因1: 域名信息配置不规范; 或者域名、ip拼写错误;</li>
<li>原因2: 使用第三方工具编辑 hosts文件,保存后hosts文件的编码格式变了,而windows对于hosts文件只能读取ASCII编码,所以hosts文件的编码必须是 <code>ANSI</code>。
<ul>
<li>
<p>处理: 将hosts文件的域名信息填写好,然后另存为,在编码处选择 “ANSI” ,最后确定。</p>
<p><img src="https://gitee.com/librarookie/picgo/raw/main/images/md_20220629171956.png" alt="20220629171956" loading="lazy"></p>
<p><img src="https://gitee.com/librarookie/picgo/raw/main/images/md_hosts_faq.png" alt="hosts_faq" loading="lazy"></p>
</li>
</ul>
</li>
</ul>
</li>
</ol>
<br>
<br><br><br>
来源:https://www.cnblogs.com/librarookie/p/16424362.html
頁: [1]
查看完整版本: 通过 hosts 文件配置本地域名