hostapd: fix parallel build issues and spurious object file rebuilds (backport of...
[openwrt/svn-archive/archive.git] / docs / network.tex
1 The network configuration is stored in \texttt{/etc/config/network}
2 and is divided into interface configurations.
3 Each interface configuration either refers directly to an ethernet/wifi
4 interface (\texttt{eth0}, \texttt{wl0}, ..) or to a bridge containing multiple interfaces.
5 It looks like this:
6
7 \begin{Verbatim}
8 config interface "lan"
9 option ifname "eth0"
10 option proto "static"
11 option ipaddr "192.168.1.1"
12 option netmask "255.255.255.0"
13 option gateway "192.168.1.254"
14 option dns "192.168.1.254"
15 \end{Verbatim}
16
17 \texttt{ifname} specifies the Linux interface name.
18 If you want to use bridging on one or more interfaces, set \texttt{ifname} to a list
19 of interfaces and add:
20 \begin{Verbatim}
21 option type "bridge"
22 \end{Verbatim}
23
24 It is possible to use VLAN tagging on an interface simply by adding the VLAN IDs
25 to it, e.g. \texttt{eth0.1}. These can be nested as well. See the switch section for
26 this.
27
28 \begin{Verbatim}
29 config inter
30 \end{Verbatim}
31
32 This sets up a simple static configuration for \texttt{eth0}. \texttt{proto} specifies the
33 protocol used for the interface. The default image usually provides \texttt{'none'}
34 \texttt{'static'}, \texttt{'dhcp'} and \texttt{'pppoe'}. Others can be added by installing additional
35 packages.
36
37 When using the \texttt{'static'} method like in the example, the options \texttt{ipaddr} and
38 \texttt{netmask} are mandatory, while \texttt{gateway} and \texttt{dns} are optional.
39 You can specify more than one DNS server, separated with spaces:
40
41 \begin{Verbatim}
42 config interface "lan"
43 option ifname "eth0"
44 option proto "static"
45 ...
46 option dns "192.168.1.254 192.168.1.253" (optional)
47 \end{Verbatim}
48
49 DHCP currently only accepts \texttt{ipaddr} (IP address to request from the server)
50 and \texttt{hostname} (client hostname identify as) - both are optional.
51
52 \begin{Verbatim}
53 config interface "lan"
54 option ifname "eth0"
55 option proto "dhcp"
56 option ipaddr "192.168.1.1" (optional)
57 option hostname "openwrt" (optional)
58 \end{Verbatim}
59
60 PPP based protocols (\texttt{pppoe}, \texttt{pptp}, ...) accept these options:
61 \begin{itemize}
62 \item{username} \\
63 The PPP username (usually with PAP authentication)
64 \item{password} \\
65 The PPP password
66 \item{keepalive} \\
67 Ping the PPP server (using LCP). The value of this option
68 specifies the maximum number of failed pings before reconnecting.
69 The ping interval defaults to 5, but can be changed by appending
70 ",<interval>" to the keepalive value
71 \item{demand} \\
72 Use Dial on Demand (value specifies the maximum idle time.
73
74 \item{server: (pptp)} \\
75 The remote pptp server IP
76 \end{itemize}
77
78 For all protocol types, you can also specify the MTU by using the \texttt{mtu} option.
79 A sample PPPoE config would look like this:
80
81 \begin{Verbatim}
82 config interface "lan"
83 option ifname "eth0"
84 option proto "pppoe"
85 option username "username"
86 option password "openwrt"
87 option mtu 1492 (optional)
88 \end{Verbatim}
89
90 \subsubsection{Setting up static routes}
91
92 You can set up static routes for a specific interface that will be brought up
93 after the interface is configured.
94
95 Simply add a config section like this:
96
97 \begin{Verbatim}
98 config route foo
99 option interface lan
100 option target 1.1.1.0
101 option netmask 255.255.255.0
102 option gateway 192.168.1.1
103 \end{Verbatim}
104
105 The name for the route section is optional, the \texttt{interface}, \texttt{target} and
106 \texttt{gateway} options are mandatory.
107 Leaving out the \texttt{netmask} option will turn the route into a host route.
108
109 \subsubsection{Setting up the switch (currently broadcom only)}
110
111 The switch configuration is set by adding a \texttt{'switch'} config section.
112 Example:
113
114 \begin{Verbatim}
115 config switch "eth0"
116 option vlan0 "1 2 3 4 5*"
117 option vlan1 "0 5"
118 \end{Verbatim}
119
120 On Broadcom hardware the section name needs to be eth0, as the switch driver
121 does not detect the switch on any other physical device.
122 Every vlan option needs to have the name vlan<n> where <n> is the VLAN number
123 as used in the switch driver.
124 As value it takes a list of ports with these optional suffixes:
125
126 \begin{itemize}
127 \item{\texttt{'*'}:}
128 Set the default VLAN (PVID) of the Port to the current VLAN
129 \item{\texttt{'u'}:}
130 Force the port to be untagged
131 \item{\texttt{'t'}:}
132 Force the port to be tagged
133 \end{itemize}
134
135 The CPU port defaults to tagged, all other ports to untagged.
136 On Broadcom hardware the CPU port is always 5. The other ports may vary with
137 different hardware.
138
139 For instance, if you wish to have 3 vlans, like one 3-port switch, 1 port in a
140 DMZ, and another one as your WAN interface, use the following configuration :
141
142 \begin{Verbatim}
143 config switch "eth0"
144 option vlan0 "1 2 3 5*"
145 option vlan1 "0 5"
146 option vlan2 "4 5"
147 \end{Verbatim}
148
149 Three interfaces will be automatically created using this switch layout :
150 \texttt{eth0.0} (vlan0), \texttt{eth0.1} (vlan1) and \texttt{eth0.2} (vlan2).
151 You can then assign those interfaces to a custom network configuration name
152 like \texttt{lan}, \texttt{wan} or \texttt{dmz} for instance.
153
154 \subsubsection{Setting up IPv6 connectivity}
155
156 OpenWrt supports IPv6 connectivity using PPP, Tunnel brokers or static
157 assignment.
158
159 If you use PPP, IPv6 will be setup using IP6CP and there is nothing to
160 configure.
161
162 To setup an IPv6 tunnel to a tunnel broker, you can install the
163 \texttt{6scripts} package and edit the \texttt{/etc/config/6tunnel}
164 file and change the settings accordingly :
165
166 \begin{Verbatim}
167 config 6tunnel
168 option tnlifname 'sixbone'
169 option remoteip4 '1.0.0.1'
170 option localip4 '1.0.0.2'
171 option localip6 '2001::DEAD::BEEF::1'
172 \end{Verbatim}
173
174 \begin{itemize}
175 \item{\texttt{'tnlifname'}:}
176 Set the interface name of the IPv6 in IPv4 tunnel
177 \item{\texttt{'remoteip4'}:}
178 IP address of the remote end to establish the 6in4 tunnel.
179 This address is given by the tunnel broker
180 \item{\texttt{'localip4'}:}
181 IP address of your router to establish the 6in4 tunnel.
182 It will usually match your WAN IP address.
183 \item{\texttt{'localip6'}:}
184 IPv6 address to setup on your tunnel side
185 This address is given by the tunnel broker
186 \end{itemize}
187
188 Using the same package you can also setup an IPv6 bridged connection :
189
190 \begin{Verbatim}
191 config 6bridge
192 option bridge 'br6'
193 \end{Verbatim}
194
195 By default the script bridges the WAN interface with the LAN interface
196 and uses ebtables to filter anything that is not IPv6 on the bridge.
197 This configuration is particularly useful if your router is not
198 IPv6 ND proxy capable (see: http://www.rfc-archive.org/getrfc.php?rfc=4389).
199
200
201 IPv6 static addressing is also supported using a similar setup as
202 IPv4 but with the \texttt{ip6} prefixing (when applicable).
203
204 \begin{Verbatim}
205 config interface "lan"
206 option ifname "eth0"
207 option proto "static"
208 option ip6addr "fe80::200:ff:fe00:0/64"
209 option ip6gw "2001::DEAF:BEE:1"
210 \end{Verbatim}