aboutsummaryrefslogtreecommitdiffstats
path: root/chapter09/network.xml
blob: c86edf56afa7465aeabff77311355d091c63dcf1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>

<sect1 id="ch-config-network" revision="sysv">
  <?dbhtml filename="network.html"?>

  <title>General Network Configuration</title>

  <indexterm zone="ch-config-network">
    <primary sortas="d-network">network</primary>
  <secondary>configuring</secondary></indexterm>

  <sect2>
    <title>Creating Network Interface Configuration Files</title>

    <para>The files in <filename class="directory">/etc/sysconfig/</filename>
    usually determine which interfaces are brought up and down by the network
    script.  This directory should
    contain a file for each interface to be configured, such as
    <filename>ifconfig.xyz</filename>, where <quote>xyz</quote> describes
    the network card.  The interface name (e.g. eth0) is usually appropriate.
    Each file contains the attributes of one interface, such as its IP
    address(es), subnet masks, and so forth.  The stem of
    the filename must be <emphasis>ifconfig</emphasis>.</para>

    <note>
      <para>If the procedure in the previous section was not used, udev
      will assign network card interface names based on system physical
      characteristics such as enp2s1. If you are not sure what your interface
      name is, you can always run <command>ip link</command> or <command>ls
      /sys/class/net</command> after you have booted your system.
      </para>

      <para>The interface names depend on the implementation and
      configuration of the udev daemon running on the system.  The udev
      daemon for LFS (installed in <xref linkend="ch-system-udev"/>) will
      not run until the LFS system is booted.  So the interface names 
      in the LFS system cannot always be determined by running
      those commands on the host distro,
      <emphasis>even in the chroot environment</emphasis>.</para>
    </note>

    <para>The following command creates a sample file for the
    <emphasis>eth0</emphasis> device with a static IP address:</para>
<!-- jhalfs relies on the values for IFACE, IP, etc. If you want to change
     them, please inform the jhalfs maintainer(s). -->
<screen><userinput>cd /etc/sysconfig/
cat &gt; ifconfig.<replaceable>eth0</replaceable> &lt;&lt; "EOF"
<literal>ONBOOT=<replaceable>yes</replaceable>
IFACE=<replaceable>eth0</replaceable>
SERVICE=<replaceable>ipv4-static</replaceable>
IP=<replaceable>192.168.1.2</replaceable>
GATEWAY=<replaceable>192.168.1.1</replaceable>
PREFIX=<replaceable>24</replaceable>
BROADCAST=<replaceable>192.168.1.255</replaceable></literal>
EOF</userinput></screen>

    <para>The values in italics must be changed in each file, to set
    the interfaces up correctly.</para>

    <para>If the <envar>ONBOOT</envar> variable is set to <quote>yes</quote> the
    System V network script will bring up the Network Interface Card (NIC) during
    the system boot process. If set to anything besides <quote>yes</quote>, the NIC
    will be ignored by the network script and will not be started automatically.
    Interfaces can be manually started or stopped with the
    <command>ifup</command> and <command>ifdown</command> commands.</para>

    <para>The <envar>IFACE</envar> variable defines the interface name,
    for example, eth0.  It is required for all network device configuration
    files. The filename extension must match this value.</para>

    <para>The <envar>SERVICE</envar> variable defines the method used for
    obtaining the IP address. The LFS-Bootscripts package has a modular IP
    assignment format, and creating additional files in the <filename
    class="directory">/lib/services/</filename> directory allows other IP
    assignment methods. This is commonly used for Dynamic Host Configuration
    Protocol (DHCP), which is addressed in the BLFS book.</para>

    <para>The <envar>GATEWAY</envar> variable should contain the default
    gateway IP address, if one is present. If not, then comment out the
    variable entirely.</para>

    <para>The <envar>PREFIX</envar> variable specifies the number of
    bits used in the subnet. Each segment of an IP address is 8 bits. If the
    subnet's netmask is 255.255.255.0, then it is using the first three segments
    (24 bits) to specify the network number. If the netmask is 255.255.255.240,
    the subnet is using the first 28 bits.  Prefixes longer than 24 bits are
    commonly used by DSL and cable-based Internet Service Providers (ISPs).
    In this example (PREFIX=24), the netmask is 255.255.255.0. Adjust the
    <envar>PREFIX</envar> variable according to your specific subnet.
    If omitted, the PREFIX defaults to 24.</para>

    <para>For more information see the <command>ifup</command> man page.</para>

  </sect2>
  <sect2 id="resolv.conf">
    <title>Creating the /etc/resolv.conf File</title>

    <indexterm zone="resolv.conf">
      <primary sortas="e-/etc/resolv.conf">/etc/resolv.conf</primary>
    </indexterm>

    <para>The system will need some means of obtaining Domain Name Service
    (DNS) name resolution to resolve Internet domain names to IP addresses, and
    vice versa. This is best achieved by placing the IP address of the DNS
    server, available from the ISP or network administrator, into
    <filename>/etc/resolv.conf</filename>. Create the file by running the
    following:</para>

<screen><userinput>cat &gt; /etc/resolv.conf &lt;&lt; "EOF"
<literal># Begin /etc/resolv.conf

