logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

network-test - check the network and test if everything is fine

Author

network-test was written by Javier Fernandez-Sanguino for the Debian GNU/Linux distribution.

Bugs

       This  program  does  not  have  supercowpowers so it is unable to fix the errors by itself. It is also
       unable to detect if the network is failing due to a local firewall policy been in place so make sure  you
       check your system logs with dmesg(1) to detect if some of the active tests are being dropped due to your
       local firewall.

       Other known issues that might make the program not work reliable are:

              *  IPv6:  The  program  does not yet explicitly handle IPv6 only hosts, some of the tests might be
              biased towards IPv4 and might fail in IPv6 environments.

              * Proxies: The program does not check network connectivity for  hosts  that  connect  through  the
              Internet  using  a  proxy  gateway  for  services.  The program might report issues in hosts using
              proxies even when these might connect to the Internet properly through proxied services.

              * Firewall environments: some of the tests rely on direct connectivity to  external  hosts,  which
              are  tested using ICMP queries (through the use of ping. These tests might fail in hosts installed
              in networking environments with firewalls that block outbound ICMP communication.

Description

       The  network-test  program  will test your system's network configuration using basic tests and providing
       both information (INFO), warnings (WARN) and possible errors (ERR) based on the results of  these  tests.
       It will check and report on:
              * Status of the network interfaces of the system including: link status,
               IP addressing and number of transmitted packets and error rates.

              * Accessibility to configured routes to external networks,
                including the default network route, checking the routers configured
                to give access to the network

              * Proper host resolution, testing DNS resolution against a known host.

              *  Proper  network  connectivity, testing reachability of remote hosts using ICMP and simulating a
              web connections to a remote web server (the web server  used  for  the  tests  can  be  configured
              through the environment, see below)

              *  Extra  information  of  network connectivity using calls to external API services including the
              actual Internet IPv4 address, IPv6 address as well as GeoIP information (only if  enabled  by  the
              user in the highest verbose level)

       The program does not need special privileges to run as it does not do any system change.

       However,  the behaviour of the program when running as an unprivileged user is not the same as running as
       system administrator (i.e. root). If the program is run as system administrator it will try to  run  some
       tools that are only available to it to speed up some of the tests.

       The  program  relies on the use of ip, netstat, ifconfig, arp, nmcli, and (when running as root and using
       Ethernet  interfaces)  ethtool  or  mii-tool,  to  obtain  information  about  the  system's   networking
       configuration  (status  of  available interfaces and configured network routes). It also uses ping, host,
       curl, and nc (netcat) to do tests of the network connectivity and ensure that the host can connect to the
       Internet.

Environment

       The  program  will,  by default, check www.debian.org and its associated web server. If you want to use a
       different check host you can setup the environment as follows:

       CHECK_HOST
              The name of a host to use when testing DNS resolution.  By default 'www.debian.org'

       CHECK_IP_ADRESS
              The CHECK_HOST ´s IP address.  By default defined with the following value: 194.109.137.218

       CHECK_WEB_HOST
              The web server to use for testing purposes when testing network connectivity.  By default it  will
              use 'www.debian.org'

       CHECK_WEB_PORT
              The web server port of server CHECK_WEB_HOST that will be used for testing. By default it will use
              TCP port 80..

       CHECK_WEB_URL
              A  web  service  to  test network connectivity by downloading some content. By default it will use
              'http://network-test.debian.org/moo'

       CHECK_WEB_MD5
              The MD5sum value of the content being checked.

       CHECK_IP_URL
              A web service used to determine  the  system's  public  IPv4  address.  By  default  it  will  use
              'https://api.ipify.org'

       CHECK_IP6_URL
              A  web  service  used  to  determine  the  system's  public  IPv6  address. By default it will use
              'https://api6.ipify.org'

       CHECK_GEOIP_URL
              A web service used to determine the system's Geographical information based on  public  databases.
              By default it will use 'http://api.geoiplookup.net/'

Exit Status

       The program will exit with error (1) if any of the network checks fail.

Name

       network-test - check the network and test if everything is fine

Options

-s     The log messages are sent also to the local3 syslog facility. This is useful if the script is  run
              periodically (from cron) and the system administrator wants to preserve the output in syslog

       -vverbosity
              Verbosity  level  is  a  value that defines the level of output information that the script should
              use. Valid values are: 0 (silent run), 1 (show only error messages), 2  (Show  error  and  warning
              messages),  3  (default  level - show informational messages), 4 (show detailed information) and 5
              (Show information from external APIs -IP address and GeoIP).

              As the privacy policies of different external services vary. These services are  only  queried  if
              the user selects the highest verbosity level (5).

See Also

ip(8),ncmli(1),netstat(8),ifconfig(8),ethtool(8),mii-tool(8),ping(8),nc(1),curl(1),andhost(1).

Synopsis

network-test -s [-vverboselevel]

See Also