Static IP Address: Difference between revisions

From Variscite Wiki
No edit summary
No edit summary
Line 6: Line 6:
= Using /etc/network/interfaces =
= Using /etc/network/interfaces =


Edit /etc/network/interfaces to add configuration sections for network interfaces. The example below configures eth0
This is a legacy method with various limitations and we do not recommend using it, especially in combination with network managers.
The configuration file /etc/network/interfaces is used by ifup and ifdown tools to perform network interface configuration. In the SystemV init setup ifup and ifdown are invoked by /etc/init.d/networking boot script. In systemd setup /etc/init.d/networking is not available and you should create your own systemd service file that invokes "ifup -a" on startup and "ifdown -a" at shutdown.
 
If you configure all network interfaces via /etc/network/interfaces, it is better to completely disable the network manager service.
 
The example below configures eth0


<pre>
<pre>
Line 14: Line 19:
     netmask 255.255.255.0
     netmask 255.255.255.0
     gateway 192.168.1.254
     gateway 192.168.1.254
     dns-nameservers 66.212.63.228 66.212.48.10 
     dns-nameservers 8.8.8.8 4.4.4.4
</pre>
</pre>


Please note that /etc/network/interfaces is read by ifup and ifdown tools that do the actual interface configuration work. In the SystemV init setup they are invoked by /etc/init.d/networking script during boot. If you're using systemd instead of SystemV init, /etc/init.d/networking is not available and you should create your own systemd service file that invokes "ifup -a" during boot and "ifdown -a" during shutdown.
The DNS settings in /etc/network/interfaces rely on the availability of /sbin/resolvconf tool to update /etc/resolv.conf configuration file. If /sbin/resolvconf is not present, rebuild Yocto image after adding the following line to conf/local.conf
 
= Connman interaction with /etc/network/interfaces =
IMAGE_INSTALL_append = " resolvconf"
 
Configuring WIFI via /etc/network/interfaces is not recommended.
 
== Interaction with ConnMan  ==


Connman is the default Yocto network manager. Network manager is a service that provides a high-level interface for the configuration of the network interfaces. Connman will override the settings in /etc/network/interfaces unless configured to blacklist certain interfaces. For example, after configuring eth0 and eth1 in /etc/network/interfaces, you should create /etc/connman/main.conf and add the following:
ConnMan will override the settings in /etc/network/interfaces unless configured to ignore relevant interfaces. For example, after configuring eth0 and eth1 in /etc/network/interfaces, you should create /etc/connman/main.conf and add the following:


<pre>
<pre>
Line 28: Line 37:
</pre>
</pre>


= NetworkManager interaction with /etc/network/interfaces =
ConnMan will also override the contents of /etc/resolv.conf as it includes its own DNS proxy. To prevent that, start ConnMan with the options "-r" or "--nodnsproxy"
 
== Interaction with NetworkManager ==


NetworkMananager is an alternative to connman. Both cannot coexist in the same Yocto image, so the image should be rebuilt after enabling NetworkManager. Interfaces configured via /etc/network/interfaces are automatically ignored by NetworkMananager, so nothing special should be done.
NetworkManager will also override the contents of /etc/resolv.conf


= Using connmanctl =
= Using connmanctl =
Instead of using /etc/network/interfaces one can use connmanctl tool to configure static IP. To create initial configuration the relevant interface should be connected to the network.
The ConnMan command line tool, connmanctl, can be used create static IP configuration. To create initial configuration the relevant interface should be connected to the network.


To get the list of connections run
To get the list of connections run
Line 54: Line 65:
For example:
For example:
   # connmanctl ethernet_0eb31468dcc9_cable --ipv4 manual 192.168.1.100 255.255.255.0 192.168.1.254
   # connmanctl ethernet_0eb31468dcc9_cable --ipv4 manual 192.168.1.100 255.255.255.0 192.168.1.254
   # connmanctl config ethernet_0eb31468dcc9_cable --nameservers 66.212.63.228 66.212.48.10
   # connmanctl config ethernet_0eb31468dcc9_cable --nameservers 8.8.8.8 4.4.4.4


The configuration will be saved in /var/lib/connman/ethernet_0eb31468dcc9_cable/settings.
The configuration will be saved in /var/lib/connman/ethernet_0eb31468dcc9_cable/settings.


The downside of this method is the use of non-constant parameters (e.g. MAC address) to identify the connection, which makes it impossible to incorporate the configuration into Yocto image and use it on multiple devices.
The downside of this method is the use of non-constant parameters (e.g. MAC address) to identify the connection, which makes it difficult to incorporate the configuration into Yocto image and use it on multiple devices.
 


= Using nmcli =
= Using nmcli =
Line 65: Line 75:
The NetworkManager command line tool, nmcli, can also be used create static IP configuration. In the example below a static configuration is created for interface eth0.
The NetworkManager command line tool, nmcli, can also be used create static IP configuration. In the example below a static configuration is created for interface eth0.


 
# nmcli con add type ethernet ifname eth0 name static-eth0 ip4 192.168.1.100 gw4 192.168.1.254
# nmcli con add type ethernet ifname eth0 name static-eth0 ip4 192.168.1.100 gw4 192.168.1.254
# nmcli con mod static-eth0 ipv4.dns "8.8.8.8,4.4.4.4"
# nmcli con mod static-eth0 ipv4.dns "66.212.63.228,66.212.48.10"




The configuration will be saved in /etc/NetworkManager/system-connections/static-eth0. Once generated it can be incorporated into Yocto image and used on multiple devices.
The configuration will be saved in /etc/NetworkManager/system-connections/static-eth0. Once generated it can be incorporated into Yocto image and used on multiple devices.

Revision as of 14:09, 16 October 2018

Configuring Static IP Addresses

It is sometimes desirable to provide static IP configuration for network interface instead of relying on DHCP. Below we describe several methods to do that.

Using /etc/network/interfaces

This is a legacy method with various limitations and we do not recommend using it, especially in combination with network managers. The configuration file /etc/network/interfaces is used by ifup and ifdown tools to perform network interface configuration. In the SystemV init setup ifup and ifdown are invoked by /etc/init.d/networking boot script. In systemd setup /etc/init.d/networking is not available and you should create your own systemd service file that invokes "ifup -a" on startup and "ifdown -a" at shutdown.

If you configure all network interfaces via /etc/network/interfaces, it is better to completely disable the network manager service.

The example below configures eth0

auto eth0
    iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.254
    dns-nameservers 8.8.8.8 4.4.4.4 

The DNS settings in /etc/network/interfaces rely on the availability of /sbin/resolvconf tool to update /etc/resolv.conf configuration file. If /sbin/resolvconf is not present, rebuild Yocto image after adding the following line to conf/local.conf

IMAGE_INSTALL_append = " resolvconf"

Configuring WIFI via /etc/network/interfaces is not recommended.

Interaction with ConnMan

ConnMan will override the settings in /etc/network/interfaces unless configured to ignore relevant interfaces. For example, after configuring eth0 and eth1 in /etc/network/interfaces, you should create /etc/connman/main.conf and add the following:

[General]
NetworkInterfaceBlacklist=eth0,eth1

ConnMan will also override the contents of /etc/resolv.conf as it includes its own DNS proxy. To prevent that, start ConnMan with the options "-r" or "--nodnsproxy"

Interaction with NetworkManager

NetworkManager will also override the contents of /etc/resolv.conf

Using connmanctl

The ConnMan command line tool, connmanctl, can be used create static IP configuration. To create initial configuration the relevant interface should be connected to the network.

To get the list of connections run

# connmanctl services

For example:

root@imx7-var-som:~# connmanctl services
*AO Wired                ethernet_0eb31468dcc9_cable

Wired Ethernet connections will be shown as ethernet_<mac_address>_cable.

To create static IP configuration run

# connmanctl <service> --ipv4 manual <ip address> <netmask> <gateway>
# connmanctl config <service> --nameservers <dns-addr> 

For example:

 # connmanctl ethernet_0eb31468dcc9_cable --ipv4 manual 192.168.1.100 255.255.255.0 192.168.1.254
 # connmanctl config ethernet_0eb31468dcc9_cable --nameservers 8.8.8.8 4.4.4.4 

The configuration will be saved in /var/lib/connman/ethernet_0eb31468dcc9_cable/settings.

The downside of this method is the use of non-constant parameters (e.g. MAC address) to identify the connection, which makes it difficult to incorporate the configuration into Yocto image and use it on multiple devices.

Using nmcli

The NetworkManager command line tool, nmcli, can also be used create static IP configuration. In the example below a static configuration is created for interface eth0.

# nmcli con add type ethernet ifname eth0 name static-eth0 ip4 192.168.1.100 gw4 192.168.1.254
# nmcli con mod static-eth0 ipv4.dns "8.8.8.8,4.4.4.4"


The configuration will be saved in /etc/NetworkManager/system-connections/static-eth0. Once generated it can be incorporated into Yocto image and used on multiple devices.