domain <replaceable>&lt;Your Domain Name&gt;</replaceable>
nameserver <replaceable>&lt;IP address of your primary nameserver&gt;</replaceable>
nameserver <replaceable>&lt;IP address of your secondary nameserver&gt;</replaceable>

# End /etc/resolv.conf</literal>
EOF</userinput></screen>

    <para>The <varname>domain</varname> statement can be omitted
    or replaced with a <varname>search</varname> statement.  See the man page for
    resolv.conf for more details.</para>

    <para>Replace <replaceable>&lt;IP address of the nameserver&gt;</replaceable>
    with the IP address of the DNS most appropriate for the setup. There will
    often be more than one entry (requirements demand secondary servers for
    fallback capability). If you only need or want one DNS server, remove the
    second <emphasis>nameserver</emphasis> line from the file. The IP address
    may also be a router on the local network.</para>

    <note>
      <para>The Google Public IPv4 DNS addresses are 8.8.8.8 and 8.8.4.4.</para>
    </note>

  </sect2>

  <sect2 id="ch-config-hostname">
    <title>Configuring the System Hostname</title>

    <indexterm zone="ch-config-hostname">
      <primary sortas="d-hostname">hostname</primary>
      <secondary>configuring</secondary>
    </indexterm>

     <para>During the boot process, the file <filename>/etc/hostname</filename>
     is used for establishing the system's hostname.</para>

     <para>Create the <filename>/etc/hostname</filename> file and enter a
     hostname by running:</para>

<screen><userinput>echo "<replaceable>&lt;lfs&gt;</replaceable>" &gt; /etc/hostname</userinput></screen>

     <para><replaceable>&lt;lfs&gt;</replaceable> needs to be replaced with the
     name given to the computer. Do not enter the Fully Qualified Domain Name
     (FQDN) here. That information goes in the
     <filename>/etc/hosts</filename> file.</para>

  </sect2>

  <sect2 id="ch-config-hosts">
     <title>Customizing the /etc/hosts File</title>

     <indexterm zone="ch-config-hosts">
       <primary sortas="e-/etc/hosts">/etc/hosts</primary>
     </indexterm>

     <indexterm zone="ch-config-hosts">
       <primary sortas="d-localnet">localnet</primary>
       <secondary>/etc/hosts</secondary>
     </indexterm>

     <indexterm zone="ch-config-hosts">
       <primary sortas="d-network">network</primary>
       <secondary>/etc/hosts</secondary>
     </indexterm>

     <para>Decide on the IP address, fully-qualified domain name (FQDN), and
     possible aliases for use in the <filename>/etc/hosts</filename> file. The
     syntax is:</para>

<screen><literal>IP_address myhost.example.org aliases</literal></screen>

     <para>Unless the computer is to be visible to the Internet (i.e., there is
     a registered domain and a valid block of assigned IP addresses&mdash;most
     users do not have this), make sure that the IP address is in the private
     network IP address range. Valid ranges are:</para>

<screen><literal>Private Network Address Range      Normal Prefix
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</literal></screen>

     <para>x can be any number in the range 16-31. y can be any number in the
     range 0-255.</para>

     <para>A valid private IP address could be 192.168.1.1. A valid FQDN for
     this IP could be lfs.example.org.</para>

     <para>Even if not using a network card, a valid FQDN is still required.
     This is necessary for certain programs to operate correctly.</para>

     <para>Create the  <filename>/etc/hosts</filename> file by running:</para>

<screen><userinput>cat &gt; /etc/hosts &lt;&lt; "EOF"
<literal># Begin /etc/hosts

127.0.0.1 localhost.localdomain localhost
127.0.1.1 <replaceable>&lt;FQDN&gt;</replaceable> <replaceable>&lt;HOSTNAME&gt;</replaceable>
<replaceable>&lt;192.168.1.1&gt;</replaceable> <replaceable>&lt;FQDN&gt;</replaceable> <replaceable>&lt;HOSTNAME&gt;</replaceable> <replaceable>[alias1] [alias2 ...]</replaceable>
::1       localhost ip6-localhost ip6-loopback
ff02::1   ip6-allnodes
ff02::2   ip6-allrouters

# End /etc/hosts</literal>
EOF</userinput></screen>

     <para>The <replaceable>&lt;192.168.1.1&gt;</replaceable>,
     <replaceable>&lt;FQDN&gt;</replaceable>, and
     <replaceable>&lt;HOSTNAME&gt;</replaceable> values need to be
     changed for specific uses or requirements (if assigned an IP address by a
     network/system administrator and the machine will be connected to an
     existing network). The optional alias name(s) can be omitted.</para>

<!--  This is not very useful

     <para>If a network card is not going to be configured, create the
     <filename>/etc/hosts</filename> file by running:</para>

<screen role="nodump"><userinput>cat &gt; /etc/hosts &lt;&lt; "EOF"
<literal># Begin /etc/hosts (no network card version)

127.0.0.1 localhost
127.0.1.1 <replaceable>&lt;FQDN&gt;</replaceable> <replaceable>&lt;HOSTNAME&gt;</replaceable>
::1       localhost ip6-localhost ip6-loopback
ff02::1   ip6-allnodes
ff02::2   ip6-allrouters

# End /etc/hosts (no network card version)</literal>
EOF</userinput></screen> -->

   </sect2>

</sect1>