On 2018-04-04 15:21, Russell Coker via luv-main wrote:


https://www.freedesktop.org/software/systemd/man/systemd.network.html
https://wiki.archlinux.org/index.php/systemd-networkd
https://www.freedesktop.org/software/systemd/man/systemd-networkd.service.html

The above 3 URLs document the systemd-netorkd service, the last one notes
"when configuration is updated and systemd-networkd is restarted, netdev
interfaces for which configuration was removed will not be dropped, and may
need to be cleaned up manually".  So it seems that restarting systemd-networkd
might not do what is desired.  But I have never wanted to use it so I don't
know a lot about it.
 
More to the point systemd-networkd is a competing solution to ifupdown (and network-manager is another competing solution...). So restarting systemd-networkd is not going to restart ifupdown based interfaces.
 
 

I believe that the traditional Debian network configuration (ifup/ifdown etc)
developed in the mid 90's is for most systems the best way of doing things.  
The only exception I've found so far is wireless networks on laptops for which
NetworkManager is usually quite good (apart from when it breaks and refuses to
do anything).  If you use ifup/ifdown then systemd won't know that much about
what you are doing.
 
 
systemd-networkd is newer and deals with newer features, e.g. mixed IPv4 and IPv6 networking configuration in a cleaner fashion.
 
On the other hand, being able to bring up or down individual interfaces with ifup/ifdown is sometimes nice. I don't think you can do that with systemd-networkd, although I could be wrong here.
 
I think both solutions can have quirks for making changes without rebooting. e.g. changing a DHCP interface to static can leave a DHCP process running that should be killed manually. Definitely the case for ifupdown; I suspect systemd-networkd might have the same issue (not absolutely sure here).
 
systemd-networkd supports different ways of identifying the network interface which can be useful at times, e.g.:
 
[Match]
Name=en*

Could be useful if you are sure you will only have one network card, particularly as predictable network interface names comes in, can mean every computer has a different name for its network interface. Or:

[Match]
MACAddress=12:34:56:78:90:ab

If you want to bind to an interface directly by its mac address.