From Proxmox VE
Proxmox VE uses a bridged networking model. Each host can have up to 4094 bridges. Bridges are like physical network switches implemented in software on the Proxmox VE host. All VMs can share one bridge as if virtual network cables from each guest were all plugged into the same switch. For connecting VMs to the outside world, bridges are attached to physical network cards assigned a TCP/IP configuration. For further flexibility, VLANs (IEEE 802.1q) and network bonding/aggregation are possible. In this way it is possible to build complex, flexible virtual networks.
The network configuration is usually changed using the web interface. Changes are stored to
/etc/network/interfaces.new, and are activated when you reboot the host. Actual configuration resides in
/etc/network/interfaces. The following examples list the contents of that file.
Default Configuration (bridged)
The installation program creates a single bridge (vmbr0), which is connected to the first ethernet card (eth0).
auto lo iface lo inet loopback auto vmbr0 iface vmbr0 inet static address 192.168.10.2 netmask 255.255.255.0 gateway 192.168.10.1 bridge_ports eth0 bridge_stp off bridge_fd 0
Virtual machine behave as if they were directly connected to the physical network. The network, in turn, sees each virtual machine as having its own MAC, even though there is only one network cable connecting all of these VMs to the network.
Most hosting providers do not support the above setup. For security reasons they disable networking as soon as they detect multiple MAC addresses on a single interface.
A common setup is a public IP (assume 192.168.10.2 for this example), and additional IP blocks for your VMs (10.10.10.1/255.255.255.0). For such situations we recommend the following setup:
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.10.2 netmask 255.255.255.0 gateway 192.168.10.1 post-up echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp auto vmbr0 iface vmbr0 inet static address 10.10.10.1 netmask 255.255.255.0 bridge_ports none bridge_stp off bridge_fd 0
In some cases you may want to use private IPs behind your Proxmox host's true IP, and masquerade the traffic using NAT:
auto vmbr1 iface vmbr1 inet static address 10.10.11.1 netmask 255.255.255.0 bridge_ports none bridge_stp off bridge_fd 0 post-up echo 1 > /proc/sys/net/ipv4/ip_forward post-up iptables -t nat -A POSTROUTING -s '10.10.11.0/24' -o eth0 -j MASQUERADE post-down iptables -t nat -D POSTROUTING -s '10.10.11.0/24' -o eth0 -j MASQUERADE
Configuring VLAN in a cluster
- Have two separate network on the same NIC
- Another host (firewall) manage the routing and rule to access to these VMs (out of this doc)
Suppose this scenario:
- A cluster with two nodes
- Each node have two NIC
- We want bonding the NIC
- We use two network: one untagged 192.168.1.0/24 and one tagged (VLanID=53) 192.168.2.0/24, we must configure the switch with port vlan.
- We want separate these network at layer 2
First of all we create the bond0 (switch assisted 802.3ad) at the proxmox web interface, follow the video.
At the end we have a /etc/network/interface like this:
# network interface settings auto lo iface lo inet loopback iface eth0 inet manual iface eth1 inet manual auto bond0 iface bond0 inet manual slaves eth0 eth1 bond_miimon 100 bond_mode 802.3ad auto vmbr0 iface vmbr0 inet static address 192.168.1.1 netmask 255.255.255.0 gateway 192.168.1.250 bridge_ports bond0 bridge_stp off bridge_fd 0
We have two methods to follow:
First explicit method
auto vlan53 iface vlan53 inet manual vlan_raw_device bond0
We can use direct the NIC dot VLAN ID, like bond0.53
I prefer the first one!
Create manually the bridge
Now we create manually the second bridge.
auto vmbr1 iface vmbr1 inet static address 192.168.2.1 netmask 255.255.255.0 network 192.168.2.0 bridge_ports vlan53 bridge_stp off bridge_fd 0 post-up ip route add table vlan53 default via 192.168.2.250 dev vmbr1 post-up ip rule add from 192.168.2.0/24 table vlan53 post-down ip route del table vlan53 default via 192.168.2.250 dev vmbr1 post-down ip rule del from 192.168.2.0/24 table vlan53
- We must not indicate the gateway, we must manually modify the routing table use ip route 2
- The whole configuration must replicate on the other cluster's node, the only change is the IP of the node.
Create the table in ip route 2
We must change the file /etc/iproute2/rt_tables, add the following line:
# Table for vlan53 53 vlan53
use these commands to add:
echo "# Table for vlan53" >> /etc/iproute2/rt_tables echo "53 vlan53" >> /etc/iproute2/rt_tables
Create the vlan on switch
For example on a HP Procurve 52 ports we use the following instructions to create the vlan.
- Ports 47-48 trunk (switch assisted 802.3ad) for gateway
- Ports 1-2 trunk (switch assisted 802.3ad) for the first node of cluster proxmox
- Ports 3-4 trunk (switch assisted 802.3ad) for the second node
Enter in configuration mode and type:
trunk 1-2 Trk1 LACP trunk 3-4 Trk2 LACP trunk 47-48 Trk3 LACP vlan 2 name "Vlan2" untagged Trk1-Trk3 ip address 192.168.1.254 255.255.255.0 exit vlan 53 name "Vlan53" tagged Trk1-Trk3 exit
Test the configuration
Reboot the cluster node one by one for testing this configuration.
Physical NIC (eg., eth1) cannot currently be made available exclusively for a particular KVM / Container , ie., without bridge and/or bond.
- Ethernet devices: eth0 - eth99
- Allowable bridge names: vmbrn, where 0 ≤ n ≤ 4094
- Bonds: bond0 - bond9
- VLANs: Simply add the VLAN number to the ethernet device name, separated by a period. For example "eth0.50"