Sao chép các gói từ một giao diện sang một giao diện khác


9

Tôi có một hệ thống Linux (gọi là A) với 2 thẻ ethernet, cụ thể là eth0 và eth1 được gắn vào hai mạng LAN hoàn toàn không liên quan.

Về cơ bản eth0 được sử dụng cho lưu lượng ứng dụng thông thường và eth1 chỉ được sử dụng cho mục đích gỡ lỗi. Gỡ lỗi có nghĩa là eth1 được liên kết bằng cách sử dụng cáp chéo đến một hộp linux khác (đặt nó là B) chạy Wireshark. Tôi muốn Wireshark có thể xử lý các gói ứng dụng di chuyển trên eth0 của A.

Về cơ bản tôi cần sao chép các gói đi từ giao diện eth0 sang giao diện eth1 để Wireshark trên hộp B có thể đánh hơi chúng (vì một số lý do tôi không có quyền truy cập vật lý vào LAN eth0). Tôi cũng có thể cần chỉ định các gói sẽ sao chép từ eth0 sang eth1 theo một số quy tắc (chỉ dựa trên các trường TCP / IP).

Cũng lưu ý rằng eth0 của A không cần phải được đặt ở chế độ lăng nhăng vì tôi chỉ muốn sao chép một tập hợp con các gói có A là đích

Có cách nào để đạt được điều này bằng cách sử dụng iptables không? Hay tôi cần phải viết một ứng dụng để làm cho công việc này? Tôi nên làm gì để "sao chép" các gói?

Câu trả lời:


7

Nếu kernel của bạn đủ gần đây, bạn có thể sử dụng iptables --tee để chuyển tiếp các khung từ eth0 đến máy chụp.


Liên kết đó hiện được bảo vệ bằng mật khẩu.
Ống

4

Bạn có thể sử dụng hành động thần kỳ tc. Ví dụ: Đối với lưu lượng truy cập đến:

tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: \
   protocol all prio 2 u32 \
   match u32 0 0 flowid 1:1 \
   action mirred egress mirror dev eth1

Đối với lưu lượng đi:

tc qdisc replace dev eth0 parent root handle 10: prio
tc filter add dev eth0 parent 10: \
   protocol all prio 2 u32 \
   match u32 0 0 flowid 10:1 \
   action mirred egress mirror dev eth1

3

Tìm kiếm trên mạng cho tcpbridge, đó chính xác là công việc. Nó có thể được sử dụng để nói chuyện với các máy ảo là tốt.


1

Một cái gì đó như rinetd sức làm việc (redirector / máy chủ cho TCP chỉ tôi tin, vì vậy không ARP, lớp 2, vv), nhưng trong tất cả sự trung thực, nhận được một số công tắc quản lý có khả năng phản ánh cổng hoặc nếu hộp đó là chỉ sử dụng cho Wireshark, bạn có thể thêm một NIC khác vào nó, kết nối hai giao diện, đặt nó ở phía trước máy A của eth0 và có một máy đánh hơi chuyên dụng.


1

Một thiết bị sao chép các khung ethernet từ giao diện này sang giao diện khác là một cây cầu. Bạn có thể cấu hình hệ thống Linux của mình để hoạt động như một cây cầu. Một số tài liệu có thể được tìm thấy ở đây:

Bạn có thể áp dụng quy tắc lọc cho lưu lượng cầu nối bằng cách sử dụng ebtables , tương tự iptablesđối với lưu lượng lớp 2.


0

Trong thiết lập của tôi, lưu lượng truy cập TX đa hướng được đánh dấu bằng iptables nhưng định tuyến chính sách sử dụng các bảng định tuyến mới không bao giờ hoạt động. Mặc dù nó hoạt động cho các gói TX unicast (chuyển hướng các gói có nguồn gốc từ eth0 sang eth5). Sử dụng tc tôi có thể nhận lưu lượng eth0 mcast thành eth5 Địa chỉ ip src mac và src được thay đổi so với eth5 vì vậy sẽ không tạo ra vấn đề với việc học chuyển đổi. Tất cả hỗ trợ kernel cho lập lịch gói kernel CONFIG_NET_SCHED phải được bật

Dưới đây CÔNG TRÌNH cho chuyển hướng unicast và multicast chuyển hướng từ eth0 sang eth5

Netfilter có thể được sử dụng để tương tác trực tiếp với cấu trúc đại diện cho một gói trong kernel. Cấu trúc này, sk_buff, chứa một trường có tên là __u32 nfmark, mà chúng ta sẽ sửa đổi. TC sau đó sẽ đọc giá trị đó để chọn lớp đích của gói.

IP_ADDR_ETH0 = ifconfig eth0 | grep 'inet addr'| cut -d ':' -f 2 | cut -d ' ' -f 1 | tr -d '\n' iptables -t mangle -A OUTPUT -s $ {IP_ADDR_ETH0} -p udp --match Multiport --dports 329.330 -o eth0 -j Mark --set-mark 2

Sẽ tạo một cây đại diện cho chính sách lập lịch của chúng tôi và sử dụng PRIO qdisc (bộ lập lịch gói) (có thể thử các chính sách có sẵn khác). qdiscs gắn ở gốc của thiết bị

tc qdisc thêm dev eth0 root xử lý 15: tiên sinh

Bây giờ có một mặt chính sách định hình lưu lượng và mặt khác đánh dấu các gói. Để kết nối cả hai, chúng ta cần một bộ lọc.

tham khảo man tc-mirred (8): Hành động kỳ diệu cho phép phản chiếu gói (sao chép) hoặc chuyển hướng (đánh cắp) gói mà nó nhận được. Phản chiếu là thứ đôi khi được gọi là Bộ phân tích cổng chuyển đổi (SPAN) và thường được sử dụng để phân tích và / hoặc các luồng gỡ lỗi.

tham khảo man tc-fw (8): bộ lọc điều khiển lưu lượng fw - fwmark bộ lọc fw cho phép phân loại các gói dựa trên một fwmark được đặt trước đó bởi iptables. Nếu nó giống hệt với 'tay cầm' của bộ lọc, bộ lọc khớp. iptables cho phép đánh dấu các gói đơn bằng mục tiêu MARK hoặc toàn bộ kết nối bằng CONNophone.

MAC_ADDR_ETH1 = cat /sys/class/net/eth1/address IP_ADDR_ETH1 = ifconfig eth1 | grep 'inet addr'| cut -d ':' -f 2 | cut -d ' ' -f 1 | tr -d '\n' tc bộ lọc thêm dev eth0 Parent 15: 0 giao thức ip prô 1 xử lý 0x2 fw hành động pedit ex munge eth src đặt $ {MAC_ADDR_ETH1} pipe \ action pedit ex munge ip src set dev eth1

hiển thị các quy tắc đặt ở trên: tc qdisc hiển thị bộ lọc dev eth0 tc hiển thị dev eth0

xóa / bỏ đặt ở trên quy tắc đặt: tc qdisc del dev eth0 root

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.