Làm thế nào để theo dõi các giao diện gửi đi?


8

Lệnh Unix traceroutetheo dõi địa chỉ IP của các nút từ nút nguồn đến nút đích. Mỗi nút ở giữa có một giao diện đến và đi.

theo dõi

Thực hiện traceroute -n dsttrên srcsẽ hiển thị các địa chỉ IP của src, dst và tất cả các giao diện đến của các bước nhảy ở giữa.

Nhưng làm thế nào để theo dõi các địa chỉ IP outging?

Cập nhật

Tôi đã thử ping -Rđề xuất nhưng nó dường như không hoạt động. Đây là traceroute đến một máy chủ web công cộng:

$ ping -n -c 1 -R 212.227.222.9
PING 212.227.222.9 (212.227.222.9) 56 (124) byte dữ liệu.
64 byte từ 212.227.222.9: icmp numq = 1 ttl = 57 time = 47,4 ms
RR: 192.168.2.111
        169.254.1.1
        87.186.224.94
        62.154.76.34
        62.154.12.175
        212.227.117.13
        212.227.117.8
        10.71.3.253
        212.227.222.9


--- 212.227.222.9 thống kê ping ---
1 gói được truyền, 1 nhận, mất 0% gói, thời gian 0ms
rtt tối thiểu / avg / max / mdev = 47.441 / 47.441 / 47.441 / 0.000 ms

Và đây là địa chỉ IP của kết nối quay số của tôi.

$ curl -s https://toolbox.googl OKs.com/apps/browserinfo/info/ | jq -r .remoteAddr
93.192,75.247

Nhưng nó đã không được ghi lại bằng lệnh ping. Nguyên nhân có thể là gì?


Mẹo: cách nhanh nhất để nhận IP công khai của bạn là curl ifconfig.me. Điều đơn giản nhất trên internet. Bỏ tay xuống.
Ryan Foley

1
ICMP sẽ không bao giờ cung cấp cho bạn thông tin mà bạn đang tìm kiếm để có được chính xác. Hành vi mặc định là sử dụng giao diện đầu ra của thông báo ICMP, nhưng nhìn chung nó có thể được cấu hình để có nguồn gốc từ các giao diện khác. Giả sử tôi có một bộ định tuyến internet đang sử dụng địa chỉ RFC1918 giữa các giao diện bộ định tuyến trong mạng riêng của mình, nhưng tôi không muốn cung cấp các địa chỉ đó cho công chúng, tôi có thể gán IP công cộng cho giao diện loopback và lấy tất cả lưu lượng truy cập ICMP từ giao diện đó. Bạn sẽ không nhận được giao diện "đến" hay giao diện "đi" và sẽ không bao giờ từ thiết bị đó.
YLearn

@RyanFoley ifconfig.me không đáng tin cậy (1 lỗi trong 5 bài kiểm tra) và rất chậm: một truy vấn mất 2,8 giây. Hộp công cụ của Google cần 0,7 giây.
ceving

Có câu trả lời nào giúp bạn không? nếu vậy, bạn nên chấp nhận câu trả lời để câu hỏi không xuất hiện mãi mãi, tìm kiếm câu trả lời. Ngoài ra, bạn có thể cung cấp và chấp nhận câu trả lời của riêng bạn.
Ron Maupin

Câu trả lời:


6

Tôi không chính xác câu trả lời cho câu hỏi của bạn, nhưng đó là một cách đơn giản (nhưng hạn chế) để làm (trong trường hợp nhất định) những gì bạn muốn. Tôi đang đối phó-đăng tùy chọn -R của trang ping man:

-R Ghi tuyến đường. Bao gồm tùy chọn RECORD_ROUTE trong gói ECHO_REQUEST và hiển thị bộ đệm tuyến trên các gói được trả về. Lưu ý rằng tiêu đề IP chỉ đủ lớn cho chín tuyến đường như vậy. Nhiều máy chủ bỏ qua hoặc loại bỏ tùy chọn này.

Vì vậy, bạn cũng có thể thấy đường dẫn trở lại của ECHO_REQUEST, đó không phải là giao diện thoát (mà bạn đang hỏi về) trừ khi đường dẫn đi giống với đường dẫn quay lại. Chỉ trong trường hợp này, đường dẫn trở lại là địa chỉ IP của giao diện gửi đi mà bạn đang yêu cầu.

Đó là một ví dụ thực tế trên mạng nhà cung cấp internet của tôi, có thể không rõ ràng lắm, nhưng tôi không có một số bộ định tuyến để liên kết với nhau :) mệnh 10.2.105.178

traceroute 10.2.105.178
traceroute to 10.2.105.178 (10.2.105.178), 30 hops max, 60 byte packets
 1  192.168.1.254 (192.168.1.254)  3.418 ms  3.575 ms  4.021 ms
 2  10.189.48.1 (10.189.48.1)  11.237 ms * *
 3  10.2.105.178 (10.2.105.178)  15.235 ms * *

ping -R 10.2.105.178 PING 10.2.105.178 (10.2.105.178) 56 (124) byte dữ liệu.

64 byte từ 10.2.105.178: icmp numq = 5 ttl = 253 time = 74.1 ms NOP RR:

192.168.1.133

10.189.51.61

10.2.105.177

10.2.105.178

10.2.105.178

10.189.48.1

192.168.1.254

192.168.1.133

---- bỏ qua ----

64 byte từ 10.2.105.178: icmp numq = 6 ttl = 253 time = 13.0 ms NOP RR:

192.168.1.133

10.189.51.61

10.2.105.177

