Static IP Address: Difference between revisions
No edit summary |
No edit summary |
||
Line 3: | Line 3: | ||
It is sometimes desirable to provide static IP configuration for network interface instead of relying on DHCP. | It is sometimes desirable to provide static IP configuration for network interface instead of relying on DHCP. | ||
= Using /etc/network/interfaces = | = Using /etc/network/interfaces to create static IP configuration = | ||
Edit /etc/network/interfaces to add configuration sections for network interfaces. The example below configures eth0 | Edit /etc/network/interfaces to add configuration sections for network interfaces. The example below configures eth0 | ||
Line 16: | Line 16: | ||
</pre> | </pre> | ||
Please note that /etc/network/interfaces is | 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. | ||
= Connman interaction with /etc/network/interfaces = | = Connman interaction with /etc/network/interfaces = | ||
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: | |||
<pre> | <pre> | ||
Line 26: | Line 26: | ||
NetworkInterfaceBlacklist=eth0,eth1 | NetworkInterfaceBlacklist=eth0,eth1 | ||
</pre> | </pre> | ||
= NetworkManager interaction with /etc/network/interfaces = | |||
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. | |||
= Configure static IP using connmanctl = | = Configure static IP using connmanctl = | ||
Line 55: | Line 59: | ||
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 impossible to incorporate the configuration into Yocto image and use it on multiple devices. | ||
= Configure static IP using nmcli = | = Configure static IP using nmcli = |
Revision as of 16:20, 14 October 2018
It is sometimes desirable to provide static IP configuration for network interface instead of relying on DHCP.
Using /etc/network/interfaces to create static IP configuration
Edit /etc/network/interfaces to add configuration sections for network interfaces. 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 66.212.63.228 66.212.48.10
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.
Connman interaction with /etc/network/interfaces
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:
[General] NetworkInterfaceBlacklist=eth0,eth1
NetworkManager interaction with /etc/network/interfaces
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.
Configure static IP 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.
To get the list of connections run
# connmanctl services
For example:
root@imx7-var-som:~# connmanctl services *AO Wired ethernet_0eb31468dcc9_cable
Wired Ethernet connection would be shown as ethernet_<mac_address>_cable.
To configure static IP, 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 66.212.63.228 66.212.48.10
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.
Configure static IP using nmcli
The NetworkManager command line tool, nmcli, can also be used create static IP configuration. In the example below a permanent 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 "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.