Làm thế nào tôi có thể âm thầm thả một số gói đi?


8

Tôi đang thực hiện một số thử nghiệm cho một ứng dụng mà tôi đang làm việc và tôi cần có thể âm thầm loại bỏ các gói UDP trong một khoảng thời gian ngắn để sao chép chế độ lỗi có thể xảy ra.

Có cách nào để làm điều này?

Lưu ý: iptables DROP không im lặng cho các tin nhắn gửi đi! Khi một send()cuộc gọi tương tự bị bỏ qua iptables, nó sẽ trả về EPERMvì một lý do kỳ quái nào đó (xem tại đây . Thật không may, tôi không thể sử dụng câu trả lời đó vì đích đến của tôi chỉ là một bước nhảy).

xtables-addons sử dụng để có một STEALđộng từ , nhưng nó đã loại bỏ một vài năm trước đây không có lý do tôi có thể tìm thấy.


Bây giờ tôi đã thử sử dụng các tuyến đường không có thật trong bảng định tuyến và thật không may, điều đó dường như phá vỡ cả hai hướng lưu lượng truy cập.
Đối với thử nghiệm tôi cần thực hiện, tôi phải cho phép lưu lượng truy cập UDP trong nước và ngay khi tôi cài đặt tuyến đường không có thật, các gói đến sẽ ngay lập tức dừng lại, mặc dù nguồn vẫn đang gửi chúng.


1
Khác xa với một giải pháp hoàn chỉnh / gọn gàng nhưng tôi đã cần điều kiện thử nghiệm tương tự trong quá khứ. Trong trường hợp của tôi, việc thêm một tuyến tĩnh không có thật vào máy chủ mà tôi đang kết nối hoạt động tốt.
steve

@steve - Một tuyến đường không có thật xuất hiện để phá vỡ mọi thứ theo cả hai hướng và tôi cần duy trì chức năng của hướng RX.
Tên giả

Câu trả lời:


2

Làm thế nào về việc thêm giao diện giả và thiết lập tuyến đường đến giao diện đó?

# ip link add dummy0 type dummy
# ip link set dev dummy0 up
# ip route add 8.8.8.8/32 dev dummy0
# ping -c3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2015ms

Nó luôn gửi các gói cho bất kỳ địa chỉ (hàng xóm hoặc từ xa) trên dummy0.

# tshark -i dummy0
Running as user "root" and group "root". This could be dangerous.
Capturing on 'dummy0'
  1   0.000000   10.10.0.59 -> 8.8.8.8      ICMP 98 Echo (ping) request  id=0x1ce0, seq=1/256, ttl=64
  2   1.007348   10.10.0.59 -> 8.8.8.8      ICMP 98 Echo (ping) request  id=0x1ce0, seq=2/512, ttl=64
  3   2.015394   10.10.0.59 -> 8.8.8.8      ICMP 98 Echo (ping) request  id=0x1ce0, seq=3/768, ttl=64

Thật không may, điều này dường như không cho phép các gói đến phù hợp với tuyến đường từ các giao diện khác. Như vậy, nó không thực sự hoạt động (nó phá vỡ luồng UDP rx mở mà tôi cần cho phép tiếp tục).
Tên giả

2

Thêm một tuyến đường là phá vỡ lưu lượng đến do lọc đường dẫn ngược. Giải pháp đơn giản: vô hiệu hóa lọc đường dẫn ngược trên giao diện:

echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter

(sử dụng giao diện đến của bạn thay cho eth0ở trên).

Bạn cũng có thể sử dụng REDIRECTmục tiêu (gửi gói đến, ví dụ, một con mèo đang lắng nghe nó nc -l -u -p 1234 > /dev/null). Một phiên bản phức tạp hơn sẽ là NỀN TẢNG.

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.