How to Check Internet Connectivity Using `curl` and `wget` in Debian 12 Bookworm

Learn how to use curl and wget to check internet connectivity in Debian 12 Bookworm.

Introduction

Internet connectivity is crucial for system administrators, developers, and end-users alike. Whether troubleshooting network issues or automating web requests, tools like curl and wget are essential in Debian-based distributions, including Debian 12 Bookworm. This guide provides detailed instructions on using these command-line utilities to check internet connectivity, diagnose network problems, and retrieve online resources efficiently.

Understanding curl and wget

Before diving into connectivity tests, let’s briefly discuss these two powerful utilities:

  • curl (Client URL): A command-line tool for transferring data with URLs. It supports multiple protocols such as HTTP, HTTPS, FTP, SCP, and more.
  • wget (Web Get): A command-line utility designed for retrieving files from the web. It supports downloading via HTTP, HTTPS, and FTP and can work in the background.

Installing curl and wget

In Debian 12 Bookworm, curl and wget are not always pre-installed. You can check for their availability and install them if necessary:

sudo apt update
sudo apt install curl wget -y

To verify their installation, run:

curl --version
wget --version

If these commands return version information, the installation was successful.

Checking Internet Connectivity with curl

curl is a versatile tool for verifying network connectivity. Here are some common ways to use it:

1. Checking Basic Internet Connectivity

To verify whether the system has access to the internet, use:

curl -I https://www.google.com

The -I flag fetches only the HTTP headers instead of the entire page. A successful response will contain HTTP/1.1 200 OK or HTTP/2 200.

2. Testing Connectivity with a Custom Timeout

If you suspect slow network responses, use a timeout:

curl --connect-timeout 5 -I https://www.debian.org

This command sets a 5-second timeout for establishing a connection.

3. Checking DNS Resolution

To verify that the system can resolve domain names, try:

curl -I https://example.com --verbose

Look for Trying <IP Address> in the output to confirm DNS resolution.

4. Checking HTTP Response Codes

To fetch the HTTP status code of a request:

curl -o /dev/null -s -w "%{http_code}\n" https://www.example.com
  • -o /dev/null: Discards output.
  • -s: Silent mode.
  • -w "%{http_code}\n": Displays only the HTTP status code.

A 200 status code indicates success, while 404, 500, or other codes indicate issues.

Checking Internet Connectivity with wget

Like curl, wget is useful for diagnosing network issues. Here’s how to use it:

1. Simple Connectivity Test

Use wget to retrieve a webpage and check connectivity:

wget --spider https://www.google.com

If successful, the output will show:

Remote file exists and could contain further links, but recursion is disabled -- not retrieving.

2. Checking Connectivity with a Timeout

To set a timeout for the request:

wget --timeout=5 --spider https://www.debian.org

If the request exceeds 5 seconds, it will be terminated with an error message.

3. Logging Output for Troubleshooting

To capture detailed information, enable logging:

wget --spider --debug https://example.com

This provides debugging details, including DNS resolution and connection attempts.

4. Testing Internet Access via HTTP Headers

To fetch only headers without downloading content:

wget --server-response --spider https://example.com

This displays HTTP headers, helping to diagnose server responses.

Diagnosing Network Issues with curl and wget

1. Verifying Local Network Configuration

Before testing external sites, check the local network setup:

ip a
ip r

Ensure your network interface has an IP address and a valid default gateway.

2. Checking DNS Configuration

Test whether the system can resolve domain names:

dig google.com
nslookup debian.org

If these commands fail, check /etc/resolv.conf for correct DNS server entries.

3. Checking Firewall or Proxy Restrictions

If curl or wget fails, ensure no firewall or proxy is blocking access:

sudo iptables -L
sudo ufw status

If a proxy is used, set the environment variables:

export http_proxy=http://proxyserver:port
export https_proxy=https://proxyserver:port

Conclusion

curl and wget are powerful tools for checking internet connectivity in Debian 12 Bookworm. Whether verifying HTTP responses, troubleshooting DNS issues, or diagnosing network failures, these utilities provide essential functionalities. By mastering their usage, system administrators and users can efficiently diagnose and resolve connectivity problems.