Mengkonfigurasi router untuk menjatuhkan paket, memperkenalkan latensi, data yang rusak


13

Saya bertanya-tanya apakah ada yang punya pengalaman mengatur lingkungan yang dirancang khusus untuk kinerja yang buruk ketika mengirim / menerima permintaan melalui jaringan. Saya sedang mengembangkan aplikasi dan ingin membuatnya kuat di atas jaringan yang berkinerja sangat buruk. Adakah yang tahu apakah mungkin untuk mengkonfigurasi router ke:

  1. sebentar-sebentar menjatuhkan paket
  2. sebentar-sebentar memperkenalkan latensi dalam paket
  3. data yang rusak dalam paket (yang ini tidak diperlukan karena akan memerlukan pembukaan paket, mengubah data, dan memperbarui checksum karena lapisan TCP akan menangkap jenis masalah ini)

Jika tidak memungkinkan pada router, mungkinkah mengkonfigurasi komputer untuk bertindak sebagai router dan melakukan ini?

Terimakasih banyak!

Jawaban:


17

Jika Anda menggunakan kotak Linux sebagai router, netfilter memiliki sejumlah cara untuk mengacaukan lalu lintas paket Anda.

The randommodul dapat digunakan untuk secara acak drop paket. Sebagai contoh, ini:

iptables -A FORWARD -m random --average 10 -j DROP

akan menyebabkan router menjatuhkan paket secara acak pada tingkat rata-rata 10%.

Anda juga dapat merusak paket acak dengan target XOR, mis

iptables -A FORWARD -m random --average 1 -j XOR --key "junktoxortomypacket"

akan merusak 1% dari paket yang diteruskan dengan XORing mereka dengan kunci yang berasal dari string yang diberikan.


Kedengarannya luar biasa! Steven terima kasih! Apakah Anda pernah mengatur ini? Apa distro Linux?
Markus

Saya telah berhasil membuat router untuk jaringan kecil menggunakan Debian. Tetapi sebenarnya hampir semua distro Linux dengan kernel baru-baru ini akan baik-baik saja, karena netfilter dibangun ke dalam kernel. Saya tidak pernah benar-benar mencoba membuat router "buruk" seperti yang dijelaskan di sini, tetapi mungkin ini merupakan proyek yang menarik untuk hari Minggu sore yang malas ...
Steven Monday

Jika Anda menggunakan iptables versi 1.3.5, perintah di atas mungkin salah dengan pesan "iptables v1.3.5: Tidak dapat memuat yang cocok dengan` acak '". Perintah di bawah ini bekerja untuk saya - iptables -A FORWARD -m statistik --m random --probability 0,2 -j DROP
prashantsunkari

3

Saya telah berhasil menggunakan WANem untuk mensimulasikan kondisi jaringan WAN antara Jerman dan India. WANem dikirimkan sebagai CD atau alat virtual yang dapat di-boot. Anda cukup mem-boot-nya, mengkonfigurasi kelayakan jaringan yang diinginkan dan kemudian merutekan lalu lintas Anda melewatinya. Mengutip deskripsi resmi:

WANem adalah Wide Area Network Emulator, dimaksudkan untuk memberikan pengalaman nyata dari Wide Area Network / Internet, selama pengembangan / pengujian aplikasi melalui lingkungan LAN. Biasanya pengembang aplikasi mengembangkan aplikasi pada LAN sementara tujuan yang dimaksudkan bisa sama, klien mengakses yang sama melalui WAN atau bahkan Internet. WANem dengan demikian memungkinkan tim pengembangan aplikasi untuk mengatur gateway aplikasi transparan yang dapat digunakan untuk mensimulasikan karakteristik WAN seperti penundaan Jaringan, Paket hilang, Paket rusak, Pemutusan, Paket pemesanan ulang, Jitter, dll. WANem dapat digunakan untuk mensimulasikan Area Luas Kondisi jaringan untuk lalu lintas Data / Suara dan dirilis di bawah lisensi GPL v2 yang dapat diterima secara luas.


2

Atur port uplink ke 10Mbps dan setengah dupleks jika Anda bisa. Kemudian gunakan host di jaringan untuk melakukan ping ing keluar. Itu seharusnya membuat Anda netral: D


Atur juga ukuran paket pada ping agar lebih besar dari standarnya. Ini bisa menjadi cara yang sangat efektif dan mudah untuk mensimulasikan tautan jaringan yang jenuh / umumnya buruk - jika Anda dapat melumpuhkan koneksi spesifik seperti yang dicatat dengan sengaja mengatur bandwidth untuk lebih rendah daripada yang dimiliki mesin 'penyerang'.
Andrew Barber

Anda juga bisa main-main dengan MTU, pilih ukuran eksentrik sungguhan :)
SpacemanSpiff
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.