2011-02-04 26 views
9

Tôi không biết nếu có cách ping mục tiêu bên ngoài proxy LAN của tôi chỉ chấp nhận yêu cầu Http thông qua proxy mực ... Tôi đọc ở đâu đó rằng một cách để giải quyết vấn đề đó là sử dụng đường hầm http để rằng proxy vẫn thấy yêu cầu dưới dạng yêu cầu Http. Tôi có thể sử dụng tính năng này để ping, giả sử, www.google.com nếu không đưa ra lỗi sau vì tường lửa đang từ chối yêu cầu:Tôi có thể sử dụng đường hầm http để ping hoặc traceroute thông qua proxy với tường lửa không?

$ ping www.google.com 
ping: unknown host www.google.com 

Nếu được thực hiện như thế nào ...?

Tôi đã cài đặt httptunnel.Bất kỳ trợ giúp nào về cách sử dụng nó sẽ được đánh giá cao.

Trả lời

8

Không. Ping và traceroute sử dụng giao thức mạng lớp thấp hơn (ICMP và/hoặc UDP, cụ thể là giao thức tầng 4) và sẽ không hoạt động trên đường hầm HTTP (lớp 7). Trong mọi trường hợp, ngay cả khi bạn có thể thuyết phục proxy HTTP mở phiên TCP thô cho bạn (đó là cách một số đường hầm HTTP hoạt động), bạn sẽ không nhận được các gói cần thiết để xác nhận rằng máy chủ có thể truy cập được. (ICMP echo reply, trong trường hợp ping, hoặc các gói ICMP hết hạn thời gian tồn tại trong trường hợp traceroute)

Để kiểm tra kết nối trong tình huống này, tôi nghĩ tốt nhất bạn có thể làm là HTTP " ping ". (Cố gắng thiết lập một kết nối HTTP với máy chủ từ xa và xem nếu nó hoạt động.) Ví dụ, bạn có thể làm một cái gì đó như:

$ http_proxy=http://webproxy.example.com:3128 \ 
> curl -I http://google.com/ > /dev/null 2>&1 \ 
> && echo success || echo failure 

Giả sử bạn đã curl cài đặt, điều này sẽ in "thành công" nếu google.com có thể truy cập thông qua proxy của bạn và "lỗi" nếu không.

+0

Thank bạn. Tôi đã thử nó, nhưng nó vẫn hiển thị thất bại ... xin vui lòng cho tôi biết nơi tôi có thể sai – pflz

+0

Hãy thử một lệnh của định dạng 'http_proxy = http: // : curl -I http: // google.com/', có thể mang tính hướng dẫn hơn. (Nói cách khác, trước tiên hãy đảm bảo rằng bạn có địa chỉ proxy chính xác và proxy có thể truy cập được. Bạn có thể thử 'telnet ' và xem liệu nó có kết nối hay không.) – mpontillo

+0

Ngoài ra, hãy thử 'echo $ http_proxy 'để xem nếu nó đã được thiết lập cho bạn. Nếu vậy, bạn có thể bỏ nó ra và chỉ sử dụng 'curl'. – mpontillo

1

Đó không phải là chính xác những gì bạn đang tìm kiếm, nhưng nếu bạn có thể truy cập và máy chủ ssh bên ngoài, bạn có thể chạy nó thông qua đó, và kết quả sẽ phản ánh thời gian ping đến máy chủ ssh:

$ ssh [email protected] 'ping -c 1 google.com' 
PING google.com (72.14.204.147) 56(84) bytes of data. 
64 bytes from iad04s01-in-f147.1e100.net (72.14.204.147): icmp_seq=1 ttl=57 time=2.64 ms 

--- google.com ping statistics --- 
1 packets transmitted, 1 received, 0% packet loss, time 0ms 
rtt min/avg/max/mdev = 2.640/2.640/2.640/0.000 ms 
Các vấn đề liên quan