How to fix Nomad using wrong network interface for jobs

How to fix Nomad using wrong network interface for jobs

How to change the network interface used by Nomad to bind jobs on the correct interface.

Roman Zipp, February 26th, 2024

This guide will help you to fix the issue when Nomad / Consul are binding jobs on the wrong interface.

Get your private interface

First, run ifconfig to check if the interface is available and get it's name.

enp7s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet  netmask  broadcast
        inet6 fe80::8400:ff:fe74:ac5c  prefixlen 64  scopeid 0x20<link>
        ether 86:00:00:74:af:6a  txqueuelen 1000  (Ethernet)
        RX packets 8370677  bytes 1497631969 (1.4 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7785709  bytes 1158079549 (1.1 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

If your networking is configured correctly you will find your private interface named like ens..., enp....


You can either hardcode the interface name or use the go-sockaddr/template templating language to get the private interface name.

The following example will get the name of the first network interface in the address space (this will match all ip addresses from to

client {
  # use go-sockaddr/template
  network_interface = "{{ GetPrivateInterfaces | include \"network\" \"\" | attr \"name\" }}"
  # hardcode the interface name
  network_interface = "enp7s0"

It's important to restart Nomad and all jobs afterwards. Only restarting Nomad will not be enough since the job will keep running in the background.


See Nomad network_interface Docs


To see all configuration values and debug info, run nomad operator debug and quit using Ctrl+C. A .tar.gz file will be created in the current directory. Download, extract it and check the cluster/agent-self.json file for the NetworkInterface value to see if the value has been set correctly.