If I assign an IPV6 address to the virtual interface created like​​eth0:1​​​, then it gets automatically assigned to its real interface ​​​eth0​​.

It's all working fine on IPv4, but I need IPv6 on the virtual interface as well. I tried everything that worked on the physical interface and I cannot get anything IPv6 to show for the​​eth0:1​​ interface.

eth0      Link encap:Ethernet  HWaddr 00:04:9f:02:81:97  
inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fc00:1234:1::10/120 Scope:Global
inet6 addr: fc00:1234:1::70/120 Scope:Global
inet6 addr: fc00:1234:1::42/120 Scope:Global
inet6 addr: fc00:1234:1::40/120 Scope:Global
inet6 addr: fe80::204:9fff:fe02:8197/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:5528 (5.3 KiB)
Base address:0xe000

eth0:1 Link encap:Ethernet HWaddr 00:04:9f:02:81:97
inet addr:192.168.1.40 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Base address:0xe000


=====================================================================


IPv4 implementations originally only supported one address per interface, which is why virtual interfaces were invented so you can add multiple addresses on the same physical interface.

IPv6 supports multiple addresses per interface by default so there is no need to use virtual interfaces for IPv6. Just add them to the interface itself, the end result is the same.