Як імітувати відключений мережевий кабель або сервер?


14

Я симулював затримку в мережі з netem, і це чудово. Тепер я хочу імітувати відключений мережевий кабель або коли сервер не працює. Мені це потрібно, щоб полегшити тестування моєї програми, і я не зміг знайти в Інтернеті нічого, що могло б мені допомогти. Мої сервери - це віртуальні екземпляри CentOS і вони знаходяться у Virtualbox. Я хочу це зробити з веб-сторінки php.

Відповіді:


17

Просто зведіть інтерфейс. Наприклад, з eth0:

ip link set eth0 down

Щоб відновити інтерфейс:

ip link set eth0 up

дякую, я читаю про це тут
Безпечний

1
це працює успішно, але ip link set eth0 upне працює :( і мені вони потрібні обоє
SafeY

@NancySmith "Не працює" не має сенсу. Які повідомлення про помилки трапляються? Ви призначили IP та мережну маску?
Кріс Даун

Я маю на увазі, що я використовував ip link set eth0 downphp і ping, що мій сервер недоступний. тоді я хотів повернути його "вгору", я виконував ip link set eth0 upчерез php та сервер ще вниз.
Безпечний

3
@NancySmith Створіть інший мережевий інтерфейс, який не має доступу до того, до чого він підключається (використовуючи маршрути тощо). SSH хосту за допомогою цього інтерфейсу. Збийте інтерфейс, через який ви не підключаєтесь до SSH.
Кріс Даун

7

Використовуючи відповідь, яка проголосується вгорі, на машині, до якої ви підключаєтесь через SSH, ви зведете мережу і не матимете засобів для її повернення. Нижче наведено спосіб збити і повернути його назад під час з'єднання SSH.

Приклад за допомогою інтерфейсу ens32:

Якщо ви запускаєте:

ip link set ens32 down

І ви підключаєтесь через SSH, ви не зможете знову підняти його, оскільки ви відключили вашу мережу, а отже, не зможете SSH на свій сервер.

Я використовую такий сценарій, щоб імітувати 20 секунд простою:

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

Збережіть його як downtime.sh, переконайтеся, що файл виконує права, а потім запустіть:

sudo ./downtime.sh

1
Хороший матеріал. Також відповідне посилання для тих, хто не впевнений у тому, на який інтерфейс потрібно перейти: unix.stackexchange.com/questions/125400/…
Jeutnarg

1
гм ... Я новачок в Linux, але я думаю, що тут може бути погана порада: якщо ви не скажете цей скрипт, трапляється, що ви його виконаєте, сеанс помирає (через відключення) і сценарій припиняється ( і ніколи не відроджує мережевий інтерфейс). Я думаю, що читання навколо nohup повинно бути цінним!
DraxDomax

@DraxDomax те, що ви говорите, звучить логічно, але я не мав жодних проблем з цим і не повертався. Тоді як у мене виникли проблеми з прийнятою відповіддю.
глузування

@Mocking Вибачте, я не зміг змінити свій коментар. Це не обов'язково "погана порада". Це насправді приємна проактивна відповідь, оскільки 90% людей, які знайдуть це питання, намагаються зробити те саме: "Мені потрібно перевірити, чи працює моє програмне забезпечення після відключення машини. У мене немає доступу до вузла віртуалізації". . Насправді я вдався до вашого сценарію (просто мій адаптер був br0) - у моєму випадку він не працював (SSH від MacOS до CentOS), і мені довелося зателефонувати нашому ІТ-хлопцеві, щоб знову завести мережу.
DraxDomax

1

У вікні консолі віртуальної скриньки у вас повинно бути меню "Машина". Під цим є кілька дій. Один з яких - це вимкнення живлення. Виберіть його для негайного відключення живлення. Це найближче за те, щоб підключити шнур живлення фізичного сервера.


Я хочу це зробити з веб-сторінки. Похмуро Я знаю, як вимкнути машини.
Безпечний

і я не хочу це підробляти. насправді не вимикайте і не завантажуйте її знову.
Безпечний

Судячи з згадки про netem, я припускаю, що мова йде справді про відключення мережного кабелю від сервера, а не про кабель живлення (хоча це не зрозуміло).
Кріс Даун

Я відредагую своє питання, щоб зробити його більш зрозумілим, спасибі
Безпечний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.