10.2.105.178

10.2.105.218 ## thay đổi mỗi lần, Idon không biết tại sao ##

10.189.48.1

192.168.1.254

192.168.1.133


Tôi không chắc mình có hiểu chính xác những gì RECORD_ROUTE làm hay không, nhưng dường như đó không phải là thứ tôi cần. Tôi đã thử nó với một kết nối quay số. Tôi biết địa chỉ công cộng của bộ định tuyến quay số của mình và tôi có lộ trình chín bước đến một máy chủ web công cộng. Đối với mỗi bước nhảy tôi đã thử -Rtùy chọn. Bước nhảy thứ tư là người đầu tiên, người trả lời yêu cầu. Nhưng câu trả lời không chứa địa chỉ công cộng của tôi. Và mặc dù đó chỉ là bước nhảy thứ tư, câu trả lời chứa 9 địa chỉ.
ceving

chỉ chốc lát, tôi đang chuẩn bị một ví dụ
feligiotti

Điều này ping -Rsẽ chỉ hữu ích cho hop rất hạn chế. Tôi nói trước đó là một cách hạn chế
feligiotti

Ví dụ tương tự không hoạt động cho mạng quay số của tôi. Tôi không biết tại sao. Có lẽ NAT?
ceving

Xin chào @Ceving, thực hiện traceroute 212.227.222.9và sau đó thực hiện ping -R bước nhảy thứ ba mà bạn tìm thấy trong traceroute. Theo cách đó, bạn có cùng một lược đồ tôi đã làm để đọc phản hồi. Chín tuyến đường tổng đi trung bình và trở lại, vì vậy nếu bạn làm ping -R 212.227.222.9bạn không thể nhìn thấy đường dẫn đầy đủ, nhưng chỉ là phần cuối cùng
feligiotti

5

Theo RFC1812 , địa chỉ nguồn của thông điệp ICMP do bộ định tuyến tạo ra phải là giao diện đầu ra mà gói thông thường sẽ trả về cho người gửi.

Trong thực tế, rất có khả năng bạn sẽ phải đối mặt với hành vi không chuẩn trong đó bộ định tuyến sẽ lấy nguồn trả lời ICMP bằng nguồn giao diện xâm nhập. Điều này thường làm cho traceroute dễ đọc hơn nhiều.

Theo câu hỏi của YLearn, tôi đang đăng sơ đồ mạng và một số kết quả đầu ra. Cấu trúc liên kết mẫu để minh họa cách hoạt động của traceroute

Giả sử chúng ta đang sử dụng traceroute từ loopback của R5 5.5.5.5 đến loopback của R1 1.1.1.1. Như bạn có thể thấy, đường dẫn chuyển tiếp là thông qua R4-R2, trong khi đường dẫn ngược là R3-R4.

R4#sh ip route 1.1.1.1
Routing entry for 1.1.1.1/32
Known via "bgp 4", distance 20, metric 0
Tag 2, type external
Last update from 10.1.24.2 00:02:42 ago
Routing Descriptor Blocks:
* 10.1.24.2, from 10.1.24.2, 00:02:42 ago
  Route metric is 0, traffic share count is 1
  AS Hops 2

R1#sh ip route 5.5.5.5
Routing entry for 5.5.5.5/32
Known via "bgp 1", distance 20, metric 0
Tag 3, type external
Last update from 10.1.13.3 00:14:18 ago
Routing Descriptor Blocks:
* 10.1.13.3, from 10.1.13.3, 00:14:18 ago
  Route metric is 0, traffic share count is 1
  AS Hops 2
  Route tag 3
  MPLS label: none

Đầu ra theo dõi từ R5 trông như sau:

R5#traceroute
Protocol [ip]:
Target IP address: 1.1.1.1
Source address: 5.5.5.5
Numeric display [n]:
Timeout in seconds [3]:
Probe count [3]:
Minimum Time to Live [1]:
Maximum Time to Live [30]:
Port Number [33434]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Type escape sequence to abort.
Tracing the route to 1.1.1.1
VRF info: (vrf in name/id, vrf out name/id)
1 10.1.45.4 208 msec 140 msec 100 msec
2 10.1.24.2 96 msec 44 msec 104 msec
3 10.1.12.1 224 msec 220 msec 112 msec

Vì vậy, trong khi lưu lượng truy cập ICMP thực tế do R1 tạo ra sẽ quay trở lại R5 thông qua R3, tiêu đề IP của thông báo Không thể truy cập ICMP sẽ có nguồn giao diện xâm nhập 10.1.12.1.

Theo kinh nghiệm của tôi, đây là cách các bộ định tuyến của Cisco và Juniper hoạt động, tôi không chắc chắn về các nhà cung cấp khác.


Có lẽ chỉ có tôi, nhưng câu thứ hai làm tôi hơi bối rối. Bạn có nói rằng thông thường một thiết bị trên internet sẽ phản hồi bằng giao diện xâm nhập của lưu lượng truy cập đã tạo ra thông báo ICMP không? Vậy nếu lưu lượng truy cập được nhận trên Int1 và thông báo ICMP đi ra Int2, nó có nguồn gốc từ Int1? Hoặc bạn đang đề cập đến một giao diện xâm nhập khác (và nếu vậy, cái nào)? Theo kinh nghiệm của tôi, hầu hết các bộ định tuyến hoạt động như các trạng thái RFC, sử dụng giao diện đi ra của thông báo theo mặc định và trong hầu hết các trường hợp, đây là cùng một giao diện mà lưu lượng truy cập đã nhận được.
YLearn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.