Wired Connection

A wired ethernet connection is the simplest to set up. All that is required is to give the interface an ip address and routing. This can be done statically or via dhcp. After getting the connection working, we'll create an s6-rc service definition so that on every boot the network will be properly configured at boot time.

Bringing the interface Up

The first step in setting up any network interface is making sure that the interface is up. This is an example of the output of ip link show for an interface which is down.

2: eno1: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000

To power on this device we need to bring it up with the following command, replacing eno1 with the name of your actual device.

ip link set eno1 up

We then verify that the device is in fact up by running ip link show again and checking that the device is UP.

% ip link show eno1
2: eno1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000

Notice that instead of <BROADCAST,MULTICAST> it now says <NO-CARRIER,BROADCAST,MULTICAST,UP>.

Getting a dynamic ip using dhcpcd

HitchHiker comes with the dhcpcd client for dynamic network configuration. This is the quickest way to configure a network interface.

# Get a dynamic ip address for the eth0 interface
dhcpcd eth0

Setting a static ip

A Static ip address can be configured by once again using the ip command, this time with it's address subcommand. We're going to use CIDR Notation here to also set a correct network prefix and broadcast. Most users will have a subnet mask of 255.255.255.0, with 24 leading 1-bits. Don't worry if some of this is beyond your understanding, the commands should work even if you don't understand every aspect.

# Set the ip address to 192.168.1.5
ip address add 192.168.1.5/24 broadcast + dev eth0

After setting the ip address, we next need to set up a route for this device to reach the rest of the network. This is done once again with the ip command, this time using the route subcommand.

# Route goes through our router which has the internal ip 192.168.1.1
ip route add default via 192.168.1.1 eth0

There is one more step to configuring a network interface manually. If we configure a dynamic address via dhcpcd, the client also configures domain name resolution for us. When you configure an interface manually this is something that you must do yourself. Edit the file /etc/resolv.conf to set a primary and a secondary dns resolver. You can use the Google dns resolvers at 8.8.8.8 and 8.8.4.4 or, if you prefer, there is a list of public DNS servers at public-dns.info.

# /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4