]> git.proxmox.com Git - pve-docs.git/blame - pve-network.adoc
network: typo fixes
[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
a22d7c24 15Once the network is configured, you can use the Debian traditional tools `ifup`
05213009 16and `ifdown` commands to bring interfaces up and down.
0bcd1f7f 17
52e23c35
TL
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.
0bcd1f7f 61
0bcd1f7f
DM
62Naming Conventions
63~~~~~~~~~~~~~~~~~~
64
65We currently use the following naming conventions for device names:
66
05213009
EK
67* Ethernet devices: en*, systemd network interface names. This naming scheme is
68 used for new {pve} installations since version 5.0.
7a0d4784 69
05213009
EK
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.
0bcd1f7f
DM
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,
7a0d4784 79 separated by a period (`eno1.50`, `bond1.30`)
0bcd1f7f
DM
80
81This makes it easier to debug networks problems, because the device
05213009 82name implies the device type.
cc3cb912 83
7a0d4784
WL
84Systemd Network Interface Names
85^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
86
8116dea5
DM
87Systemd uses the two character prefix 'en' for Ethernet network
88devices. The next characters depends on the device driver and the fact
cc3cb912 89which schema matches first.
7a0d4784
WL
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
cc3cb912 99The most common patterns are:
7a0d4784
WL
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
cc3cb912
DM
105For more information see https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/[Predictable Network Interface Names].
106
05213009
EK
107Choosing a network configuration
108~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
109
a22d7c24 110Depending on your current network organization and your resources you can
05213009
EK
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
a22d7c24 116The *Bridged* model makes the most sense in this case, and this is also
05213009 117the default mode on new {pve} installations.
a22d7c24
SR
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
05213009
EK
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
a22d7c24 133systems is to use *Masquerading*. For incoming network access to your guests,
05213009
EK
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.
7a0d4784 140
0bcd1f7f
DM
141Default Configuration using a Bridge
142~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
143
50f88938 144[thumbnail="default-network-setup-bridge.svg"]
05213009 145Bridges are like physical network switches implemented in software.
e2280bf7
TL
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.
05213009 148
0bcd1f7f 149The installation program creates a single bridge named `vmbr0`, which
04e8476d
EK
150is connected to the first Ethernet card. The corresponding
151configuration in `/etc/network/interfaces` might look like this:
0bcd1f7f
DM
152
153----
154auto lo
155iface lo inet loopback
156
7a0d4784 157iface eno1 inet manual
0bcd1f7f
DM
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
7a0d4784 164 bridge_ports eno1
0bcd1f7f
DM
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
0bcd1f7f
DM
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
67c9747f
TL
181TIP: Some providers allow you to register additional MACs through their
182management interface. This avoids the problem, but can be clumsy to
0bcd1f7f
DM
183configure because you need to register a MAC for each of your VMs.
184
8c1189b6 185You can avoid the problem by ``routing'' all traffic via a single
0bcd1f7f
DM
186interface. This makes sure that all network packets use the same MAC
187address.
188
50f88938 189[thumbnail="default-network-setup-routed.svg"]
05213009 190A common scenario is that you have a public IP (assume `198.51.100.5`
0bcd1f7f 191for this example), and an additional IP block for your VMs
05213009 192(`203.0.113.16/29`). We recommend the following setup for such
0bcd1f7f
DM
193situations:
194
195----
196auto lo
197iface lo inet loopback
198
7a0d4784
WL
199auto eno1
200iface eno1 inet static
05213009 201 address 198.51.100.5
0bcd1f7f 202 netmask 255.255.255.0
05213009 203 gateway 198.51.100.1
1ed90852 204 post-up echo 1 > /proc/sys/net/ipv4/ip_forward
7a0d4784 205 post-up echo 1 > /proc/sys/net/ipv4/conf/eno1/proxy_arp
0bcd1f7f
DM
206
207
208auto vmbr0
209iface vmbr0 inet static
05213009
EK
210 address 203.0.113.17
211 netmask 255.255.255.248
0bcd1f7f
DM
212 bridge_ports none
213 bridge_stp off
214 bridge_fd 0
215----
216
217
8c1189b6
FG
218Masquerading (NAT) with `iptables`
219~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0bcd1f7f 220
05213009
EK
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.
0bcd1f7f
DM
225
226----
227auto lo
228iface lo inet loopback
229
05213009 230auto eno1
470d4313 231#real IP address
7a0d4784 232iface eno1 inet static
05213009 233 address 198.51.100.5
0bcd1f7f 234 netmask 255.255.255.0
05213009 235 gateway 198.51.100.1
0bcd1f7f
DM
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
22d52440 246 post-up echo 1 > /proc/sys/net/ipv4/ip_forward
7a0d4784
WL
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
0bcd1f7f
DM
249----
250
22d52440
OB
251NOTE: In some masquerade setups with firewall enabled, conntrack zones might be
252needed for outgoing connections. Otherwise the firewall could block outgoing
253connections since they will prefer the `POSTROUTING` of the VM bridge (and not
254`MASQUERADE`).
255
256Adding these lines in the `/etc/network/interfaces` can fix this problem:
257
258----
259post-up iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1
260post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1
261----
262
263For more information about this, refer to the following links:
264https://commons.wikimedia.org/wiki/File:Netfilter-packet-flow.svg[Netfilter Packet Flow]
265https://lwn.net/Articles/370152/[Patch on netdev-list introducing conntrack zones]
266https://blog.lobraun.de/2019/05/19/prox/[Blog post with a good explanation by using TRACE in the raw table]
267
268
b4c06a93
WL
269
270Linux Bond
271~~~~~~~~~~
272
3eafe338
WL
273Bonding (also called NIC teaming or Link Aggregation) is a technique
274for binding multiple NIC's to a single network device. It is possible
275to achieve different goals, like make the network fault-tolerant,
276increase the performance or both together.
277
278High-speed hardware like Fibre Channel and the associated switching
279hardware can be quite expensive. By doing link aggregation, two NICs
280can appear as one logical interface, resulting in double speed. This
281is a native Linux kernel feature that is supported by most
282switches. If your nodes have multiple Ethernet ports, you can
283distribute your points of failure by running network cables to
284different switches and the bonded connection will failover to one
285cable or the other in case of network trouble.
286
287Aggregated links can improve live-migration delays and improve the
288speed of replication of data between Proxmox VE Cluster nodes.
b4c06a93
WL
289
290There are 7 modes for bonding:
291
292* *Round-robin (balance-rr):* Transmit network packets in sequential
293order from the first available network interface (NIC) slave through
294the last. This mode provides load balancing and fault tolerance.
295
296* *Active-backup (active-backup):* Only one NIC slave in the bond is
297active. A different slave becomes active if, and only if, the active
298slave fails. The single logical bonded interface's MAC address is
299externally visible on only one NIC (port) to avoid distortion in the
300network switch. This mode provides fault tolerance.
301
302* *XOR (balance-xor):* Transmit network packets based on [(source MAC
303address XOR'd with destination MAC address) modulo NIC slave
304count]. This selects the same NIC slave for each destination MAC
305address. This mode provides load balancing and fault tolerance.
306
307* *Broadcast (broadcast):* Transmit network packets on all slave
308network interfaces. This mode provides fault tolerance.
309
310* *IEEE 802.3ad Dynamic link aggregation (802.3ad)(LACP):* Creates
311aggregation groups that share the same speed and duplex
312settings. Utilizes all slave network interfaces in the active
313aggregator group according to the 802.3ad specification.
314
315* *Adaptive transmit load balancing (balance-tlb):* Linux bonding
316driver mode that does not require any special network-switch
317support. The outgoing network packet traffic is distributed according
318to the current load (computed relative to the speed) on each network
319interface slave. Incoming traffic is received by one currently
320designated slave network interface. If this receiving slave fails,
321another slave takes over the MAC address of the failed receiving
322slave.
323
e60ce90c 324* *Adaptive load balancing (balance-alb):* Includes balance-tlb plus receive
b4c06a93
WL
325load balancing (rlb) for IPV4 traffic, and does not require any
326special network switch support. The receive load balancing is achieved
327by ARP negotiation. The bonding driver intercepts the ARP Replies sent
328by the local system on their way out and overwrites the source
329hardware address with the unique hardware address of one of the NIC
330slaves in the single logical bonded interface such that different
331network-peers use different MAC addresses for their network packet
332traffic.
333
649098a6 334If your switch support the LACP (IEEE 802.3ad) protocol then we recommend using
a22d7c24 335the corresponding bonding mode (802.3ad). Otherwise you should generally use the
649098a6
EK
336active-backup mode. +
337// http://lists.linux-ha.org/pipermail/linux-ha/2013-January/046295.html
338If you intend to run your cluster network on the bonding interfaces, then you
339have to use active-passive mode on the bonding interfaces, other modes are
340unsupported.
b4c06a93 341
cd1de2c2
WL
342The following bond configuration can be used as distributed/shared
343storage network. The benefit would be that you get more speed and the
344network will be fault-tolerant.
345
b4c06a93
WL
346.Example: Use bond with fixed IP address
347----
348auto lo
349iface lo inet loopback
350
7a0d4784 351iface eno1 inet manual
b4c06a93 352
7a0d4784 353iface eno2 inet manual
b4c06a93
WL
354
355auto bond0
356iface bond0 inet static
7a0d4784 357 slaves eno1 eno2
b4c06a93
WL
358 address 192.168.1.2
359 netmask 255.255.255.0
360 bond_miimon 100
361 bond_mode 802.3ad
362 bond_xmit_hash_policy layer2+3
363
364auto vmbr0
365iface vmbr0 inet static
366 address 10.10.10.2
367 netmask 255.255.255.0
7ea42266 368 gateway 10.10.10.1
7a0d4784 369 bridge_ports eno1
b4c06a93
WL
370 bridge_stp off
371 bridge_fd 0
372
373----
374
cd1de2c2 375
50f88938 376[thumbnail="default-network-setup-bond.svg"]
cd1de2c2
WL
377Another possibility it to use the bond directly as bridge port.
378This can be used to make the guest network fault-tolerant.
379
380.Example: Use a bond as bridge port
b4c06a93
WL
381----
382auto lo
383iface lo inet loopback
384
7a0d4784 385iface eno1 inet manual
b4c06a93 386
7a0d4784 387iface eno2 inet manual
b4c06a93
WL
388
389auto bond0
470d4313 390iface bond0 inet manual
7a0d4784 391 slaves eno1 eno2
b4c06a93
WL
392 bond_miimon 100
393 bond_mode 802.3ad
394 bond_xmit_hash_policy layer2+3
395
396auto vmbr0
397iface vmbr0 inet static
398 address 10.10.10.2
399 netmask 255.255.255.0
7ea42266 400 gateway 10.10.10.1
b4c06a93
WL
401 bridge_ports bond0
402 bridge_stp off
403 bridge_fd 0
404
405----
406
61105e42 407
94fd8ea5
WL
408VLAN 802.1Q
409~~~~~~~~~~~
410
4d8af129
DM
411A virtual LAN (VLAN) is a broadcast domain that is partitioned and
412isolated in the network at layer two. So it is possible to have
413multiple networks (4096) in a physical network, each independent of
414the other ones.
415
61105e42 416Each VLAN network is identified by a number often called 'tag'.
4d8af129
DM
417Network packages are then 'tagged' to identify which virtual network
418they belong to.
94fd8ea5 419
94fd8ea5 420
4d8af129
DM
421VLAN for Guest Networks
422^^^^^^^^^^^^^^^^^^^^^^^
94fd8ea5 423
4d8af129
DM
424{pve} supports this setup out of the box. You can specify the VLAN tag
425when you create a VM. The VLAN tag is part of the guest network
a22d7c24 426configuration. The networking layer supports different modes to
4d8af129 427implement VLANs, depending on the bridge configuration:
94fd8ea5 428
4d8af129 429* *VLAN awareness on the Linux bridge:*
94fd8ea5 430In this case, each guest's virtual network card is assigned to a VLAN tag,
4d8af129 431which is transparently supported by the Linux bridge.
a22d7c24 432Trunk mode is also possible, but that makes configuration
94fd8ea5
WL
433in the guest necessary.
434
435* *"traditional" VLAN on the Linux bridge:*
436In contrast to the VLAN awareness method, this method is not transparent
437and creates a VLAN device with associated bridge for each VLAN.
a22d7c24
SR
438That is, creating a guest on VLAN 5 for example, would create two
439interfaces eno1.5 and vmbr0v5, which would remain until a reboot occurs.
94fd8ea5 440
4d8af129
DM
441* *Open vSwitch VLAN:*
442This mode uses the OVS VLAN feature.
443
a22d7c24 444* *Guest configured VLAN:*
4d8af129
DM
445VLANs are assigned inside the guest. In this case, the setup is
446completely done inside the guest and can not be influenced from the
447outside. The benefit is that you can use more than one VLAN on a
448single virtual NIC.
449
450
451VLAN on the Host
452^^^^^^^^^^^^^^^^
94fd8ea5 453
4d8af129
DM
454To allow host communication with an isolated network. It is possible
455to apply VLAN tags to any network device (NIC, Bond, Bridge). In
456general, you should configure the VLAN on the interface with the least
94fd8ea5
WL
457abstraction layers between itself and the physical NIC.
458
459For example, in a default configuration where you want to place
460the host management address on a separate VLAN.
461
94fd8ea5 462
038dc7df 463.Example: Use VLAN 5 for the {pve} management IP with traditional Linux bridge
94fd8ea5
WL
464----
465auto lo
466iface lo inet loopback
467
468iface eno1 inet manual
469
470iface eno1.5 inet manual
471
472auto vmbr0v5
473iface vmbr0v5 inet static
474 address 10.10.10.2
475 netmask 255.255.255.0
476 gateway 10.10.10.1
477 bridge_ports eno1.5
478 bridge_stp off
479 bridge_fd 0
480
481auto vmbr0
482iface vmbr0 inet manual
483 bridge_ports eno1
484 bridge_stp off
485 bridge_fd 0
486
487----
488
038dc7df
AD
489.Example: Use VLAN 5 for the {pve} management IP with VLAN aware Linux bridge
490----
491auto lo
492iface lo inet loopback
493
494iface eno1 inet manual
495
496
497auto vmbr0.5
498iface vmbr0.5 inet static
499 address 10.10.10.2
500 netmask 255.255.255.0
501 gateway 10.10.10.1
502
503auto vmbr0
504iface vmbr0 inet manual
505 bridge_ports eno1
506 bridge_stp off
507 bridge_fd 0
508 bridge_vlan_aware yes
509----
510
94fd8ea5
WL
511The next example is the same setup but a bond is used to
512make this network fail-safe.
513
038dc7df 514.Example: Use VLAN 5 with bond0 for the {pve} management IP with traditional Linux bridge
94fd8ea5
WL
515----
516auto lo
517iface lo inet loopback
518
519iface eno1 inet manual
520
521iface eno2 inet manual
522
523auto bond0
524iface bond0 inet manual
525 slaves eno1 eno2
526 bond_miimon 100
527 bond_mode 802.3ad
528 bond_xmit_hash_policy layer2+3
529
530iface bond0.5 inet manual
531
532auto vmbr0v5
533iface vmbr0v5 inet static
534 address 10.10.10.2
535 netmask 255.255.255.0
536 gateway 10.10.10.1
537 bridge_ports bond0.5
538 bridge_stp off
539 bridge_fd 0
540
541auto vmbr0
542iface vmbr0 inet manual
543 bridge_ports bond0
544 bridge_stp off
545 bridge_fd 0
546
547----
548
0bcd1f7f
DM
549////
550TODO: explain IPv6 support?
470d4313 551TODO: explain OVS
0bcd1f7f 552////