By Fatskills Exam Guides Team — the exam nerds behind 28,500+ quizzes and 2.1M practice questions across 500+ global exams.
DNS, Firewalls, VPNs, Proxies – Debugging Connectivity
As an FDE, you’re often dropped into high-stakes environments where networking is the invisible force breaking your deployment. Maybe you’re deploying an ML model on a classified network where DNS resolution fails silently, or debugging a data pipeline in a disaster zone where the VPN drops every 10 minutes. Unlike lab environments, real-world networks have firewalls with undocumented rules, proxies that strip headers, and DNS servers that lie. This guide gives you the field-tested playbook to diagnose, fix, and work around networking issues—fast.
Field Example:You’re on-site at a defense contractor deploying a real-time object detection system. The model works in staging, but in production, it fails to fetch updates from an internal API. The logs show ConnectionTimeout. The customer insists it’s your code. You SSH into the bastion host, run dig, and discover their DNS server is misconfigured—it’s resolving the API hostname to a decommissioned IP. You bypass DNS with a /etc/hosts entry, push a hotfix, and buy time to escalate the real issue (while the customer thinks you’re a wizard).
ConnectionTimeout
dig
/etc/hosts
api.example.com
10.20.30.40
nslookup
host
systemd-resolved
iptables
nftables
ufw
firewalld
openconnect
mitmproxy
ssh -J
localhost:8080
remote:80
ssh -L
ssh -R
kubectl port-forward
ping -M do -s 1472 <host>
internal.example.com
10.0.0.1
203.0.113.1
update-ca-certificates
ip netns
nsenter
--network
Scenario: Your app can’t reach an API. The customer says, "It works for us."
bash ssh -J user@bastion user@internal-host
Test basic connectivity: bash ping api.example.com # Is the host reachable? curl -v https://api.example.com # Verbose HTTP request nc -zv api.example.com 443 # Is the port open? (Netcat)
bash ping api.example.com # Is the host reachable? curl -v https://api.example.com # Verbose HTTP request nc -zv api.example.com 443 # Is the port open? (Netcat)
Check DNS Resolution
bash dig api.example.com +short # Quick IP lookup nslookup api.example.com # Cross-check with another tool
Field trap: If DNS fails, try hardcoding the IP in /etc/hosts as a temporary fix.
Inspect Firewall Rules
bash sudo iptables -L -n -v # Linux sudo ufw status # Ubuntu
Test if a port is blocked: bash telnet api.example.com 443 # If it hangs, the port is blocked
bash telnet api.example.com 443 # If it hangs, the port is blocked
Debug Proxies
bash env | grep -i proxy # Check environment variables curl -x http://proxy.example.com:8080 https://api.example.com
Field trap: Some proxies strip headers (e.g., Host). Use curl -H "Host: api.example.com" to test.
Host
curl -H "Host: api.example.com"
Validate TLS/SSL
bash openssl s_client -connect api.example.com:443 -showcerts
Field trap: If the customer uses a custom CA, add it to your trust store: bash sudo cp customer-ca.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates
bash sudo cp customer-ca.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates
Escalate or Work Around
8443
443
HTTP_PROXY
HTTPS_PROXY
curl -x
ip link set mtu 1400 dev eth0
Answer: First, confirm if external access is allowed (ATO/ACO restrictions). If not, work with the customer to set up an internal mirror or offline dependency cache. If allowed, debug step-by-step (DNS → firewall → proxy → TLS).
"The customer’s VPN keeps dropping, and they blame your app. How do you prove it’s not your code?"
Answer: Reproduce the issue with a simple tool (e.g., curl or ping). Show that the VPN drops even for basic requests. Escalate to their network team with logs.
curl
ping
"You’re on-site and the customer demands a feature that violates the original scope. How do you respond?"
Scenario: You’re deploying a data pipeline in a disaster response zone. The pipeline pulls data from a satellite feed, but packets keep disappearing. The customer insists it’s your code.
What Happened:- The satellite feed was behind a transparent proxy that dropped packets larger than 1400 bytes.- The customer’s network team didn’t document this.- Your app was sending 1500-byte packets (default MTU).
How You Fixed It:1. Ran ping -M do -s 1472 <satellite-feed> to confirm MTU issues.2. Adjusted the app’s MTU (ip link set mtu 1400 dev eth0).3. Added a retry mechanism for dropped packets.4. Lesson: Always test MTU in constrained networks.
ping -M do -s 1472 <satellite-feed>
pypi.org
requirements.txt
Why: Air-gapped networks have no internet access—you must bring dependencies with you.
Your app works in staging but fails in production with ConnectionRefused. The customer says their firewall allows all traffic. What do you check next?
ConnectionRefused
nc -zv <host> <port>
0.0.0.0
127.0.0.1
Why: ConnectionRefused means the port is reachable but nothing is listening (or the firewall is silently dropping traffic).
You’re debugging a slow API call in a customer’s network. curl takes 5 seconds, but ping is instant. What’s likely the issue?
dig +short example.com
nslookup example.com
host example.com → Simple DNS query.
host example.com
Firewall Checks:
sudo iptables -L -n -v
sudo ufw status
telnet example.com 443 → Test if a port is open.
telnet example.com 443
Proxy Debugging:
env | grep -i proxy
curl -x http://proxy:8080 https://example.com → Test with proxy.
curl -x http://proxy:8080 https://example.com
TLS Debugging:
openssl s_client -connect example.com:443 -showcerts
update-ca-certificates → Add a custom CA.
Port Forwarding:
ssh -L 8080:localhost:80 user@remote
ssh -R 8080:localhost:80 user@remote → Remote port forward.
ssh -R 8080:localhost:80 user@remote
MTU Testing:
ping -M do -s 1472 example.com
ip link set mtu 1400 dev eth0 → Adjust MTU.
VPN Checks:
openconnect --protocol=anyconnect vpn.example.com
ip a → Check VPN interface.
ip a
Network Namespace:
ip netns list
nsenter -t <PID> -n → Enter a namespace.
nsenter -t <PID> -n
⚠️ Field Traps:
curl -H "Host: example.com"
⚠️ TLS inspection breaks pinned certs—ask the customer if they do it.
Port Numbers to Memorize:
22
53
80
3306
5432
6379
27017
Final Tip: When in doubt, reproduce the issue with the simplest tool possible (ping, curl, nc). Complex apps fail for simple reasons—don’t overcomplicate debugging.
nc
Join 4M+ learners. Unlock unlimited quizzes, wrong-answer tracking, flashcards + reminders, study guides, and 1-on-1 challenges.