You're correct that taking down eth0 will take down all cirtual interfaces based on eth0.
Instead of taking the interface down, you could reconfigure it with the address 0.0.0.0 - this will keep the interface up but without an IP address. I just verified that the following sequence worked perfectly:
The server originally has the address 172.17.8.10 on eth0, default gateway is 172.17.8.1
draal:~ # ifconfig eth0:0 172.17.8.11
draal:~ # ifconfig eth0 0.0.0.0
draal:~ # ping 172.17.8.1
PING 172.17.8.1 (172.17.8.1) 56(84) bytes of data.
64 bytes from 172.17.8.1: icmp_seq=1 ttl=255 time=0.119 ms
64 bytes from 172.17.8.1: icmp_seq=2 ttl=255 time=0.244 ms
^C
--- 172.17.8.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.119/0.181/0.244/0.063 ms
draal:~ # ifconfig -a
eth0 Link encap:Ethernet HWaddr 08:00:27:8C:98:44
inet6 addr: fe80::a00:27ff:fe8c:9844/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1002 (1002.0 b) TX bytes:1940 (1.8 Kb)
eth0:0 Link encap:Ethernet HWaddr 08:00:27:8C:98:44
inet addr:172.17.8.11 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
When you're doing this, it's highly likely that your SSH connection will be interrupted. I would start by SSH:ing to one of the virtual interfaces; as long as you don't do ifcfg eth0
down, that session should not be interrupted.
I would also advice you to setup an at job or cron job that resets all interfaces to their previous state after 5 minutes. If your new setup works, you can cancel the at job, but if it doesn't, you'll be able to get back in after a few minutes.