Làm cách nào để sử dụng đường hầm TUN / TAP từ chương trình người dùng?


9

Gần đây tôi đã phát hiện ra sự tồn tại của các giao diện Linux TUN / TAP và vẫn đang cố gắng hiểu chúng. Tôi nghĩ rằng tôi có được khái niệm cơ bản - các thiết bị giả được tạo ra mô phỏng giao diện mạng và thay vì truyền dữ liệu tới phần cứng, nó được chuyển đến một chương trình không gian người dùng.

Làm thế nào bạn sẽ chỉ đạo một chương trình không liên quan để sử dụng đường hầm này?

Ví dụ, trước khi đường hầm được tạo, hệ thống của tôi chỉ chứa eth0 và lo, giao diện ethernet bình thường (có dây với mạng cục bộ của tôi) và giao diện loopback. Sau khi một chương trình tạo và cấu hình một đường hầm, tôi có một giao diện mới gr0 mà tôi đã cho một địa chỉ IP trên mạng cục bộ của mình, nhưng không được sử dụng (vì vậy tất cả chúng ta đều nằm trên cùng một mạng con). Làm thế nào tôi có thể làm cho một chương trình không liên quan sử dụng 'đường hầm' này? Giả sử tôi có một tin nhắn Python đơn giản chuyển qua ứng dụng khách / máy chủ sử dụng kết nối TCP, làm cách nào tôi có thể định cấu hình nó để sử dụng đường hầm?

Tôi xin lỗi nếu tôi thiếu một cái gì đó cơ bản, nhưng như thường lệ, tôi đã tự làm mình bối rối trong sơ đồ của mọi thứ. Một lần nữa, tất cả những gì tôi muốn là có một chương trình TCP đơn giản sử dụng đường hầm này.

Cảm ơn!

Câu trả lời:


7

Nó không phải luôn luôn là "đường hầm". TUN / TAP chỉ là trình điều khiển NIC cụ thể. Từ quan điểm của ngăn xếp mạng, chúng hoạt động như bất kỳ giao diện mạng nào khác: chúng có thể có địa chỉ IP, có thể là giao diện điểm-điểm hoặc quảng bá. Quy tắc định tuyến cũng áp dụng cho chúng. Nhưng tất cả lưu lượng được ghi vào một trong các giao diện mạng đó sẽ chuyển đến một số chương trình không gian người dùng để xử lý và tất cả dữ liệu được ghi bởi chương trình không gian người dùng trực tiếp /dev/tunXtrông giống như các gói đến cho ngăn xếp mạng.

Trong máy chủ và máy khách thiết lập đường hầm thông thường có các thiết bị TUN với các địa chỉ được gán. Các bảng định tuyến được định cấu hình trên cả hai bảng điều hướng lưu lượng cần thiết đến các thiết bị TUN này. Khi gói được định tuyến đến tun0, kernel sẽ gửi nó đến chương trình không gian người dùng (máy khách) gửi gói này đến chương trình khác trên máy từ xa (máy chủ) thông qua, ví dụ, kết nối TCP. Trên máy từ xa, chương trình (máy chủ) khác nhận gói tin từ máy khách và ghi nó vào /dev/tunXthiết bị của chính nó , "tiêm" gói đó vào ngăn xếp mạng. Và gói đường hầm được xử lý như bất kỳ khác.


1
Vì vậy, câu trả lời (cho mục đích của tôi) là cấu hình bảng định tuyến để hướng lưu lượng truy cập đến các giao diện này. Đó là điểm mà tôi đang thiếu, nhưng bây giờ tôi có thể tìm ra giải pháp. Ngoài ra, tôi đánh giá cao lời giải thích vì nó làm sáng tỏ mọi thứ. Cảm ơn!
Ông Shickadance

2
Tôi đã kết thúc bằng cách sử dụng "tuyến đường thêm <TUN IP ADDR> dev gr0". Điều này cho phép tôi chuyển hướng lưu lượng truy cập thông qua giao diện mới. Cảm ơn một lần nữa!
Ông Shickadance
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.