]> git.proxmox.com Git - pve-docs.git/blame_incremental - pve-network.adoc
hci: add Storage section refering to ceph/ZFS
[pve-docs.git] / pve-network.adoc
... / ...
CommitLineData
1[[sysadmin_network_configuration]]
2Network Configuration
3---------------------
4ifdef::wiki[]
5:pve-toplevel:
6endif::wiki[]
7
8Network configuration can be done either via the GUI, or by manually
9editing the file `/etc/network/interfaces`, which contains the
10whole network configuration. The `interfaces(5)` manual page contains the
11complete format description. All {pve} tools try hard to keep direct
12user modifications, but using the GUI is still preferable, because it
13protects you from errors.
14
15Once the network is configured, you can use the Debian traditional tools `ifup`
16and `ifdown` commands to bring interfaces up and down.
17
18Apply Network Changes
19~~~~~~~~~~~~~~~~~~~~~
20
21{pve} does not write changes directly to `/etc/network/interfaces`. Instead, we
22write into a temporary file called `/etc/network/interfaces.new`, this way you
23can do many related changes at once. This also allows to ensure your changes
24are correct before applying, as a wrong network configuration may render a node
25inaccessible.
26
27Reboot Node to apply
28^^^^^^^^^^^^^^^^^^^^
29
30With the default installed `ifupdown` network managing package you need to
31reboot to commit any pending network changes. Most of the time, the basic {pve}
32network setup is stable and does not change often, so rebooting should not be
33required often.
34
35Reload Network with ifupdown2
36^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
37
38With the optional `ifupdown2` network managing package you also can reload the
39network configuration live, without requiring a reboot.
40
41NOTE: 'ifupdown2' cannot understand 'OpenVSwitch' syntax, so reloading is *not*
42possible if OVS interfaces are configured.
43
44Since {pve} 6.1 you can apply pending network changes over the web-interface,
45using the 'Apply Configuration' button in the 'Network' panel of a node.
46
47To install 'ifupdown2' ensure you have the latest {pve} updates installed, then
48
49WARNING: installing 'ifupdown2' will remove 'ifupdown', but as the removal
50scripts of 'ifupdown' before version '0.8.35+pve1' have a issue where network
51is fully stopped on removal footnote:[Introduced with Debian Buster:
52https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=945877] you *must* ensure
53that you have a up to date 'ifupdown' package version.
54
55For the installation itself you can then simply do:
56
57 apt install ifupdown2
58
59With that you're all set. You can also switch back to the 'ifupdown' variant at
60any time, if you run into issues.
61
62Naming Conventions
63~~~~~~~~~~~~~~~~~~
64
65We currently use the following naming conventions for device names:
66
67* Ethernet devices: en*, systemd network interface names. This naming scheme is
68 used for new {pve} installations since version 5.0.
69
70* Ethernet devices: eth[N], where 0 ≤ N (`eth0`, `eth1`, ...) This naming
71scheme is used for {pve} hosts which were installed before the 5.0
72release. When upgrading to 5.0, the names are kept as-is.
73
74* Bridge names: vmbr[N], where 0 ≤ N ≤ 4094 (`vmbr0` - `vmbr4094`)
75
76* Bonds: bond[N], where 0 ≤ N (`bond0`, `bond1`, ...)
77
78* VLANs: Simply add the VLAN number to the device name,
79 separated by a period (`eno1.50`, `bond1.30`)
80
81This makes it easier to debug networks problems, because the device
82name implies the device type.
83
84Systemd Network Interface Names
85^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
86
87Systemd uses the two character prefix 'en' for Ethernet network
88devices. The next characters depends on the device driver and the fact
89which schema matches first.
90
91* o<index>[n<phys_port_name>|d<dev_port>] — devices on board
92
93* s<slot>[f<function>][n<phys_port_name>|d<dev_port>] — device by hotplug id
94
95* [P<domain>]p<bus>s<slot>[f<function>][n<phys_port_name>|d<dev_port>] — devices by bus id
96
97* x<MAC> — device by MAC address
98
99The most common patterns are:
100
101* eno1 — is the first on board NIC
102
103* enp3s0f1 — is the NIC on pcibus 3 slot 0 and use the NIC function 1.
104
105For more information see https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/[Predictable Network Interface Names].
106
107Choosing a network configuration
108~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
109
110Depending on your current network organization and your resources you can
111choose either a bridged, routed, or masquerading networking setup.
112
113{pve} server in a private LAN, using an external gateway to reach the internet
114^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
115
116The *Bridged* model makes the most sense in this case, and this is also
117the default mode on new {pve} installations.
118Each of your Guest system will have a virtual interface attached to the
119{pve} bridge. This is similar in effect to having the Guest network card
120directly connected to a new switch on your LAN, the {pve} host playing the role
121of the switch.
122
123{pve} server at hosting provider, with public IP ranges for Guests
124^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
125
126For this setup, you can use either a *Bridged* or *Routed* model, depending on
127what your provider allows.
128
129{pve} server at hosting provider, with a single public IP address
130^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
131
132In that case the only way to get outgoing network accesses for your guest
133systems is to use *Masquerading*. For incoming network access to your guests,
134you will need to configure *Port Forwarding*.
135
136For further flexibility, you can configure
137VLANs (IEEE 802.1q) and network bonding, also known as "link
138aggregation". That way it is possible to build complex and flexible
139virtual networks.
140
141Default Configuration using a Bridge
142~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
143
144[thumbnail="default-network-setup-bridge.svg"]
145Bridges are like physical network switches implemented in software.
146All virtual guests can share a single bridge, or you can create multiple
147bridges to separate network domains. Each host can have up to 4094 bridges.
148
149The installation program creates a single bridge named `vmbr0`, which
150is connected to the first Ethernet card. The corresponding
151configuration in `/etc/network/interfaces` might look like this:
152
153----
154auto lo
155iface lo inet loopback
156
157iface eno1 inet manual
158
159auto vmbr0
160iface vmbr0 inet static
161 address 192.168.10.2
162 netmask 255.255.255.0
163 gateway 192.168.10.1
164 bridge_ports eno1
165 bridge_stp off
166 bridge_fd 0
167----
168
169Virtual machines behave as if they were directly connected to the
170physical network. The network, in turn, sees each virtual machine as
171having its own MAC, even though there is only one network cable
172connecting all of these VMs to the network.
173
174Routed Configuration
175~~~~~~~~~~~~~~~~~~~~
176
177Most hosting providers do not support the above setup. For security
178reasons, they disable networking as soon as they detect multiple MAC
179addresses on a single interface.
180
181TIP: Some providers allows you to register additional MACs on their
182management interface. This avoids the problem, but is clumsy to
183configure because you need to register a MAC for each of your VMs.
184
185You can avoid the problem by ``routing'' all traffic via a single
186interface. This makes sure that all network packets use the same MAC
187address.
188
189[thumbnail="default-network-setup-routed.svg"]
190A common scenario is that you have a public IP (assume `198.51.100.5`
191for this example), and an additional IP block for your VMs
192(`203.0.113.16/29`). We recommend the following setup for such
193situations:
194
195----
196auto lo
197iface lo inet loopback
198
199auto eno1
200iface eno1 inet static
201 address 198.51.100.5
202 netmask 255.255.255.0
203 gateway 198.51.100.1
204 post-up echo 1 > /proc/sys/net/ipv4/ip_forward
205 post-up echo 1 > /proc/sys/net/ipv4/conf/eno1/proxy_arp
206
207
208auto vmbr0
209iface vmbr0 inet static
210 address 203.0.113.17
211 netmask 255.255.255.248
212 bridge_ports none
213 bridge_stp off
214 bridge_fd 0
215----
216
217
218Masquerading (NAT) with `iptables`
219~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
220
221Masquerading allows guests having only a private IP address to access the
222network by using the host IP address for outgoing traffic. Each outgoing
223packet is rewritten by `iptables` to appear as originating from the host,
224and responses are rewritten accordingly to be routed to the original sender.
225
226----
227auto lo
228iface lo inet loopback
229
230auto eno1
231#real IP address
232iface eno1 inet static
233 address 198.51.100.5
234 netmask 255.255.255.0
235 gateway 198.51.100.1
236
237auto vmbr0
238#private sub network
239iface vmbr0 inet static
240 address 10.10.10.1
241 netmask 255.255.255.0
242 bridge_ports none
243 bridge_stp off
244 bridge_fd 0
245
246 post-up echo 1 > /proc/sys/net/ipv4/ip_forward
247 post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o eno1 -j MASQUERADE
248 post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o eno1 -j MASQUERADE
249----
250
251
252Linux Bond
253~~~~~~~~~~
254
255Bonding (also called NIC teaming or Link Aggregation) is a technique
256for binding multiple NIC's to a single network device. It is possible
257to achieve different goals, like make the network fault-tolerant,
258increase the performance or both together.
259
260High-speed hardware like Fibre Channel and the associated switching
261hardware can be quite expensive. By doing link aggregation, two NICs
262can appear as one logical interface, resulting in double speed. This
263is a native Linux kernel feature that is supported by most
264switches. If your nodes have multiple Ethernet ports, you can
265distribute your points of failure by running network cables to
266different switches and the bonded connection will failover to one
267cable or the other in case of network trouble.
268
269Aggregated links can improve live-migration delays and improve the
270speed of replication of data between Proxmox VE Cluster nodes.
271
272There are 7 modes for bonding:
273
274* *Round-robin (balance-rr):* Transmit network packets in sequential
275order from the first available network interface (NIC) slave through
276the last. This mode provides load balancing and fault tolerance.
277
278* *Active-backup (active-backup):* Only one NIC slave in the bond is
279active. A different slave becomes active if, and only if, the active
280slave fails. The single logical bonded interface's MAC address is
281externally visible on only one NIC (port) to avoid distortion in the
282network switch. This mode provides fault tolerance.
283
284* *XOR (balance-xor):* Transmit network packets based on [(source MAC
285address XOR'd with destination MAC address) modulo NIC slave
286count]. This selects the same NIC slave for each destination MAC
287address. This mode provides load balancing and fault tolerance.
288
289* *Broadcast (broadcast):* Transmit network packets on all slave
290network interfaces. This mode provides fault tolerance.
291
292* *IEEE 802.3ad Dynamic link aggregation (802.3ad)(LACP):* Creates
293aggregation groups that share the same speed and duplex
294settings. Utilizes all slave network interfaces in the active
295aggregator group according to the 802.3ad specification.
296
297* *Adaptive transmit load balancing (balance-tlb):* Linux bonding
298driver mode that does not require any special network-switch
299support. The outgoing network packet traffic is distributed according
300to the current load (computed relative to the speed) on each network
301interface slave. Incoming traffic is received by one currently
302designated slave network interface. If this receiving slave fails,
303another slave takes over the MAC address of the failed receiving
304slave.
305
306* *Adaptive load balancing (balance-alb):* Includes balance-tlb plus receive
307load balancing (rlb) for IPV4 traffic, and does not require any
308special network switch support. The receive load balancing is achieved
309by ARP negotiation. The bonding driver intercepts the ARP Replies sent
310by the local system on their way out and overwrites the source
311hardware address with the unique hardware address of one of the NIC
312slaves in the single logical bonded interface such that different
313network-peers use different MAC addresses for their network packet
314traffic.
315
316If your switch support the LACP (IEEE 802.3ad) protocol then we recommend using
317the corresponding bonding mode (802.3ad). Otherwise you should generally use the
318active-backup mode. +
319// http://lists.linux-ha.org/pipermail/linux-ha/2013-January/046295.html
320If you intend to run your cluster network on the bonding interfaces, then you
321have to use active-passive mode on the bonding interfaces, other modes are
322unsupported.
323
324The following bond configuration can be used as distributed/shared
325storage network. The benefit would be that you get more speed and the
326network will be fault-tolerant.
327
328.Example: Use bond with fixed IP address
329----
330auto lo
331iface lo inet loopback
332
333iface eno1 inet manual
334
335iface eno2 inet manual
336
337auto bond0
338iface bond0 inet static
339 slaves eno1 eno2
340 address 192.168.1.2
341 netmask 255.255.255.0
342 bond_miimon 100
343 bond_mode 802.3ad
344 bond_xmit_hash_policy layer2+3
345
346auto vmbr0
347iface vmbr0 inet static
348 address 10.10.10.2
349 netmask 255.255.255.0
350 gateway 10.10.10.1
351 bridge_ports eno1
352 bridge_stp off
353 bridge_fd 0
354
355----
356
357
358[thumbnail="default-network-setup-bond.svg"]
359Another possibility it to use the bond directly as bridge port.
360This can be used to make the guest network fault-tolerant.
361
362.Example: Use a bond as bridge port
363----
364auto lo
365iface lo inet loopback
366
367iface eno1 inet manual
368
369iface eno2 inet manual
370
371auto bond0
372iface bond0 inet manual
373 slaves eno1 eno2
374 bond_miimon 100
375 bond_mode 802.3ad
376 bond_xmit_hash_policy layer2+3
377
378auto vmbr0
379iface vmbr0 inet static
380 address 10.10.10.2
381 netmask 255.255.255.0
382 gateway 10.10.10.1
383 bridge_ports bond0
384 bridge_stp off
385 bridge_fd 0
386
387----
388
389
390VLAN 802.1Q
391~~~~~~~~~~~
392
393A virtual LAN (VLAN) is a broadcast domain that is partitioned and
394isolated in the network at layer two. So it is possible to have
395multiple networks (4096) in a physical network, each independent of
396the other ones.
397
398Each VLAN network is identified by a number often called 'tag'.
399Network packages are then 'tagged' to identify which virtual network
400they belong to.
401
402
403VLAN for Guest Networks
404^^^^^^^^^^^^^^^^^^^^^^^
405
406{pve} supports this setup out of the box. You can specify the VLAN tag
407when you create a VM. The VLAN tag is part of the guest network
408configuration. The networking layer supports different modes to
409implement VLANs, depending on the bridge configuration:
410
411* *VLAN awareness on the Linux bridge:*
412In this case, each guest's virtual network card is assigned to a VLAN tag,
413which is transparently supported by the Linux bridge.
414Trunk mode is also possible, but that makes configuration
415in the guest necessary.
416
417* *"traditional" VLAN on the Linux bridge:*
418In contrast to the VLAN awareness method, this method is not transparent
419and creates a VLAN device with associated bridge for each VLAN.
420That is, creating a guest on VLAN 5 for example, would create two
421interfaces eno1.5 and vmbr0v5, which would remain until a reboot occurs.
422
423* *Open vSwitch VLAN:*
424This mode uses the OVS VLAN feature.
425
426* *Guest configured VLAN:*
427VLANs are assigned inside the guest. In this case, the setup is
428completely done inside the guest and can not be influenced from the
429outside. The benefit is that you can use more than one VLAN on a
430single virtual NIC.
431
432
433VLAN on the Host
434^^^^^^^^^^^^^^^^
435
436To allow host communication with an isolated network. It is possible
437to apply VLAN tags to any network device (NIC, Bond, Bridge). In
438general, you should configure the VLAN on the interface with the least
439abstraction layers between itself and the physical NIC.
440
441For example, in a default configuration where you want to place
442the host management address on a separate VLAN.
443
444
445.Example: Use VLAN 5 for the {pve} management IP with traditional Linux bridge
446----
447auto lo
448iface lo inet loopback
449
450iface eno1 inet manual
451
452iface eno1.5 inet manual
453
454auto vmbr0v5
455iface vmbr0v5 inet static
456 address 10.10.10.2
457 netmask 255.255.255.0
458 gateway 10.10.10.1
459 bridge_ports eno1.5
460 bridge_stp off
461 bridge_fd 0
462
463auto vmbr0
464iface vmbr0 inet manual
465 bridge_ports eno1
466 bridge_stp off
467 bridge_fd 0
468
469----
470
471.Example: Use VLAN 5 for the {pve} management IP with VLAN aware Linux bridge
472----
473auto lo
474iface lo inet loopback
475
476iface eno1 inet manual
477
478
479auto vmbr0.5
480iface vmbr0.5 inet static
481 address 10.10.10.2
482 netmask 255.255.255.0
483 gateway 10.10.10.1
484
485auto vmbr0
486iface vmbr0 inet manual
487 bridge_ports eno1
488 bridge_stp off
489 bridge_fd 0
490 bridge_vlan_aware yes
491----
492
493The next example is the same setup but a bond is used to
494make this network fail-safe.
495
496.Example: Use VLAN 5 with bond0 for the {pve} management IP with traditional Linux bridge
497----
498auto lo
499iface lo inet loopback
500
501iface eno1 inet manual
502
503iface eno2 inet manual
504
505auto bond0
506iface bond0 inet manual
507 slaves eno1 eno2
508 bond_miimon 100
509 bond_mode 802.3ad
510 bond_xmit_hash_policy layer2+3
511
512iface bond0.5 inet manual
513
514auto vmbr0v5
515iface vmbr0v5 inet static
516 address 10.10.10.2
517 netmask 255.255.255.0
518 gateway 10.10.10.1
519 bridge_ports bond0.5
520 bridge_stp off
521 bridge_fd 0
522
523auto vmbr0
524iface vmbr0 inet manual
525 bridge_ports bond0
526 bridge_stp off
527 bridge_fd 0
528
529----
530
531////
532TODO: explain IPv6 support?
533TODO: explain OVS
534////