Netifrc

From Gentoo Wiki
Jump to: navigation, search

netifrc is a collection of modules created to configure and manage network interfaces via individual, per-interface scripts located in the /etc/init.d/ directory. In Gentoo Linux netifrc comes installed as part of the system profile and is available in the stage3 tarballs on all architectures. New users beware: netifrc is powerful and convenient, but using it requires knowledge of the exact system needs; because of its modular approach it requires additional packages to be installed for what many would consider "basic functionality" for home users. The netifrc package can be uninstalled or simply left unused in favor of using another network manager.

Installation

USE flags

OpenRC has the netifrc USE flag, pulling in the package and enabling Gentoo's network stack (net.* scripts).

Emerge

The netifrc modules come in standard stage3 tarballs so they should be already installed on the system. In the case they have been removed, they can be re-installed via:

root #emerge --ask --oneshot net-misc/netifrc

Configuration

Determine interface names

The first step in configuring netifrc is to get a list of the network interfaces present on the system. This is possible a couple different ways. The ifconfig command can be used to get a comprehensive list of available interfaces. It also be an used to detect if there is byte-activity on the interfaces which helps determine connectivity:

user $ifconfig -a

For more information on ifconfig see the man page locally (man ifconfig) or online.

Alternately, if dmesg is installed, a list of messages should be generated each time the system boots. Although the above method is better in practice, this approach can also be used to determine available network interfaces:

user $dmesg | grep -i "network interface"

For more information on the use of dmesg see the man page locally (man dmesg) or online.

Tip
If network interfaces cannot be discovered using the means above, but the physical system hardware indicates otherwise, it is likely the appropriate kernel drives for the network interface(s) have not been built for the currently running kernel or the system is lacking required firmware for interaction with the interface. Either the kernel will need to be configured to support the NIC driver and recompiled or the firmware will need to be installed; in some cases both changes will need to be performed For more information on how to perform these changes see the kernel configuration article.

Adding interfaces

Creating symlinks

Provided in the net-misc/netifrc package is a parent script called net.lo which is installed to /etc/init.d/net.lo. This parent script should be symlinked to create additional scripts for each network interface to be configured. For example, to create a script for a network interface called eth0, run the following command:

root #ln -s /etc/init.d/net.lo /etc/init.d/net.<interface_name>

Replace <interface_name> with eth0 or whatever the interface is named.

Tip
Curly braces and commas can be used to speed up the process when dealing with multiple interfaces:
root #ln -s /etc/init.d/net.{lo,<interface_name>}

<interface_name> in the example commands above is the appropriate name for this system's network interface. Depending on the system, a number of interface names may be used including: eno1, enp2s0, wlan0, ethernet0, wireless0, etc. Continue creating links for as many interfaces as needed. A system can have more than one interface connected to more than one network if the hardware is available.

Configuration of the interfaces is handled in the /etc/conf.d/net file. A default (empty or missing) /etc/conf.d/net will automatically use DHCP to configure any network interface(s) started by net.* scripts.

OpenRC

Running the rc-update is the final step in the configuration process. Add each interface to the systems init process. Normally interfaces are added to the default runlevel:

root #rc-update add net.<interface_name> default

Repeat the above command for each interface. A status message should appear showing successful adds to the init process.

Removing interfaces

If interfaces are no longer desired to be loaded during the init process they need to be removed from OpenRC. Run the following command for each interface that should be removed:

root #rc-update del <interface_name> default

Troubleshooting

Link event detection

If an Ethernet cable plugged in after the bootup process occurred the network interfaces will not manually refresh themselves, even when using a DHCP client to manage the connections. A new address will not be assigned until the interface is manually refreshed by running the associated init script.

Two packages are available to aid in refreshing the network interface(s) during link events:

The sys-apps/ifplugd package appears to be more maintained and is the recommended choice:

root #emerge --ask sys-apps/ifplugd

Once the install is complete network interfaces should be refreshed automatically whenever the system detects a link change event.

For more information please read netifrc documentation at Gentoo's GitWeb site or locally in /usr/share/doc/netifrc-<version_number>/net.example.bz2. Search "Cable in/out detection".

See also

External resources