2

Это вопрос разработчика, но поскольку он больше связан с операционными системами и сетевыми подключениями, я опубликую его здесь, а не в Stack Overflow.

Я пытаюсь смоделировать ситуацию, когда сетевое соединение закрывается из-за сетевой проблемы или ошибки, чтобы проверить поведение, которое я реализовал в одном из моих приложений. Я мог бы просто отсоединить сетевой кабель или закрыть сетевой интерфейс, но я сделал так, чтобы приложение сразу же после этого восстановило соединение, и это займет слишком много времени, пока сеть снова не будет восстановлена (из-за согласования DHCP и т.д.).

Есть ли способ, в Unix или OS X, просто отключить определенное приложение от Интернета, а затем позволить ему немедленно восстановить соединение? Может быть, имитировать ошибку "сброс соединения через одноранговый узел" или что-то в этом роде (я не профессионал, когда речь идет о работе в сети, извините за мой язык новичка).

Спасибо.

1 ответ1

0

Различные способы сделать это, но самый простой, который приходит мне в голову - это использовать ifconfig (ipconfig для windows). Синтаксис будет несколько отличаться, но

ifconfig eth0 down

Вы можете сделать аналогичные вещи с маршрутом, удалив маршрут к серверу приложения.

Или вы можете очистить кэш arp (см. Man arp), а затем использовать другой хост (реальный или виртуальный), подменяющий MAC этой машины.

Существует пакетный вызов hping (я думаю, что в версии 3), который может симулировать различные виды пакетов. Вы можете использовать это для установки пакетов сброса от места назначения до хоста, на котором выполняется приложение.

Таким образом, вы можете поместить это в сценарий

ifconfig eth0 down
sleep 5
ifconfig eth0 up

Если у вас есть сервер в вашей сети, вы можете отключить процесс на сервере. Например, остановите сервер httpd, если ваше приложение является веб-приложением.

Более ранний плакат о работе с брандмауэром на машине, которую должны пересылать пакеты вашего приложения.

Также ищите инъекционные атаки и атаки типа «отказ в обслуживании».

Если на сервере или промежуточном хосте работает linux, вы запускаете pf на этом хосте. Загружая и выгружая данное правило, вы можете открывать или закрывать данную комбинацию порт / протокол / ip. Вы также можете регулировать скорость соединения, пропуская столько пакетов в секунду.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .