#895342 suricata: new version fails to start if eth0 not present

Package:
suricata
Source:
suricata
Description:
Next Generation Intrusion Detection and Prevention Tool
Submitter:
Steve Langasek
Date:
2026-09-05 20:03:01 UTC
Severity:
normal
Tags:
#895342#5
Date:
2018-04-10 05:38:56 UTC
From:
To:
Dear maintainers,

The latest version of suricata is failing its autopkgtests in Ubuntu because
the suricata daemon does not start in the test environment.  This appears to
be due to the fact that the default suricata config assumes eth0 as an
interface name, but the testbed has ens2 as its default interface:

# /usr/bin/suricata --af-packet -c /etc/suricata/suricata.yaml --pidfile /var/run/suricata.pid
10/4/2018 -- 05:31:56 - <Notice> - This is Suricata version 4.0.4 RELEASE
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_SYSCALL(50)] - Failure when trying to get MTU via ioctl for 'eth0': No such device (19)
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_SYSCALL(50)] - Failure when trying to get MTU via ioctl for 'eth0': No such device (19)
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/botcc.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/ciarmy.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/compromised.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/drop.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/dshield.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-attack_response.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-chat.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-current_events.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-dns.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-dos.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-exploit.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-ftp.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-imap.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-malware.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-misc.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-mobile_malware.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-netbios.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-p2p.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-policy.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-pop3.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-rpc.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-scan.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-smtp.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-snmp.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-sql.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-telnet.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-tftp.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-trojan.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-user_agents.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-voip.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-web_client.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-web_server.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/emerging-worm.rules
10/4/2018 -- 05:31:56 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/tor.rules
10/4/2018 -- 05:31:56 - <Error> - [ERRCODE: SC_ERR_AFP_CREATE(190)] - Unable to find type for iface "eth0": No such device
10/4/2018 -- 05:31:56 - <Notice> - all 1 packet processing threads, 4 management threads initialized, engine started.
10/4/2018 -- 05:31:56 - <Error> - [ERRCODE: SC_ERR_AFP_CREATE(190)] - Unable to find iface eth0: No such device
10/4/2018 -- 05:31:56 - <Error> - [ERRCODE: SC_ERR_AFP_CREATE(190)] - Couldn't init AF_PACKET socket, fatal error
10/4/2018 -- 05:31:56 - <Error> - [ERRCODE: SC_ERR_FATAL(171)] - thread W#01-eth0 failed
#

Previous versions of suricata also had a default interface name of eth0
configured, but this was not a fatal error; the suricata daemon still
started and the tests could be run.

I'm filing this as serious because it seems to me that neither of these
behaviors - either starting up and being ineffective because it's running on
the wrong interface, or failing to start up because the interface is
hard-coded and not present - is a reasonable default behavior for an IDS.  I
think the interface should either be autodetected or prompted for at install
time.

Feel free to downgrade if you disagree.

In any case, while the autopkgtests do not pass, the new version of suricata
will not be included in the Ubuntu release, as regressing autopkgtests are
considered release blockers there.

#895342#10
Date:
2018-04-18 09:07:32 UTC
From:
To:
If you check debian/tests/systemd-service-test.sh [0], the interface
in use by the config file is decided at runtime.

What autopkgtest tests are you running?

This seem like an ubuntu specific issue. All tests in debian are going
fine, both in unstable and in testing [1].
This Debian bug may result in the package being removed from Debian
testing for no actual reason.

Closing this bug now as it seems totally bogus.

[0] https://salsa.debian.org/pkg-suricata-team/pkg-suricata/blob/master/debian/tests/systemd-service-test.sh
[1] https://ci.debian.net/packages/s/suricata/

#895342#15
Date:
2018-04-18 09:07:32 UTC
From:
To:
If you check debian/tests/systemd-service-test.sh [0], the interface
in use by the config file is decided at runtime.

What autopkgtest tests are you running?

This seem like an ubuntu specific issue. All tests in debian are going
fine, both in unstable and in testing [1].
This Debian bug may result in the package being removed from Debian
testing for no actual reason.

Closing this bug now as it seems totally bogus.

[0] https://salsa.debian.org/pkg-suricata-team/pkg-suricata/blob/master/debian/tests/systemd-service-test.sh
[1] https://ci.debian.net/packages/s/suricata/

#895342#20
Date:
2018-04-18 17:30:56 UTC
From:
To:
Hi Arturo,

This code runs only for one of the tests.  It doesn't change the fact that
the suricata service as a whole is broken on install when eth0 is not
present, and all commands which try to talk to the daemon prior to that
point in the tests will fail.

You could fix the autopkgtests to not depend on eth0 if you moved the
systemd-service-test.sh to run before all other tests.  But I don't think
that would fix this bug, because I think the behavior of the package itself
is still wrong.

The ones shipped in your package.

The tests work fine in Debian because the testbed HAPPENS TO HAVE AN eth0
INTERFACE, as I said in the original bug report.  I know the difference
between Debian and Ubuntu and am not in the habit of gratuitously
overinflating the severity of bugs filed in Debian for Ubuntu-specific
issues.

I wrote the reason in my original bug report:

  I'm filing this as serious because it seems to me that neither of these
  behaviors - either starting up and being ineffective because it's running on
  the wrong interface, or failing to start up because the interface is
  hard-coded and not present - is a reasonable default behavior for an IDS.  I
  think the interface should either be autodetected or prompted for at install
  time.

I also wrote:

  Feel free to downgrade if you disagree.

It's not clear to me that you disagree.  It's not clear to me that you even
read my bug report.  So, reopening at original severity.

There is at least one bug here in the package, which is that the
autopkgtests make a brittle assumption that eth0 will be available in the
test bed.  eth0 is a legacy interface name in the kernel, and despite the
fact that eth0 is currently present on the ci.debian.net testbeds, this is
not a robust assumption.  If you want to reorder the tests so that the
config file setup is done first, then that would address the bug in the
autopkgtests.

I still also think it's a bug that the package installs successfully but the
daemon fails to start if there is no eth0 interface.  I think best practice
is that a package ensures its daemons can be started before the package is
configured, because it's better to surface a failure to the admin than to
consider a package "configured" without providing core functionality to
reverse-dependencies.  This was in my view the issue that warranted a
'serious' severity, but you are free to disagree and downgrade the bug.

#895342#27
Date:
2018-04-27 12:47:59 UTC
From:
To:
Control: severity -1 normal

thanks for taking the time to elaborate.

I talked to upstream to know if they plan to implement something for
interface names at runtime. No plans.
And I don't have time to work on that myself.

Downgrading the severity to avoid the package removal from testing.

On a side note: you mentioned the daemon should be up and running to
consider the package being OK installed.
While I agree that by installing the package we should get a daemon
ready to use, How would you do that?
given suricata acts as a firewall, the config is strictly baked per
environment and no preset could be used as default?

#895342#34
Date:
2018-05-19 13:06:50 UTC
From:
To:
Hi Steve and Arturo,

just a few comments from my side…

I might agree that the tests make some fragile assumptions, and I think that this
problem can be solved quickly by wrapping the suricatasc calls, making sure
that there is a Suricata instance running (in IDS mode) on an existing interface.

The other issue raised by Steve is a bit more complex. Suricata is an IDS/IPS
system, which rarely is used 'out of the box' but usually requires setup by a
knowledgeable person. I think, however, that we can arrive at some sensible
default configuration that leaves the least moment of surprise to a user who
just installed the software.

AFAICS we have several options here:

 a) Explicitly disable the service by default and display a note (via debconf)
    that informs the user that configuration is required before the system
    is usable. This is probably the easiest way -- but in essence avoiding the
    problem altogether ;)

 b) Use debconf to let the user choose a set of interfaces detected at install
    time (or pre-define at pressed, obviously), and pre-generate a config file
    that uses a lowest common denominator of basic but likely configuration
    choices (e.g. AF_PACKET, IDS mode, default bundled ruleset, ...) for
    monitoring the chosen interfaces, staying as close
    to upstream’s default config file as possible. If a user wants
    something more involved, then they can customize the setup by themselves.
    I have just played around with debconf a bit and it looks like this is quite
    straightforward to do. I'm just not sure yet how to handle non-interactive
    cases (such as the autopkgtests), but my first suggestion would be to go
    with the interface that provides the default route.

What do you think?

Cheers
Sascha

#895342#39
Date:
2026-09-05 20:00:41 UTC
From:
To:
Hi,

I have looked into this bug and would like to outline how I intend to
resolve it, so that others can comment before anything is uploaded.

The report raises two separate issues, and both are addressed.

The first one is the autopkgtest suite, which implicitly assumed the
presence of an eth0 interface and of a daemon started by the package
installation. The suricatasc checks now start their own instance in unix
socket mode, which does not attach to a capture interface at all, and
the systemd test detects an interface that actually exists in the
testbed instead of relying on the shipped configuration.

The second one is the daemon itself. The package ships the upstream
default configuration, which uses eth0 as af-packet capture interface,
and enabled and started the service on installation. On a system without
eth0 the service ends up in the 'failed' state right after 'apt
install'; on a system that happens to have one, the daemon monitors an
interface the administrator never chose. The package is also frequently
installed only to analyse pcap files, where no service is wanted at all.

The fix is to no longer enable the service on first installation, using
a systemd preset that disables suricata.service. Administrators and
downstream distributions can override that policy with a preset file of
their own in /etc/systemd/system-preset/, without having to patch the
package. Existing installations are unaffected, because presets are only
evaluated when a package is installed for the first time. README.Debian
gained a section on the initial configuration (capture interface,
HOME_NET), and there is a NEWS entry for the behaviour change.

Interface autodetection was considered and rejected. Upstream does not
implement it and has repeatedly declined to make a missing interface
non-fatal, pointing at udev and the init system instead. A monitoring
port in a typical IDS deployment has neither an address nor a default
route, so a heuristic would systematically pick the wrong interface.
Above all, configuring the interface anywhere but in suricata.yaml
introduces a second source of truth; that construction exists in the
upstream RPM packaging and is a recurring source of confusion in
upstream support requests.

An installation-time prompt was considered as well. A meaningful
first-time configuration is not limited to the interface, it also
involves HOME_NET, the capture mode and the ruleset, so a debconf
dialogue would either be incomplete or fairly involved. It would also
require moving suricata.yaml to ucf handling. This may be revisited
later, but it is out of scope here.

For what it is worth, this matches what upstream does in the packaging
they control themselves: the OISF RPMs do not enable the service either
and document 'systemctl enable suricata' as an explicit step. Within
Debian, src:libreswan uses the same preset mechanism for the same reason.

The changes are prepared and will be uploaded to experimental after the
upcoming 8.0.7 release, so that the behaviour on ci.debian.net can be
observed before anything is merged or even reaches unstable.

My current implementation is here:
https://salsa.debian.org/ecite/pkg-suricata/-/commits/bug-895342

Comments are welcome.

Regards,
Andreas