Reviewed-on: #17 Reviewed-by: sundapeng <sundp@mail.zgclab.edu.cn> Reviewed-by: xuxt <xuxt@zgclab.edu.cn>
76 lines
1.8 KiB
Bash
Executable File
76 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Test DNS resolution using dig
|
|
# Usage: ./02_dig_test.sh
|
|
|
|
set -e
|
|
|
|
HOST_DNS_PORT="${HOST_DNS_PORT:-1053}"
|
|
|
|
echo "Testing DNS resolution with dig..."
|
|
echo "Using DNS server localhost:${HOST_DNS_PORT}"
|
|
|
|
# Function to test DNS query
|
|
test_dns_query() {
|
|
local hostname="$1"
|
|
local expected_ip="$2"
|
|
local description="$3"
|
|
|
|
echo ""
|
|
echo "Testing: $description"
|
|
echo "Query: $hostname.argus.com"
|
|
echo "Expected IP: $expected_ip"
|
|
|
|
# Perform dig query
|
|
result=$(dig @localhost -p "$HOST_DNS_PORT" "$hostname".argus.com A +short 2>/dev/null || echo "QUERY_FAILED")
|
|
|
|
if [ "$result" = "QUERY_FAILED" ]; then
|
|
echo "✗ DNS query failed"
|
|
return 1
|
|
elif [ "$result" = "$expected_ip" ]; then
|
|
echo "✓ DNS query successful: $result"
|
|
return 0
|
|
else
|
|
echo "✗ DNS query returned unexpected result: $result"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Check if dig is available
|
|
if ! command -v dig &> /dev/null; then
|
|
echo "Installing dig (dnsutils)..."
|
|
apt-get update && apt-get install -y dnsutils
|
|
fi
|
|
|
|
# Check if container is running
|
|
if ! docker compose ps | grep -q "Up"; then
|
|
echo "Error: BIND9 container is not running"
|
|
echo "Please start the container first with: ./01_start_container.sh"
|
|
exit 1
|
|
fi
|
|
|
|
echo "=== DNS Resolution Tests ==="
|
|
|
|
# Test cases based on current configuration
|
|
failed_tests=0
|
|
|
|
# Test ns1.argus.com -> 127.0.0.1
|
|
if ! test_dns_query "ns1" "127.0.0.1" "Name server resolution"; then
|
|
((failed_tests++))
|
|
fi
|
|
|
|
# Test web.argus.com -> 12.4.5.6
|
|
if ! test_dns_query "web" "12.4.5.6" "Web server resolution"; then
|
|
((failed_tests++))
|
|
fi
|
|
|
|
echo ""
|
|
echo "=== Test Summary ==="
|
|
if [ $failed_tests -eq 0 ]; then
|
|
echo "✓ All DNS tests passed!"
|
|
exit 0
|
|
else
|
|
echo "✗ $failed_tests test(s) failed"
|
|
exit 1
|
|
fi
|