2011-11-15 22 views
8

Tôi đang cố gắng tạo mô-đun hạt nhân để có thể gửi các gói đã sửa đổi từ các gói mà nó nhận được thông qua kết nối mạng. Tôi đang sử dụng bộ mã được cung cấp here. Tôi tạo ra một socket thô bên trong hạt nhân chỉ đơn giản là sử dụng mã này:Gửi gói thông qua mô-đun hạt nhân

Chức năng sendpacket được gọi là của thành viên này:

len = sendpacket(sockptr, dev, IPPROTO_TCP, duplicate, ntohs(dupiph->tot_len)); 

socketptr là socket thô tôi tạo ra, dev là net_device trong qua với tôi bằng hàm hooking, và trùng lặp là bản sao sửa đổi của gói gốc.

Trả lại từ cuộc gọi đến dev_queue_xmit cho biết gói đã được truyền thành công nhưng tôi không thể thấy gói trên dây. Tôi có hai câu hỏi: đầu tiên, tôi muốn có thể gỡ lỗi tốt hơn những gì đang xảy ra để bất kỳ lời khuyên nào liên quan đến điều đó được đánh giá cao. Ngoài ra, tôi tự hỏi nếu tôi đang xử lý việc tạo ổ cắm đúng cách hoặc nếu có một số loại cấu hình tôi đang thiếu. Đây là tất cả những điều rất mới mẻ đối với tôi vì vậy nó rất tốt có thể là tôi thiếu một cái gì đó ngớ ngẩn.

+0

Bạn có thể giải thích những gì bạn đã làm khi nói "Tôi không thể xem gói trên dây". Tôi đề nghị cài đặt wireshark hoặc chương trình sniffer khác. – Michel

+0

Xin lỗi, tôi nên làm rõ. Giao diện được sử dụng là "venet0" là giao diện được sử dụng bởi các thùng chứa openvz. Tôi đã quan sát lưu lượng truy cập trên giao diện đó bằng Wireshark và không thấy các gói. – bschulte3

+0

Bạn có chắc chắn rằng iptables đã được cấu hình đúng để truyền các gói như vậy không? – Dan

Trả lời

1

Rất có thể bạn cần sửa đổi hạt nhân để hoàn thành nhiệm vụ của mình. Bạn đã cân nhắc sử dụng giao diện điều khiển hoặc chạm để bạn có thể thực hiện tất cả công việc của mình trong không gian người dùng? Dưới đây là hướng dẫn: http://backreference.org/2010/03/26/tuntap-interface-tutorial/

Các vấn đề liên quan