Bagaimana cara mensimulasikan kabel jaringan yang tidak terhubung atau server bawah?

14

Saya telah mensimulasikan latensi jaringan dengan netem dan Ini hebat. Sekarang saya ingin mensimulasikan kabel jaringan yang tidak terhubung atau ketika server turun. Saya memerlukan ini untuk membuat pengujian aplikasi saya lebih mudah dan saya tidak dapat menemukan apa pun di web yang akan membantu saya. Server saya adalah instance CentOS virtual dan mereka ada di Virtualbox. Saya ingin melakukan ini dari halaman web php.

Aman
sumber

Jawaban:

17

Turunkan antarmuka. Misalnya, dengan eth0:

ip link set eth0 down

Untuk mengembalikan antarmuka:

ip link set eth0 up
Chris Down
sumber
terima kasih, saya membacanya di sini
SafeY
1
itu berhasil tetapi ip link set eth0 uptidak bekerja :( dan saya membutuhkan keduanya
SafeY
@NancySmith "Tidak berfungsi" tidak berarti. Pesan kesalahan apa yang terjadi? Apakah Anda menetapkan IP dan netmask?
Chris Down
Maksud saya, saya menggunakan ip link set eth0 downvia php dan ping menunjukkan bahwa server saya tidak dapat dijangkau. kemudian saya ingin mendapatkannya kembali "naik", saya dieksekusi ip link set eth0 upmelalui php dan server masih turun.
SafeY
3
@NancySmith Membuat antarmuka jaringan lain yang tidak memiliki akses ke apa pun yang terhubung (menggunakan rute, dll). SSH ke host menggunakan antarmuka itu. Turunkan antarmuka yang Anda tidak terhubung ke SSH melalui.
Chris Down
7

Saat menggunakan jawaban pilihan teratas pada mesin yang Anda hubungkan melalui SSH, Anda akan menurunkan jaringan dan tidak memiliki cara untuk membawanya kembali. Berikut ini adalah cara untuk menurunkannya dan membawanya kembali saat menggunakan koneksi SSH.

Contoh menggunakan antarmuka ens32:

Jika Anda menjalankan:

ip link set ens32 down

Dan Anda terhubung melalui SSH, Anda tidak akan dapat membawanya lagi karena Anda telah menonaktifkan jaringan Anda dan karenanya tidak dapat SSH ke server Anda.

Saya menggunakan skrip berikut untuk mensimulasikan downtime 20 detik:

#!/bin/sh
ip link set ens32 down
sleep 20
ip link set ens32 up

Simpan sebagai downtime.sh, pastikan file tersebut memiliki hak eksekusi, dan kemudian jalankan:

sudo ./downtime.sh
Mengejek
sumber
1
barang bagus. Juga, tautan yang relevan bagi mereka yang tidak yakin tentang antarmuka mana ke bawah: unix.stackexchange.com/questions/125400/…
Jeutnarg
1
erm ... Saya seorang pemula linux tapi saya pikir mungkin ada beberapa saran buruk di sini: jika Anda tidak nohup skrip ini, yang terjadi adalah Anda menjalankannya, sesi Anda mati (karena terputusnya koneksi) dan skrip berhenti ( dan tidak pernah menghidupkan kembali antarmuka net). Saya pikir beberapa membaca di sekitar nohup harus berharga!
DraxDomax
@DraxDomax apa yang Anda katakan terdengar logis tapi saya tidak punya masalah dengan itu tidak muncul kembali. Padahal saya punya masalah dengan jawaban yang diterima.
Mengejek
@ Mengejek Maaf, saya tidak dapat mengedit komentar saya. Itu belum tentu "saran buruk". Ini sebenarnya jawaban proaktif yang bagus karena 90% orang yang akan menemukan pertanyaan ini mencoba melakukan hal yang sama: "Saya perlu menguji apakah perangkat lunak saya berfungsi setelah pemutusan mesin. Saya tidak memiliki akses ke host virtualisasi" . Sebenarnya, saya menggunakan skrip Anda (hanya adaptor saya adalah br0) - itu tidak berfungsi dalam kasus saya (SSH dari MacOS ke CentOS) dan saya harus memanggil orang IT kami untuk membawa internet lagi.
DraxDomax
1

Pada jendela konsol virtualbox Anda, Anda harus memiliki menu Mesin tarik ke bawah. Di bawah yang itu ada beberapa tindakan. Salah satunya adalah Matikan. Anda harus memilih yang itu untuk mematikan segera. Ini adalah hal yang paling dekat dengan mencabut kabel daya server fisik.

MelBurslan
sumber
Saya ingin melakukan ini dari halaman web. bermuka masam aku tahu cara mematikan mesin.
SafeY
dan saya tidak ingin memalsukannya. tidak benar-benar mati dan boot lagi.
SafeY
Dilihat oleh penyebutan netem, saya menganggap pertanyaannya adalah benar-benar tentang mencabut kabel jaringan dari server, dan bukan kabel daya (meskipun tidak jelas).
Chris Down
Saya akan mengedit pertanyaan saya untuk membuatnya lebih jelas, terima kasih
SafeY