Fix README.md
This commit is contained in:
@@ -1,6 +1,31 @@
|
|||||||
# NetTest - Network Connectivity Testing Tool
|
# NetTest - Network Connectivity Testing Tool
|
||||||
|
|
||||||
A comprehensive command-line tool written in Rust for testing network connectivity and DNS resolution across various dimensions.
|
A comprehensive command-line tool written in Rust for testing network connectivity, DNS resolution, and network path characteristics across IPv4 and IPv6.
|
||||||
|
|
||||||
|
**Key Features:**
|
||||||
|
- 🌐 Comprehensive IPv4/IPv6 connectivity testing
|
||||||
|
- 🔍 Advanced DNS testing with sinkhole detection
|
||||||
|
- 📊 MTU discovery and path analysis
|
||||||
|
- 🛡️ DNS filtering effectiveness analysis
|
||||||
|
- 🚀 High-performance async implementation
|
||||||
|
- 📋 Human-readable and JSON output formats
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clone and build
|
||||||
|
git clone https://github.com/your-username/nettest.git
|
||||||
|
cd nettest && cargo build --release
|
||||||
|
|
||||||
|
# Run comprehensive tests
|
||||||
|
./target/release/nettest full google.com
|
||||||
|
|
||||||
|
# Test DNS with IPv6
|
||||||
|
./target/release/nettest network ping google.com --ip-version v6
|
||||||
|
|
||||||
|
# Check DNS filtering effectiveness
|
||||||
|
./target/release/nettest dns filtering
|
||||||
|
```
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
@@ -20,6 +45,9 @@ A comprehensive command-line tool written in Rust for testing network connectivi
|
|||||||
- **Comprehensive record types** - A, AAAA, MX, NS, TXT, CNAME, SOA, PTR, and more
|
- **Comprehensive record types** - A, AAAA, MX, NS, TXT, CNAME, SOA, PTR, and more
|
||||||
- **Multiple DNS servers** - Test against Google, Cloudflare, Quad9, OpenDNS, and others
|
- **Multiple DNS servers** - Test against Google, Cloudflare, Quad9, OpenDNS, and others
|
||||||
- **TCP and UDP queries** - Support for both DNS transport protocols
|
- **TCP and UDP queries** - Support for both DNS transport protocols
|
||||||
|
- **Sinkhole detection** - Automatically detects DNS sinkholing (0.0.0.0, 127.0.0.1, etc.)
|
||||||
|
- **Smart error handling** - Distinguishes between DNS failures and missing records
|
||||||
|
- **System DNS integration** - Uses system DNS configuration while avoiding search domain expansion
|
||||||
- **Large query testing** - Test handling of large DNS responses
|
- **Large query testing** - Test handling of large DNS responses
|
||||||
- **International domains** - Support for IDN (Internationalized Domain Names)
|
- **International domains** - Support for IDN (Internationalized Domain Names)
|
||||||
|
|
||||||
@@ -41,9 +69,11 @@ A comprehensive command-line tool written in Rust for testing network connectivi
|
|||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
### From Source
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Clone the repository
|
# Clone the repository
|
||||||
git clone <repository-url>
|
git clone https://github.com/your-username/nettest.git
|
||||||
cd nettest
|
cd nettest
|
||||||
|
|
||||||
# Build the project
|
# Build the project
|
||||||
@@ -53,6 +83,21 @@ cargo build --release
|
|||||||
cargo install --path .
|
cargo install --path .
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Using Cargo
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Install directly from source (when published)
|
||||||
|
cargo install nettest
|
||||||
|
```
|
||||||
|
|
||||||
|
### Requirements
|
||||||
|
|
||||||
|
- Rust 1.70 or later
|
||||||
|
- Root/administrator privileges may be required for:
|
||||||
|
- ICMP ping tests
|
||||||
|
- Raw socket operations
|
||||||
|
- Some MTU discovery operations
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
### Basic Commands
|
### Basic Commands
|
||||||
@@ -129,6 +174,25 @@ nettest dns categories --category all
|
|||||||
|
|
||||||
# DNS filtering effectiveness
|
# DNS filtering effectiveness
|
||||||
nettest dns filtering
|
nettest dns filtering
|
||||||
|
|
||||||
|
# Show system DNS configuration
|
||||||
|
nettest dns debug
|
||||||
|
```
|
||||||
|
|
||||||
|
### DNS Sinkhole Detection
|
||||||
|
|
||||||
|
NetTest automatically detects when domains are being sinkholed (redirected to special IP addresses):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Example output showing sinkhole detection
|
||||||
|
$ nettest dns query blocked-domain.com --record-type a
|
||||||
|
PASS DNS A query for blocked-domain.com (UDP) (45ms)
|
||||||
|
✓ A records: 🕳️ SINKHOLED (security success): Redirected to sinkhole IPs: 0.0.0.0
|
||||||
|
|
||||||
|
# Example showing missing records (not an error)
|
||||||
|
$ nettest dns query image.example.com --record-type mx
|
||||||
|
PASS DNS MX query for image.example.com (UDP) (32ms)
|
||||||
|
✓ MX records: (none - no mail servers configured)
|
||||||
```
|
```
|
||||||
|
|
||||||
### Comprehensive Testing
|
### Comprehensive Testing
|
||||||
@@ -162,13 +226,6 @@ Machine-readable JSON output for integration with other tools:
|
|||||||
nettest --json dns query google.com
|
nettest --json dns query google.com
|
||||||
```
|
```
|
||||||
|
|
||||||
## Requirements
|
|
||||||
|
|
||||||
- Rust 1.70 or later
|
|
||||||
- Root/administrator privileges may be required for:
|
|
||||||
- ICMP ping tests
|
|
||||||
- Raw socket operations
|
|
||||||
- MTU discovery
|
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
|
|
||||||
@@ -187,13 +244,31 @@ cargo test -- --nocapture
|
|||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
The tool is organized into several modules:
|
NetTest is built with a modular architecture for maintainability and extensibility:
|
||||||
|
|
||||||
- **cli** - Command-line argument parsing and interface
|
```
|
||||||
- **network** - TCP, UDP, and ICMP connectivity testing
|
src/
|
||||||
- **dns** - DNS resolution and query testing
|
├── cli/ # Command-line interface and argument parsing
|
||||||
- **mtu** - MTU discovery and testing
|
├── network/ # Network connectivity testing
|
||||||
- **utils** - Common utilities and error handling
|
│ ├── icmp.rs # ICMP ping tests with IPv6 support
|
||||||
|
│ ├── tcp.rs # TCP connection testing
|
||||||
|
│ └── udp.rs # UDP connectivity testing
|
||||||
|
├── dns/ # DNS testing and analysis
|
||||||
|
│ ├── categories.rs # Domain category definitions
|
||||||
|
│ ├── queries.rs # DNS query implementations
|
||||||
|
│ └── mod.rs # Core DNS logic with sinkhole detection
|
||||||
|
├── mtu/ # MTU discovery and testing
|
||||||
|
├── utils/ # Common utilities and error handling
|
||||||
|
└── main.rs # Application entry point and orchestration
|
||||||
|
```
|
||||||
|
|
||||||
|
### Key Design Principles
|
||||||
|
|
||||||
|
- **Async-first**: All network operations are asynchronous for better performance
|
||||||
|
- **Error handling**: Comprehensive error handling with descriptive messages
|
||||||
|
- **Cross-platform**: Works on macOS, Linux, and Windows
|
||||||
|
- **IPv6 ready**: Full support for IPv6 alongside IPv4
|
||||||
|
- **Extensible**: Easy to add new test types and protocols
|
||||||
|
|
||||||
## Security Considerations
|
## Security Considerations
|
||||||
|
|
||||||
@@ -207,8 +282,68 @@ This tool is designed for defensive security testing and network diagnostics. It
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
[Add your license here]
|
This project is licensed under the **WTFPL** (Do What The F*ck You Want To Public License) Version 2.
|
||||||
|
|
||||||
|
```
|
||||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
Version 2, December 2004
|
||||||
|
|
||||||
|
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim or modified
|
||||||
|
copies of this license document, and changing it is allowed as long
|
||||||
|
as the name is changed.
|
||||||
|
|
||||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||||
|
```
|
||||||
|
|
||||||
|
**TL;DR:** Do whatever you want with this code! 🎉
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
[Add contribution guidelines here]
|
Since this project is licensed under WTFPL, you can do whatever you want! But if you'd like to contribute:
|
||||||
|
|
||||||
|
1. **Fork the repository**
|
||||||
|
2. **Create a feature branch**: `git checkout -b feature/amazing-feature`
|
||||||
|
3. **Make your changes and test**: `cargo test && cargo clippy`
|
||||||
|
4. **Commit your changes**: `git commit -m 'Add amazing feature'`
|
||||||
|
5. **Push to the branch**: `git push origin feature/amazing-feature`
|
||||||
|
6. **Open a Pull Request**
|
||||||
|
|
||||||
|
### Development Setup
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clone your fork
|
||||||
|
git clone https://github.com/your-username/nettest.git
|
||||||
|
cd nettest
|
||||||
|
|
||||||
|
# Install development dependencies
|
||||||
|
cargo build
|
||||||
|
|
||||||
|
# Run all quality checks
|
||||||
|
cargo fmt # Format code
|
||||||
|
cargo clippy # Lint code
|
||||||
|
cargo test # Run tests
|
||||||
|
cargo audit # Security audit
|
||||||
|
```
|
||||||
|
|
||||||
|
### Code Quality
|
||||||
|
|
||||||
|
The project maintains high code quality standards:
|
||||||
|
- ✅ All tests must pass
|
||||||
|
- ✅ Zero clippy warnings
|
||||||
|
- ✅ Proper formatting with rustfmt
|
||||||
|
- ✅ No security vulnerabilities
|
||||||
|
- ✅ Comprehensive error handling
|
||||||
|
|
||||||
|
## Changelog
|
||||||
|
|
||||||
|
### Recent Improvements
|
||||||
|
- 🔧 **Fixed IPv6 ping issues** - IPv6 ICMP now works correctly on macOS
|
||||||
|
- 🛡️ **Enhanced DNS security** - Added sinkhole detection and improved error handling
|
||||||
|
- 📦 **Updated dependencies** - Migrated from trust-dns to hickory-dns for better maintenance
|
||||||
|
- 🎯 **Improved accuracy** - Fixed DNS search domain issues for more accurate testing
|
||||||
|
- ⚡ **Better performance** - Async implementation with proper timeout handling
|
||||||
|
|||||||
Reference in New Issue
Block a user