Files
master/chapter07/network.html
2015-05-23 18:50:06 +08:00

233 lines
13 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title> 7.2.&nbsp;General Network Configuration </title>
<link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="stylesheet" href="../stylesheets/lfs-print.css"
type="text/css" media="print">
</head>
<body class="lfs" id="lfs-7.7-systemd">
<div class="navheader">
<h4> Linux From Scratch - Version 7.7-systemd </h4>
<h3> 第 7 章. 基本系统配置 </h3>
<ul>
<li class="prev"> <a accesskey="p" href="introduction.html"
title="Introduction">上一页</a>
<p> 简介 </p>
</li>
<li class="next"> <a accesskey="n" href="udev.html"
title="Device and Module Handling on an LFS System">下一页</a>
<p> LFS 系统上的设备和模块管理 </p>
</li>
<li class="up"> <a accesskey="u" href="chapter07.html"
title="Chapter&nbsp;7.&nbsp;Basic System Configuration">返回</a>
</li>
<li class="home"> <a accesskey="h" href="../index.html"
title="Linux From Scratch - Version 7.7-systemd">主页</a> </li>
</ul>
</div>
<div class="sect1" xml:lang="en" lang="en">
<h1 class="sect1"> <a id="ch-scripts-network"
name="ch-scripts-network"></a>7.2. 通用网络配置 </h1>
<p> 本节仅在需要配置网卡时参考。</p>
<div class="sect2" xml:lang="en" lang="en">
<h2 class="sect2"> 7.2.1. 网络接口配置文件</h2>
<p> 从 systemd 版本 209 开始,提供了一个名为 <span class="command"><strong>systemd-networkd</strong></span>
命令用于处理基本的网络配置。</p>
<p> <span class="command"><strong>systemd-networkd</strong></span>
的配置文件可能在 <code class="filename">/usr/lib/systemd/network</code>
<code class="filename">/etc/systemd/network</code> 中,其中<code>
</code><code class="filename">/etc/systemd/network</code>
中的配置文件优先级更高。<br>
</p>
<p>配置文件的类型有三种:<code class="filename">.link</code><code
class="filename">.netdev</code><code class="filename">.network</code>
。可以通过查阅 man 手册的<code> </code><code class="filename">systemd-link(5)</code><code
class="filename">systemd-netdev(5)</code><code
class="filename">systemd-network(5)</code> 获得更多信息</p>
<div class="admon note"> <img alt="[Note]"
src="../images/note.png">
<h3> 注意 </h3>
<p> udev 可能根据你的电脑的物理设备将网卡设置为不同的名称,比如有线网卡的名称可能是
enp3s0而无线网卡的名称是 wlp0s20u9。如果你不能确定你的网卡名称可以在系统启动后执行<strong>
</strong><span class="command"><strong>ip link</strong></span>
命令查看。<br>
</p>
<p>译者注:通过执行 ip link 命令,你应该能够取得类似以下的输出:</p>
<pre class="userinput"><kbd class="command">1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default <br> link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br>2: <i>enp3s0</i>: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP mode DEFAULT<br> group default qlen 1000<br> link/ether fc:aa:14:2d:db:a1 brd ff:ff:ff:ff:ff:ff<br>3: <i>wlp0s20u9</i>: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc mq state UP mode DORMANT group<br> default qlen 1000<br> link/ether 0c:82:68:52:85:57 brd ff:ff:ff:ff:ff:ff</kbd>
</pre>
<p>其中斜体的部分就是物理网卡的名称。<br>
</p>
<p> 以下内容摘录于 <a
href="https://wiki.archlinux.org/index.php/Network_Configuration_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29">ArchLinux
wiki</a><br>
</p>
<p>译者注:通过执行 ip link 命令,你应该能够取得类似以下的输出:</p>
<p>对于有多块网卡的电脑,固定设备名称很重要。许多配置问题都是由于网络接口名称变化引起的。<br>
<br>
udev 负 责给设备命名。Systemd v197
引入了可预测的网络接口名称自动给网络设备分配静态名称,网络接口现在是以前 缀 en以太网、wlWLAN、或者
wwWWAN附上一个 自动生成的标识符,产生了一个类似于 enp0s25 的条目。<br>
</p>
</div>
<div class="sect3">
<h3 class="sect3"> <a id="systemd-networkd-static"
name="systemd-networkd-static"></a>7.2.1.1. 静态 IP 配置 </h3>
<p> 通过以下的命令创建静态 IP 的基本配置文件:</p>
<pre class="userinput"><kbd class="command">cat &gt; /etc/systemd/network/10-static-eth0.network &lt;&lt; "EOF"
<code class="literal">[Match]
Name=eth0
[Network]
Address=192.168.0.2/24
Gateway=192.168.0.1
DNS=192.168.0.1</code>
EOF</kbd>
</pre>
<p> 在配置文件中,可以指定多个 DNS 条目。</p>
</div>
<div class="sect3">
<h3 class="sect3"> <a id="systemd-networkd-dhcp"
name="systemd-networkd-dhcp"></a>7.2.1.2. DHCP 配置 </h3>
<p> 通过以下的命令创建 DHCP 的基本配置文件:</p>
<pre class="userinput"><kbd class="command">cat &gt; /etc/systemd/network/10-dhcp-eth0.network &lt;&lt; "EOF"
<code class="literal">[Match]
Name=eth0
[Network]
DHCP=yes</code>
EOF</kbd>
</pre>
<p> 需要注意的是,当前 <span class="command"><strong>systemd-networkd</strong></span>
仅能够处理 DHCPv4。DHCPv6 的支持正在快马加鞭的筹划中。</p>
</div>
</div>
<div class="sect2" xml:lang="en" lang="en">
<h2 class="sect2"> <a id="resolv.conf" name="resolv.conf"></a>7.2.2.
建立 /etc/resolv.conf 文件 </h2>
<p> 如果你的系统需要连接到互联网,它需要利用 DNS 服务将互联网域名解析为实际的 IP 地址,反之亦然。最好的方法是将从
ISP 或者是网络管理员那里取得的 DNS 服务器地址填入<code> </code><code
class="filename">/etc/resolv.conf</code></p>
<p> 如果需要静态的 <code class="filename">/etc/resolv.conf</code>
文件,请使用以下命令:</p>
<pre class="userinput"><kbd class="command">cat &gt; /etc/resolv.conf &lt;&lt; "EOF"
<code class="literal"># Begin /etc/resolv.conf
domain <em class="replaceable"><code>&lt;Your Domain Name&gt;</code></em>
nameserver <em class="replaceable"><code>&lt;IP address of your primary nameserver&gt;</code></em>
nameserver <em class="replaceable"><code>&lt;IP address of your secondary nameserver&gt;</code></em>
# End /etc/resolv.conf</code>
EOF</kbd>
</pre>
<p> <code class="varname">domain</code> 声明可以忽略或者以 <code
class="varname">search</code> 声明替换。参考 man 手册的 resolv.conf
部分获得更多信息。</p>
<p> 其中,<em class="replaceable"><code>&lt;IP address of the
nameserver&gt;</code></em> 替换为最合适的 DNS 的 IP
地址。通常会有多个条目(需要备选服务器具有相关兼容性)。如果你只需要一台 DNS 服务器,请不要输入第二行 <span
class="emphasis"><em>nameserver</em></span> 的内容。该 IP
地址也可以是本地网络中的一台路由。</p>
<div class="admon note"> <img alt="[Note]"
src="../images/note.png">
<h3> 注意 </h3>
<p> Google 公开 IPv4 DNS 解析服务器地址为 8.8.8.8 和 8.8.4.4。<br>
(译者注:国内也有一些 IT 公司提供公开可用的 DNS 解析服务:<br>
114 DNS114.114.114.114 和 114.114.115.115<br>
阿里 DNS223.5.5.5 和 223.6.6.6<br>
百度 DNS180.76.76.76<br>
OpenDNS208.67.220.220<br>
</p>
</div>
<p> 当使用 <span class="command"><strong>systemd-networkd</strong></span>
配置网络,另一个守护进程 <span class="command"><strong>systemd-resolved</strong></span>
将会创建<code> </code><code class="filename">/etc/resolv.conf</code>
文件。然后在早先版本中此文件的路径并不标准,假如出现此问题,你需要使用以下的命令创建到标准位置的链接:</p>
<pre class="userinput"><kbd class="command">ln -sfv /run/systemd/resolve/resolv.conf /etc/resolv.conf</kbd>
</pre>
<p> 对于在 <code class="filename">.network</code> 文件中指定了 DNS
或者使用内置 DHCP 客户端获得 DNS 这两种情况,必须要做如上操作。</p>
</div>
<div class="sect2" xml:lang="en" lang="en">
<h2 class="sect2"> <a id="ch-scripts-hostname"
name="ch-scripts-hostname"></a>7.2.3. 配置系统主机名称 </h2>
<p> 在系统启动过程中,<code class="filename">/etc/hostname</code>
文件用于建立系统的主机名称。 </p>
<p> 通过以下命令建立 <code class="filename">/etc/hostname</code> 文件:</p>
<pre class="userinput"><kbd class="command">echo "<em class="replaceable"><code>&lt;lfs&gt;</code></em>" &gt; /etc/hostname</kbd>
</pre>
<p> <em class="replaceable"><code>&lt;lfs&gt;</code></em>
替换为你想要设置的名称。请不要输入 Fully Qualified Domain NameFQDN它应该在<code>
</code><code class="filename">/etc/hosts</code> 文件中。 </p>
</div>
<div class="sect2" xml:lang="en" lang="en">
<h2 class="sect2"> <a id="ch-scripts-hosts"
name="ch-scripts-hosts"></a>7.2.4. 配置 /etc/hosts 文件 </h2>
<p>
<meta http-equiv="content-type" content="text/html;
charset=UTF-8">
将确定IP地址、完整域名Fully-Qualified Domain NameFQDN和可能的别名填入<code
class="filename">/etc/hosts</code> 文件中。语法是:</p>
<pre class="screen"><code class="literal">IP_address myhost.example.org aliases</code>
</pre>
<p> 除非当前电脑对互联网可见(即已经注册有域名且分配有效的 IP 段——放心吧,大多数用户都没有),否则请确保 IP
地址位于专有网络 IP 段。有效的范围是:</p>
<pre class="screen"><code class="literal">私人网络地址范围 正常前缀
10.0.0.1 - 10.255.255.254 8
172.x.0.1 - 172.x.255.254 16
192.168.y.1 - 192.168.y.254 24</code>
</pre>
<p> x 为 16-31 之间的任意值。Y 为 0-255 之间的任意值。 </p>
<p> 有效的专有 IP 地址形如 192.168.1.1,有效的完整域名形如 lfs.example.org。</p>
<p> 就算没有网卡,也应该提供有效的完整域名,否则某些软件可能无法正常运行。 </p>
<p> 通过以下命令建立 <code class="filename">/etc/hosts</code> 文件:</p>
<pre class="userinput"><kbd class="command">cat &gt; /etc/hosts &lt;&lt; "EOF"
<code class="literal"># Begin /etc/hosts (network card version)
127.0.0.1 localhost
::1 localhost
<em class="replaceable"><code>&lt;192.168.0.2&gt;</code></em> <em class="replaceable"><code>&lt;HOSTNAME.example.org&gt;</code></em> <em class="replaceable"><code>[alias1] [alias2] ...</code></em>
# End /etc/hosts (network card version)</code>
EOF</kbd>
</pre>
<p> <em class="replaceable"><code>&lt;192.168.0.2&gt;</code></em>
<code><em> </em></code><em class="replaceable"><code>&lt;HOSTNAME.example.org&gt;</code></em>
应该更改为需要设置的值(如果此 IP 地址是由网络/系统管理员分配的且电脑可以连接到存在的网络)。别名可以省略。</p>
<p> 如果暂时不打算进行以上的配置,那直接运行下面的命令建立最普通的 <code class="filename">/etc/hosts</code>
文件:</p>
<pre class="userinput"><kbd class="command">cat &gt; /etc/hosts &lt;&lt; "EOF"
<code class="literal"># Begin /etc/hosts (no network card version)
127.0.0.1 <em class="replaceable"><code>&lt;HOSTNAME.example.org&gt;</code></em> <em class="replaceable"><code>&lt;HOSTNAME&gt;</code></em> localhost
::1 localhost
# End /etc/hosts (no network card version)</code>
EOF</kbd>
</pre>
<p> ::1 为 IPv6 对应的 127.0.0.1,且为 IPv6 的回环接口。</p>
</div>
</div>
<div class="navfooter">
<ul>
<li class="prev"> <a accesskey="p" href="introduction.html"
title="Introduction">上一页</a>
<p> 简介 </p>
</li>
<li class="next"> <a accesskey="n" href="udev.html"
title="Device and Module Handling on an LFS System">下一页</a>
<p> LFS 系统上的设备和模块管理 </p>
</li>
<li class="up"> <a accesskey="u" href="chapter07.html"
title="Chapter&nbsp;7.&nbsp;Basic System Configuration">返回</a>
</li>
<li class="home"> <a accesskey="h" href="../index.html"
title="Linux From Scratch - Version 7.7-systemd">主页</a> </li>
</ul>
</div>
</body>
</html>