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