ifupdown-ng / ifupdown-ng

flexible ifup/ifdown implementation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Reconfiguring interface appends address unlike `busybox-ifupdown`

ailons opened this issue · comments

Configuring interface eth0 with address 192.168.1.2 and then reconfiguring
it with address 10.0.0.2 behaves differently from busybox-ifupdown.

On ifupdown-ng the new address (10.0.0.2) is added to the interface
(eth0) while the previous address (192.168.1.2) remains.
On busybox-ifupdown the new address (10.0.0.2) replaces the previous
address (192.168.1.2).

The following commands were tested on Alpine Linux v3.13:

With ifupdown-ng:

localhost:~# ls -l /sbin/ifup
lrwxrwxrwx    1 root     root            14 Apr 19 16:12 /sbin/ifup -> /sbin/ifupdown
localhost:~# ls -l /sbin/ifdown
lrwxrwxrwx    1 root     root            14 Apr 19 16:12 /sbin/ifdown -> /sbin/ifupdown
localhost:~# ip a
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 52:54:00:4e:ac:92 brd ff:ff:ff:ff:ff:ff

localhost:~# cat <<EOF >/etc/network/interfaces
> auto lo
> iface lo inet loopback
> auto eth0
> iface eth0 inet static
>         address 192.168.1.2
>         netmask 255.255.255.0
>         gateway 192.168.1.1
> EOF
localhost:~# rc-service networking restart
 * Starting networking ...
 *   lo ...                                                                                                                            [ ok ]
 *   eth0 ...                                                                                                                          [ ok ]
localhost:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:4e:ac:92 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.2/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe4e:ac92/64 scope link
       valid_lft forever preferred_lft forever

localhost:~# cat <<EOF >/etc/network/interfaces
> auto lo
> iface lo inet loopback
> auto eth0
> iface eth0 inet static
>         address 10.0.0.2
>         netmask 255.255.255.0
>         gateway 10.0.0.1
> EOF
localhost:~# rc-service networking restart
 * Stopping networking ...
 *   lo ...                                                                                                                            [ ok ]
 *   eth0 ...
ip: RTNETLINK answers: No such process                                                                                                 [ ok ]
 * Starting networking ...
 *   lo ...                                                                                                                            [ ok ]
 *   eth0 ...                                                                                                                          [ ok ]
localhost:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:4e:ac:92 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.2/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.0.0.2/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe4e:ac92/64 scope link
       valid_lft forever preferred_lft forever

With busybox-ifupdown:

localhost:~# ls -l /sbin/ifup
lrwxrwxrwx    1 root     root            12 Apr 19 16:17 /sbin/ifup -> /bin/busybox
localhost:~# ls -l /sbin/ifdown
lrwxrwxrwx    1 root     root            12 Apr 19 16:17 /sbin/ifdown -> /bin/busybox
localhost:~# ip a
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 52:54:00:b4:bc:29 brd ff:ff:ff:ff:ff:ff

localhost:~# cat <<EOF >/etc/network/interfaces
> auto lo
> iface lo inet loopback
> auto eth0
> iface eth0 inet static
>         address 192.168.1.2
>         netmask 255.255.255.0
>         gateway 192.168.1.1
> EOF
localhost:~# rc-service networking restart
 * Starting networking ...
 *   lo ...                                                                                                                            [ ok ]
 *   eth0 ...                                                                                                                          [ ok ]
localhost:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:b4:bc:29 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.2/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:feb4:bc29/64 scope link
       valid_lft forever preferred_lft forever

localhost:~# cat <<EOF >/etc/network/interfaces
> auto lo
> iface lo inet loopback
> auto eth0
> iface eth0 inet static
>         address 10.0.0.2
>         netmask 255.255.255.0
>         gateway 10.0.0.1
> EOF
localhost:~# rc-service networking restart
 * Stopping networking ...
 *   lo ...                                                                                                                            [ ok ]
 *   eth0 ...                                                                                                                          [ ok ]
 * Starting networking ...
 *   lo ...                                                                                                                            [ ok ]
 *   eth0 ...                                                                                                                          [ ok ]
localhost:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:b4:bc:29 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.2/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:feb4:bc29/64 scope link
       valid_lft forever preferred_lft forever

Is this the expected behavior?

Weird. Can you do ifdown -v eth0 after bringing network up on busybox-ifupdown?

Running the busybox-ifupdown flow again and then running ifdown -v eth0 emits:

localhost:~# ifdown -v eth0
run-parts /etc/network/if-down.d
ip addr flush dev eth0 label eth0
ip link set eth0 down
run-parts /etc/network/if-post-down.d

Thanks much. We can do similar in ifupdown-ng.