The Proxmox server running at home only has an IPv4 statically assigned to it. Since I’ve been trying to get all my connected devices at home to get IPv6 assigned, I figured I should try with this Proxmox server next.
I’m running Proxmox VE 8.0.4, and it’s based on Debian 12 (bookwarm). The settings for its network interfaces are stored in /etc/network/interfaces
:
root@pve:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto vmbr0
iface vmbr0 inet static
address 192.168.1.8/24
gateway 192.168.1.1
bridge-ports enp2s0
bridge-stp off
bridge-fd 0
Here is the output of vmbr0
device:
root@pve:~# ip a show vmbr0
39: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:e2:69:54:67:dc brd ff:ff:ff:ff:ff:ff
inet 192.168.1.8/24 scope global vmbr0
valid_lft forever preferred_lft forever
I don’t use Debian much in the last decades, it looks like there is no much changes in term of how to configure network interfaces on the lastes relase of Debian.It could be a good thing, right?
Anyway, I’ve been using SLAAC with IPv6, with the main idea behind it is that I let the client to request an IPv6 from itself instead of getting one assigned by a DHCP6 (which is disabled on my router). First I tried to set the ‘accept_ra’ to 1, as suggested at [1], followed by restaring the networking.service
[2]; but it did not work. No IPv6 assigned to the vmbr0
interface.
iface vmbr0 inet6 static auto
accept_ra 1
autoconf 1
root@pve:~# systemctl status networking.service
root@pve:~# ip a show vmbr0
39: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:e2:69:54:67:dc brd ff:ff:ff:ff:ff:ff
inet 192.168.1.8/24 scope global vmbr0
valid_lft forever preferred_lft forever
inet6 fe80::2e2:69ff:fe54:67dc/64 scope link
valid_lft forever preferred_lft forever
I thought by setting accept_ra 1
, this will make the interface to accept the routing advertisement from the router. Looking further, I found the following information from [3], which explains more details about the possible value: 0, 1, 2 for accept_ra
.
accept_ra - INTEGER
Accept Router Advertisements; autoconfigure using them.
It also determines whether or not to transmit Router
Solicitations. If and only if the functional setting is to
accept Router Advertisements, Router Solicitations will be
transmitted.
Possible values are:
0 Do not accept Router Advertisements.
1 Accept Router Advertisements if forwarding is disabled.
2 Overrule forwarding behaviour. Accept Router Advertisements
even if forwarding is enabled.
Functional default: enabled if local forwarding is disabled.
disabled if local forwarding is enabled.
If 1
didn’t work, the next logical value to try was 2
, so I changed the network interface as below:
root@pve:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto vmbr0
iface vmbr0 inet static
address 192.168.1.8/24
gateway 192.168.1.1
bridge-ports enp2s0
bridge-stp off
bridge-fd 0
# [2023-09-15:SS] Configure IPv6 using SLAAC
iface vmbr0 inet6 static auto
accept_ra 2
Upon restarting the networking.service
, my Proxmox server had an IPv6 assigned.
root@pve:~# ip a show vmbr0
39: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:e2:69:54:67:dc brd ff:ff:ff:ff:ff:ff
inet 192.168.1.8/24 scope global vmbr0
valid_lft forever preferred_lft forever
inet6 2403:5555:xxxx:0:xxx:69ff:fe54:67dc/64 scope global dynamic mngtmpaddr
valid_lft 86322sec preferred_lft 14322sec
inet6 fe80::2e2:69ff:fe54:67dc/64 scope link
valid_lft forever preferred_lft forever
I’m quite happy with the result.
References: